Skip to content

Commit 6848bd0

Browse files
authored
Merge pull request #821 from DeagleGross/dmkorolev/resolve-local-file-references
[bugfix] Resolve local file reference with Schema type properly
2 parents 28255e4 + d0f41af commit 6848bd0

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

src/Microsoft.OpenApi.Readers/V3/OpenApiV3VersionService.cs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,6 @@ public OpenApiReference ConvertToOpenApiReference(
7575
var segments = reference.Split('#');
7676
if (segments.Length == 1)
7777
{
78-
// Either this is an external reference as an entire file
79-
// or a simple string-style reference for tag and security scheme.
80-
if (type == null)
81-
{
82-
// "$ref": "Pet.json"
83-
return new OpenApiReference
84-
{
85-
Type = type,
86-
ExternalResource = segments[0]
87-
};
88-
}
89-
9078
if (type == ReferenceType.Tag || type == ReferenceType.SecurityScheme)
9179
{
9280
return new OpenApiReference
@@ -95,6 +83,14 @@ public OpenApiReference ConvertToOpenApiReference(
9583
Id = reference
9684
};
9785
}
86+
87+
// Either this is an external reference as an entire file
88+
// or a simple string-style reference for tag and security scheme.
89+
return new OpenApiReference
90+
{
91+
Type = type,
92+
ExternalResource = segments[0]
93+
};
9894
}
9995
else if (segments.Length == 2)
10096
{

test/Microsoft.OpenApi.Readers.Tests/ReferenceService/ConvertToOpenApiReferenceV3Tests.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,5 +108,21 @@ public void ParseSecuritySchemeReference()
108108
reference.ExternalResource.Should().BeNull();
109109
reference.Id.Should().Be(id);
110110
}
111+
112+
[Fact]
113+
public void ParseLocalFileReference()
114+
{
115+
// Arrange
116+
var versionService = new OpenApiV3VersionService(Diagnostic);
117+
var referenceType = ReferenceType.Schema;
118+
var input = $"../schemas/collection.json";
119+
120+
// Act
121+
var reference = versionService.ConvertToOpenApiReference(input, referenceType);
122+
123+
// Assert
124+
reference.Type.Should().Be(referenceType);
125+
reference.ExternalResource.Should().Be(input);
126+
}
111127
}
112128
}

0 commit comments

Comments
 (0)