public void ReadMetadata_WithContentAndOneContentType_ReturnsApiDefinitionWithContentType() { string json = @"{ ""openapi"": ""3.0.0"", ""paths"": { ""/pets"": { ""post"": { ""summary"": ""Create a pet"", ""operationId"": ""createPets"", ""responses"": { ""201"": { ""description"": ""Null response"" } }, ""requestBody"": { ""description"": ""A Request Body"", ""required"": false, ""content"": { ""application/json"": { } } } } } } }"; JObject jobject = JObject.Parse(json); OpenApiV3ApiDefinitionReader openApiV3ApiDefinitionReader = new OpenApiV3ApiDefinitionReader(); ApiDefinition apiDefinition = openApiV3ApiDefinitionReader.ReadDefinition(jobject, null); Assert.NotNull(apiDefinition?.DirectoryStructure); Assert.Single(apiDefinition.DirectoryStructure.DirectoryNames); Assert.Equal("pets", apiDefinition.DirectoryStructure.DirectoryNames.Single()); IDirectoryStructure subDirectory = apiDefinition.DirectoryStructure.TraverseTo("/pets"); Assert.Single(subDirectory.RequestInfo.Methods); Assert.Contains("post", subDirectory.RequestInfo.Methods, StringComparer.Ordinal); Assert.Single(subDirectory.RequestInfo.ContentTypesByMethod["post"]); Assert.Contains("application/json", subDirectory.RequestInfo.ContentTypesByMethod["post"]); }
public void ReadDefinition_WithNoServers_BaseAddressesIsEmpty() { string json = @"{ ""openapi"": ""3.0.0"", ""info"": { ""version"": ""v1"" }, ""paths"": { ""/pets"": { } } }"; JObject jobject = JObject.Parse(json); OpenApiV3ApiDefinitionReader openApiV3ApiDefinitionReader = new OpenApiV3ApiDefinitionReader(); ApiDefinition apiDefinition = openApiV3ApiDefinitionReader.ReadDefinition(jobject, null); Assert.NotNull(apiDefinition?.BaseAddresses); Assert.Empty(apiDefinition.BaseAddresses); }
public void ReadDefinition_WithRequestBody_SchemaIsIncluded() { string contentType = "application/json"; string json = @"{ ""openapi"": ""3.0.0"", ""info"": { ""version"": ""v1"" }, ""paths"": { ""/pets"": { ""post"": { ""requestBody"": { ""content"": { """ + contentType + @""": { ""schema"": { ""type"": ""object"", ""properties"": { ""date"": { ""type"": ""string"", ""format"": ""date-time"" } } } } } } } } } }"; JObject jobject = JObject.Parse(json); OpenApiV3ApiDefinitionReader openApiV3ApiDefinitionReader = new OpenApiV3ApiDefinitionReader(); ApiDefinition apiDefinition = openApiV3ApiDefinitionReader.ReadDefinition(jobject, new Uri("https://localhost/swagger.json")); IDirectoryStructure pets = apiDefinition.DirectoryStructure.TraverseTo("pets"); string requestBody = pets.RequestInfo.GetRequestBodyForContentType(ref contentType, "post"); Assert.NotNull(requestBody); }
public void ReadDefinition_WithTwoServers_BaseAddressesHasTwoEntries() { string json = @"{ ""openapi"": ""3.0.0"", ""info"": { ""version"": ""v1"" }, ""servers"": [ { ""url"": ""https://petstore.swagger.io/"", ""description"": ""Production Server Address"" }, { ""url"": ""https://localhost/"", ""description"": ""Local Development Server Address"" } ], ""paths"": { ""/pets"": { } } }"; JObject jobject = JObject.Parse(json); OpenApiV3ApiDefinitionReader openApiV3ApiDefinitionReader = new OpenApiV3ApiDefinitionReader(); ApiDefinition apiDefinition = openApiV3ApiDefinitionReader.ReadDefinition(jobject, null); Assert.NotNull(apiDefinition?.BaseAddresses); Assert.Equal(2, apiDefinition.BaseAddresses.Count); Assert.Equal("https://petstore.swagger.io/", apiDefinition.BaseAddresses[0].Url.ToString()); Assert.Equal("Production Server Address", apiDefinition.BaseAddresses[0].Description); Assert.Equal("https://localhost/", apiDefinition.BaseAddresses[1].Url.ToString()); Assert.Equal("Local Development Server Address", apiDefinition.BaseAddresses[1].Description); }