|
9 | 9 | using System.IO; |
10 | 10 | using System.Linq; |
11 | 11 | using System.Net.Http; |
| 12 | +using System.Text.Json.Nodes; |
12 | 13 | using System.Threading.Tasks; |
13 | 14 | using VerifyXunit; |
14 | 15 | using Xunit; |
@@ -2387,6 +2388,56 @@ public async Task SerializeDocumentWithSelfPropertyAsV32Works() |
2387 | 2388 | Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral()); |
2388 | 2389 | } |
2389 | 2390 |
|
| 2391 | + [Theory] |
| 2392 | + [InlineData(OpenApiSpecVersion.OpenApi3_0)] |
| 2393 | + [InlineData(OpenApiSpecVersion.OpenApi3_1)] |
| 2394 | + [InlineData(OpenApiSpecVersion.OpenApi3_2)] |
| 2395 | + public async Task SerializeDocumentWithSecurityRequirementAsJsonWorks(OpenApiSpecVersion openApiSpecVersion) |
| 2396 | + { |
| 2397 | + // Arrange |
| 2398 | + var doc = new OpenApiDocument |
| 2399 | + { |
| 2400 | + Info = new OpenApiInfo { Title = "Test", Version = "1.0" }, |
| 2401 | + Components = new OpenApiComponents |
| 2402 | + { |
| 2403 | + SecuritySchemes = new Dictionary<string, IOpenApiSecurityScheme>(StringComparer.Ordinal) |
| 2404 | + { |
| 2405 | + ["Bearer"] = new OpenApiSecurityScheme |
| 2406 | + { |
| 2407 | + Type = SecuritySchemeType.Http, |
| 2408 | + Scheme = "Bearer", |
| 2409 | + BearerFormat = "JWT", |
| 2410 | + }, |
| 2411 | + }, |
| 2412 | + }, |
| 2413 | + }; |
| 2414 | + |
| 2415 | + doc.Security = |
| 2416 | + [ |
| 2417 | + new OpenApiSecurityRequirement |
| 2418 | + { |
| 2419 | + { new OpenApiSecuritySchemeReference("Bearer", doc), [] }, |
| 2420 | + }, |
| 2421 | + ]; |
| 2422 | + |
| 2423 | + var expected = |
| 2424 | + """ |
| 2425 | + [ |
| 2426 | + { |
| 2427 | + "Bearer": [] |
| 2428 | + } |
| 2429 | + ] |
| 2430 | + """; |
| 2431 | + |
| 2432 | + // Act |
| 2433 | + var actual = await doc.SerializeAsJsonAsync(openApiSpecVersion); |
| 2434 | + |
| 2435 | + // Assert |
| 2436 | + var actualSecurity = JsonNode.Parse(actual)?["security"]; |
| 2437 | + Assert.NotNull(actualSecurity); |
| 2438 | + Assert.True(JsonNode.DeepEquals(JsonNode.Parse(expected), actualSecurity)); |
| 2439 | + } |
| 2440 | + |
2390 | 2441 | [Fact] |
2391 | 2442 | public async Task SerializeDocumentWithSelfPropertyAsV31WritesAsExtension() |
2392 | 2443 | { |
|
0 commit comments