diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml
index 8e5cb1f51..b972c9848 100644
--- a/.github/workflows/ci-cd.yml
+++ b/.github/workflows/ci-cd.yml
@@ -14,7 +14,7 @@ jobs:
GITHUB_RUN_NUMBER: ${{ github.run_number }}
steps:
- name: Setup .NET
- uses: actions/setup-dotnet@v2
+ uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 8b965b442..eb56ea14f 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -17,7 +17,7 @@ jobs:
uses: actions/checkout@v3
- name: Setup .NET
- uses: actions/setup-dotnet@v2
+ uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
diff --git a/Microsoft.OpenApi.sln b/Microsoft.OpenApi.sln
index 157cb18ff..bb3c028e7 100644
--- a/Microsoft.OpenApi.sln
+++ b/Microsoft.OpenApi.sln
@@ -28,7 +28,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.OpenApi.SmokeTest
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.OpenApi.Hidi", "src\Microsoft.OpenApi.Hidi\Microsoft.OpenApi.Hidi.csproj", "{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.OpenApi.Hidi.Tests", "Microsoft.OpenApi.Hidi.Tests\Microsoft.OpenApi.Hidi.Tests.csproj", "{D8F799DD-04AC-4A13-B344-45A5B944450A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.OpenApi.Hidi.Tests", "test\Microsoft.OpenApi.Hidi.Tests\Microsoft.OpenApi.Hidi.Tests.csproj", "{D8F799DD-04AC-4A13-B344-45A5B944450A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
index fbb16de3f..55d529a06 100644
--- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
+++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj
@@ -15,7 +15,7 @@
Microsoft.OpenApi.Hidi
hidi
./../../artifacts
- 1.1.0-preview1
+ 1.1.0-preview2
OpenAPI.NET CLI tool for slicing OpenAPI documents
© Microsoft Corporation. All rights reserved.
OpenAPI .NET
@@ -43,7 +43,7 @@
-
+
diff --git a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj
index a3227eac0..d21c300eb 100644
--- a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj
+++ b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj
@@ -10,7 +10,7 @@
Microsoft
Microsoft.OpenApi.Readers
Microsoft.OpenApi.Readers
- 1.4.1
+ 1.4.4-preview1
OpenAPI.NET Readers for JSON and YAML documents
© Microsoft Corporation. All rights reserved.
OpenAPI .NET
diff --git a/src/Microsoft.OpenApi.Readers/V2/OpenApiHeaderDeserializer.cs b/src/Microsoft.OpenApi.Readers/V2/OpenApiHeaderDeserializer.cs
index 32caf86aa..5d6cc2ff3 100644
--- a/src/Microsoft.OpenApi.Readers/V2/OpenApiHeaderDeserializer.cs
+++ b/src/Microsoft.OpenApi.Readers/V2/OpenApiHeaderDeserializer.cs
@@ -1,4 +1,4 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
+// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
using System;
@@ -139,8 +139,12 @@ internal static partial class OpenApiV2Deserializer
{
OpenApiConstants.Default,
new AnyFieldMapParameter(
- p => p.Schema.Default,
- (p, v) => p.Schema.Default = v,
+ p => p.Schema?.Default,
+ (p, v) =>
+ {
+ if(p.Schema == null) return;
+ p.Schema.Default = v;
+ },
p => p.Schema)
}
};
@@ -151,8 +155,12 @@ internal static partial class OpenApiV2Deserializer
{
OpenApiConstants.Enum,
new AnyListFieldMapParameter(
- p => p.Schema.Enum,
- (p, v) => p.Schema.Enum = v,
+ p => p.Schema?.Enum,
+ (p, v) =>
+ {
+ if(p.Schema == null) return;
+ p.Schema.Enum = v;
+ },
p => p.Schema)
},
};
diff --git a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj
index 233d0717e..1affa74c6 100644
--- a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj
+++ b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj
@@ -11,7 +11,7 @@
Microsoft
Microsoft.OpenApi
Microsoft.OpenApi
- 1.4.3
+ 1.4.4-preview1
.NET models with JSON and YAML writers for OpenAPI specification
© Microsoft Corporation. All rights reserved.
OpenAPI .NET
diff --git a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs
index 93d88b310..5177e4f45 100644
--- a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs
+++ b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs
@@ -160,7 +160,7 @@ public void SerializeAsV2(IOpenApiWriter writer)
// paths
writer.WriteRequiredObject(OpenApiConstants.Paths, Paths, (w, p) => p.SerializeAsV2(w));
- // If references have been inlined we don't need the to render the components section
+ // If references have been inlined we don't need to render the components section
// however if they have cycles, then we will need a component rendered
if (writer.GetSettings().InlineLocalReferences)
{
@@ -208,9 +208,20 @@ public void SerializeAsV2(IOpenApiWriter writer)
});
}
// parameters
+ var parameters = Components?.Parameters != null
+ ? new Dictionary(Components.Parameters)
+ : new Dictionary();
+
+ if (Components?.RequestBodies != null)
+ {
+ foreach (var requestBody in Components.RequestBodies.Where(b => !parameters.ContainsKey(b.Key)))
+ {
+ parameters.Add(requestBody.Key, requestBody.Value.ConvertToBodyParameter());
+ }
+ }
writer.WriteOptionalMap(
OpenApiConstants.Parameters,
- Components?.Parameters,
+ parameters,
(w, key, component) =>
{
if (component.Reference != null &&
diff --git a/src/Microsoft.OpenApi/Models/OpenApiOperation.cs b/src/Microsoft.OpenApi/Models/OpenApiOperation.cs
index 7983a243e..d047b9cb6 100644
--- a/src/Microsoft.OpenApi/Models/OpenApiOperation.cs
+++ b/src/Microsoft.OpenApi/Models/OpenApiOperation.cs
@@ -224,7 +224,7 @@ public void SerializeAsV2(IOpenApiWriter writer)
// operationId
writer.WriteProperty(OpenApiConstants.OperationId, OperationId);
- IList parameters;
+ List parameters;
if (Parameters == null)
{
parameters = new List();
@@ -237,70 +237,58 @@ public void SerializeAsV2(IOpenApiWriter writer)
if (RequestBody != null)
{
// consumes
- writer.WritePropertyName(OpenApiConstants.Consumes);
- writer.WriteStartArray();
var consumes = RequestBody.Content.Keys.Distinct().ToList();
- foreach (var mediaType in consumes)
+ if (consumes.Any())
{
- writer.WriteValue(mediaType);
- }
-
- writer.WriteEndArray();
-
- // This is form data. We need to split the request body into multiple parameters.
- if (consumes.Contains("application/x-www-form-urlencoded") ||
- consumes.Contains("multipart/form-data"))
- {
- foreach (var property in RequestBody.Content.First().Value.Schema.Properties)
+ // This is form data. We need to split the request body into multiple parameters.
+ if (consumes.Contains("application/x-www-form-urlencoded") ||
+ consumes.Contains("multipart/form-data"))
{
- var paramSchema = property.Value;
- if ("string".Equals(paramSchema.Type, StringComparison.OrdinalIgnoreCase)
- && ("binary".Equals(paramSchema.Format, StringComparison.OrdinalIgnoreCase)
- || "base64".Equals(paramSchema.Format, StringComparison.OrdinalIgnoreCase)))
- {
- paramSchema.Type = "file";
- paramSchema.Format = null;
- }
- parameters.Add(
- new OpenApiFormDataParameter
- {
- Description = property.Value.Description,
- Name = property.Key,
- Schema = property.Value,
- Required = RequestBody.Content.First().Value.Schema.Required.Contains(property.Key)
-
- });
+ parameters.AddRange(RequestBody.ConvertToFormDataParameters());
+ }
+ else
+ {
+ parameters.Add(RequestBody.ConvertToBodyParameter());
}
}
- else
+ else if (RequestBody.Reference != null)
{
- var content = RequestBody.Content.Values.FirstOrDefault();
+ parameters.Add(
+ new OpenApiParameter
+ {
+ UnresolvedReference = true,
+ Reference = RequestBody.Reference
+ });
- var bodyParameter = new OpenApiBodyParameter
+ if (RequestBody.Reference.HostDocument != null)
{
- Description = RequestBody.Description,
- // V2 spec actually allows the body to have custom name.
- // To allow round-tripping we use an extension to hold the name
- Name = "body",
- Schema = content?.Schema ?? new OpenApiSchema(),
- Required = RequestBody.Required,
- Extensions = RequestBody.Extensions.ToDictionary(k => k.Key, v => v.Value) // Clone extensions so we can remove the x-bodyName extensions from the output V2 model.
- };
-
- if (bodyParameter.Extensions.ContainsKey(OpenApiConstants.BodyName))
+ var effectiveRequestBody = RequestBody.GetEffective(RequestBody.Reference.HostDocument);
+ if (effectiveRequestBody != null)
+ consumes = effectiveRequestBody.Content.Keys.Distinct().ToList();
+ }
+ }
+
+ if (consumes.Any())
+ {
+ writer.WritePropertyName(OpenApiConstants.Consumes);
+ writer.WriteStartArray();
+ foreach (var mediaType in consumes)
{
- bodyParameter.Name = (RequestBody.Extensions[OpenApiConstants.BodyName] as OpenApiString)?.Value ?? "body";
- bodyParameter.Extensions.Remove(OpenApiConstants.BodyName);
+ writer.WriteValue(mediaType);
}
-
- parameters.Add(bodyParameter);
+ writer.WriteEndArray();
}
}
if (Responses != null)
{
- var produces = Responses.Where(r => r.Value.Content != null)
- .SelectMany(r => r.Value.Content?.Keys)
+ var produces = Responses
+ .Where(static r => r.Value.Content != null)
+ .SelectMany(static r => r.Value.Content?.Keys)
+ .Concat(
+ Responses
+ .Where(static r => r.Value.Reference != null && r.Value.Reference.HostDocument != null)
+ .SelectMany(static r => r.Value.GetEffective(r.Value.Reference.HostDocument)?.Content?.Keys))
.Distinct()
.ToList();
diff --git a/src/Microsoft.OpenApi/Models/OpenApiReference.cs b/src/Microsoft.OpenApi/Models/OpenApiReference.cs
index 31cc5a6e8..ecc643dc3 100644
--- a/src/Microsoft.OpenApi/Models/OpenApiReference.cs
+++ b/src/Microsoft.OpenApi/Models/OpenApiReference.cs
@@ -214,31 +214,17 @@ private string GetExternalReferenceV2()
private string GetReferenceTypeNameAsV2(ReferenceType type)
{
- switch (type)
+ return type switch
{
- case ReferenceType.Schema:
- return OpenApiConstants.Definitions;
-
- case ReferenceType.Parameter:
- return OpenApiConstants.Parameters;
-
- case ReferenceType.Response:
- return OpenApiConstants.Responses;
-
- case ReferenceType.Header:
- return OpenApiConstants.Headers;
-
- case ReferenceType.Tag:
- return OpenApiConstants.Tags;
-
- case ReferenceType.SecurityScheme:
- return OpenApiConstants.SecurityDefinitions;
-
- default:
- // If the reference type is not supported in V2, simply return null
- // to indicate that the reference is not pointing to any object.
- return null;
- }
+ ReferenceType.Schema => OpenApiConstants.Definitions,
+ ReferenceType.Parameter or ReferenceType.RequestBody => OpenApiConstants.Parameters,
+ ReferenceType.Response => OpenApiConstants.Responses,
+ ReferenceType.Header => OpenApiConstants.Headers,
+ ReferenceType.Tag => OpenApiConstants.Tags,
+ ReferenceType.SecurityScheme => OpenApiConstants.SecurityDefinitions,
+ _ => null,// If the reference type is not supported in V2, simply return null
+ // to indicate that the reference is not pointing to any object.
+ };
}
}
}
diff --git a/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs b/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs
index 9016fd7a3..70f1f742a 100644
--- a/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs
+++ b/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs
@@ -1,7 +1,9 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
+using System;
using System.Collections.Generic;
+using System.Linq;
using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Interfaces;
using Microsoft.OpenApi.Writers;
@@ -144,5 +146,50 @@ public void SerializeAsV2WithoutReference(IOpenApiWriter writer)
{
// RequestBody object does not exist in V2.
}
+
+ internal OpenApiBodyParameter ConvertToBodyParameter()
+ {
+ var bodyParameter = new OpenApiBodyParameter
+ {
+ Description = Description,
+ // V2 spec actually allows the body to have custom name.
+ // To allow round-tripping we use an extension to hold the name
+ Name = "body",
+ Schema = Content.Values.FirstOrDefault()?.Schema ?? new OpenApiSchema(),
+ Required = Required,
+ Extensions = Extensions.ToDictionary(static k => k.Key, static v => v.Value) // Clone extensions so we can remove the x-bodyName extensions from the output V2 model.
+ };
+ if (bodyParameter.Extensions.ContainsKey(OpenApiConstants.BodyName))
+ {
+ bodyParameter.Name = (Extensions[OpenApiConstants.BodyName] as OpenApiString)?.Value ?? "body";
+ bodyParameter.Extensions.Remove(OpenApiConstants.BodyName);
+ }
+ return bodyParameter;
+ }
+
+ internal IEnumerable ConvertToFormDataParameters()
+ {
+ if (Content == null || !Content.Any())
+ yield break;
+
+ foreach (var property in Content.First().Value.Schema.Properties)
+ {
+ var paramSchema = property.Value;
+ if ("string".Equals(paramSchema.Type, StringComparison.OrdinalIgnoreCase)
+ && ("binary".Equals(paramSchema.Format, StringComparison.OrdinalIgnoreCase)
+ || "base64".Equals(paramSchema.Format, StringComparison.OrdinalIgnoreCase)))
+ {
+ paramSchema.Type = "file";
+ paramSchema.Format = null;
+ }
+ yield return new OpenApiFormDataParameter
+ {
+ Description = property.Value.Description,
+ Name = property.Key,
+ Schema = property.Value,
+ Required = Content.First().Value.Schema.Required.Contains(property.Key)
+ };
+ }
+ }
}
}
diff --git a/src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs b/src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs
index 840f9c660..feeceb9af 100644
--- a/src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs
+++ b/src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs
@@ -7,33 +7,36 @@
using Microsoft.OpenApi.Exceptions;
using Microsoft.OpenApi.Interfaces;
using Microsoft.OpenApi.Models;
-using Microsoft.OpenApi.Services;
namespace Microsoft.OpenApi.Services
{
///
/// This class is used to walk an OpenApiDocument and convert unresolved references to references to populated objects
///
- internal class OpenApiReferenceResolver : OpenApiVisitorBase
+ public class OpenApiReferenceResolver : OpenApiVisitorBase
{
private OpenApiDocument _currentDocument;
- private bool _resolveRemoteReferences;
+ private readonly bool _resolveRemoteReferences;
private List _errors = new List();
+ ///
+ /// Initializes the class.
+ ///
public OpenApiReferenceResolver(OpenApiDocument currentDocument, bool resolveRemoteReferences = true)
{
_currentDocument = currentDocument;
_resolveRemoteReferences = resolveRemoteReferences;
}
- public IEnumerable Errors
- {
- get
- {
- return _errors;
- }
- }
+ ///
+ /// List of errors related to the OpenApiDocument
+ ///
+ public IEnumerable Errors => _errors;
+ ///
+ /// Resolves tags in OpenApiDocument
+ ///
+ ///
public override void Visit(OpenApiDocument doc)
{
if (doc.Tags != null)
@@ -42,6 +45,10 @@ public override void Visit(OpenApiDocument doc)
}
}
+ ///
+ /// Visits the referenceable element in the host document
+ ///
+ /// The referenceable element in the doc.
public override void Visit(IOpenApiReferenceable referenceable)
{
if (referenceable.Reference != null)
@@ -49,6 +56,11 @@ public override void Visit(IOpenApiReferenceable referenceable)
referenceable.Reference.HostDocument = _currentDocument;
}
}
+
+ ///
+ /// Resolves references in components
+ ///
+ ///
public override void Visit(OpenApiComponents components)
{
ResolveMap(components.Parameters);
@@ -62,6 +74,10 @@ public override void Visit(OpenApiComponents components)
ResolveMap(components.Headers);
}
+ ///
+ /// Resolves all references used in callbacks
+ ///
+ ///
public override void Visit(IDictionary callbacks)
{
ResolveMap(callbacks);
diff --git a/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj b/test/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj
similarity index 90%
rename from Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj
rename to test/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj
index 084738bac..1a4002daa 100644
--- a/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj
+++ b/test/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj
@@ -9,7 +9,7 @@
-
+
@@ -23,8 +23,8 @@
-
-
+
+
diff --git a/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiFilterServiceTests.cs b/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiFilterServiceTests.cs
similarity index 100%
rename from Microsoft.OpenApi.Hidi.Tests/Services/OpenApiFilterServiceTests.cs
rename to test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiFilterServiceTests.cs
diff --git a/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs b/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs
similarity index 100%
rename from Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs
rename to test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs
diff --git a/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/OpenApiDocumentMock.cs b/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/OpenApiDocumentMock.cs
similarity index 100%
rename from Microsoft.OpenApi.Hidi.Tests/UtilityFiles/OpenApiDocumentMock.cs
rename to test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/OpenApiDocumentMock.cs
diff --git a/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/Todo.xml b/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/Todo.xml
similarity index 100%
rename from Microsoft.OpenApi.Hidi.Tests/UtilityFiles/Todo.xml
rename to test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/Todo.xml
diff --git a/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver1.json b/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver1.json
similarity index 100%
rename from Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver1.json
rename to test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver1.json
diff --git a/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver2.json b/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver2.json
similarity index 100%
rename from Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver2.json
rename to test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver2.json
diff --git a/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver3.json b/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver3.json
similarity index 100%
rename from Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver3.json
rename to test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver3.json
diff --git a/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver4.json b/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver4.json
similarity index 100%
rename from Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver4.json
rename to test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/postmanCollection_ver4.json
diff --git a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
index 63b7a2a1f..1579f85e5 100644
--- a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
+++ b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj
@@ -250,7 +250,7 @@
-
+
diff --git a/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj b/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj
index 114ba749c..7f41b101f 100644
--- a/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj
+++ b/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj
index 5b476500c..b922d72d8 100644
--- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj
+++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj
@@ -16,7 +16,7 @@
-
+
diff --git a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
index 15bc8562b..75e12f480 100755
--- a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
+++ b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
@@ -1067,6 +1067,25 @@ namespace Microsoft.OpenApi.Services
public OpenApiReferenceError(Microsoft.OpenApi.Exceptions.OpenApiException exception) { }
public OpenApiReferenceError(Microsoft.OpenApi.Models.OpenApiReference reference, string message) { }
}
+ public class OpenApiReferenceResolver : Microsoft.OpenApi.Services.OpenApiVisitorBase
+ {
+ public OpenApiReferenceResolver(Microsoft.OpenApi.Models.OpenApiDocument currentDocument, bool resolveRemoteReferences = true) { }
+ public System.Collections.Generic.IEnumerable Errors { get; }
+ public override void Visit(Microsoft.OpenApi.Interfaces.IOpenApiReferenceable referenceable) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiComponents components) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiDocument doc) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiMediaType mediaType) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiOperation operation) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiParameter parameter) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiResponses responses) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiSchema schema) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiSecurityRequirement securityRequirement) { }
+ public override void Visit(System.Collections.Generic.IDictionary callbacks) { }
+ public override void Visit(System.Collections.Generic.IDictionary examples) { }
+ public override void Visit(System.Collections.Generic.IDictionary headers) { }
+ public override void Visit(System.Collections.Generic.IDictionary links) { }
+ public override void Visit(System.Collections.Generic.IList parameters) { }
+ }
public class OpenApiUrlTreeNode
{
public System.Collections.Generic.IDictionary> AdditionalData { get; set; }