Inheritance: WebHookReceiver
Esempio n. 1
0
        public WebHookReceiverTests()
        {
            _config = new HttpConfiguration();
            _resolverMock = new Mock<IDependencyResolver>();
            _config.DependencyResolver = _resolverMock.Object;
            WebHooksConfig.Initialize(_config);
            _request = new HttpRequestMessage();
            _receiverMock = new WebHookReceiverMock();

            _context = new HttpRequestContext();
            _context.Configuration = _config;
            _request.SetRequestContext(_context);
        }
        public async Task Get_Returns_ReceiverResponse()
        {
            // Arrange
            HttpResponseMessage response = new HttpResponseMessage() { ReasonPhrase = "From Receiver!" };
            WebHookReceiverMock receiver = new WebHookReceiverMock(response);
            _managerMock.Setup(m => m.GetReceiver(TestReceiver))
                .Returns(receiver)
                .Verifiable();

            // Act
            IHttpActionResult result = await _controller.Get(TestReceiver);
            HttpResponseMessage actual = ((ResponseMessageResult)result).Response;

            // Assert
            _managerMock.Verify();
            Assert.Equal("From Receiver!", actual.ReasonPhrase);
        }
        public async Task Get_Handles_ReceiverException()
        {
            // Arrange
            Exception exception = new Exception("Catch this!");
            WebHookReceiverMock receiver = new WebHookReceiverMock(exception);
            _managerMock.Setup(m => m.GetReceiver(TestReceiver))
                .Returns(receiver)
                .Verifiable();

            // Act
            IHttpActionResult result = await _controller.Get(TestReceiver);
            HttpResponseMessage response = ((ResponseMessageResult)result).Response;
            HttpError error = await response.Content.ReadAsAsync<HttpError>();

            // Assert
            _managerMock.Verify();
            Assert.Equal("WebHook receiver 'TestReceiver' could not process WebHook due to error: Catch this!", error.Message);
        }
Esempio n. 4
0
        public void Initialize(string name, string id, string config, params KeyValuePair<Type, object>[] dependencies)
        {
            _logger = new Mock<ILogger>().Object;
            _settings = new SettingsDictionary();
            _settings[SecretPrefix + name] = GetConfigValue(id, config);

            _config = new WebHookReceiverConfig(_settings, _logger);

            List<KeyValuePair<Type, object>> deps = new List<KeyValuePair<Type, object>>()
            {
                new KeyValuePair<Type, object>(typeof(IWebHookReceiverConfig), _config),
                new KeyValuePair<Type, object>(typeof(SettingsDictionary), _settings)
            };
            deps.AddRange(dependencies);

            _httpConfig = HttpConfigurationMock.Create(deps);

            _request = new HttpRequestMessage();
            _receiverMock = new WebHookReceiverMock();

            _context = new HttpRequestContext { Configuration = _httpConfig };
            _request.SetRequestContext(_context);
        }
        public async Task Post_Handles_ReceiverHttpResponseException()
        {
            // Arrange
            HttpResponseMessage response = new HttpResponseMessage();
            HttpResponseException exception = new HttpResponseException(response);
            WebHookReceiverMock receiver = new WebHookReceiverMock(exception);
            _managerMock.Setup(m => m.GetReceiver(TestReceiver))
                .Returns(receiver)
                .Verifiable();

            // Act
            IHttpActionResult result = await _controller.Post(TestReceiver);
            HttpResponseMessage actual = ((ResponseMessageResult)result).Response;

            // Assert
            _managerMock.Verify();
            Assert.Same(response, actual);
        }
Esempio n. 6
0
        public async Task ExecuteWebHookAsync_FindsMatchingHandlers()
        {
            // Arrange
            List<TestHandler> handlers = new List<TestHandler>()
            {
                new TestHandler { Order = 10, Receiver = "other" },
                new TestHandler { Order = 20, Receiver = "MockReceiver" },
                new TestHandler { Order = 30, Receiver = "MOCKRECEIVER" },
                new TestHandler { Order = 40, Receiver = null },
                new TestHandler { Order = 50, Receiver = "something" },
            };
            _resolverMock.Setup(r => r.GetServices(typeof(IWebHookHandler)))
                .Returns(handlers)
                .Verifiable();
            WebHookReceiverMock receiver = new WebHookReceiverMock();
            object data = new object();

            // Act
            HttpResponseMessage actual = await receiver.ExecuteWebHookAsync(WebHookReceiverMock.ReceiverName, _context, _request, new[] { "action" }, data);

            // Assert
            _resolverMock.Verify();
            Assert.Equal("OK", actual.ReasonPhrase);
            Assert.False(handlers[0].IsCalled);
            Assert.True(handlers[1].IsCalled);
            Assert.True(handlers[2].IsCalled);
            Assert.True(handlers[3].IsCalled);
            Assert.False(handlers[4].IsCalled);
        }
Esempio n. 7
0
        public async Task ExecuteWebHookAsync_StopsOnFirstResponse()
        {
            // Arrange
            List<TestHandler> handlers = new List<TestHandler>()
            {
                new TestHandler { Order = 10, },
                new TestHandler { Order = 20, },
                new TestHandler { Order = 30, SetResponse = true },
                new TestHandler { Order = 40, },
            };
            _resolverMock.Setup(r => r.GetServices(typeof(IWebHookHandler)))
                .Returns(handlers)
                .Verifiable();
            WebHookReceiverMock receiver = new WebHookReceiverMock();
            object data = new object();

            // Act
            HttpResponseMessage actual = await receiver.ExecuteWebHookAsync(WebHookReceiverMock.ReceiverName, _context, _request, new[] { "action" }, data);

            // Assert
            _resolverMock.Verify();
            Assert.Equal("Order: 30", actual.ReasonPhrase);
            Assert.True(handlers[0].IsCalled);
            Assert.True(handlers[1].IsCalled);
            Assert.True(handlers[2].IsCalled);
            Assert.False(handlers[3].IsCalled);
        }
        private async Task Action_Handles_ReceiverException(Func<string, Task<IHttpActionResult>> action)
        {
            // Arrange
            Exception exception = new Exception("Catch this!");
            WebHookReceiverMock receiver = new WebHookReceiverMock(exception);
            _managerMock.Setup(m => m.GetReceiver(TestReceiver))
                .Returns(receiver)
                .Verifiable();

            // Act
            Exception actual = await Assert.ThrowsAsync<Exception>(() => action(TestReceiver));

            // Assert
            _managerMock.Verify();
            Assert.Equal("Catch this!", actual.Message);
        }
        private async Task Action_Handles_ReceiverHttpResponseException(Func<string, Task<IHttpActionResult>> action)
        {
            // Arrange
            HttpResponseMessage expected = new HttpResponseMessage();
            HttpResponseException exception = new HttpResponseException(expected);
            WebHookReceiverMock receiver = new WebHookReceiverMock(exception);
            _managerMock.Setup(m => m.GetReceiver(TestReceiver))
                .Returns(receiver)
                .Verifiable();

            // Act
            IHttpActionResult result = await action(TestReceiver);
            HttpResponseMessage actual = ((ResponseMessageResult)result).Response;

            // Assert
            _managerMock.Verify();
            Assert.Same(expected, actual);
        }
        private async Task Action_Returns_ReceiverResponse(Func<string, Task<IHttpActionResult>> action)
        {
            // Arrange
            HttpResponseMessage response = new HttpResponseMessage() { ReasonPhrase = "From Receiver!" };
            WebHookReceiverMock receiver = new WebHookReceiverMock(response);
            _managerMock.Setup(m => m.GetReceiver(TestReceiver))
                .Returns(receiver)
                .Verifiable();

            // Act
            IHttpActionResult result = await action(TestReceiver);
            HttpResponseMessage actual = ((ResponseMessageResult)result).Response;

            // Assert
            _managerMock.Verify();
            Assert.Equal("From Receiver!", actual.ReasonPhrase);
        }