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 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);
                }
        }
Exemplo n.º 3
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.º 4
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"]);
                }
            }
        }