Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,15 +65,22 @@ public OpenApiDocument Read(Stream input, out OpenApiDiagnostic diagnostic)

var inputVersion = GetVersion(rootNode);

switch (inputVersion)
if ( inputVersion == "2.0")
{
case "2.0":
context.ReferenceService = new OpenApiV2ReferenceService(rootNode);
return OpenApiV2Deserializer.LoadOpenApi(rootNode);

default:
context.ReferenceService = new OpenApiV3ReferenceService(rootNode);
return OpenApiV3Deserializer.LoadOpenApi(rootNode);
context.ReferenceService = new OpenApiV2ReferenceService(rootNode);
return OpenApiV2Deserializer.LoadOpenApi(rootNode);
}
else if (inputVersion.StartsWith("3.0."))
{
context.ReferenceService = new OpenApiV3ReferenceService(rootNode);
return OpenApiV3Deserializer.LoadOpenApi(rootNode);
}
else
{
// If version number is not recognizable,
// our best effort will try to deserialize the document to V3.
context.ReferenceService = new OpenApiV3ReferenceService(rootNode);
return OpenApiV3Deserializer.LoadOpenApi(rootNode);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/Microsoft.OpenApi.Workbench/MainModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ private string WriteContents(OpenApiDocument document)
var outputStream = new MemoryStream();
document.Serialize(
outputStream,
IsV3 ? OpenApiSpecVersion.OpenApi3_0_0 : OpenApiSpecVersion.OpenApi2_0,
IsV3 ? OpenApiSpecVersion.OpenApi3_0 : OpenApiSpecVersion.OpenApi2_0,
_format == "Yaml" ? OpenApiFormat.Yaml : OpenApiFormat.Json);

outputStream.Position = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public static void Serialize<T>(this T element, IOpenApiWriter writer, OpenApiSp

switch (specVersion)
{
case OpenApiSpecVersion.OpenApi3_0_0:
case OpenApiSpecVersion.OpenApi3_0:
element.SerializeAsV3(writer);
break;

Expand Down
8 changes: 4 additions & 4 deletions src/Microsoft.OpenApi/Models/OpenApiDocument.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
namespace Microsoft.OpenApi.Models
{
/// <summary>
/// Describes an Open API Document. See: https://swagger.io/specification
/// Describes an OpenAPI object (OpenAPI document). See: https://swagger.io/specification
/// </summary>
public class OpenApiDocument : IOpenApiSerializable, IOpenApiExtensible
{
Expand Down Expand Up @@ -57,7 +57,7 @@ public class OpenApiDocument : IOpenApiSerializable, IOpenApiExtensible
public IDictionary<string, IOpenApiAny> Extensions { get; set; } = new Dictionary<string, IOpenApiAny>();

/// <summary>
/// Serialize <see cref="OpenApiDocument"/> to Open Api v3.0.0
/// Serialize <see cref="OpenApiDocument"/> to the latest patch of OpenAPI object V3.0.
/// </summary>
public void SerializeAsV3(IOpenApiWriter writer)
{
Expand All @@ -69,7 +69,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
writer.WriteStartObject();

// openapi
writer.WriteProperty(OpenApiConstants.OpenApi, "3.0.0");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, it's changed to 3.0.1?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we do have v3.0.1 now.

writer.WriteProperty(OpenApiConstants.OpenApi, "3.0.1");

// info
writer.WriteRequiredObject(OpenApiConstants.Info, Info, (w, i) => i.SerializeAsV3(w));
Expand Down Expand Up @@ -102,7 +102,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
}

/// <summary>
/// Serialize <see cref="OpenApiDocument"/> to Open Api v2.0.
/// Serialize <see cref="OpenApiDocument"/> to OpenAPI object V2.0.
/// </summary>
public void SerializeAsV2(IOpenApiWriter writer)
{
Expand Down
2 changes: 1 addition & 1 deletion src/Microsoft.OpenApi/OpenApiSerializerSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public sealed class OpenApiSerializerSettings
/// <summary>
/// Open Api specification version
/// </summary>
public OpenApiSpecVersion SpecVersion { get; set; } = OpenApiSpecVersion.OpenApi3_0_0;
public OpenApiSpecVersion SpecVersion { get; set; } = OpenApiSpecVersion.OpenApi3_0;

/// <summary>
/// Open Api document format.
Expand Down
10 changes: 5 additions & 5 deletions src/Microsoft.OpenApi/OpenApiSpecVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@
namespace Microsoft.OpenApi
{
/// <summary>
/// Represents the Open Api specification version.
/// Represents versions of OpenAPI specification.
/// </summary>
public enum OpenApiSpecVersion
{
/// <summary>
/// Open Api v2.0
/// Represents OpenAPI V2.0 spec
/// </summary>
OpenApi2_0,

/// <summary>
/// Open Api v3.0.0
/// </summary>
OpenApi3_0_0
/// Represents all patches of OpenAPI V3.0 spec (e.g. 3.0.0, 3.0.1)
/// </summary>
OpenApi3_0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why can not we add new one?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A patch should not represent a functional change to the spec. We are expecting to put out patch releases to the spec monthly. We don't want to update this enum on a monthly basis.

}
}
22 changes: 11 additions & 11 deletions test/Microsoft.OpenApi.Tests/Models/OpenApiComponentsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ public void SerializeBasicComponentsAsJsonWorks()
var expected = @"{ }";

// Act
var actual = BasicComponents.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0_0);
var actual = BasicComponents.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand All @@ -274,7 +274,7 @@ public void SerializeBasicComponentsAsYamlWorks()
var expected = @"{ }";

// Act
var actual = BasicComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = BasicComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down Expand Up @@ -323,7 +323,7 @@ public void SerializeAdvancedComponentsAsJsonV3Works()
}";

// Act
var actual = AdvancedComponents.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0_0);
var actual = AdvancedComponents.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down Expand Up @@ -378,7 +378,7 @@ public void SerializeAdvancedComponentsWithReferenceAsJsonV3Works()
}";

// Act
var actual = AdvancedComponentsWithReference.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0_0);
var actual = AdvancedComponentsWithReference.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down Expand Up @@ -414,7 +414,7 @@ public void SerializeAdvancedComponentsAsYamlV3Works()
openIdConnectUrl: https://example.com/openIdConnect";

// Act
var actual = AdvancedComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = AdvancedComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down Expand Up @@ -453,7 +453,7 @@ public void SerializeAdvancedComponentsWithReferenceAsYamlV3Works()
openIdConnectUrl: https://example.com/openIdConnect";

// Act
var actual = AdvancedComponentsWithReference.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = AdvancedComponentsWithReference.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down Expand Up @@ -488,7 +488,7 @@ public void SerializeBrokenComponentsAsJsonWorks()
}";

// Act
var actual = BrokenComponents.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0_0);
var actual = BrokenComponents.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand All @@ -515,7 +515,7 @@ public void SerializeBrokenComponentsAsYamlWorks()
- ";

// Act
var actual = BrokenComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = BrokenComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down Expand Up @@ -546,7 +546,7 @@ public void SerializeTopLevelReferencingComponentsAsYamlWorks()
// type: string";

// Act
var actual = TopLevelReferencingComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = TopLevelReferencingComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand All @@ -562,7 +562,7 @@ public void SerializeTopLevelSelfReferencingComponentsAsYamlWorks()
schema1: { }";

// Act
var actual = TopLevelSelfReferencingComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = TopLevelSelfReferencingComponents.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand All @@ -587,7 +587,7 @@ public void SerializeTopLevelSelfReferencingWithOtherPropertiesComponentsAsYamlW
type: string";

// Act
var actual = TopLevelSelfReferencingComponentsWithOtherProperties.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = TopLevelSelfReferencingComponentsWithOtherProperties.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down
8 changes: 4 additions & 4 deletions test/Microsoft.OpenApi.Tests/Models/OpenApiContactTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ public class OpenApiContactTests
};

[Theory]
[InlineData(OpenApiSpecVersion.OpenApi3_0_0, OpenApiFormat.Json, "{ }")]
[InlineData(OpenApiSpecVersion.OpenApi3_0, OpenApiFormat.Json, "{ }")]
[InlineData(OpenApiSpecVersion.OpenApi2_0, OpenApiFormat.Json, "{ }")]
[InlineData(OpenApiSpecVersion.OpenApi3_0_0, OpenApiFormat.Yaml, "{ }")]
[InlineData(OpenApiSpecVersion.OpenApi3_0, OpenApiFormat.Yaml, "{ }")]
[InlineData(OpenApiSpecVersion.OpenApi2_0, OpenApiFormat.Yaml, "{ }")]
public void SerializeBasicContactWorks(
OpenApiSpecVersion version,
Expand All @@ -47,7 +47,7 @@ public void SerializeBasicContactWorks(
}

[Theory]
[InlineData(OpenApiSpecVersion.OpenApi3_0_0)]
[InlineData(OpenApiSpecVersion.OpenApi3_0)]
[InlineData(OpenApiSpecVersion.OpenApi2_0)]
public void SerializeAdvanceContactAsJsonWorks(OpenApiSpecVersion version)
{
Expand All @@ -70,7 +70,7 @@ public void SerializeAdvanceContactAsJsonWorks(OpenApiSpecVersion version)
}

[Theory]
[InlineData(OpenApiSpecVersion.OpenApi3_0_0)]
[InlineData(OpenApiSpecVersion.OpenApi3_0)]
[InlineData(OpenApiSpecVersion.OpenApi2_0)]
public void SerializeAdvanceContactAsYamlWorks(OpenApiSpecVersion version)
{
Expand Down
4 changes: 2 additions & 2 deletions test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -796,7 +796,7 @@ public void SerializeAdvancedDocumentAsV3JsonWorks()
var writer = new OpenApiJsonWriter(outputStringWriter);
var expected =
@"{
""openapi"": ""3.0.0"",
""openapi"": ""3.0.1"",
""info"": {
""title"": ""Swagger Petstore (Simple)"",
""description"": ""A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification"",
Expand Down Expand Up @@ -1310,7 +1310,7 @@ public void SerializeAdvancedDocumentWithReferenceAsV3JsonWorks()
var writer = new OpenApiJsonWriter(outputStringWriter);
var expected =
@"{
""openapi"": ""3.0.0"",
""openapi"": ""3.0.1"",
""info"": {
""title"": ""Swagger Petstore (Simple)"",
""description"": ""A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification"",
Expand Down
6 changes: 3 additions & 3 deletions test/Microsoft.OpenApi.Tests/Models/OpenApiEncodingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class OpenApiEncodingTests
public void SerializeBasicEncodingAsV3Works(OpenApiFormat format, string expected)
{
// Arrange & Act
var actual = BasicEncoding.Serialize(OpenApiSpecVersion.OpenApi3_0_0, format);
var actual = BasicEncoding.Serialize(OpenApiSpecVersion.OpenApi3_0, format);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand All @@ -48,7 +48,7 @@ public void SerializeAdvanceEncodingAsV3JsonWorks()
}";

// Act
var actual = AdvanceEncoding.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0_0);
var actual = AdvanceEncoding.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand All @@ -67,7 +67,7 @@ public void SerializeAdvanceEncodingAsV3YamlWorks()
allowReserved: true";

// Act
var actual = AdvanceEncoding.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = AdvanceEncoding.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class OpenApiExternalDocsTests
public void SerializeBasicExternalDocsAsV3Works(OpenApiFormat format, string expected)
{
// Arrange & Act
var actual = BasicExDocs.Serialize(OpenApiSpecVersion.OpenApi3_0_0, format);
var actual = BasicExDocs.Serialize(OpenApiSpecVersion.OpenApi3_0, format);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand All @@ -47,7 +47,7 @@ public void SerializeAdvanceExDocsAsV3JsonWorks()
}";

// Act
var actual = AdvanceExDocs.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0_0);
var actual = AdvanceExDocs.SerializeAsJson(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand All @@ -64,7 +64,7 @@ public void SerializeAdvanceExDocsAsV3YamlWorks()
url: https://example.com";

// Act
var actual = AdvanceExDocs.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0_0);
var actual = AdvanceExDocs.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down
10 changes: 5 additions & 5 deletions test/Microsoft.OpenApi.Tests/Models/OpenApiInfoTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class OpenApiInfoTests

public static IEnumerable<object[]> BasicInfoJsonExpected()
{
var specVersions = new[] {OpenApiSpecVersion.OpenApi3_0_0, OpenApiSpecVersion.OpenApi2_0};
var specVersions = new[] {OpenApiSpecVersion.OpenApi3_0, OpenApiSpecVersion.OpenApi2_0};
foreach (var specVersion in specVersions)
{
yield return new object[]
Expand Down Expand Up @@ -65,7 +65,7 @@ public void SerializeBasicInfoAsJsonWorks(OpenApiSpecVersion version, string exp

public static IEnumerable<object[]> BasicInfoYamlExpected()
{
var specVersions = new[] {OpenApiSpecVersion.OpenApi3_0_0, OpenApiSpecVersion.OpenApi2_0};
var specVersions = new[] {OpenApiSpecVersion.OpenApi3_0, OpenApiSpecVersion.OpenApi2_0};
foreach (var specVersion in specVersions)
{
yield return new object[]
Expand All @@ -92,7 +92,7 @@ public void SerializeBasicInfoAsYamlWorks(OpenApiSpecVersion version, string exp

public static IEnumerable<object[]> AdvanceInfoJsonExpect()
{
var specVersions = new[] {OpenApiSpecVersion.OpenApi3_0_0, OpenApiSpecVersion.OpenApi2_0};
var specVersions = new[] {OpenApiSpecVersion.OpenApi3_0, OpenApiSpecVersion.OpenApi2_0};
foreach (var specVersion in specVersions)
{
yield return new object[]
Expand Down Expand Up @@ -135,7 +135,7 @@ public void SerializeAdvanceInfoAsJsonWorks(OpenApiSpecVersion version, string e

public static IEnumerable<object[]> AdvanceInfoYamlExpect()
{
var specVersions = new[] {OpenApiSpecVersion.OpenApi3_0_0, OpenApiSpecVersion.OpenApi2_0};
var specVersions = new[] {OpenApiSpecVersion.OpenApi3_0, OpenApiSpecVersion.OpenApi2_0};
foreach (var specVersion in specVersions)
{
yield return new object[]
Expand Down Expand Up @@ -187,7 +187,7 @@ public void InfoVersionShouldAcceptDateStyledAsVersions()
version: '2017-03-01'";

// Act
var actual = info.Serialize(OpenApiSpecVersion.OpenApi3_0_0, OpenApiFormat.Yaml);
var actual = info.Serialize(OpenApiSpecVersion.OpenApi3_0, OpenApiFormat.Yaml);

// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
Expand Down
Loading