public WebHookEventValidatorTests() { _options.Value.Returns(new AutoGitWebHookOptions { WebHookSecret = Constants.ValidWebHookSecret }); _sut = new WebHookEventValidator(_options); }
public async Task Invoke(HttpContext httpContext, IWebHookHandlerRegistry webHookHandlerRegistry, IWebHookEventFactory webHookEventFactory, WebHookEventValidator validator) { var webHookEvent = await webHookEventFactory.Create(httpContext); var result = await validator.ValidateAsync(webHookEvent); if (!result.IsValid) { httpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; return; } await webHookHandlerRegistry.Handle(webHookEvent); }
public async void Invoke_Should_Return_Return_Correct_Status_Code(string secret, int registryCalls, HttpStatusCode statusCode) { // Arrange var fakedWebHookEvent = new WebHookEventFaker().Generate(); var fakedHttpContext = new HttpContextFaker().Generate(); var mockedWebHookHandlerRegistry = Substitute.For <IWebHookHandlerRegistry>(); var mockedWebHookEventFactory = Substitute.For <IWebHookEventFactory>(); var mockedWebHookEventValidator = new WebHookEventValidator(Options.Create(new AutoGitWebHookOptions { WebHookSecret = secret })); mockedWebHookEventFactory.Create(fakedHttpContext).Returns(fakedWebHookEvent); // Act await _sut.Invoke(fakedHttpContext, mockedWebHookHandlerRegistry, mockedWebHookEventFactory, mockedWebHookEventValidator); // Assert mockedWebHookEventFactory.Received(1); mockedWebHookHandlerRegistry.Received(registryCalls); fakedHttpContext.Response.StatusCode.Should().Be((int)statusCode); }