Skip to content

Commit d3df64d

Browse files
Merge pull request #1752 from dldl-cmd/1506_securityRequirement_securityScheme_serialization
Fix securityScheme/securityRequirement serialization
2 parents 2250776 + 32ed80b commit d3df64d

8 files changed

+38
-15
lines changed

src/Microsoft.OpenApi/Models/OpenApiReference.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -148,13 +148,6 @@ public void SerializeAsV3(IOpenApiWriter writer)
148148
return;
149149
}
150150

151-
if (Type == ReferenceType.SecurityScheme)
152-
{
153-
// Write the string as property name
154-
writer.WritePropertyName(ReferenceV3);
155-
return;
156-
}
157-
158151
writer.WriteStartObject();
159152

160153
// $ref

src/Microsoft.OpenApi/Models/OpenApiSecurityRequirement.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
5050
continue;
5151
}
5252

53-
securityScheme.SerializeAsV3(writer);
53+
writer.WritePropertyName(securityScheme.Reference.ReferenceV3);
5454

5555
writer.WriteStartArray();
5656

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"scheme1": [
3+
"scope1",
4+
"scope2",
5+
"scope3"
6+
],
7+
"scheme2": [
8+
"scope4",
9+
"scope5"
10+
],
11+
"scheme3": [ ]
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"scheme1":["scope1","scope2","scope3"],"scheme2":["scope4","scope5"],"scheme3":[ ]}

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,14 @@
33

44
using System;
55
using System.Collections.Generic;
6+
using System.Globalization;
7+
using System.IO;
8+
using System.Threading.Tasks;
69
using FluentAssertions;
710
using Microsoft.OpenApi.Extensions;
811
using Microsoft.OpenApi.Models;
12+
using Microsoft.OpenApi.Writers;
13+
using VerifyXunit;
914
using Xunit;
1015

1116
namespace Microsoft.OpenApi.Tests.Models
@@ -95,6 +100,23 @@ public void SerializeBasicSecurityRequirementAsV3JsonWorks()
95100
actual.Should().Be(expected);
96101
}
97102

103+
[Theory]
104+
[InlineData(true)]
105+
[InlineData(false)]
106+
public async Task SerializeSecurityRequirementAsV3JsonWorksAsync(bool produceTerseOutput)
107+
{
108+
// Arrange
109+
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
110+
var writer = new OpenApiJsonWriter(outputStringWriter, new() { Terse = produceTerseOutput });
111+
112+
// Act
113+
SecurityRequirementWithReferencedSecurityScheme.SerializeAsV3(writer);
114+
writer.Flush();
115+
116+
// Assert
117+
await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput);
118+
}
119+
98120
[Fact]
99121
public void SerializeSecurityRequirementWithReferencedSecuritySchemeAsV3JsonWorks()
100122
{
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"sampleSecurityScheme": null
2+
"$ref": "sampleSecurityScheme"
33
}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"sampleSecurityScheme":null}
1+
{"$ref":"sampleSecurityScheme"}

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,12 +314,7 @@ public async Task SerializeReferencedSecuritySchemeAsV3JsonWorksAsync(bool produ
314314
var writer = new OpenApiJsonWriter(outputStringWriter, new() { Terse = produceTerseOutput });
315315

316316
// Act
317-
// Add dummy start object, value, and end object to allow SerializeAsV3 to output security scheme
318-
// as property name.
319-
writer.WriteStartObject();
320317
ReferencedSecurityScheme.SerializeAsV3(writer);
321-
writer.WriteNull();
322-
writer.WriteEndObject();
323318
writer.Flush();
324319

325320
// Assert

0 commit comments

Comments
 (0)