diff --git a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs index 9c8a9b2a7..e0ca634eb 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs @@ -73,7 +73,7 @@ public void RegisterComponents() /// /// A declaration of which security mechanisms can be used across the API. /// - public IList? SecurityRequirements { get; set; } = + public IList? Security { get; set; } = new List(); private HashSet? _tags; @@ -139,7 +139,7 @@ public OpenApiDocument(OpenApiDocument? document) Paths = document?.Paths != null ? new(document?.Paths) : new OpenApiPaths(); Webhooks = document?.Webhooks != null ? new Dictionary(document.Webhooks) : null; Components = document?.Components != null ? new(document?.Components) : null; - SecurityRequirements = document?.SecurityRequirements != null ? new List(document.SecurityRequirements) : null; + Security = document?.Security != null ? new List(document.Security) : null; Tags = document?.Tags != null ? new HashSet(document.Tags, OpenApiTagComparer.Instance) : null; ExternalDocs = document?.ExternalDocs != null ? new(document?.ExternalDocs) : null; Extensions = document?.Extensions != null ? new Dictionary(document.Extensions) : null; @@ -223,7 +223,7 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version // security writer.WriteOptionalCollection( OpenApiConstants.Security, - SecurityRequirements, + Security, callback); // tags @@ -361,7 +361,7 @@ public void SerializeAsV2(IOpenApiWriter writer) // security writer.WriteOptionalCollection( OpenApiConstants.Security, - SecurityRequirements, + Security, (w, s) => s.SerializeAsV2(w)); // tags diff --git a/src/Microsoft.OpenApi/Reader/V2/OpenApiDocumentDeserializer.cs b/src/Microsoft.OpenApi/Reader/V2/OpenApiDocumentDeserializer.cs index 7e13578f3..da4060721 100644 --- a/src/Microsoft.OpenApi/Reader/V2/OpenApiDocumentDeserializer.cs +++ b/src/Microsoft.OpenApi/Reader/V2/OpenApiDocumentDeserializer.cs @@ -103,7 +103,7 @@ internal static partial class OpenApiV2Deserializer o.Components.SecuritySchemes = n.CreateMap(LoadSecurityScheme, o); } }, - {"security", (o, n, _) => o.SecurityRequirements = n.CreateList(LoadSecurityRequirement, o)}, + {"security", (o, n, _) => o.Security = n.CreateList(LoadSecurityRequirement, o)}, {"tags", (o, n, _) => { if (n.CreateList(LoadTag, o) is {Count:> 0} tags) {o.Tags = new HashSet(tags, OpenApiTagComparer.Instance); } } }, {"externalDocs", (o, n, _) => o.ExternalDocs = LoadExternalDocs(n, o)} }; diff --git a/src/Microsoft.OpenApi/Reader/V3/OpenApiDocumentDeserializer.cs b/src/Microsoft.OpenApi/Reader/V3/OpenApiDocumentDeserializer.cs index f6ca536c4..044542d21 100644 --- a/src/Microsoft.OpenApi/Reader/V3/OpenApiDocumentDeserializer.cs +++ b/src/Microsoft.OpenApi/Reader/V3/OpenApiDocumentDeserializer.cs @@ -29,7 +29,7 @@ internal static partial class OpenApiV3Deserializer {"components", (o, n, _) => o.Components = LoadComponents(n, o)}, {"tags", (o, n, _) => { if (n.CreateList(LoadTag, o) is {Count:> 0} tags) {o.Tags = new HashSet(tags, OpenApiTagComparer.Instance); } } }, {"externalDocs", (o, n, _) => o.ExternalDocs = LoadExternalDocs(n, o)}, - {"security", (o, n, _) => o.SecurityRequirements = n.CreateList(LoadSecurityRequirement, o)} + {"security", (o, n, _) => o.Security = n.CreateList(LoadSecurityRequirement, o)} }; private static readonly PatternFieldMap _openApiPatternFields = new PatternFieldMap diff --git a/src/Microsoft.OpenApi/Reader/V31/OpenApiDocumentDeserializer.cs b/src/Microsoft.OpenApi/Reader/V31/OpenApiDocumentDeserializer.cs index f16ac31cc..e6c1f5761 100644 --- a/src/Microsoft.OpenApi/Reader/V31/OpenApiDocumentDeserializer.cs +++ b/src/Microsoft.OpenApi/Reader/V31/OpenApiDocumentDeserializer.cs @@ -27,7 +27,7 @@ internal static partial class OpenApiV31Deserializer {"components", (o, n, _) => o.Components = LoadComponents(n, o)}, {"tags", (o, n, _) => { if (n.CreateList(LoadTag, o) is {Count:> 0} tags) {o.Tags = new HashSet(tags, OpenApiTagComparer.Instance); } } }, {"externalDocs", (o, n, _) => o.ExternalDocs = LoadExternalDocs(n, o)}, - {"security", (o, n, _) => o.SecurityRequirements = n.CreateList(LoadSecurityRequirement, o)} + {"security", (o, n, _) => o.Security = n.CreateList(LoadSecurityRequirement, o)} }; private static readonly PatternFieldMap _openApiPatternFields = new() diff --git a/src/Microsoft.OpenApi/Services/OpenApiFilterService.cs b/src/Microsoft.OpenApi/Services/OpenApiFilterService.cs index 5f439fe94..448542c10 100644 --- a/src/Microsoft.OpenApi/Services/OpenApiFilterService.cs +++ b/src/Microsoft.OpenApi/Services/OpenApiFilterService.cs @@ -80,7 +80,7 @@ public static OpenApiDocument CreateFilteredDocument(OpenApiDocument source, Fun }, Components = components, - SecurityRequirements = source.SecurityRequirements, + Security = source.Security, Servers = source.Servers }; diff --git a/src/Microsoft.OpenApi/Services/OpenApiWalker.cs b/src/Microsoft.OpenApi/Services/OpenApiWalker.cs index 68e3133d6..76947f381 100644 --- a/src/Microsoft.OpenApi/Services/OpenApiWalker.cs +++ b/src/Microsoft.OpenApi/Services/OpenApiWalker.cs @@ -52,7 +52,7 @@ public void Walk(OpenApiDocument doc) Walk(OpenApiConstants.Paths, () => Walk(doc.Paths)); Walk(OpenApiConstants.Webhooks, () => Walk(doc.Webhooks)); Walk(OpenApiConstants.Components, () => Walk(doc.Components)); - Walk(OpenApiConstants.Security, () => Walk(doc.SecurityRequirements)); + Walk(OpenApiConstants.Security, () => Walk(doc.Security)); Walk(OpenApiConstants.ExternalDocs, () => Walk(doc.ExternalDocs)); Walk(OpenApiConstants.Tags, () => Walk(doc.Tags)); Walk(doc as IOpenApiExtensible); diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs index c54ecb628..5ad4905a2 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs @@ -1008,7 +1008,7 @@ public async Task ParseModifiedPetStoreDocumentWithTagAndSecurityShouldSucceed() Description = "tagDescription2" } }, - SecurityRequirements = new List + Security = new List { new OpenApiSecurityRequirement { @@ -1052,7 +1052,7 @@ public async Task GlobalSecurityRequirementShouldReferenceSecurityScheme() { var result = await OpenApiDocument.LoadAsync(Path.Combine(SampleFolderPath, "securedApi.yaml"), SettingsFixture.ReaderSettings); - var securityRequirement = result.Document.SecurityRequirements[0]; + var securityRequirement = result.Document.Security[0]; Assert.Equivalent(result.Document.Components.SecuritySchemes.First().Value, securityRequirement.Keys.First()); } diff --git a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt index 76697d7ae..b05fbb276 100644 --- a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt +++ b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt @@ -720,7 +720,7 @@ namespace Microsoft.OpenApi.Models public Microsoft.OpenApi.Models.OpenApiInfo Info { get; set; } public string? JsonSchemaDialect { get; set; } public Microsoft.OpenApi.Models.OpenApiPaths Paths { get; set; } - public System.Collections.Generic.IList? SecurityRequirements { get; set; } + public System.Collections.Generic.IList? Security { get; set; } public System.Collections.Generic.IList? Servers { get; set; } public System.Collections.Generic.ISet? Tags { get; set; } public System.Collections.Generic.IDictionary? Webhooks { get; set; }