Skip to content

Commit 2b1d082

Browse files
Merge pull request #1491 from dldl-cmd/openapiwalker_references
Fix unresolved references in OpenApiWalker
2 parents f6777e4 + 5b40826 commit 2b1d082

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/Microsoft.OpenApi/Services/OpenApiWalker.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1091,7 +1091,8 @@ private void Walk(string context, Action walk)
10911091
/// </summary>
10921092
private bool ProcessAsReference(IOpenApiReferenceable referenceable, bool isComponent = false)
10931093
{
1094-
var isReference = referenceable.Reference != null && !isComponent;
1094+
var isReference = referenceable.Reference != null &&
1095+
(!isComponent || referenceable.UnresolvedReference);
10951096
if (isReference)
10961097
{
10971098
Walk(referenceable);

test/Microsoft.OpenApi.Tests/Walkers/WalkerLocationTests.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,18 @@ public void LocateReferences()
233233
Headers = new Dictionary<string, OpenApiHeader>
234234
{
235235
["test-header"] = testHeader
236+
},
237+
SecuritySchemes = new Dictionary<string, OpenApiSecurityScheme>
238+
{
239+
["test-secScheme"] = new OpenApiSecurityScheme
240+
{
241+
Reference = new OpenApiReference
242+
{
243+
Id = "reference-to-scheme",
244+
Type = ReferenceType.SecurityScheme
245+
},
246+
UnresolvedReference = true
247+
}
236248
}
237249
}
238250
};
@@ -245,6 +257,7 @@ public void LocateReferences()
245257
"referenceAt: #/paths/~1/get/responses/200/content/application~1json/schema",
246258
"referenceAt: #/paths/~1/get/responses/200/headers/test-header",
247259
"referenceAt: #/components/schemas/derived/anyOf/0",
260+
"referenceAt: #/components/securitySchemes/test-secScheme",
248261
"referenceAt: #/components/headers/test-header/schema"
249262
});
250263
}

0 commit comments

Comments
 (0)