public async Task TestNotificationHandlerFromMiddlewareRequest() { var receivedDebitNotifications = 0; client.OnDebit += (sender, args) => { receivedDebitNotifications++; args.RespondWithOK(); }; var mockRequest = this.CreateMockDebitNotificationRequest(); var mockHttpContext = new Mock <HttpContext>(); var mockResponse = new Mock <HttpResponse>(); mockResponse.SetupAllProperties(); mockResponse.Setup(r => r.Headers).Returns(new HeaderDictionary()); mockHttpContext.Setup(x => x.Request).Returns(mockRequest.Object); mockHttpContext.Setup(x => x.Response).Returns(mockResponse.Object); await TrustlyApiClientExtensions.HandleNotificationRequest(mockHttpContext.Object, null); Assert.AreEqual(1, receivedDebitNotifications); Assert.AreEqual(200, mockResponse.Object.StatusCode); }
public async Task TestNotificationHandlerFromMiddlewareRequestWithErrorResponse() { var receivedDebitNotifications = 0; client.OnDebit += (sender, args) => { receivedDebitNotifications++; args.RespondWithFailed("Things went badly"); }; var mockHttpContext = new DefaultHttpContext(); this.SetHttpRequestProperties(mockHttpContext.Request); mockHttpContext.Response.Body = new MemoryStream(); await TrustlyApiClientExtensions.HandleNotificationRequest(mockHttpContext, null); Assert.AreEqual(1, receivedDebitNotifications); Assert.AreEqual(500, mockHttpContext.Response.StatusCode); mockHttpContext.Response.Body.Position = 0; using (var sr = new StreamReader(mockHttpContext.Response.Body)) { var bodyString = sr.ReadToEnd(); Assert.IsTrue(bodyString.Contains("Things went badly")); } }
public void TestNotificationHandlerFromMiddlewareRequestWithoutListener() { var mockRequest = CreateMockDebitNotificationRequest(); var mockHttpContext = new Mock <HttpContext>(); var mockResponse = new Mock <HttpResponse>(); mockResponse.SetupAllProperties(); mockResponse.Setup(r => r.Headers).Returns(new HeaderDictionary()); mockHttpContext.Setup(x => x.Request).Returns(mockRequest.Object); mockHttpContext.Setup(x => x.Response).Returns(mockResponse.Object); Assert.ThrowsAsync <TrustlyNoNotificationListenerException>(async() => { await TrustlyApiClientExtensions.HandleNotificationRequest(mockHttpContext.Object, null); }); }