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); } }
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); } } }
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"]); } } }