Skip to content

Commit a6291d1

Browse files
committed
tests: adds a unit test to validate security reference resolution
Signed-off-by: Vincent Biret <vibiret@microsoft.com>
1 parent 32bef0f commit a6291d1

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.IO;
1010
using System.Linq;
1111
using System.Net.Http;
12+
using System.Text.Json.Nodes;
1213
using System.Threading.Tasks;
1314
using VerifyXunit;
1415
using Xunit;
@@ -2387,6 +2388,56 @@ public async Task SerializeDocumentWithSelfPropertyAsV32Works()
23872388
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral());
23882389
}
23892390

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+
23902441
[Fact]
23912442
public async Task SerializeDocumentWithSelfPropertyAsV31WritesAsExtension()
23922443
{

0 commit comments

Comments
 (0)