public async Task GetSwaggerDocs_WithOpenApiConfigurationWithHealth_ReturnsOpenApiDocumentOfApplication()
        {
            // Arrange
            var options = new AzureFunctionsHttpProjectOptions().WithIncludeHealthChecks();

            using (var project = await AzureFunctionsHttpProject.StartNewAsync(options, _outputWriter))
            // Act
            {
                project.TearDownOptions = TearDownOptions.KeepProjectDirectory;
                using (HttpResponseMessage response = await project.Swagger.GetSwaggerDocsAsync())
                {
                    // Assert
                    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                    string json = await response.Content.ReadAsStringAsync();

                    OpenApiDocument document = LoadOpenApiDocument(json);

                    OpenApiOperation orderOperation = SelectOperation(document, OperationType.Post, "/v1/order");
                    AssertOrderOperation(orderOperation);

                    OpenApiOperation healthOperation = SelectOperation(document, OperationType.Get, "/v1/health");
                    AssertHealthOperation(healthOperation);
                }
            }
        }
        public async Task AzureFunctionsHttpProject_WithoutOptions_ResponseToCorrectOrder()
        {
            // Arrange
            var order = new Order
            {
                Id            = Guid.NewGuid().ToString(),
                ArticleNumber = BogusGenerator.Random.String(1, 100),
                Scheduled     = BogusGenerator.Date.RecentOffset()
            };

            using (var project = await AzureFunctionsHttpProject.StartNewAsync(_config, _outputWriter))
            {
                // Act
                using (HttpResponseMessage response = await project.Order.PostAsync(order))
                {
                    // Assert
                    string responseContent = await response.Content.ReadAsStringAsync();

                    Assert.True(HttpStatusCode.OK == response.StatusCode, responseContent);
                    Assert.NotNull(JsonConvert.DeserializeObject <Order>(responseContent));

                    IEnumerable <string> responseHeaderNames = response.Headers.Select(header => header.Key).ToArray();
                    Assert.Contains("X-Transaction-ID", responseHeaderNames);
                    Assert.Contains("RequestId", responseHeaderNames);
                }
            }
        }
Exemplo n.º 3
0
 public async Task HttpAzureFunctionsProject_WithoutOptions_DoesNotContainHealthChecks()
 {
     // Arrange
     using (var project = await AzureFunctionsHttpProject.StartNewAsync(_config, _outputWriter))
     {
         // Act
         using (HttpResponseMessage response = await project.Health.GetAsync())
         {
             // Assert
             Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
         }
     }
 }
        public async Task GetSwaggerUI_WithBuildConfiguration_Returns(BuildConfiguration buildConfiguration, HttpStatusCode expectedStatusCode)
        {
            // Arrange
            var configuration = TestConfig.Create(buildConfiguration);

            using (var project = await AzureFunctionsHttpProject.StartNewAsync(configuration, _outputWriter))
                // Act
                using (HttpResponseMessage response = await project.Swagger.GetSwaggerUIAsync())
                {
                    // Assert
                    Assert.NotNull(response);
                    Assert.Equal(expectedStatusCode, response.StatusCode);
                }
        }
        public async Task GetSwaggerDocs_WithExcludeOpenApiProjectOption_ReturnsNotFound()
        {
            // Arrange
            var options =
                new AzureFunctionsHttpProjectOptions().WithExcludeOpenApiDocs();

            using (var project = await AzureFunctionsHttpProject.StartNewAsync(options, _outputWriter))
                // Act
                using (HttpResponseMessage response = await project.Swagger.GetSwaggerDocsAsync())
                {
                    // Assert
                    Assert.NotNull(response);
                    Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
                }
        }
        public async Task GetSwaggerDocs_WithOpenApiConfigurationWithoutHealth_ReturnsOpenApiDocumentOfApplication()
        {
            // Arrange
            using (var project = await AzureFunctionsHttpProject.StartNewAsync(_outputWriter))
                // Act
                using (HttpResponseMessage response = await project.Swagger.GetSwaggerDocsAsync())
                {
                    // Assert
                    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                    string json = await response.Content.ReadAsStringAsync();

                    OpenApiDocument  document       = LoadOpenApiDocument(json);
                    OpenApiOperation orderOperation = SelectOperation(document, OperationType.Post, "/v1/order");
                    AssertOrderOperation(orderOperation);
                }
        }
Exemplo n.º 7
0
        public async Task HttpAzureFunctionsProject_WithIncludeHealthChecks_ChecksAcceptRequestHeader()
        {
            // Arrange
            var options =
                new AzureFunctionsHttpProjectOptions()
                .WithIncludeHealthChecks();

            using (var project = await AzureFunctionsHttpProject.StartNewAsync(_config, options, _outputWriter))
            {
                // Act
                using (HttpResponseMessage response = await project.Health.GetAsync(request =>
                {
                    request.Headers.Accept.Clear();
                    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/pdf"));
                }))
                {
                    // Assert
                    Assert.Equal(HttpStatusCode.UnsupportedMediaType, response.StatusCode);
                }
            }
        }
Exemplo n.º 8
0
        public async Task OrderFunction_ReceivedBatchedOrders_ReturnsSuccess()
        {
            // Arrange
            var config = TestConfig.Create();

            using (var project = AzureFunctionsHttpProject.CreateNew(config, _outputWriter))
            {
                project.UpdateFileInProject($"{nameof(OrderFunction)}.cs", contents =>
                {
                    return(contents.Replace("GetJsonBodyAsync<Order>", "GetJsonBodyAsync<Order[]>"));
                });
                await project.StartAsync();

                IEnumerable <Order> orders = BogusGenerator.Make(3, CreateRandomOrder);
                string json = JsonConvert.SerializeObject(orders.ToArray());

                // Act
                using (HttpResponseMessage response = await project.Order.PostAsync(json))
                {
                    // Assert
                    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                }
            }
        }
Exemplo n.º 9
0
        public async Task HttpAzureFunctionsProject_WithIncludeHealthChecks_ContainsHealthChecks()
        {
            // Arrange
            var options =
                new AzureFunctionsHttpProjectOptions()
                .WithIncludeHealthChecks();

            using (var project = await AzureFunctionsHttpProject.StartNewAsync(_config, options, _outputWriter))
            {
                // Act
                using (HttpResponseMessage response = await project.Health.GetAsync())
                {
                    // Assert
                    Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                    Assert.NotEmpty(response.Headers.GetValues("RequestId"));
                    Assert.NotEmpty(response.Headers.GetValues("X-Transaction-Id"));

                    string healthReportJson = await response.Content.ReadAsStringAsync();

                    var healthReport = JObject.Parse(healthReportJson);
                    Assert.Equal(HealthStatus.Healthy.ToString(), healthReport["status"]);
                }
            }
        }