public void ParsePathParameterShouldSucceed() { // Arrange MapNode node; using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "pathParameter.yaml"))) { node = TestHelper.CreateYamlMapNode(stream); } // Act var parameter = OpenApiV2Deserializer.LoadParameter(node); // Assert parameter.ShouldBeEquivalentTo( new OpenApiParameter { In = ParameterLocation.Path, Name = "username", Description = "username to fetch", Required = true, Schema = new OpenApiSchema { Type = "string" } }); }
public void ParseQueryParameterShouldSucceed() { // Arrange MapNode node; using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "queryParameter.yaml"))) { node = TestHelper.CreateYamlMapNode(stream); } // Act var parameter = OpenApiV2Deserializer.LoadParameter(node); // Assert parameter.ShouldBeEquivalentTo( new OpenApiParameter { In = ParameterLocation.Query, Name = "id", Description = "ID of the object to fetch", Required = false, Schema = new OpenApiSchema { Type = "array", Items = new OpenApiSchema { Type = "string" } }, Style = ParameterStyle.Form, Explode = true }); }
public void ParseHeaderParameterShouldSucceed() { // Arrange MapNode node; using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "headerParameter.yaml"))) { node = TestHelper.CreateYamlMapNode(stream); } // Act var parameter = OpenApiV2Deserializer.LoadParameter(node); // Assert parameter.ShouldBeEquivalentTo( new OpenApiParameter { In = ParameterLocation.Header, Name = "token", Description = "token to be passed as a header", Required = true, Style = ParameterStyle.Simple, Schema = new OpenApiSchema { Type = "array", Items = new OpenApiSchema { Type = "integer", Format = "int64" } } }); }
public void ParseBodyParameterShouldSucceed() { // Arrange MapNode node; using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "bodyParameter.yaml"))) { node = TestHelper.CreateYamlMapNode(stream); } // Act var parameter = OpenApiV2Deserializer.LoadParameter(node); // Assert // Body parameter is currently not translated via LoadParameter. // This design may be revisited and this unit test may likely change. parameter.ShouldBeEquivalentTo(null); }
public void ParseParameterWithNoSchemaShouldSucceed() { // Arrange MapNode node; using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "parameterWithNoSchema.yaml"))) { node = TestHelper.CreateYamlMapNode(stream); } // Act var parameter = OpenApiV2Deserializer.LoadParameter(node); // Assert parameter.Should().BeEquivalentTo( new OpenApiParameter { In = null, Name = "username", Description = "username to fetch", Required = false }); }
public void ParseHeaderParameterWithIncorrectDataTypeShouldSucceed() { // Arrange MapNode node; using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "headerParameterWithIncorrectDataType.yaml"))) { node = TestHelper.CreateYamlMapNode(stream); } // Act var parameter = OpenApiV2Deserializer.LoadParameter(node); // Assert parameter.ShouldBeEquivalentTo( new OpenApiParameter { In = ParameterLocation.Header, Name = "token", Description = "token to be passed as a header", Required = true, Style = ParameterStyle.Simple, Schema = new OpenApiSchema { Type = "array", Items = new OpenApiSchema { Type = "string", Format = "date-time", Enum = new List <IOpenApiAny> { new OpenApiString("1"), new OpenApiString("2"), new OpenApiString("3"), new OpenApiString("4"), } }, Default = new OpenApiArray() { new OpenApiString("1"), new OpenApiString("2") }, Enum = new List <IOpenApiAny> { new OpenApiArray() { new OpenApiString("1"), new OpenApiString("2") }, new OpenApiArray() { new OpenApiString("2"), new OpenApiString("3") }, new OpenApiArray() { new OpenApiString("3"), new OpenApiString("4") } } } }); }
/// <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); }