Skip to content

Commit c45a0bc

Browse files
committed
fix(writers): throw for mutualTLS in OAS 3.0
1 parent c80354a commit c45a0bc

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
128128
break;
129129
case SecuritySchemeType.MutualTLS:
130130
// No additional properties for mutualTLS
131+
if (version < OpenApiSpecVersion.OpenApi3_1)
132+
{
133+
// mutualTLS is introduced in OpenAPI 3.1
134+
throw new OpenApiException($"mutualTLS security scheme is only supported in OpenAPI 3.1 and later versions. Current version: {version}");
135+
}
131136
break;
132137
}
133138

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ public class OpenApiSecuritySchemeTests
101101
OpenIdConnectUrl = new("https://example.com/openIdConnect")
102102
};
103103

104+
private static OpenApiSecurityScheme MutualTlsSecurityScheme => new()
105+
{
106+
Description = "description1",
107+
Type = SecuritySchemeType.MutualTLS
108+
};
109+
104110
private static OpenApiSecuritySchemeReference OpenApiSecuritySchemeReference => new("sampleSecurityScheme");
105111
private static OpenApiSecurityScheme ReferencedSecurityScheme => new()
106112
{
@@ -208,6 +214,19 @@ public async Task SerializeHttpBearerSecuritySchemeAsV3JsonWorks()
208214
Assert.Equal(expected, actual);
209215
}
210216

217+
[Fact]
218+
public void SerializeMutualTlsSecuritySchemeAsV3Throws()
219+
{
220+
// Arrange
221+
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
222+
var writer = new OpenApiJsonWriter(outputStringWriter);
223+
224+
// Act & Assert
225+
var exception = Assert.Throws<OpenApiException>(() => MutualTlsSecurityScheme.SerializeAsV3(writer));
226+
Assert.Contains("mutualTLS security scheme is only supported in OpenAPI 3.1 and later versions", exception.Message);
227+
Assert.Contains($"Current version: {OpenApiSpecVersion.OpenApi3_0}", exception.Message);
228+
}
229+
211230
[Fact]
212231
public async Task SerializeOAuthSingleFlowSecuritySchemeAsV3JsonWorks()
213232
{

0 commit comments

Comments
 (0)