Skip to content

Commit d5cdce8

Browse files
authored
Merge pull request #2977 from microsoft/feat/license-identifier-to-v2
feat: serialize license identifier as extension for earlier versions
2 parents dce8077 + fde38d8 commit d5cdce8

4 files changed

Lines changed: 43 additions & 0 deletions

File tree

src/Microsoft.OpenApi/Models/OpenApiConstants.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,11 @@ public static class OpenApiConstants
230230
/// </summary>
231231
public const string Identifier = "identifier";
232232

233+
/// <summary>
234+
/// Field: x-oai-license-identifier
235+
/// </summary>
236+
public const string OaiLicenseIdentifier = "x-oai-license-identifier";
237+
233238
/// <summary>
234239
/// Field: Namespace
235240
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiLicense.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public virtual void SerializeAsV31(IOpenApiWriter writer)
6363
public virtual void SerializeAsV3(IOpenApiWriter writer)
6464
{
6565
WriteInternal(writer, OpenApiSpecVersion.OpenApi3_0);
66+
writer.WriteProperty(OpenApiConstants.OaiLicenseIdentifier, Identifier);
6667
writer.WriteEndObject();
6768
}
6869

@@ -72,6 +73,7 @@ public virtual void SerializeAsV3(IOpenApiWriter writer)
7273
public virtual void SerializeAsV2(IOpenApiWriter writer)
7374
{
7475
WriteInternal(writer, OpenApiSpecVersion.OpenApi2_0);
76+
writer.WriteProperty(OpenApiConstants.OaiLicenseIdentifier, Identifier);
7577
writer.WriteEndObject();
7678
}
7779

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
#nullable enable
2+
const Microsoft.OpenApi.OpenApiConstants.OaiLicenseIdentifier = "x-oai-license-identifier" -> string!

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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,25 @@ public async Task SerializeLicenseWithIdentifierAsJsonWorks()
148148
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral());
149149
}
150150

151+
[Theory]
152+
[InlineData(OpenApiSpecVersion.OpenApi3_0)]
153+
[InlineData(OpenApiSpecVersion.OpenApi2_0)]
154+
public async Task SerializeLicenseWithIdentifierAsJsonWorksForV3AndV2(OpenApiSpecVersion version)
155+
{
156+
// Arrange
157+
var expected =
158+
@"{
159+
""name"": ""Apache 2.0"",
160+
""x-oai-license-identifier"": ""Apache-2.0""
161+
}";
162+
163+
// Act
164+
var actual = await LicenseWithIdentifier.SerializeAsJsonAsync(version);
165+
166+
// Assert
167+
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral());
168+
}
169+
151170
[Fact]
152171
public async Task SerializeLicenseWithIdentifierAsYamlWorks()
153172
{
@@ -161,5 +180,21 @@ public async Task SerializeLicenseWithIdentifierAsYamlWorks()
161180
// Assert
162181
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral());
163182
}
183+
184+
[Theory]
185+
[InlineData(OpenApiSpecVersion.OpenApi3_0)]
186+
[InlineData(OpenApiSpecVersion.OpenApi2_0)]
187+
public async Task SerializeLicenseWithIdentifierAsYamlWorksForV3AndV2(OpenApiSpecVersion version)
188+
{
189+
// Arrange
190+
var expected = @"name: Apache 2.0
191+
x-oai-license-identifier: Apache-2.0";
192+
193+
// Act
194+
var actual = await LicenseWithIdentifier.SerializeAsYamlAsync(version);
195+
196+
// Assert
197+
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), actual.MakeLineBreaksEnvironmentNeutral());
198+
}
164199
}
165200
}

0 commit comments

Comments
 (0)