Skip to content

Commit 8957d1e

Browse files
committed
Added test for global security reference
1 parent 1475af6 commit 8957d1e

File tree

5 files changed

+31
-0
lines changed

5 files changed

+31
-0
lines changed

src/Microsoft.OpenApi/Services/OpenApiWalker.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public void Walk(OpenApiDocument doc)
4444
Walk(OpenApiConstants.Servers, () => Walk(doc.Servers));
4545
Walk(OpenApiConstants.Paths, () => Walk(doc.Paths));
4646
Walk(OpenApiConstants.Components, () => Walk(doc.Components));
47+
Walk(OpenApiConstants.Security, () => Walk(doc.SecurityRequirements));
4748
Walk(OpenApiConstants.ExternalDocs, () => Walk(doc.ExternalDocs));
4849
Walk(OpenApiConstants.Tags, () => Walk(doc.Tags));
4950
Walk(doc as IOpenApiExtensible);

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<AssemblyOriginatorKeyFile>..\..\src\Microsoft.OpenApi.snk</AssemblyOriginatorKeyFile>
1414
</PropertyGroup>
1515
<ItemGroup>
16+
<None Remove="V3Tests\Samples\OpenApiDocument\securedApi.yaml" />
1617
<None Remove="V3Tests\Samples\OpenApiOperation\securedOperation.yaml" />
1718
</ItemGroup>
1819
<ItemGroup>
@@ -97,6 +98,7 @@
9798
<EmbeddedResource Include="V3Tests\Samples\OpenApiDocument\petStoreWithTagAndSecurity.yaml">
9899
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
99100
</EmbeddedResource>
101+
<EmbeddedResource Include="V3Tests\Samples\OpenApiDocument\securedApi.yaml" />
100102
<EmbeddedResource Include="V3Tests\Samples\OpenApiEncoding\advancedEncoding.yaml">
101103
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
102104
</EmbeddedResource>

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.IO;
7+
using System.Linq;
78
using FluentAssertions;
89
using Microsoft.OpenApi.Models;
910
using Newtonsoft.Json;
@@ -1110,5 +1111,18 @@ public void ParsePetStoreExpandedShouldSucceed()
11101111
context.ShouldBeEquivalentTo(
11111112
new OpenApiDiagnostic() { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 });
11121113
}
1114+
1115+
[Fact]
1116+
public void GlobalSecurityRequirementShouldReferenceSecurityScheme()
1117+
{
1118+
using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "securedApi.yaml")))
1119+
{
1120+
var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic);
1121+
1122+
var securityRequirement = openApiDoc.SecurityRequirements.First();
1123+
1124+
Assert.Same(securityRequirement.Keys.First(), openApiDoc.Components.SecuritySchemes.First().Value);
1125+
}
1126+
}
11131127
}
11141128
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,7 @@ public void OperationWithSecurityRequirementShouldReferenceSecurityScheme()
2323
Assert.Same(securityRequirement.Keys.First(), openApiDoc.Components.SecuritySchemes.First().Value);
2424
}
2525
}
26+
27+
2628
}
2729
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
openapi: 3.0.0
2+
info:
3+
title: Example of Security Requirement referencing a security scheme
4+
version: 1.0.0
5+
paths: {}
6+
security:
7+
- basicAuth: []
8+
components:
9+
securitySchemes:
10+
basicAuth:
11+
type: http
12+
scheme: basic

0 commit comments

Comments
 (0)