From 737d180c71a8c1bf39164b0b5ad65836b04abb24 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Wed, 14 Jun 2023 16:17:46 +0300 Subject: [PATCH 1/2] Clone extensions in the schema copy constructor --- src/Microsoft.OpenApi/Models/OpenApiSchema.cs | 1 + .../Models/OpenApiSchemaTests.cs | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs index 0176ea1d9..b0ac2dbac 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs @@ -288,6 +288,7 @@ public OpenApiSchema(OpenApiSchema schema) ExternalDocs = schema?.ExternalDocs != null ? new(schema?.ExternalDocs) : null; Deprecated = schema?.Deprecated ?? Deprecated; Xml = schema?.Xml != null ? new(schema?.Xml) : null; + Extensions = schema?.Extensions != null ? new Dictionary(schema.Extensions) : null; UnresolvedReference = schema?.UnresolvedReference ?? UnresolvedReference; Reference = schema?.Reference != null ? new(schema?.Reference) : null; } diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs index e4078f2f7..2a0dd0039 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs @@ -9,6 +9,7 @@ using FluentAssertions; using Microsoft.OpenApi.Any; using Microsoft.OpenApi.Extensions; +using Microsoft.OpenApi.Interfaces; using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Writers; using VerifyXunit; @@ -479,5 +480,29 @@ public void OpenApiSchemaCopyConstructorSucceeds() Assert.Equal("date", actualSchema.Format); Assert.True(actualSchema.Nullable); } + + [Fact] + public void CloningSchemaExtensionsWorks() + { + // Arrange + var schema = new OpenApiSchema + { + Extensions = + { + { "x-myextension", new OpenApiInteger(42) } + } + }; + + // Act && Assert + var schemaCopy = new OpenApiSchema(schema); + Assert.Equal(1, schemaCopy.Extensions.Count); + + // Act && Assert + schemaCopy.Extensions = new Dictionary + { + { "x-myextension" , new OpenApiInteger(40) } + }; + Assert.NotEqual(schema.Extensions, schemaCopy.Extensions); + } } } From 7d0df919cf4ecdac681b71b52cfba5b75b81855f Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Wed, 14 Jun 2023 16:31:15 +0300 Subject: [PATCH 2/2] Update public api --- test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt index d993a259e..96071507f 100755 --- a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt +++ b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt @@ -1024,6 +1024,8 @@ namespace Microsoft.OpenApi.Models Callback = 8, [Microsoft.OpenApi.Attributes.Display("tags")] Tag = 9, + [Microsoft.OpenApi.Attributes.Display("paths")] + Path = 10, } public class RuntimeExpressionAnyWrapper : Microsoft.OpenApi.Interfaces.IOpenApiElement {