Skip to content

Commit a663407

Browse files
committed
Add tests to validate
1 parent 27b7623 commit a663407

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

src/Microsoft.OpenApi.Readers/OpenApiYamlDocumentReader.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,6 @@ private void ResolveReferences(OpenApiDiagnostic diagnostic, OpenApiDocument doc
166166
}
167167
}
168168

169-
170169
/// <summary>
171170
/// Reads the stream input and parses the fragment of an OpenAPI description into an Open API Element.
172171
/// </summary>

test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@
137137
<EmbeddedResource Include="V3Tests\Samples\OpenApiDocument\minimalDocument.yaml">
138138
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
139139
</EmbeddedResource>
140+
<EmbeddedResource Include="V3Tests\Samples\OpenApiDocument\docWithSecuritySchemeReference.yaml">
141+
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
142+
</EmbeddedResource>
140143
<EmbeddedResource Include="V3Tests\Samples\OpenApiDocument\apiWithFullHeaderComponent.yaml">
141144
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
142145
</EmbeddedResource>

test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.Collections.Generic;
6+
using System.Diagnostics.Contracts;
67
using System.Globalization;
78
using System.IO;
89
using System.Linq;
@@ -1334,10 +1335,10 @@ public void DoesNotChangeExternalReferences()
13341335
{
13351336
// Arrange
13361337
using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "documentWithExternalRefs.yaml"));
1337-
1338+
13381339
// Act
13391340
var doc = new OpenApiStreamReader(
1340-
new OpenApiReaderSettings { ReferenceResolution = ReferenceResolutionSetting.DoNotResolveReferences})
1341+
new OpenApiReaderSettings { ReferenceResolution = ReferenceResolutionSetting.DoNotResolveReferences })
13411342
.Read(stream, out var diagnostic);
13421343

13431344
var externalRef = doc.Components.Schemas["Nested"].Properties["AnyOf"].AnyOf.First().Reference.ReferenceV3;
@@ -1347,5 +1348,24 @@ public void DoesNotChangeExternalReferences()
13471348
Assert.Equal("file:///C:/MySchemas.json#/definitions/ArrayObject", externalRef);
13481349
Assert.Equal("../foo/schemas.yaml#/components/schemas/Number", externalRef2);
13491350
}
1351+
1352+
[Fact]
1353+
public void ParseDocumentWithReferencedSecuritySchemeWorks()
1354+
{
1355+
// Arrange
1356+
using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "docWithSecuritySchemeReference.yaml"));
1357+
1358+
// Act
1359+
var doc = new OpenApiStreamReader(new OpenApiReaderSettings
1360+
{
1361+
ReferenceResolution = ReferenceResolutionSetting.ResolveLocalReferences
1362+
}).Read(stream, out var diagnostic);
1363+
1364+
var securityScheme = doc.Components.SecuritySchemes["OAuth2"];
1365+
1366+
// Assert
1367+
Assert.False(securityScheme.UnresolvedReference);
1368+
Assert.NotNull(securityScheme.Flows);
1369+
}
13501370
}
13511371
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
openapi: 3.0.0
2+
info:
3+
title: Example API
4+
version: 1.0.0
5+
paths: { }
6+
components:
7+
securitySchemes:
8+
OAuth2:
9+
$ref: '#/components/securitySchemes/RefOAuth2'
10+
RefOAuth2:
11+
type: oauth2
12+
flows:
13+
implicit:
14+
authorizationUrl: https://example.com/api/oauth/dialog
15+
scopes:
16+
write:pets: modify pets in your account
17+
read:pets: read your pets

0 commit comments

Comments
 (0)