コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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");
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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();
        }