diff --git a/src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs b/src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs index 984b3fc3c..4776fcce4 100644 --- a/src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs +++ b/src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs @@ -73,10 +73,8 @@ public async Task ReadAsync(Stream input, CancellationToken cancella bufferedStream.Position = 0; } - using (var reader = new StreamReader(bufferedStream)) - { - return await new OpenApiTextReaderReader(_settings).ReadAsync(reader, cancellationToken); - } + using var reader = new StreamReader(bufferedStream); + return await new OpenApiTextReaderReader(_settings).ReadAsync(reader, cancellationToken); } /// @@ -88,10 +86,8 @@ public async Task ReadAsync(Stream input, CancellationToken cancella /// Instance of newly created OpenApiDocument public T ReadFragment(Stream input, OpenApiSpecVersion version, out OpenApiDiagnostic diagnostic) where T : IOpenApiReferenceable { - using (var reader = new StreamReader(input)) - { - return new OpenApiTextReaderReader(_settings).ReadFragment(reader, version, out diagnostic); - } + using var reader = new StreamReader(input); + return new OpenApiTextReaderReader(_settings).ReadFragment(reader, version, out diagnostic); } } } diff --git a/src/Microsoft.OpenApi.Readers/OpenApiStringReader.cs b/src/Microsoft.OpenApi.Readers/OpenApiStringReader.cs index 0cb9605dd..92e5307c4 100644 --- a/src/Microsoft.OpenApi.Readers/OpenApiStringReader.cs +++ b/src/Microsoft.OpenApi.Readers/OpenApiStringReader.cs @@ -29,10 +29,8 @@ public OpenApiStringReader(OpenApiReaderSettings settings = null) /// public OpenApiDocument Read(string input, out OpenApiDiagnostic diagnostic) { - using (var reader = new StringReader(input)) - { - return new OpenApiTextReaderReader(_settings).Read(reader, out diagnostic); - } + using var reader = new StringReader(input); + return new OpenApiTextReaderReader(_settings).Read(reader, out diagnostic); } /// @@ -40,10 +38,8 @@ public OpenApiDocument Read(string input, out OpenApiDiagnostic diagnostic) /// public T ReadFragment(string input, OpenApiSpecVersion version, out OpenApiDiagnostic diagnostic) where T : IOpenApiElement { - using (var reader = new StringReader(input)) - { - return new OpenApiTextReaderReader(_settings).ReadFragment(reader, version, out diagnostic); - } + using var reader = new StringReader(input); + return new OpenApiTextReaderReader(_settings).ReadFragment(reader, version, out diagnostic); } } } diff --git a/src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs b/src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs index f60c5483b..92ede5634 100755 --- a/src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs +++ b/src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs @@ -179,16 +179,12 @@ public static string Serialize( throw Error.ArgumentNull(nameof(element)); } - using (var stream = new MemoryStream()) - { - element.Serialize(stream, specVersion, format); - stream.Position = 0; + using var stream = new MemoryStream(); + element.Serialize(stream, specVersion, format); + stream.Position = 0; - using (var streamReader = new StreamReader(stream)) - { - return streamReader.ReadToEnd(); - } - } + using var streamReader = new StreamReader(stream); + return streamReader.ReadToEnd(); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiDiagnosticTests.cs b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiDiagnosticTests.cs index 0a786b9b8..5e17a6929 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiDiagnosticTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiDiagnosticTests.cs @@ -19,25 +19,21 @@ public class OpenApiDiagnosticTests [Fact] public void DetectedSpecificationVersionShouldBeV2_0() { - using (var stream = Resources.GetStream("V2Tests/Samples/basic.v2.yaml")) - { - new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream("V2Tests/Samples/basic.v2.yaml"); + new OpenApiStreamReader().Read(stream, out var diagnostic); - diagnostic.Should().NotBeNull(); - diagnostic.SpecificationVersion.Should().Be(OpenApiSpecVersion.OpenApi2_0); - } + diagnostic.Should().NotBeNull(); + diagnostic.SpecificationVersion.Should().Be(OpenApiSpecVersion.OpenApi2_0); } [Fact] public void DetectedSpecificationVersionShouldBeV3_0() { - using (var stream = Resources.GetStream("V3Tests/Samples/OpenApiDocument/minimalDocument.yaml")) - { - new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream("V3Tests/Samples/OpenApiDocument/minimalDocument.yaml"); + new OpenApiStreamReader().Read(stream, out var diagnostic); - diagnostic.Should().NotBeNull(); - diagnostic.SpecificationVersion.Should().Be(OpenApiSpecVersion.OpenApi3_0); - } + diagnostic.Should().NotBeNull(); + diagnostic.SpecificationVersion.Should().Be(OpenApiSpecVersion.OpenApi3_0); } [Fact] diff --git a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs index 7567e0b7d..0f6bbce15 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs @@ -13,23 +13,19 @@ public class OpenApiStreamReaderTests [Fact] public void StreamShouldCloseIfLeaveStreamOpenSettingEqualsFalse() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "petStore.yaml"))) - { - var reader = new OpenApiStreamReader(new OpenApiReaderSettings { LeaveStreamOpen = false }); - reader.Read(stream, out _); - Assert.False(stream.CanRead); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "petStore.yaml")); + var reader = new OpenApiStreamReader(new OpenApiReaderSettings { LeaveStreamOpen = false }); + reader.Read(stream, out _); + Assert.False(stream.CanRead); } [Fact] public void StreamShouldNotCloseIfLeaveStreamOpenSettingEqualsTrue() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "petStore.yaml"))) - { - var reader = new OpenApiStreamReader(new OpenApiReaderSettings { LeaveStreamOpen = true}); - reader.Read(stream, out _); - Assert.True(stream.CanRead); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "petStore.yaml")); + var reader = new OpenApiStreamReader(new OpenApiReaderSettings { LeaveStreamOpen = true}); + reader.Read(stream, out _); + Assert.True(stream.CanRead); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/UnsupportedSpecVersionTests.cs b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/UnsupportedSpecVersionTests.cs index cd60aa630..753f60e6a 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/UnsupportedSpecVersionTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/UnsupportedSpecVersionTests.cs @@ -13,16 +13,14 @@ public class UnsupportedSpecVersionTests [Fact] public void ThrowOpenApiUnsupportedSpecVersionException() { - using (var stream = Resources.GetStream("OpenApiReaderTests/Samples/unsupported.v1.yaml")) + using var stream = Resources.GetStream("OpenApiReaderTests/Samples/unsupported.v1.yaml"); + try { - try - { - new OpenApiStreamReader().Read(stream, out var diagnostic); - } - catch (OpenApiUnsupportedSpecVersionException exception) - { - exception.SpecificationVersion.Should().Be("1.0.0"); - } + new OpenApiStreamReader().Read(stream, out var diagnostic); + } + catch (OpenApiUnsupportedSpecVersionException exception) + { + exception.SpecificationVersion.Should().Be("1.0.0"); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/Resources.cs b/test/Microsoft.OpenApi.Readers.Tests/Resources.cs index 895e1ed3f..a817dc203 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/Resources.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/Resources.cs @@ -14,11 +14,9 @@ internal static class Resources /// The file contents. public static string GetString(string fileName) { - using (Stream stream = GetStream(fileName)) - using (TextReader reader = new StreamReader(stream)) - { - return reader.ReadToEnd(); - } + using Stream stream = GetStream(fileName); + using TextReader reader = new StreamReader(stream); + return reader.ReadToEnd(); } /// diff --git a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/ComparisonTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/ComparisonTests.cs index 1ae3678d6..7d4f607f0 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/ComparisonTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/ComparisonTests.cs @@ -18,16 +18,14 @@ public class ComparisonTests //[InlineData("definitions")] //Currently broken due to V3 references not behaving the same as V2 public void EquivalentV2AndV3DocumentsShouldProductEquivalentObjects(string fileName) { - using (var streamV2 = Resources.GetStream(Path.Combine(SampleFolderPath, $"{fileName}.v2.yaml"))) - using (var streamV3 = Resources.GetStream(Path.Combine(SampleFolderPath, $"{fileName}.v3.yaml"))) - { - var openApiDocV2 = new OpenApiStreamReader().Read(streamV2, out var diagnosticV2); - var openApiDocV3 = new OpenApiStreamReader().Read(streamV3, out var diagnosticV3); + using var streamV2 = Resources.GetStream(Path.Combine(SampleFolderPath, $"{fileName}.v2.yaml")); + using var streamV3 = Resources.GetStream(Path.Combine(SampleFolderPath, $"{fileName}.v3.yaml")); + var openApiDocV2 = new OpenApiStreamReader().Read(streamV2, out var diagnosticV2); + var openApiDocV3 = new OpenApiStreamReader().Read(streamV3, out var diagnosticV3); - openApiDocV3.Should().BeEquivalentTo(openApiDocV2); + openApiDocV3.Should().BeEquivalentTo(openApiDocV2); - diagnosticV2.Errors.Should().BeEquivalentTo(diagnosticV3.Errors); - } + diagnosticV2.Errors.Should().BeEquivalentTo(diagnosticV3.Errors); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs index f47108b39..6f82937f6 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs @@ -155,176 +155,174 @@ public void ParseDocumentWithDifferentCultureShouldSucceed(string culture) [Fact] public void ShouldParseProducesInAnyOrder() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "twoResponses.json"))) - { - var reader = new OpenApiStreamReader(); - var doc = reader.Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "twoResponses.json")); + var reader = new OpenApiStreamReader(); + var doc = reader.Read(stream, out var diagnostic); - var okSchema = new OpenApiSchema + var okSchema = new OpenApiSchema + { + Reference = new OpenApiReference { - Reference = new OpenApiReference - { - Type = ReferenceType.Schema, - Id = "Item", - HostDocument = doc - }, - Properties = new Dictionary - { - { "id", new OpenApiSchema - { - Type = "string", - Description = "Item identifier." - } + Type = ReferenceType.Schema, + Id = "Item", + HostDocument = doc + }, + Properties = new Dictionary + { + { "id", new OpenApiSchema + { + Type = "string", + Description = "Item identifier." } } - }; + } + }; - var errorSchema = new OpenApiSchema + var errorSchema = new OpenApiSchema + { + Reference = new OpenApiReference { - Reference = new OpenApiReference - { - Type = ReferenceType.Schema, - Id = "Error", - HostDocument = doc + Type = ReferenceType.Schema, + Id = "Error", + HostDocument = doc + }, + Properties = new Dictionary + { + { "code", new OpenApiSchema + { + Type = "integer", + Format = "int32" + } }, - Properties = new Dictionary - { - { "code", new OpenApiSchema - { - Type = "integer", - Format = "int32" - } - }, - { "message", new OpenApiSchema - { - Type = "string" - } - }, - { "fields", new OpenApiSchema - { - Type = "string" - } + { "message", new OpenApiSchema + { + Type = "string" + } + }, + { "fields", new OpenApiSchema + { + Type = "string" } } - }; + } + }; - var okMediaType = new OpenApiMediaType + var okMediaType = new OpenApiMediaType + { + Schema = new OpenApiSchema { - Schema = new OpenApiSchema - { - Type = "array", - Items = okSchema - } - }; + Type = "array", + Items = okSchema + } + }; - var errorMediaType = new OpenApiMediaType - { - Schema = errorSchema - }; + var errorMediaType = new OpenApiMediaType + { + Schema = errorSchema + }; - doc.Should().BeEquivalentTo(new OpenApiDocument + doc.Should().BeEquivalentTo(new OpenApiDocument + { + Info = new OpenApiInfo { - Info = new OpenApiInfo - { - Title = "Two responses", - Version = "1.0.0" - }, - Servers = + Title = "Two responses", + Version = "1.0.0" + }, + Servers = + { + new OpenApiServer { - new OpenApiServer - { - Url = "https://" - } - }, - Paths = new OpenApiPaths + Url = "https://" + } + }, + Paths = new OpenApiPaths + { + ["/items"] = new OpenApiPathItem { - ["/items"] = new OpenApiPathItem + Operations = { - Operations = + [OperationType.Get] = new OpenApiOperation { - [OperationType.Get] = new OpenApiOperation + Responses = { - Responses = + ["200"] = new OpenApiResponse { - ["200"] = new OpenApiResponse + Description = "An OK response", + Content = { - Description = "An OK response", - Content = - { - ["application/json"] = okMediaType, - ["application/xml"] = okMediaType, - } - }, - ["default"] = new OpenApiResponse + ["application/json"] = okMediaType, + ["application/xml"] = okMediaType, + } + }, + ["default"] = new OpenApiResponse + { + Description = "An error response", + Content = { - Description = "An error response", - Content = - { - ["application/json"] = errorMediaType, - ["application/xml"] = errorMediaType - } + ["application/json"] = errorMediaType, + ["application/xml"] = errorMediaType } } - }, - [OperationType.Post] = new OpenApiOperation + } + }, + [OperationType.Post] = new OpenApiOperation + { + Responses = { - Responses = + ["200"] = new OpenApiResponse { - ["200"] = new OpenApiResponse + Description = "An OK response", + Content = { - Description = "An OK response", - Content = - { - ["html/text"] = okMediaType - } - }, - ["default"] = new OpenApiResponse + ["html/text"] = okMediaType + } + }, + ["default"] = new OpenApiResponse + { + Description = "An error response", + Content = { - Description = "An error response", - Content = - { - ["html/text"] = errorMediaType - } + ["html/text"] = errorMediaType } } - }, - [OperationType.Patch] = new OpenApiOperation + } + }, + [OperationType.Patch] = new OpenApiOperation + { + Responses = { - Responses = + ["200"] = new OpenApiResponse { - ["200"] = new OpenApiResponse + Description = "An OK response", + Content = { - Description = "An OK response", - Content = - { - ["application/json"] = okMediaType, - ["application/xml"] = okMediaType, - } - }, - ["default"] = new OpenApiResponse + ["application/json"] = okMediaType, + ["application/xml"] = okMediaType, + } + }, + ["default"] = new OpenApiResponse + { + Description = "An error response", + Content = { - Description = "An error response", - Content = - { - ["application/json"] = errorMediaType, - ["application/xml"] = errorMediaType - } + ["application/json"] = errorMediaType, + ["application/xml"] = errorMediaType } } } } } - }, - Components = new OpenApiComponents + } + }, + Components = new OpenApiComponents + { + Schemas = { - Schemas = - { - ["Item"] = okSchema, - ["Error"] = errorSchema - } + ["Item"] = okSchema, + ["Error"] = errorSchema } - }); - } + } + }); } [Fact] diff --git a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiSecuritySchemeTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiSecuritySchemeTests.cs index 22f7d1633..2745385af 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiSecuritySchemeTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiSecuritySchemeTests.cs @@ -21,202 +21,188 @@ public class OpenApiSecuritySchemeTests [Fact] public void ParseHttpSecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicSecurityScheme.yaml"))) - { - var document = LoadYamlDocument(stream); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicSecurityScheme.yaml")); + var document = LoadYamlDocument(stream); - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)document.RootNode); + var node = new MapNode(context, (YamlMappingNode)document.RootNode); - // Act - var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); + // Act + var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme - { - Type = SecuritySchemeType.Http, - Scheme = OpenApiConstants.Basic - }); - } + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.Http, + Scheme = OpenApiConstants.Basic + }); } [Fact] public void ParseApiKeySecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "apiKeySecurityScheme.yaml"))) - { - var document = LoadYamlDocument(stream); - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)document.RootNode); - - // Act - var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); - - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme - { - Type = SecuritySchemeType.ApiKey, - Name = "api_key", - In = ParameterLocation.Header - }); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "apiKeySecurityScheme.yaml")); + var document = LoadYamlDocument(stream); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)document.RootNode); + + // Act + var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); + + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.ApiKey, + Name = "api_key", + In = ParameterLocation.Header + }); } [Fact] public void ParseOAuth2ImplicitSecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2ImplicitSecurityScheme.yaml"))) - { - var document = LoadYamlDocument(stream); - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)document.RootNode); - - // Act - var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); - - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2ImplicitSecurityScheme.yaml")); + var document = LoadYamlDocument(stream); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)document.RootNode); + + // Act + var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); + + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.OAuth2, + Flows = new OpenApiOAuthFlows { - Type = SecuritySchemeType.OAuth2, - Flows = new OpenApiOAuthFlows + Implicit = new OpenApiOAuthFlow { - Implicit = new OpenApiOAuthFlow + AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), + Scopes = { - AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), - Scopes = - { - ["write:pets"] = "modify pets in your account", - ["read:pets"] = "read your pets" - } + ["write:pets"] = "modify pets in your account", + ["read:pets"] = "read your pets" } } - }); - } + } + }); } [Fact] public void ParseOAuth2PasswordSecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2PasswordSecurityScheme.yaml"))) - { - var document = LoadYamlDocument(stream); - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)document.RootNode); - - // Act - var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); - - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2PasswordSecurityScheme.yaml")); + var document = LoadYamlDocument(stream); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)document.RootNode); + + // Act + var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); + + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.OAuth2, + Flows = new OpenApiOAuthFlows { - Type = SecuritySchemeType.OAuth2, - Flows = new OpenApiOAuthFlows + Password = new OpenApiOAuthFlow { - Password = new OpenApiOAuthFlow + AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), + Scopes = { - AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), - Scopes = - { - ["write:pets"] = "modify pets in your account", - ["read:pets"] = "read your pets" - } + ["write:pets"] = "modify pets in your account", + ["read:pets"] = "read your pets" } } - }); - } + } + }); } [Fact] public void ParseOAuth2ApplicationSecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2ApplicationSecurityScheme.yaml"))) - { - var document = LoadYamlDocument(stream); - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)document.RootNode); - - // Act - var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); - - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2ApplicationSecurityScheme.yaml")); + var document = LoadYamlDocument(stream); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)document.RootNode); + + // Act + var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); + + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.OAuth2, + Flows = new OpenApiOAuthFlows { - Type = SecuritySchemeType.OAuth2, - Flows = new OpenApiOAuthFlows + ClientCredentials = new OpenApiOAuthFlow { - ClientCredentials = new OpenApiOAuthFlow + AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), + Scopes = { - AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), - Scopes = - { - ["write:pets"] = "modify pets in your account", - ["read:pets"] = "read your pets" - } + ["write:pets"] = "modify pets in your account", + ["read:pets"] = "read your pets" } } - }); - } + } + }); } [Fact] public void ParseOAuth2AccessCodeSecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2AccessCodeSecurityScheme.yaml"))) - { - var document = LoadYamlDocument(stream); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2AccessCodeSecurityScheme.yaml")); + var document = LoadYamlDocument(stream); - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)document.RootNode); + var node = new MapNode(context, (YamlMappingNode)document.RootNode); - // Act - var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); + // Act + var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.OAuth2, + Flows = new OpenApiOAuthFlows { - Type = SecuritySchemeType.OAuth2, - Flows = new OpenApiOAuthFlows + AuthorizationCode = new OpenApiOAuthFlow { - AuthorizationCode = new OpenApiOAuthFlow + AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), + Scopes = { - AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), - Scopes = - { - ["write:pets"] = "modify pets in your account", - ["read:pets"] = "read your pets" - } + ["write:pets"] = "modify pets in your account", + ["read:pets"] = "read your pets" } } - }); - } + } + }); } static YamlDocument LoadYamlDocument(Stream input) { - using (var reader = new StreamReader(input)) - { - var yamlStream = new YamlStream(); - yamlStream.Load(reader); - return yamlStream.Documents.First(); - } + using var reader = new StreamReader(input); + var yamlStream = new YamlStream(); + yamlStream.Load(reader); + return yamlStream.Documents.First(); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiCallbackTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiCallbackTests.cs index 1a45006db..fd137628d 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiCallbackTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiCallbackTests.cs @@ -21,254 +21,248 @@ public class OpenApiCallbackTests [Fact] public void ParseBasicCallbackShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicCallback.yaml"))) - { - // Arrange - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicCallback.yaml")); + // Arrange + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var callback = OpenApiV3Deserializer.LoadCallback(node); + // Act + var callback = OpenApiV3Deserializer.LoadCallback(node); - // Assert - diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); + // Assert + diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); - callback.Should().BeEquivalentTo( - new OpenApiCallback + callback.Should().BeEquivalentTo( + new OpenApiCallback + { + PathItems = { - PathItems = - { - [RuntimeExpression.Build("$request.body#/url")] + [RuntimeExpression.Build("$request.body#/url")] = new OpenApiPathItem { Operations = { [OperationType.Post] = - new OpenApiOperation - { - RequestBody = new OpenApiRequestBody + new OpenApiOperation { - Content = + RequestBody = new OpenApiRequestBody { - ["application/json"] = null - } - }, - Responses = new OpenApiResponses - { - ["200"] = new OpenApiResponse + Content = + { + ["application/json"] = null + } + }, + Responses = new OpenApiResponses { - Description = "Success" + ["200"] = new OpenApiResponse + { + Description = "Success" + } } } - } } } - } - }); - } + } + }); } [Fact] public void ParseCallbackWithReferenceShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "callbackWithReference.yaml"))) - { - // Act - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "callbackWithReference.yaml")); + // Act + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - // Assert - var path = openApiDoc.Paths.First().Value; - var subscribeOperation = path.Operations[OperationType.Post]; + // Assert + var path = openApiDoc.Paths.First().Value; + var subscribeOperation = path.Operations[OperationType.Post]; - var callback = subscribeOperation.Callbacks["simpleHook"]; + var callback = subscribeOperation.Callbacks["simpleHook"]; - diagnostic.Should().BeEquivalentTo( - new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); + diagnostic.Should().BeEquivalentTo( + new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); - callback.Should().BeEquivalentTo( - new OpenApiCallback + callback.Should().BeEquivalentTo( + new OpenApiCallback + { + PathItems = { - PathItems = - { - [RuntimeExpression.Build("$request.body#/url")]= new OpenApiPathItem { - Operations = { - [OperationType.Post] = new OpenApiOperation + [RuntimeExpression.Build("$request.body#/url")]= new OpenApiPathItem { + Operations = { + [OperationType.Post] = new OpenApiOperation + { + RequestBody = new OpenApiRequestBody { - RequestBody = new OpenApiRequestBody + Content = { - Content = + ["application/json"] = new OpenApiMediaType { - ["application/json"] = new OpenApiMediaType + Schema = new OpenApiSchema { - Schema = new OpenApiSchema - { - Type = "object" - } + Type = "object" } } - }, - Responses = { - ["200"]= new OpenApiResponse - { - Description = "Success" - } + } + }, + Responses = { + ["200"]= new OpenApiResponse + { + Description = "Success" } } } } - }, - Reference = new OpenApiReference - { - Type = ReferenceType.Callback, - Id = "simpleHook", - HostDocument = openApiDoc } - }); - } + }, + Reference = new OpenApiReference + { + Type = ReferenceType.Callback, + Id = "simpleHook", + HostDocument = openApiDoc + } + }); } [Fact] public void ParseMultipleCallbacksWithReferenceShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "multipleCallbacksWithReference.yaml"))) - { - // Act - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "multipleCallbacksWithReference.yaml")); + // Act + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - // Assert - var path = openApiDoc.Paths.First().Value; - var subscribeOperation = path.Operations[OperationType.Post]; + // Assert + var path = openApiDoc.Paths.First().Value; + var subscribeOperation = path.Operations[OperationType.Post]; - diagnostic.Should().BeEquivalentTo( - new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); + diagnostic.Should().BeEquivalentTo( + new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); - var callback1 = subscribeOperation.Callbacks["simpleHook"]; + var callback1 = subscribeOperation.Callbacks["simpleHook"]; - callback1.Should().BeEquivalentTo( - new OpenApiCallback + callback1.Should().BeEquivalentTo( + new OpenApiCallback + { + PathItems = { - PathItems = - { - [RuntimeExpression.Build("$request.body#/url")]= new OpenApiPathItem { - Operations = { - [OperationType.Post] = new OpenApiOperation + [RuntimeExpression.Build("$request.body#/url")]= new OpenApiPathItem { + Operations = { + [OperationType.Post] = new OpenApiOperation + { + RequestBody = new OpenApiRequestBody { - RequestBody = new OpenApiRequestBody + Content = { - Content = + ["application/json"] = new OpenApiMediaType { - ["application/json"] = new OpenApiMediaType + Schema = new OpenApiSchema { - Schema = new OpenApiSchema - { - Type = "object" - } + Type = "object" } } - }, - Responses = { - ["200"]= new OpenApiResponse - { - Description = "Success" - } + } + }, + Responses = { + ["200"]= new OpenApiResponse + { + Description = "Success" } } } } - }, - Reference = new OpenApiReference - { - Type = ReferenceType.Callback, - Id = "simpleHook", - HostDocument = openApiDoc } - }); + }, + Reference = new OpenApiReference + { + Type = ReferenceType.Callback, + Id = "simpleHook", + HostDocument = openApiDoc + } + }); - var callback2 = subscribeOperation.Callbacks["callback2"]; - callback2.Should().BeEquivalentTo( - new OpenApiCallback + var callback2 = subscribeOperation.Callbacks["callback2"]; + callback2.Should().BeEquivalentTo( + new OpenApiCallback + { + PathItems = { - PathItems = - { - [RuntimeExpression.Build("/simplePath")]= new OpenApiPathItem { - Operations = { - [OperationType.Post] = new OpenApiOperation + [RuntimeExpression.Build("/simplePath")]= new OpenApiPathItem { + Operations = { + [OperationType.Post] = new OpenApiOperation + { + RequestBody = new OpenApiRequestBody { - RequestBody = new OpenApiRequestBody + Description = "Callback 2", + Content = { - Description = "Callback 2", - Content = + ["application/json"] = new OpenApiMediaType { - ["application/json"] = new OpenApiMediaType + Schema = new OpenApiSchema { - Schema = new OpenApiSchema - { - Type = "string" - } + Type = "string" } } - }, - Responses = { - ["400"]= new OpenApiResponse - { - Description = "Callback Response" - } + } + }, + Responses = { + ["400"]= new OpenApiResponse + { + Description = "Callback Response" } } - }, - } + } + }, } - }); + } + }); - var callback3 = subscribeOperation.Callbacks["callback3"]; - callback3.Should().BeEquivalentTo( - new OpenApiCallback + var callback3 = subscribeOperation.Callbacks["callback3"]; + callback3.Should().BeEquivalentTo( + new OpenApiCallback + { + PathItems = { - PathItems = - { - [RuntimeExpression.Build(@"http://example.com?transactionId={$request.body#/id}&email={$request.body#/email}")] = new OpenApiPathItem { - Operations = { - [OperationType.Post] = new OpenApiOperation + [RuntimeExpression.Build(@"http://example.com?transactionId={$request.body#/id}&email={$request.body#/email}")] = new OpenApiPathItem { + Operations = { + [OperationType.Post] = new OpenApiOperation + { + RequestBody = new OpenApiRequestBody { - RequestBody = new OpenApiRequestBody + Content = { - Content = + ["application/xml"] = new OpenApiMediaType { - ["application/xml"] = new OpenApiMediaType + Schema = new OpenApiSchema { - Schema = new OpenApiSchema - { - Type = "object" - } + Type = "object" } } + } + }, + Responses = { + ["200"]= new OpenApiResponse + { + Description = "Success" }, - Responses = { - ["200"]= new OpenApiResponse - { - Description = "Success" - }, - ["401"]= new OpenApiResponse - { - Description = "Unauthorized" - }, - ["404"]= new OpenApiResponse - { - Description = "Not Found" - } + ["401"]= new OpenApiResponse + { + Description = "Unauthorized" + }, + ["404"]= new OpenApiResponse + { + Description = "Not Found" } } } } } - }); - } + } + }); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDiscriminatorTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDiscriminatorTests.cs index 0768592b3..6496a48b8 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDiscriminatorTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDiscriminatorTests.cs @@ -20,32 +20,30 @@ public class OpenApiDiscriminatorTests [Fact] public void ParseBasicDiscriminatorShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicDiscriminator.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicDiscriminator.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var discriminator = OpenApiV3Deserializer.LoadDiscriminator(node); + // Act + var discriminator = OpenApiV3Deserializer.LoadDiscriminator(node); - // Assert - discriminator.Should().BeEquivalentTo( - new OpenApiDiscriminator + // Assert + discriminator.Should().BeEquivalentTo( + new OpenApiDiscriminator + { + PropertyName = "pet_type", + Mapping = { - PropertyName = "pet_type", - Mapping = - { - ["puppy"] = "#/components/schemas/Dog", - ["kitten"] = "Cat" - } - }); - } + ["puppy"] = "#/components/schemas/Dog", + ["kitten"] = "Cat" + } + }); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs index f3be46ab6..c411f0620 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs @@ -28,46 +28,38 @@ public class OpenApiDocumentTests public T Clone(T element) where T : IOpenApiSerializable { - using (var stream = new MemoryStream()) + using var stream = new MemoryStream(); + IOpenApiWriter writer; + var streamWriter = new FormattingStreamWriter(stream, CultureInfo.InvariantCulture); + writer = new OpenApiJsonWriter(streamWriter, new OpenApiJsonWriterSettings { - IOpenApiWriter writer; - var streamWriter = new FormattingStreamWriter(stream, CultureInfo.InvariantCulture); - writer = new OpenApiJsonWriter(streamWriter, new OpenApiJsonWriterSettings - { - InlineLocalReferences = true - }); - element.SerializeAsV3(writer); - writer.Flush(); - stream.Position = 0; - - using (var streamReader = new StreamReader(stream)) - { - var result = streamReader.ReadToEnd(); - return new OpenApiStringReader().ReadFragment(result, OpenApiSpecVersion.OpenApi3_0, out OpenApiDiagnostic diagnostic4); - } - } + InlineLocalReferences = true + }); + element.SerializeAsV3(writer); + writer.Flush(); + stream.Position = 0; + + using var streamReader = new StreamReader(stream); + var result = streamReader.ReadToEnd(); + return new OpenApiStringReader().ReadFragment(result, OpenApiSpecVersion.OpenApi3_0, out OpenApiDiagnostic diagnostic4); } public OpenApiSecurityScheme CloneSecurityScheme(OpenApiSecurityScheme element) { - using (var stream = new MemoryStream()) + using var stream = new MemoryStream(); + IOpenApiWriter writer; + var streamWriter = new FormattingStreamWriter(stream, CultureInfo.InvariantCulture); + writer = new OpenApiJsonWriter(streamWriter, new OpenApiJsonWriterSettings { - IOpenApiWriter writer; - var streamWriter = new FormattingStreamWriter(stream, CultureInfo.InvariantCulture); - writer = new OpenApiJsonWriter(streamWriter, new OpenApiJsonWriterSettings - { - InlineLocalReferences = true - }); - element.SerializeAsV3WithoutReference(writer); - writer.Flush(); - stream.Position = 0; - - using (var streamReader = new StreamReader(stream)) - { - var result = streamReader.ReadToEnd(); - return new OpenApiStringReader().ReadFragment(result, OpenApiSpecVersion.OpenApi3_0, out OpenApiDiagnostic diagnostic4); - } - } + InlineLocalReferences = true + }); + element.SerializeAsV3WithoutReference(writer); + writer.Flush(); + stream.Position = 0; + + using var streamReader = new StreamReader(stream); + var result = streamReader.ReadToEnd(); + return new OpenApiStringReader().ReadFragment(result, OpenApiSpecVersion.OpenApi3_0, out OpenApiDiagnostic diagnostic4); } @@ -181,89 +173,83 @@ public void ParseDocumentWithDifferentCultureShouldSucceed(string culture) [Fact] public void ParseBasicDocumentWithMultipleServersShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicDocumentWithMultipleServers.yaml"))) - { - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicDocumentWithMultipleServers.yaml")); + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - diagnostic.Should().BeEquivalentTo( - new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); + diagnostic.Should().BeEquivalentTo( + new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); - openApiDoc.Should().BeEquivalentTo( - new OpenApiDocument + openApiDoc.Should().BeEquivalentTo( + new OpenApiDocument + { + Info = new OpenApiInfo + { + Title = "The API", + Version = "0.9.1", + }, + Servers = { - Info = new OpenApiInfo + new OpenApiServer { - Title = "The API", - Version = "0.9.1", + Url = new Uri("http://www.example.org/api").ToString(), + Description = "The http endpoint" }, - Servers = + new OpenApiServer { - new OpenApiServer - { - Url = new Uri("http://www.example.org/api").ToString(), - Description = "The http endpoint" - }, - new OpenApiServer - { - Url = new Uri("https://www.example.org/api").ToString(), - Description = "The https endpoint" - } - }, - Paths = new OpenApiPaths() - }); - } + Url = new Uri("https://www.example.org/api").ToString(), + Description = "The https endpoint" + } + }, + Paths = new OpenApiPaths() + }); } [Fact] public void ParseBrokenMinimalDocumentShouldYieldExpectedDiagnostic() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "brokenMinimalDocument.yaml"))) - { - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "brokenMinimalDocument.yaml")); + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - openApiDoc.Should().BeEquivalentTo( - new OpenApiDocument + openApiDoc.Should().BeEquivalentTo( + new OpenApiDocument + { + Info = new OpenApiInfo { - Info = new OpenApiInfo - { - Version = "0.9" - }, - Paths = new OpenApiPaths() - }); + Version = "0.9" + }, + Paths = new OpenApiPaths() + }); - diagnostic.Should().BeEquivalentTo( - new OpenApiDiagnostic + diagnostic.Should().BeEquivalentTo( + new OpenApiDiagnostic + { + Errors = { - Errors = - { - new OpenApiValidatorError(nameof(OpenApiInfoRules.InfoRequiredFields),"#/info/title", "The field 'title' in 'info' object is REQUIRED.") - }, - SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 - }); - } + new OpenApiValidatorError(nameof(OpenApiInfoRules.InfoRequiredFields),"#/info/title", "The field 'title' in 'info' object is REQUIRED.") + }, + SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 + }); } [Fact] public void ParseMinimalDocumentShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "minimalDocument.yaml"))) - { - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "minimalDocument.yaml")); + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - openApiDoc.Should().BeEquivalentTo( - new OpenApiDocument + openApiDoc.Should().BeEquivalentTo( + new OpenApiDocument + { + Info = new OpenApiInfo { - Info = new OpenApiInfo - { - Title = "Simple Document", - Version = "0.9.1" - }, - Paths = new OpenApiPaths() - }); + Title = "Simple Document", + Version = "0.9.1" + }, + Paths = new OpenApiPaths() + }); - diagnostic.Should().BeEquivalentTo( - new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); - } + diagnostic.Should().BeEquivalentTo( + new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); } [Fact] @@ -1248,85 +1234,81 @@ public void ParsePetStoreExpandedShouldSucceed() [Fact] public void GlobalSecurityRequirementShouldReferenceSecurityScheme() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "securedApi.yaml"))) - { - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "securedApi.yaml")); + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - var securityRequirement = openApiDoc.SecurityRequirements.First(); + var securityRequirement = openApiDoc.SecurityRequirements.First(); - Assert.Same(securityRequirement.Keys.First(), openApiDoc.Components.SecuritySchemes.First().Value); - } + Assert.Same(securityRequirement.Keys.First(), openApiDoc.Components.SecuritySchemes.First().Value); } [Fact] public void HeaderParameterShouldAllowExample() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "apiWithFullHeaderComponent.yaml"))) - { - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "apiWithFullHeaderComponent.yaml")); + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - var exampleHeader = openApiDoc.Components?.Headers?["example-header"]; - Assert.NotNull(exampleHeader); - exampleHeader.Should().BeEquivalentTo( - new OpenApiHeader + var exampleHeader = openApiDoc.Components?.Headers?["example-header"]; + Assert.NotNull(exampleHeader); + exampleHeader.Should().BeEquivalentTo( + new OpenApiHeader + { + Description = "Test header with example", + Required = true, + Deprecated = true, + AllowEmptyValue = true, + AllowReserved = true, + Style = ParameterStyle.Simple, + Explode = true, + Example = new OpenApiString("99391c7e-ad88-49ec-a2ad-99ddcb1f7721"), + Schema = new OpenApiSchema { - Description = "Test header with example", - Required = true, - Deprecated = true, - AllowEmptyValue = true, - AllowReserved = true, - Style = ParameterStyle.Simple, - Explode = true, - Example = new OpenApiString("99391c7e-ad88-49ec-a2ad-99ddcb1f7721"), - Schema = new OpenApiSchema - { - Type = "string", - Format = "uuid" - }, - Reference = new OpenApiReference - { - Type = ReferenceType.Header, - Id = "example-header" - } - }); + Type = "string", + Format = "uuid" + }, + Reference = new OpenApiReference + { + Type = ReferenceType.Header, + Id = "example-header" + } + }); - var examplesHeader = openApiDoc.Components?.Headers?["examples-header"]; - Assert.NotNull(examplesHeader); - examplesHeader.Should().BeEquivalentTo( - new OpenApiHeader + var examplesHeader = openApiDoc.Components?.Headers?["examples-header"]; + Assert.NotNull(examplesHeader); + examplesHeader.Should().BeEquivalentTo( + new OpenApiHeader + { + Description = "Test header with example", + Required = true, + Deprecated = true, + AllowEmptyValue = true, + AllowReserved = true, + Style = ParameterStyle.Simple, + Explode = true, + Examples = new Dictionary { - Description = "Test header with example", - Required = true, - Deprecated = true, - AllowEmptyValue = true, - AllowReserved = true, - Style = ParameterStyle.Simple, - Explode = true, - Examples = new Dictionary - { - { "uuid1", new OpenApiExample - { - Value = new OpenApiString("99391c7e-ad88-49ec-a2ad-99ddcb1f7721") - } - }, - { "uuid2", new OpenApiExample - { - Value = new OpenApiString("99391c7e-ad88-49ec-a2ad-99ddcb1f7721") - } + { "uuid1", new OpenApiExample + { + Value = new OpenApiString("99391c7e-ad88-49ec-a2ad-99ddcb1f7721") } }, - Schema = new OpenApiSchema - { - Type = "string", - Format = "uuid" - }, - Reference = new OpenApiReference - { - Type = ReferenceType.Header, - Id = "examples-header" + { "uuid2", new OpenApiExample + { + Value = new OpenApiString("99391c7e-ad88-49ec-a2ad-99ddcb1f7721") + } } - }); - } + }, + Schema = new OpenApiSchema + { + Type = "string", + Format = "uuid" + }, + Reference = new OpenApiReference + { + Type = ReferenceType.Header, + Id = "examples-header" + } + }); } [Fact] diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiEncodingTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiEncodingTests.cs index 7f33491ff..2d3f7d3b6 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiEncodingTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiEncodingTests.cs @@ -20,54 +20,51 @@ public class OpenApiEncodingTests [Fact] public void ParseBasicEncodingShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicEncoding.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicEncoding.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var encoding = OpenApiV3Deserializer.LoadEncoding(node); + // Act + var encoding = OpenApiV3Deserializer.LoadEncoding(node); - // Assert - encoding.Should().BeEquivalentTo( - new OpenApiEncoding - { - ContentType = "application/xml; charset=utf-8" - }); - } + // Assert + encoding.Should().BeEquivalentTo( + new OpenApiEncoding + { + ContentType = "application/xml; charset=utf-8" + }); } [Fact] public void ParseAdvancedEncodingShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedEncoding.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedEncoding.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var encoding = OpenApiV3Deserializer.LoadEncoding(node); + // Act + var encoding = OpenApiV3Deserializer.LoadEncoding(node); - // Assert - encoding.Should().BeEquivalentTo( - new OpenApiEncoding + // Assert + encoding.Should().BeEquivalentTo( + new OpenApiEncoding + { + ContentType = "image/png, image/jpeg", + Headers = { - ContentType = "image/png, image/jpeg", - Headers = - { - ["X-Rate-Limit-Limit"] = + ["X-Rate-Limit-Limit"] = new OpenApiHeader { Description = "The number of allowed requests in the current period", @@ -76,9 +73,8 @@ public void ParseAdvancedEncodingShouldSucceed() Type = "integer" } } - } - }); - } + } + }); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiExampleTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiExampleTests.cs index ead84f201..68e218408 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiExampleTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiExampleTests.cs @@ -21,69 +21,65 @@ public class OpenApiExampleTests [Fact] public void ParseAdvancedExampleShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedExample.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedExample.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - var example = OpenApiV3Deserializer.LoadExample(node); + var example = OpenApiV3Deserializer.LoadExample(node); - diagnostic.Errors.Should().BeEmpty(); + diagnostic.Errors.Should().BeEmpty(); - example.Should().BeEquivalentTo( - new OpenApiExample + example.Should().BeEquivalentTo( + new OpenApiExample + { + Value = new OpenApiObject { - Value = new OpenApiObject + ["versions"] = new OpenApiArray { - ["versions"] = new OpenApiArray + new OpenApiObject { - new OpenApiObject + ["status"] = new OpenApiString("Status1"), + ["id"] = new OpenApiString("v1"), + ["links"] = new OpenApiArray { - ["status"] = new OpenApiString("Status1"), - ["id"] = new OpenApiString("v1"), - ["links"] = new OpenApiArray + new OpenApiObject { - new OpenApiObject - { - ["href"] = new OpenApiString("http://example.com/1"), - ["rel"] = new OpenApiString("sampleRel1") - } + ["href"] = new OpenApiString("http://example.com/1"), + ["rel"] = new OpenApiString("sampleRel1") } - }, + } + }, - new OpenApiObject + new OpenApiObject + { + ["status"] = new OpenApiString("Status2"), + ["id"] = new OpenApiString("v2"), + ["links"] = new OpenApiArray { - ["status"] = new OpenApiString("Status2"), - ["id"] = new OpenApiString("v2"), - ["links"] = new OpenApiArray + new OpenApiObject { - new OpenApiObject - { - ["href"] = new OpenApiString("http://example.com/2"), - ["rel"] = new OpenApiString("sampleRel2") - } + ["href"] = new OpenApiString("http://example.com/2"), + ["rel"] = new OpenApiString("sampleRel2") } } } } - }); - } + } + }); } [Fact] public void ParseExampleForcedStringSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "explicitString.yaml"))) - { - new OpenApiStreamReader().Read(stream, out var diagnostic); - diagnostic.Errors.Should().BeEmpty(); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "explicitString.yaml")); + new OpenApiStreamReader().Read(stream, out var diagnostic); + diagnostic.Errors.Should().BeEmpty(); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiInfoTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiInfoTests.cs index 29b23cb31..29852898f 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiInfoTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiInfoTests.cs @@ -22,128 +22,122 @@ public class OpenApiInfoTests [Fact] public void ParseAdvancedInfoShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedInfo.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; - - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)yamlNode); - - // Act - var openApiInfo = OpenApiV3Deserializer.LoadInfo(node); - - // Assert - openApiInfo.Should().BeEquivalentTo( - new OpenApiInfo + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedInfo.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var openApiInfo = OpenApiV3Deserializer.LoadInfo(node); + + // Assert + openApiInfo.Should().BeEquivalentTo( + new OpenApiInfo + { + Title = "Advanced Info", + Description = "Sample Description", + Version = "1.0.0", + TermsOfService = new Uri("http://example.org/termsOfService"), + Contact = new OpenApiContact { - Title = "Advanced Info", - Description = "Sample Description", - Version = "1.0.0", - TermsOfService = new Uri("http://example.org/termsOfService"), - Contact = new OpenApiContact + Email = "example@example.com", + Extensions = { - Email = "example@example.com", - Extensions = - { - ["x-twitter"] = new OpenApiString("@exampleTwitterHandler") - }, - Name = "John Doe", - Url = new Uri("http://www.example.com/url1") + ["x-twitter"] = new OpenApiString("@exampleTwitterHandler") }, - License = new OpenApiLicense + Name = "John Doe", + Url = new Uri("http://www.example.com/url1") + }, + License = new OpenApiLicense + { + Extensions = { ["x-disclaimer"] = new OpenApiString("Sample Extension String Disclaimer") }, + Name = "licenseName", + Url = new Uri("http://www.example.com/url2") + }, + Extensions = + { + ["x-something"] = new OpenApiString("Sample Extension String Something"), + ["x-contact"] = new OpenApiObject { - Extensions = { ["x-disclaimer"] = new OpenApiString("Sample Extension String Disclaimer") }, - Name = "licenseName", - Url = new Uri("http://www.example.com/url2") + ["name"] = new OpenApiString("John Doe"), + ["url"] = new OpenApiString("http://www.example.com/url3"), + ["email"] = new OpenApiString("example@example.com") }, - Extensions = + ["x-list"] = new OpenApiArray { - ["x-something"] = new OpenApiString("Sample Extension String Something"), - ["x-contact"] = new OpenApiObject - { - ["name"] = new OpenApiString("John Doe"), - ["url"] = new OpenApiString("http://www.example.com/url3"), - ["email"] = new OpenApiString("example@example.com") - }, - ["x-list"] = new OpenApiArray - { - new OpenApiString("1"), - new OpenApiString("2") - } + new OpenApiString("1"), + new OpenApiString("2") } - }); - } + } + }); } [Fact] public void ParseBasicInfoShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicInfo.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; - - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)yamlNode); - - // Act - var openApiInfo = OpenApiV3Deserializer.LoadInfo(node); - - // Assert - openApiInfo.Should().BeEquivalentTo( - new OpenApiInfo + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicInfo.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var openApiInfo = OpenApiV3Deserializer.LoadInfo(node); + + // Assert + openApiInfo.Should().BeEquivalentTo( + new OpenApiInfo + { + Title = "Basic Info", + Description = "Sample Description", + Version = "1.0.1", + TermsOfService = new Uri("http://swagger.io/terms/"), + Contact = new OpenApiContact { - Title = "Basic Info", - Description = "Sample Description", - Version = "1.0.1", - TermsOfService = new Uri("http://swagger.io/terms/"), - Contact = new OpenApiContact - { - Email = "support@swagger.io", - Name = "API Support", - Url = new Uri("http://www.swagger.io/support") - }, - License = new OpenApiLicense - { - Name = "Apache 2.0", - Url = new Uri("http://www.apache.org/licenses/LICENSE-2.0.html") - } - }); - } + Email = "support@swagger.io", + Name = "API Support", + Url = new Uri("http://www.swagger.io/support") + }, + License = new OpenApiLicense + { + Name = "Apache 2.0", + Url = new Uri("http://www.apache.org/licenses/LICENSE-2.0.html") + } + }); } [Fact] public void ParseMinimalInfoShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "minimalInfo.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; - - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)yamlNode); - - // Act - var openApiInfo = OpenApiV3Deserializer.LoadInfo(node); - - // Assert - openApiInfo.Should().BeEquivalentTo( - new OpenApiInfo - { - Title = "Minimal Info", - Version = "1.0.1" - }); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "minimalInfo.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var openApiInfo = OpenApiV3Deserializer.LoadInfo(node); + + // Assert + openApiInfo.Should().BeEquivalentTo( + new OpenApiInfo + { + Title = "Minimal Info", + Version = "1.0.1" + }); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiOperationTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiOperationTests.cs index 37053c2a4..cf0f5cdbf 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiOperationTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiOperationTests.cs @@ -18,14 +18,12 @@ public class OpenApiOperationTests [Fact] public void OperationWithSecurityRequirementShouldReferenceSecurityScheme() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "securedOperation.yaml"))) - { - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "securedOperation.yaml")); + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - var securityRequirement = openApiDoc.Paths["/"].Operations[Models.OperationType.Get].Security.First(); + var securityRequirement = openApiDoc.Paths["/"].Operations[Models.OperationType.Get].Security.First(); - Assert.Same(securityRequirement.Keys.First(), openApiDoc.Components.SecuritySchemes.First().Value); - } + Assert.Same(securityRequirement.Keys.First(), openApiDoc.Components.SecuritySchemes.First().Value); } [Fact] diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiResponseTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiResponseTests.cs index f73bc1608..90ec9047b 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiResponseTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiResponseTests.cs @@ -15,14 +15,12 @@ public class OpenApiResponseTests [Fact] public void ResponseWithReferencedHeaderShouldReferenceComponent() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "responseWithHeaderReference.yaml"))) - { - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "responseWithHeaderReference.yaml")); + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - var response = openApiDoc.Components.Responses["Test"]; + var response = openApiDoc.Components.Responses["Test"]; - Assert.Same(response.Headers.First().Value, openApiDoc.Components.Headers.First().Value); - } + Assert.Same(response.Headers.First().Value, openApiDoc.Components.Headers.First().Value); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiSchemaTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiSchemaTests.cs index 087a61fef..dfacc1343 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiSchemaTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiSchemaTests.cs @@ -22,53 +22,49 @@ public class OpenApiSchemaTests [Fact] public void ParsePrimitiveSchemaShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "primitiveSchema.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "primitiveSchema.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var schema = OpenApiV3Deserializer.LoadSchema(node); + // Act + var schema = OpenApiV3Deserializer.LoadSchema(node); - // Assert - diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); + // Assert + diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); - schema.Should().BeEquivalentTo( - new OpenApiSchema - { - Type = "string", - Format = "email" - }); - } + schema.Should().BeEquivalentTo( + new OpenApiSchema + { + Type = "string", + Format = "email" + }); } [Fact] public void ParsePrimitiveSchemaFragmentShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "primitiveSchema.yaml"))) - { - var reader = new OpenApiStreamReader(); - var diagnostic = new OpenApiDiagnostic(); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "primitiveSchema.yaml")); + var reader = new OpenApiStreamReader(); + var diagnostic = new OpenApiDiagnostic(); - // Act - var schema = reader.ReadFragment(stream, OpenApiSpecVersion.OpenApi3_0, out diagnostic); + // Act + var schema = reader.ReadFragment(stream, OpenApiSpecVersion.OpenApi3_0, out diagnostic); - // Assert - diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); + // Assert + diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); - schema.Should().BeEquivalentTo( - new OpenApiSchema - { - Type = "string", - Format = "email" - }); - } + schema.Should().BeEquivalentTo( + new OpenApiSchema + { + Type = "string", + Format = "email" + }); } [Fact] @@ -161,51 +157,49 @@ public void ParseEnumFragmentShouldSucceed() [Fact] public void ParseSimpleSchemaShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "simpleSchema.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "simpleSchema.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var schema = OpenApiV3Deserializer.LoadSchema(node); + // Act + var schema = OpenApiV3Deserializer.LoadSchema(node); - // Assert - diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); + // Assert + diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); - schema.Should().BeEquivalentTo( - new OpenApiSchema + schema.Should().BeEquivalentTo( + new OpenApiSchema + { + Type = "object", + Required = { - Type = "object", - Required = + "name" + }, + Properties = + { + ["name"] = new OpenApiSchema { - "name" + Type = "string" }, - Properties = + ["address"] = new OpenApiSchema { - ["name"] = new OpenApiSchema - { - Type = "string" - }, - ["address"] = new OpenApiSchema - { - Type = "string" - }, - ["age"] = new OpenApiSchema - { - Type = "integer", - Format = "int32", - Minimum = 0 - } + Type = "string" }, - AdditionalPropertiesAllowed = false - }); - } + ["age"] = new OpenApiSchema + { + Type = "integer", + Format = "int32", + Minimum = 0 + } + }, + AdditionalPropertiesAllowed = false + }); } [Fact] @@ -251,418 +245,408 @@ public void ParsePathFragmentShouldSucceed() [Fact] public void ParseDictionarySchemaShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "dictionarySchema.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "dictionarySchema.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var schema = OpenApiV3Deserializer.LoadSchema(node); + // Act + var schema = OpenApiV3Deserializer.LoadSchema(node); - // Assert - diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); + // Assert + diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); - schema.Should().BeEquivalentTo( - new OpenApiSchema + schema.Should().BeEquivalentTo( + new OpenApiSchema + { + Type = "object", + AdditionalProperties = new OpenApiSchema { - Type = "object", - AdditionalProperties = new OpenApiSchema - { - Type = "string" - } - }); - } + Type = "string" + } + }); } [Fact] public void ParseBasicSchemaWithExampleShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicSchemaWithExample.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicSchemaWithExample.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var schema = OpenApiV3Deserializer.LoadSchema(node); + // Act + var schema = OpenApiV3Deserializer.LoadSchema(node); - // Assert - diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); + // Assert + diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic()); - schema.Should().BeEquivalentTo( - new OpenApiSchema + schema.Should().BeEquivalentTo( + new OpenApiSchema + { + Type = "object", + Properties = { - Type = "object", - Properties = - { - ["id"] = new OpenApiSchema - { - Type = "integer", - Format = "int64" - }, - ["name"] = new OpenApiSchema - { - Type = "string" - } - }, - Required = + ["id"] = new OpenApiSchema { - "name" + Type = "integer", + Format = "int64" }, - Example = new OpenApiObject + ["name"] = new OpenApiSchema { - ["name"] = new OpenApiString("Puma"), - ["id"] = new OpenApiLong(1) + Type = "string" } - }); - } + }, + Required = + { + "name" + }, + Example = new OpenApiObject + { + ["name"] = new OpenApiString("Puma"), + ["id"] = new OpenApiLong(1) + } + }); } [Fact] public void ParseBasicSchemaWithReferenceShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicSchemaWithReference.yaml"))) - { - // Act - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicSchemaWithReference.yaml")); + // Act + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - // Assert - var components = openApiDoc.Components; + // Assert + var components = openApiDoc.Components; - diagnostic.Should().BeEquivalentTo( - new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); + diagnostic.Should().BeEquivalentTo( + new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); - components.Should().BeEquivalentTo( - new OpenApiComponents + components.Should().BeEquivalentTo( + new OpenApiComponents + { + Schemas = { - Schemas = + ["ErrorModel"] = new OpenApiSchema { - ["ErrorModel"] = new OpenApiSchema + Type = "object", + Properties = { - Type = "object", - Properties = - { - ["code"] = new OpenApiSchema - { - Type = "integer", - Minimum = 100, - Maximum = 600 - }, - ["message"] = new OpenApiSchema - { - Type = "string" - } - }, - Reference = new OpenApiReference + ["code"] = new OpenApiSchema { - Type = ReferenceType.Schema, - Id = "ErrorModel", - HostDocument = openApiDoc + Type = "integer", + Minimum = 100, + Maximum = 600 }, - Required = + ["message"] = new OpenApiSchema { - "message", - "code" + Type = "string" } }, - ["ExtendedErrorModel"] = new OpenApiSchema + Reference = new OpenApiReference { - Reference = new OpenApiReference - { - Type = ReferenceType.Schema, - Id = "ExtendedErrorModel", - HostDocument = openApiDoc - }, - AllOf = + Type = ReferenceType.Schema, + Id = "ErrorModel", + HostDocument = openApiDoc + }, + Required = + { + "message", + "code" + } + }, + ["ExtendedErrorModel"] = new OpenApiSchema + { + Reference = new OpenApiReference + { + Type = ReferenceType.Schema, + Id = "ExtendedErrorModel", + HostDocument = openApiDoc + }, + AllOf = + { + new OpenApiSchema { - new OpenApiSchema + Reference = new OpenApiReference + { + Type = ReferenceType.Schema, + Id = "ErrorModel", + HostDocument = openApiDoc + }, + // Schema should be dereferenced in our model, so all the properties + // from the ErrorModel above should be propagated here. + Type = "object", + Properties = { - Reference = new OpenApiReference + ["code"] = new OpenApiSchema { - Type = ReferenceType.Schema, - Id = "ErrorModel", - HostDocument = openApiDoc + Type = "integer", + Minimum = 100, + Maximum = 600 }, - // Schema should be dereferenced in our model, so all the properties - // from the ErrorModel above should be propagated here. - Type = "object", - Properties = + ["message"] = new OpenApiSchema { - ["code"] = new OpenApiSchema - { - Type = "integer", - Minimum = 100, - Maximum = 600 - }, - ["message"] = new OpenApiSchema - { - Type = "string" - } - }, - Required = - { - "message", - "code" + Type = "string" } }, - new OpenApiSchema + Required = + { + "message", + "code" + } + }, + new OpenApiSchema + { + Type = "object", + Required = {"rootCause"}, + Properties = { - Type = "object", - Required = {"rootCause"}, - Properties = + ["rootCause"] = new OpenApiSchema { - ["rootCause"] = new OpenApiSchema - { - Type = "string" - } + Type = "string" } } } } } - }, options => options.Excluding(m => m.Name == "HostDocument")); - } + } + }, options => options.Excluding(m => m.Name == "HostDocument")); } [Fact] public void ParseAdvancedSchemaWithReferenceShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedSchemaWithReference.yaml"))) - { - // Act - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedSchemaWithReference.yaml")); + // Act + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - // Assert - var components = openApiDoc.Components; + // Assert + var components = openApiDoc.Components; - diagnostic.Should().BeEquivalentTo( - new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); + diagnostic.Should().BeEquivalentTo( + new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); - components.Should().BeEquivalentTo( - new OpenApiComponents + components.Should().BeEquivalentTo( + new OpenApiComponents + { + Schemas = { - Schemas = + ["Pet"] = new OpenApiSchema { - ["Pet"] = new OpenApiSchema + Type = "object", + Discriminator = new OpenApiDiscriminator { - Type = "object", - Discriminator = new OpenApiDiscriminator - { - PropertyName = "petType" - }, - Properties = - { - ["name"] = new OpenApiSchema - { - Type = "string" - }, - ["petType"] = new OpenApiSchema - { - Type = "string" - } - }, - Required = + PropertyName = "petType" + }, + Properties = + { + ["name"] = new OpenApiSchema { - "name", - "petType" + Type = "string" }, - Reference = new OpenApiReference + ["petType"] = new OpenApiSchema { - Id= "Pet", - Type = ReferenceType.Schema, - HostDocument = openApiDoc + Type = "string" } }, - ["Cat"] = new OpenApiSchema + Required = + { + "name", + "petType" + }, + Reference = new OpenApiReference { - Description = "A representation of a cat", - AllOf = + Id= "Pet", + Type = ReferenceType.Schema, + HostDocument = openApiDoc + } + }, + ["Cat"] = new OpenApiSchema + { + Description = "A representation of a cat", + AllOf = + { + new OpenApiSchema { - new OpenApiSchema + Reference = new OpenApiReference { - Reference = new OpenApiReference - { - Type = ReferenceType.Schema, - Id = "Pet", - HostDocument = openApiDoc - }, - // Schema should be dereferenced in our model, so all the properties - // from the Pet above should be propagated here. - Type = "object", - Discriminator = new OpenApiDiscriminator - { - PropertyName = "petType" - }, - Properties = + Type = ReferenceType.Schema, + Id = "Pet", + HostDocument = openApiDoc + }, + // Schema should be dereferenced in our model, so all the properties + // from the Pet above should be propagated here. + Type = "object", + Discriminator = new OpenApiDiscriminator + { + PropertyName = "petType" + }, + Properties = + { + ["name"] = new OpenApiSchema { - ["name"] = new OpenApiSchema - { - Type = "string" - }, - ["petType"] = new OpenApiSchema - { - Type = "string" - } + Type = "string" }, - Required = + ["petType"] = new OpenApiSchema { - "name", - "petType" + Type = "string" } }, - new OpenApiSchema + Required = + { + "name", + "petType" + } + }, + new OpenApiSchema + { + Type = "object", + Required = {"huntingSkill"}, + Properties = { - Type = "object", - Required = {"huntingSkill"}, - Properties = + ["huntingSkill"] = new OpenApiSchema { - ["huntingSkill"] = new OpenApiSchema + Type = "string", + Description = "The measured skill for hunting", + Enum = { - Type = "string", - Description = "The measured skill for hunting", - Enum = - { - new OpenApiString("clueless"), - new OpenApiString("lazy"), - new OpenApiString("adventurous"), - new OpenApiString("aggressive") - } + new OpenApiString("clueless"), + new OpenApiString("lazy"), + new OpenApiString("adventurous"), + new OpenApiString("aggressive") } } } - }, - Reference = new OpenApiReference - { - Id= "Cat", - Type = ReferenceType.Schema, - HostDocument = openApiDoc } }, - ["Dog"] = new OpenApiSchema + Reference = new OpenApiReference + { + Id= "Cat", + Type = ReferenceType.Schema, + HostDocument = openApiDoc + } + }, + ["Dog"] = new OpenApiSchema + { + Description = "A representation of a dog", + AllOf = { - Description = "A representation of a dog", - AllOf = + new OpenApiSchema { - new OpenApiSchema + Reference = new OpenApiReference { - Reference = new OpenApiReference - { - Type = ReferenceType.Schema, - Id = "Pet", - HostDocument = openApiDoc - }, - // Schema should be dereferenced in our model, so all the properties - // from the Pet above should be propagated here. - Type = "object", - Discriminator = new OpenApiDiscriminator - { - PropertyName = "petType" - }, - Properties = + Type = ReferenceType.Schema, + Id = "Pet", + HostDocument = openApiDoc + }, + // Schema should be dereferenced in our model, so all the properties + // from the Pet above should be propagated here. + Type = "object", + Discriminator = new OpenApiDiscriminator + { + PropertyName = "petType" + }, + Properties = + { + ["name"] = new OpenApiSchema { - ["name"] = new OpenApiSchema - { - Type = "string" - }, - ["petType"] = new OpenApiSchema - { - Type = "string" - } + Type = "string" }, - Required = + ["petType"] = new OpenApiSchema { - "name", - "petType" + Type = "string" } }, - new OpenApiSchema + Required = { - Type = "object", - Required = {"packSize"}, - Properties = - { - ["packSize"] = new OpenApiSchema - { - Type = "integer", - Format = "int32", - Description = "the size of the pack the dog is from", - Default = new OpenApiInteger(0), - Minimum = 0 - } - } + "name", + "petType" } }, - Reference = new OpenApiReference + new OpenApiSchema { - Id= "Dog", - Type = ReferenceType.Schema, - HostDocument = openApiDoc + Type = "object", + Required = {"packSize"}, + Properties = + { + ["packSize"] = new OpenApiSchema + { + Type = "integer", + Format = "int32", + Description = "the size of the pack the dog is from", + Default = new OpenApiInteger(0), + Minimum = 0 + } + } } + }, + Reference = new OpenApiReference + { + Id= "Dog", + Type = ReferenceType.Schema, + HostDocument = openApiDoc } } - }, options => options.Excluding(m => m.Name == "HostDocument")); - } + } + }, options => options.Excluding(m => m.Name == "HostDocument")); } [Fact] public void ParseSelfReferencingSchemaShouldNotStackOverflow() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "selfReferencingSchema.yaml"))) - { - // Act - var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "selfReferencingSchema.yaml")); + // Act + var openApiDoc = new OpenApiStreamReader().Read(stream, out var diagnostic); - // Assert - var components = openApiDoc.Components; + // Assert + var components = openApiDoc.Components; - diagnostic.Should().BeEquivalentTo( - new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); + diagnostic.Should().BeEquivalentTo( + new OpenApiDiagnostic { SpecificationVersion = OpenApiSpecVersion.OpenApi3_0 }); - var schemaExtension = new OpenApiSchema - { - AllOf = { new OpenApiSchema - { + var schemaExtension = new OpenApiSchema + { + AllOf = { new OpenApiSchema + { Title = "schemaExtension", Type = "object", Properties = { - ["description"] = new OpenApiSchema { Type = "string", Nullable = true}, - ["targetTypes"] = new OpenApiSchema - { - Type = "array", - Items = new OpenApiSchema - { - Type = "string" - } - }, - ["status"] = new OpenApiSchema { Type = "string"}, - ["owner"] = new OpenApiSchema { Type = "string"}, - ["child"] = null - } + ["description"] = new OpenApiSchema { Type = "string", Nullable = true}, + ["targetTypes"] = new OpenApiSchema + { + Type = "array", + Items = new OpenApiSchema + { + Type = "string" + } + }, + ["status"] = new OpenApiSchema { Type = "string"}, + ["owner"] = new OpenApiSchema { Type = "string"}, + ["child"] = null } - }, - Reference = new OpenApiReference - { - Type = ReferenceType.Schema, - Id = "microsoft.graph.schemaExtension" } - }; + }, + Reference = new OpenApiReference + { + Type = ReferenceType.Schema, + Id = "microsoft.graph.schemaExtension" + } + }; - schemaExtension.AllOf[0].Properties["child"] = schemaExtension; + schemaExtension.AllOf[0].Properties["child"] = schemaExtension; - components.Schemas["microsoft.graph.schemaExtension"].Should().BeEquivalentTo(components.Schemas["microsoft.graph.schemaExtension"].AllOf[0].Properties["child"]); - } + components.Schemas["microsoft.graph.schemaExtension"].Should().BeEquivalentTo(components.Schemas["microsoft.graph.schemaExtension"].AllOf[0].Properties["child"]); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiSecuritySchemeTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiSecuritySchemeTests.cs index 9d7a27d72..6992e68f5 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiSecuritySchemeTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiSecuritySchemeTests.cs @@ -21,150 +21,140 @@ public class OpenApiSecuritySchemeTests [Fact] public void ParseHttpSecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "httpSecurityScheme.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; - - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)yamlNode); - - // Act - var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); - - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme - { - Type = SecuritySchemeType.Http, - Scheme = OpenApiConstants.Basic - }); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "httpSecurityScheme.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); + + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.Http, + Scheme = OpenApiConstants.Basic + }); } [Fact] public void ParseApiKeySecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "apiKeySecurityScheme.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; - - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)yamlNode); - - // Act - var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); - - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme - { - Type = SecuritySchemeType.ApiKey, - Name = "api_key", - In = ParameterLocation.Header - }); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "apiKeySecurityScheme.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); + + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.ApiKey, + Name = "api_key", + In = ParameterLocation.Header + }); } [Fact] public void ParseBearerSecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "bearerSecurityScheme.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; - - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)yamlNode); - - // Act - var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); - - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme - { - Type = SecuritySchemeType.Http, - Scheme = OpenApiConstants.Bearer, - BearerFormat = OpenApiConstants.Jwt - }); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "bearerSecurityScheme.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); + + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.Http, + Scheme = OpenApiConstants.Bearer, + BearerFormat = OpenApiConstants.Jwt + }); } [Fact] public void ParseOAuth2SecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2SecurityScheme.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2SecurityScheme.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); + // Act + var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.OAuth2, + Flows = new OpenApiOAuthFlows { - Type = SecuritySchemeType.OAuth2, - Flows = new OpenApiOAuthFlows + Implicit = new OpenApiOAuthFlow { - Implicit = new OpenApiOAuthFlow + AuthorizationUrl = new Uri("https://example.com/api/oauth/dialog"), + Scopes = { - AuthorizationUrl = new Uri("https://example.com/api/oauth/dialog"), - Scopes = - { - ["write:pets"] = "modify pets in your account", - ["read:pets"] = "read your pets" - } + ["write:pets"] = "modify pets in your account", + ["read:pets"] = "read your pets" } } - }); - } + } + }); } [Fact] public void ParseOpenIdConnectSecuritySchemeShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "openIdConnectSecurityScheme.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; - - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); - - var node = new MapNode(context, (YamlMappingNode)yamlNode); - - // Act - var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); - - // Assert - securityScheme.Should().BeEquivalentTo( - new OpenApiSecurityScheme - { - Type = SecuritySchemeType.OpenIdConnect, - Description = "Sample Description", - OpenIdConnectUrl = new Uri("http://www.example.com") - }); - } + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "openIdConnectSecurityScheme.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node); + + // Assert + securityScheme.Should().BeEquivalentTo( + new OpenApiSecurityScheme + { + Type = SecuritySchemeType.OpenIdConnect, + Description = "Sample Description", + OpenIdConnectUrl = new Uri("http://www.example.com") + }); } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiXmlTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiXmlTests.cs index a10d674a9..19e411e15 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiXmlTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiXmlTests.cs @@ -21,30 +21,28 @@ public class OpenApiXmlTests [Fact] public void ParseBasicXmlShouldSucceed() { - using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicXml.yaml"))) - { - var yamlStream = new YamlStream(); - yamlStream.Load(new StreamReader(stream)); - var yamlNode = yamlStream.Documents.First().RootNode; + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicXml.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; - var diagnostic = new OpenApiDiagnostic(); - var context = new ParsingContext(diagnostic); + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); - var node = new MapNode(context, (YamlMappingNode)yamlNode); + var node = new MapNode(context, (YamlMappingNode)yamlNode); - // Act - var xml = OpenApiV3Deserializer.LoadXml(node); + // Act + var xml = OpenApiV3Deserializer.LoadXml(node); - // Assert - xml.Should().BeEquivalentTo( - new OpenApiXml - { - Name = "name1", - Namespace = new Uri("http://example.com/schema/namespaceSample"), - Prefix = "samplePrefix", - Wrapped = true - }); - } + // Assert + xml.Should().BeEquivalentTo( + new OpenApiXml + { + Name = "name1", + Namespace = new Uri("http://example.com/schema/namespaceSample"), + Prefix = "samplePrefix", + Wrapped = true + }); } } }