| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- // Licensed to the .NET Foundation under one or more agreements.
- // The .NET Foundation licenses this file to you under the MIT license.
- using System.Globalization;
- using Microsoft.AspNetCore.InternalTesting;
- using Microsoft.AspNetCore.OpenApi;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.OpenApi.Models;
- using Microsoft.OpenApi.Writers;
- [UsesVerify]
- public sealed class OpenApiDocumentIntegrationTests(SampleAppFixture fixture) : IClassFixture<SampleAppFixture>
- {
- [Theory]
- [InlineData("v1")]
- [InlineData("v2")]
- [InlineData("controllers")]
- [InlineData("responses")]
- [InlineData("forms")]
- [InlineData("schemas-by-ref")]
- public async Task VerifyOpenApiDocument(string documentName)
- {
- var documentService = fixture.Services.GetRequiredKeyedService<OpenApiDocumentService>(documentName);
- var scopedServiceProvider = fixture.Services.CreateScope();
- var document = await documentService.GetOpenApiDocumentAsync(scopedServiceProvider.ServiceProvider);
- await Verifier.Verify(GetOpenApiJson(document))
- .UseDirectory(SkipOnHelixAttribute.OnHelix()
- ? Path.Combine(Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT"), "Integration", "snapshots")
- : "snapshots")
- .UseParameters(documentName);
- }
- private static string GetOpenApiJson(OpenApiDocument document)
- {
- using var textWriter = new StringWriter(CultureInfo.InvariantCulture);
- var jsonWriter = new OpenApiJsonWriter(textWriter);
- document.SerializeAsV3(jsonWriter);
- return textWriter.ToString();
- }
- }
|