private string ToCanonicalString(HttpExecutionRequest httpExecRequest) => $"{httpExecRequest.ExecutionId}|" + $"{httpExecRequest.ExecutionProfileName}|" + $"{httpExecRequest.ExtensionId}|" + $"{httpExecRequest.ExtensionVersionId}|" + $"{httpExecRequest.StatusUpdateKey}|" + $"{httpExecRequest.GetExecutionStatusUrl}|" + $"{httpExecRequest.UpdateExecutionStatusUrl}";
public IActionResult PostEcho(HttpExecutionRequest execRequest) { using (_logger.BeginScope("Echo Post")) { HttpExecutionResponse httpExecResponse = new HttpExecutionResponse(); httpExecResponse.ExecutionId = execRequest.ExecutionId; httpExecResponse.ResponseData = JObject.FromObject(execRequest); return(Ok(httpExecResponse)); } }
public async void ExecuteAsync_ExecutionRequested_ShouldPostExecutionRequestToExtension() { var mockJsonHttpClient = new Mock <IJsonHttpClient>(); var mockExecServiceProvider = new Mock <IExecutionServiceProvider>(); var mockInputAccessorProvider = new Mock <IInputObjectAccessorProvider>(); var mockOutputAccessorProvider = new Mock <IOutputObjectAccessorProvider>(); var mockSigner = new Mock <ISigner <HttpExecutionRequest> >(); var mockLogger = new Mock <ILogger <JsonHttpExecutionAdapter> >(); var execAdapter = new JsonHttpExecutionAdapter( mockLogger.Object, mockJsonHttpClient.Object, mockExecServiceProvider.Object, mockInputAccessorProvider.Object, mockOutputAccessorProvider.Object, mockSigner.Object); var execRequest = CreateDefaultExecutionRequest(); SetupDefaultMockExecutionServiceProvider(execRequest, mockExecServiceProvider); SetupDefaultMockInputObjectAccessorProvider(execRequest, mockInputAccessorProvider); SetupDefaultMockOutputObjectAccessorProvider(execRequest, mockOutputAccessorProvider); string executionUrl = null; HttpExecutionRequest httpExecRequest = null; execRequest.ExecutionParameters = JObject.FromObject(execRequest); var httpExecResponse = new HttpExecutionResponse { ExecutionId = execRequest.ExecutionId }; mockJsonHttpClient .Setup(hc => hc.PostAsync <HttpExecutionResponse>(defaultHttpExtensionSettings.ExecutionUrl, It.IsAny <HttpExecutionRequest>())) .Returns(Task.FromResult(new HttpResponse <HttpExecutionResponse>(HttpStatusCode.OK, httpExecResponse))) .Callback <string, object>((u, er) => { executionUrl = u; httpExecRequest = er as HttpExecutionRequest; }); await execAdapter.ExecuteAsync(execRequest, CancellationToken.None); executionUrl.Should().NotBeNull(); httpExecRequest.Should().NotBeNull(); executionUrl.Should().Be(DefaultExtensionExecutionUrl); httpExecRequest.CreatedDateTimeUtc.Should().Be(execRequest.CreatedDateTimeUtc); httpExecRequest.ExecutionId.Should().Be(execRequest.ExecutionId); httpExecRequest.ExecutionProfileName.Should().Be(execRequest.ExecutionProfileName); httpExecRequest.Executor.Should().Be(execRequest.Executor); httpExecRequest.ExpirationDateTimeUtc.Should().Be(execRequest.ExecutionTimeoutDateTimeUtc); httpExecRequest.ExtensionId.Should().Be(execRequest.ExtensionId); httpExecRequest.ExtensionVersionId.Should().Be(execRequest.ExtensionVersionId); httpExecRequest.GetExecutionStatusUrl.Should().Be(execRequest.GetExecutionStatusUrl); httpExecRequest.Priority.Should().Be(execRequest.Priority); httpExecRequest.Services.Should().BeEquivalentTo(defaultExecutionServiceConfiguration); httpExecRequest.StatusUpdateKey.Should().Be(execRequest.StatusUpdateKey); httpExecRequest.UpdateExecutionStatusUrl.Should().Be(execRequest.UpdateExecutionStatusUrl); httpExecRequest.RequestParameters.Should().BeEquivalentTo(execRequest.ExecutionParameters); }