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); }
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); }
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); }
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); }