示例#1
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "pages/webhook")] HttpRequest?request)
        {
            try
            {
                logger.LogInformation("Received webhook request");

                if (request == null)
                {
                    logger.LogError($"{nameof(request)} is null");
                    return(new StatusCodeResult((int)HttpStatusCode.BadRequest));
                }

                using var streamReader = new StreamReader(request.Body);
                var requestBody = await streamReader.ReadToEndAsync().ConfigureAwait(false);

                if (string.IsNullOrEmpty(requestBody))
                {
                    logger.LogError($"{nameof(request)} body is null");
                    return(new StatusCodeResult((int)HttpStatusCode.BadRequest));
                }

                var result = await webhookReceiver.ReceiveEvents(requestBody).ConfigureAwait(false);

                logger.LogInformation("Webhook request completed");

                return(result);
            }
            catch (Exception ex)
            {
                logger.LogError(ex.ToString());
                return(new StatusCodeResult((int)HttpStatusCode.InternalServerError));
            }
        }
示例#2
0
        public async Task PostWithBodyReturnsOk()
        {
            // Arrange
            var expectedResult = new StatusCodeResult((int)HttpStatusCode.OK);
            var function       = new PagesWebhookHttpTrigger(fakeLogger, fakewebhookReceiver);
            var request        = BuildRequestWithValidBody("A webhook test");

            A.CallTo(() => fakewebhookReceiver.ReceiveEvents(A <string> .Ignored)).Returns(new StatusCodeResult(200));

            // Act
            var result = await function.Run(request).ConfigureAwait(false);

            // Assert
            A.CallTo(() => fakewebhookReceiver.ReceiveEvents(A <string> .Ignored)).MustHaveHappenedOnceExactly();

            var statusResult = Assert.IsType <StatusCodeResult>(result);

            Assert.Equal(expectedResult.StatusCode, statusResult.StatusCode);
        }