public void ParseApiKeySecuritySchemeShouldSucceed() { using (var stream = File.OpenRead(Path.Combine(SampleFolderPath, "apiKeySecurityScheme.yaml"))) { var yamlStream = new YamlStream(); yamlStream.Load(new StreamReader(stream)); var yamlNode = yamlStream.Documents.First().RootNode; var context = new ParsingContext(); var diagnostic = new OpenApiDiagnostic(); var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode); // Act var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); // Assert securityScheme.ShouldBeEquivalentTo( new OpenApiSecurityScheme { Type = SecuritySchemeType.ApiKey, Name = "api_key", In = ParameterLocation.Header }); } }
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 { Type = SecuritySchemeType.OAuth2, Flows = new OpenApiOAuthFlows { Implicit = new OpenApiOAuthFlow { AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), Scopes = { ["write:pets"] = "modify pets in your account", ["read:pets"] = "read your pets" } } } }); } }
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 }); } }
public void ParseHttpSecuritySchemeShouldSucceed() { using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicSecurityScheme.yaml"))) { var document = OpenApiStreamReader.LoadYamlDocument(stream); var context = new ParsingContext(); var diagnostic = new OpenApiDiagnostic(); var node = new MapNode(context, diagnostic, (YamlMappingNode)document.RootNode); // Act var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); // Assert securityScheme.ShouldBeEquivalentTo( new OpenApiSecurityScheme { Type = SecuritySchemeType.Http, Scheme = "basic" }); } }
public void ParseOAuth2AccessCodeSecuritySchemeShouldSucceed() { using (var stream = File.OpenRead(Path.Combine(SampleFolderPath, "oAuth2AccessCodeSecurityScheme.yaml"))) { var yamlStream = new YamlStream(); yamlStream.Load(new StreamReader(stream)); var yamlNode = yamlStream.Documents.First().RootNode; var context = new ParsingContext(); var diagnostic = new OpenApiDiagnostic(); var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode); // Act var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node); // Assert securityScheme.ShouldBeEquivalentTo( new OpenApiSecurityScheme { Type = SecuritySchemeType.OAuth2, Flows = new OpenApiOAuthFlows { AuthorizationCode = new OpenApiOAuthFlow { AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"), Scopes = { ["write:pets"] = "modify pets in your account", ["read:pets"] = "read your pets" } } } }); } }
/// <summary> /// Load the referenced <see cref="IOpenApiReferenceable"/> object from a <see cref="OpenApiReference"/> object /// </summary> public bool TryLoadReference(OpenApiReference reference, out IOpenApiReferenceable referencedObject) { referencedObject = null; if (reference == null) { return(false); } if (reference.IsExternal) { // TODO: need to read the external document and load the referenced object. throw new NotImplementedException(SRResource.LoadReferencedObjectFromExternalNotImplmented); } if (!reference.Type.HasValue) { throw new ArgumentException("Local reference must have type specified."); } // Special case for Tag if (reference.Type == ReferenceType.Tag) { foreach (var tag in _tags) { if (tag.Name == reference.Id) { referencedObject = tag; return(true); } } referencedObject = new OpenApiTag { Name = reference.Id }; return(false); } var jsonPointer = new JsonPointer("#/" + GetReferenceTypeV2Name(reference.Type.Value) + "/" + reference.Id); var node = _rootNode.Find(jsonPointer); switch (reference.Type) { case ReferenceType.Schema: referencedObject = OpenApiV2Deserializer.LoadSchema(node); break; case ReferenceType.Response: referencedObject = OpenApiV2Deserializer.LoadResponse(node); break; case ReferenceType.Parameter: referencedObject = OpenApiV2Deserializer.LoadParameter(node); break; case ReferenceType.SecurityScheme: referencedObject = OpenApiV2Deserializer.LoadSecurityScheme(node); break; default: throw new OpenApiException( string.Format( SRResource.ReferenceV2HasInvalidValue, reference.Type, jsonPointer)); } return(true); }