예제 #1
0
        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);
        }
예제 #2
0
        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"));
            }
        }
예제 #3
0
        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);
            });
        }