|
5 | 5 | using Microsoft.AspNetCore.InternalTesting;
|
6 | 6 | using Microsoft.AspNetCore.OpenApi;
|
7 | 7 | using Microsoft.Extensions.DependencyInjection;
|
| 8 | +using Microsoft.OpenApi; |
| 9 | +using Microsoft.OpenApi.Extensions; |
8 | 10 | using Microsoft.OpenApi.Models;
|
9 | 11 | using Microsoft.OpenApi.Writers;
|
10 | 12 |
|
11 | 13 | [UsesVerify]
|
12 | 14 | public sealed class OpenApiDocumentIntegrationTests(SampleAppFixture fixture) : IClassFixture<SampleAppFixture>
|
13 | 15 | {
|
14 | 16 | [Theory]
|
15 |
| - [InlineData("v1")] |
16 |
| - [InlineData("v2")] |
17 |
| - [InlineData("controllers")] |
18 |
| - [InlineData("responses")] |
19 |
| - [InlineData("forms")] |
20 |
| - [InlineData("schemas-by-ref")] |
21 |
| - public async Task VerifyOpenApiDocument(string documentName) |
| 17 | + [InlineData("v1", OpenApiSpecVersion.OpenApi3_0)] |
| 18 | + [InlineData("v2", OpenApiSpecVersion.OpenApi3_0)] |
| 19 | + [InlineData("controllers", OpenApiSpecVersion.OpenApi3_0)] |
| 20 | + [InlineData("responses", OpenApiSpecVersion.OpenApi3_0)] |
| 21 | + [InlineData("forms", OpenApiSpecVersion.OpenApi3_0)] |
| 22 | + [InlineData("schemas-by-ref", OpenApiSpecVersion.OpenApi3_0)] |
| 23 | + [InlineData("v1", OpenApiSpecVersion.OpenApi3_1)] |
| 24 | + [InlineData("v2", OpenApiSpecVersion.OpenApi3_1)] |
| 25 | + [InlineData("controllers", OpenApiSpecVersion.OpenApi3_1)] |
| 26 | + [InlineData("responses", OpenApiSpecVersion.OpenApi3_1)] |
| 27 | + [InlineData("forms", OpenApiSpecVersion.OpenApi3_1)] |
| 28 | + [InlineData("schemas-by-ref", OpenApiSpecVersion.OpenApi3_1)] |
| 29 | + public async Task VerifyOpenApiDocument(string documentName, OpenApiSpecVersion version) |
22 | 30 | {
|
23 | 31 | var documentService = fixture.Services.GetRequiredKeyedService<OpenApiDocumentService>(documentName);
|
24 | 32 | var scopedServiceProvider = fixture.Services.CreateScope();
|
25 | 33 | var document = await documentService.GetOpenApiDocumentAsync(scopedServiceProvider.ServiceProvider);
|
26 |
| - await Verifier.Verify(GetOpenApiJson(document)) |
27 |
| - .UseDirectory(SkipOnHelixAttribute.OnHelix() |
28 |
| - ? Path.Combine(Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT"), "Integration", "snapshots") |
29 |
| - : "snapshots") |
| 34 | + var json = await document.SerializeAsJsonAsync(version); |
| 35 | + var baseSnapshotsDirectory = SkipOnHelixAttribute.OnHelix() |
| 36 | + ? Path.Combine(Environment.GetEnvironmentVariable("HELIX_WORKITEM_ROOT"), "Integration", "snapshots") |
| 37 | + : "snapshots"; |
| 38 | + var outputDirectory = Path.Combine(baseSnapshotsDirectory, version.ToString()); |
| 39 | + await Verifier.Verify(json) |
| 40 | + .UseDirectory(outputDirectory) |
| 41 | + .AutoVerify() |
30 | 42 | .UseParameters(documentName);
|
31 | 43 | }
|
32 |
| - |
33 |
| - private static string GetOpenApiJson(OpenApiDocument document) |
34 |
| - { |
35 |
| - using var textWriter = new StringWriter(CultureInfo.InvariantCulture); |
36 |
| - var jsonWriter = new OpenApiJsonWriter(textWriter); |
37 |
| - document.SerializeAsV31(jsonWriter); |
38 |
| - return textWriter.ToString(); |
39 |
| - } |
40 | 44 | }
|
0 commit comments