Skip to content

Commit e2ff502

Browse files
Merge pull request #1439 from microsoft/mk/fix-link-extension-serialization
Fix link extensions serialization
2 parents 4130c00 + 7f71a4f commit e2ff502

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/Microsoft.OpenApi/Models/OpenApiLink.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ public void SerializeAsV3WithoutReference(IOpenApiWriter writer)
147147
// server
148148
writer.WriteOptionalObject(OpenApiConstants.Server, Server, (w, s) => s.SerializeAsV3(w));
149149

150+
// specification extensions
151+
writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
152+
150153
writer.WriteEndObject();
151154
}
152155

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

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace Microsoft.OpenApi.Tests.Models
1717
[UsesVerify]
1818
public class OpenApiLinkTests
1919
{
20-
public static OpenApiLink AdvancedLink = new()
20+
public static readonly OpenApiLink AdvancedLink = new()
2121
{
2222
OperationId = "operationId1",
2323
Parameters =
@@ -41,7 +41,7 @@ public class OpenApiLinkTests
4141
}
4242
};
4343

44-
public static OpenApiLink ReferencedLink = new()
44+
public static readonly OpenApiLink ReferencedLink = new()
4545
{
4646
Reference = new()
4747
{
@@ -120,5 +120,35 @@ public async Task SerializeReferencedLinkAsV3JsonWithoutReferenceWorksAsync(bool
120120
// Assert
121121
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
122122
}
123+
124+
[Fact]
125+
public void LinkExtensionsSerializationWorks()
126+
{
127+
// Arrange
128+
var link = new OpenApiLink()
129+
{
130+
Extensions = {
131+
{ "x-display", new OpenApiString("Abc") }
132+
}
133+
};
134+
135+
var expected =
136+
"""
137+
{
138+
"x-display": "Abc"
139+
}
140+
""";
141+
142+
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
143+
var writer = new OpenApiJsonWriter(outputStringWriter, new() { Terse = false });
144+
145+
146+
// Act
147+
link.SerializeAsV3(writer);
148+
149+
// Assert
150+
var actual = outputStringWriter.ToString();
151+
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral());
152+
}
123153
}
124154
}

0 commit comments

Comments
 (0)