private Property TestReturnsExpectedWithHttpStatusCode(HttpStatusCode st, Func <HttpSender, SendResult> act) { // Arrange StubHttpClient client = StubHttpClient.ThatReturns(st); var sut = new HttpSender(client); sut.Configure(new LocationMethod("ignored location")); // Act SendResult r = act(sut); // Assert var code = (int)st; bool isFatal = r == SendResult.FatalFail; bool isRetryable = r == SendResult.RetryableFail; bool isSuccess = r == SendResult.Success; Assert.True(client.IsCalled, "Stub HTTP client isn't called"); return(isRetryable .Equals(code >= 500 || code == 408 || code == 429) .Or(isSuccess.Equals(code >= 200 && code <= 206)) .Or(isFatal.Equals(code >= 400 && code < 500)) .Classify(isSuccess, "Success with code: " + code) .Classify(isRetryable, "Retryable with code: " + code) .Classify(isFatal, "Fatal with code: " + code)); }
public async Task Send_Returns_Empty_Response_For_Empty_Request_For_Response_SendPMode() { // Arrange IStep sut = CreateSendStepWithResponse( StubHttpClient.ThatReturns(HttpStatusCode.Accepted)); MessagingContext ctx = CreateMessagingContextWithDefaultPullRequest(); ctx.SendingPMode = CreateSendPModeWithPushUrl(); // Act StepResult actualResult = await sut.ExecuteAsync(ctx); // Assert Assert.True(actualResult.MessagingContext.AS4Message.IsEmpty); Assert.False(actualResult.CanProceed); }
public async Task Send_Results_In_Stop_Execution_If_Response_Is_PullRequest_Warning_For_Exsisting_SendPMode() { // Arrange AS4Message as4Message = AS4Message.Create(Error.CreatePullRequestWarning($"error-{Guid.NewGuid()}")); IStep sut = CreateSendStepWithResponse( StubHttpClient.ThatReturns(as4Message)); MessagingContext ctx = CreateMessagingContextWithDefaultPullRequest(); ctx.SendingPMode = CreateSendPModeWithPushUrl(); // Act StepResult actualResult = await sut.ExecuteAsync(ctx); // Assert Assert.False(actualResult.CanProceed); }
public async Task Use_ReceivingPMode_When_No_SendingPMode_Is_Available() { // Arrange var userMessage = new UserMessage($"user-{Guid.NewGuid()}"); var message = AS4Message.Create(userMessage); var output = new MemoryStream(); await SerializerProvider .Default .Get(message.ContentType) .SerializeAsync(message, output); var ctx = new MessagingContext( message, new ReceivedMessage(output, message.ContentType), MessagingContextMode.Send) { ReceivingPMode = new ReceivingProcessingMode { ReplyHandling = { ResponseConfiguration = new PushConfiguration { Protocol ={ Url = "http://some/endpoint/path" } } } } }; var receipt = new Receipt($"receipt-{Guid.NewGuid()}", userMessage.MessageId); var stub = StubHttpClient.ThatReturns(AS4Message.Create(receipt)); IStep sut = CreateSendStepWithResponse(stub); // Act StepResult result = await sut.ExecuteAsync(ctx); // Assert Assert.True(result.Succeeded, "Sending UserMessage step has not succeeded"); Assert.Equal(receipt, result.MessagingContext.AS4Message.PrimaryMessageUnit); // TearDown ctx.Dispose(); }
public async Task After_Send_Updates_Request_Operation_And_Status_To_Sent_For_Exsiting_SendPMode() { // Arrange string ebmsMessageId = $"user-{Guid.NewGuid()}"; AS4Message tobeSentMsg = AS4Message.Create(new FilledUserMessage(ebmsMessageId)); var inserted = new OutMessage(ebmsMessageId: ebmsMessageId); GetDataStoreContext.InsertOutMessage(inserted); var receivedMessage = new ReceivedEntityMessage( inserted, tobeSentMsg.ToStream(), tobeSentMsg.ContentType); var ctx = new MessagingContext( tobeSentMsg, receivedMessage, MessagingContextMode.Send) { SendingPMode = CreateSendPModeWithPushUrl() }; AS4Message receiptMessage = AS4Message.Create(new Receipt($"receipt-{Guid.NewGuid()}", $"user-{Guid.NewGuid()}")); // Act IStep sut = CreateSendStepWithResponse( StubHttpClient.ThatReturns(receiptMessage)); await sut.ExecuteAsync(ctx); // Assert GetDataStoreContext.AssertOutMessage( ebmsMessageId, message => { Assert.Equal(OutStatus.Sent, message.Status.ToEnum <OutStatus>()); Assert.Equal(Operation.Sent, message.Operation); }); }