public async void DoesWebhookReturnNotFoundWhenSubscriptionTargetIsUnknown() { var messageHandler = new Mock <IMessageHandler>(); var middleware = new FbMiddleware(MockBuilder.BuildFakeConfiguration(), messageHandler.Object, MockBuilder.BuildFakeLogger <FbMiddleware>()); var context = BuildHttpContext("{\"object\":\"unknown\"}"); await middleware.InvokeAsync(context, requestDelegateContext => Task.CompletedTask); var content = await GetStringBody(context.Response.Body); context.Response.StatusCode.Should().Be((int)HttpStatusCode.NotFound); content.Should().BeEmpty(); }
public async void DoesWebhookReturnBadRequestWhenRequestIsInvalid() { var messageHandler = new Mock <IMessageHandler>(); var middleware = new FbMiddleware(MockBuilder.BuildFakeConfiguration(), messageHandler.Object, MockBuilder.BuildFakeLogger <FbMiddleware>()); var context = BuildHttpContext( "{\"object\": \"page\", \"entry\": [{\"messaging\": [{\"message\": \"TEST_MESSAGE\"}]}]}" ); await middleware.InvokeAsync(context, requestDelegateContext => Task.CompletedTask); var content = await GetStringBody(context.Response.Body); context.Response.StatusCode.Should().Be((int)HttpStatusCode.BadRequest); content.Should().BeEmpty(); }
public async void CanReceiveGraphEvent() { var messageHandler = new Mock <IMessageHandler>(); var middleware = new FbMiddleware(MockBuilder.BuildFakeConfiguration(), messageHandler.Object, MockBuilder.BuildFakeLogger <FbMiddleware>()); var context = BuildHttpContext( "{\"object\":\"page\",\"entry\":[{\"messaging\":[{\"sender\":{\"id\":\"<PSID>\"},\"recipient\":{\"id\":\"<PAGE_ID>\"},\"timestamp\":123456789,\"message\":{\"mid\":\"mid.1457764197618:41d102a3e1ae206a38\",\"text\":\"hello, world!\"}}]}]}" ); await middleware.InvokeAsync(context, requestDelegateContext => Task.CompletedTask); var content = await GetStringBody(context.Response.Body); context.Response.StatusCode.Should().Be((int)HttpStatusCode.OK); content.Should().Be("EVENT_RECEIVED"); }
public async void CannotVerifyWebhookWithoutChallenge() { var messageHandler = new Mock <IMessageHandler>(); var context = BuildHttpContext(new Dictionary <string, StringValues> { { "hub.mode", "subscribe" }, { "hub.verify_token", "sample-verify-token" } }); var middleware = new FbMiddleware(MockBuilder.BuildFakeConfiguration(), messageHandler.Object, MockBuilder.BuildFakeLogger <FbMiddleware>()); await middleware.InvokeAsync(context, requestDelegateContext => Task.CompletedTask); context.Response.StatusCode.Should().Be((int)HttpStatusCode.BadRequest); var content = await GetStringBody(context.Response.Body); content.Should().BeEmpty(); }
public async void CannotHandleRequestWithUnsupportedMethod() { var httpContext = new Mock <HttpContext>(); httpContext.Setup(x => x.Request.Method).Returns("PUT"); httpContext.SetupProperty(x => x.Response.Body, new MemoryStream()); httpContext.SetupProperty(x => x.Response.StatusCode); var context = httpContext.Object; var messageHandler = new Mock <IMessageHandler>(); var middleware = new FbMiddleware(MockBuilder.BuildFakeConfiguration(), messageHandler.Object, MockBuilder.BuildFakeLogger <FbMiddleware>()); await middleware.InvokeAsync(context, requestDelegateContext => Task.CompletedTask); context.Response.StatusCode.Should().Be((int)HttpStatusCode.MethodNotAllowed); context.Response.Body.Position = 0; var reader = new StreamReader(context.Response.Body); var content = await reader.ReadToEndAsync(); content.Should().BeEmpty(); }