Skip to content

Commit

Permalink
Added examples and other OpenAPI 3 features
Browse files Browse the repository at this point in the history
  • Loading branch information
RicoSuter committed Mar 14, 2018
1 parent dae1d41 commit aa3d161
Show file tree
Hide file tree
Showing 39 changed files with 297 additions and 99 deletions.
2 changes: 1 addition & 1 deletion src/NSwag.AspNet.Owin/NSwag.AspNet.Owin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Owin" Version="3.0.1" />
<PackageReference Include="Microsoft.Owin.StaticFiles" Version="3.0.1" />
<PackageReference Include="NJsonSchema" Version="9.10.35" />
<PackageReference Include="NJsonSchema" Version="9.10.36" />
<PackageReference Include="Owin" Version="1.0" />
</ItemGroup>
<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.AspNet.WebApi/NSwag.AspNet.WebApi.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<DefineConstants>TRACE;DEBUG;NET45</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NJsonSchema" Version="9.10.35" />
<PackageReference Include="NJsonSchema" Version="9.10.36" />
<PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" />
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.3" />
</ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.AssemblyLoader/NSwag.AssemblyLoader.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<DefineConstants>TRACE;RELEASE;FullNet;NET451</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NJsonSchema" Version="9.10.35" />
<PackageReference Include="NJsonSchema" Version="9.10.36" />
<PackageReference Include="System.Net.Http" Version="4.3.2" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NJsonSchema, Version=9.10.35.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.35\lib\net45\NJsonSchema.dll</HintPath>
<Reference Include="NJsonSchema, Version=9.10.36.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.36\lib\net45\NJsonSchema.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
Expand Down
2 changes: 1 addition & 1 deletion src/NSwag.CodeGeneration.CSharp.Tests/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net451" />
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net462" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net451" />
<package id="NJsonSchema" version="9.10.35" targetFramework="net462" />
<package id="NJsonSchema" version="9.10.36" targetFramework="net462" />
</packages>
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<EmbeddedResource Include="Templates\JsonExceptionConverter.liquid" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="9.10.35" />
<PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="9.10.36" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="Microsoft.CSharp" />
Expand Down
16 changes: 8 additions & 8 deletions src/NSwag.CodeGeneration.Tests/NSwag.CodeGeneration.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,17 @@
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NJsonSchema, Version=9.10.35.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.35\lib\net45\NJsonSchema.dll</HintPath>
<Reference Include="NJsonSchema, Version=9.10.36.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.36\lib\net45\NJsonSchema.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration, Version=9.10.35.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.9.10.35\lib\net451\NJsonSchema.CodeGeneration.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration, Version=9.10.36.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.9.10.36\lib\net451\NJsonSchema.CodeGeneration.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration.CSharp, Version=9.10.35.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.CSharp.9.10.35\lib\net451\NJsonSchema.CodeGeneration.CSharp.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration.CSharp, Version=9.10.36.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.CSharp.9.10.36\lib\net451\NJsonSchema.CodeGeneration.CSharp.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration.TypeScript, Version=9.10.35.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.TypeScript.9.10.35\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration.TypeScript, Version=9.10.36.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.TypeScript.9.10.36\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll</HintPath>
</Reference>
<Reference Include="Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL">
<HintPath>..\packages\Swashbuckle.Core.5.5.3\lib\net40\Swashbuckle.Core.dll</HintPath>
Expand Down
8 changes: 4 additions & 4 deletions src/NSwag.CodeGeneration.Tests/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net46" />
<package id="NETStandard.Library" version="1.6.1" targetFramework="net46" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net45" />
<package id="NJsonSchema" version="9.10.35" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration" version="9.10.35" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.CSharp" version="9.10.35" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.TypeScript" version="9.10.35" targetFramework="net462" />
<package id="NJsonSchema" version="9.10.36" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration" version="9.10.36" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.CSharp" version="9.10.36" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.TypeScript" version="9.10.36" targetFramework="net462" />
<package id="Swashbuckle.Core" version="5.5.3" targetFramework="net45" />
<package id="System.AppContext" version="4.3.0" targetFramework="net46" />
<package id="System.Collections" version="4.3.0" targetFramework="net46" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NJsonSchema, Version=9.10.35.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.35\lib\net45\NJsonSchema.dll</HintPath>
<Reference Include="NJsonSchema, Version=9.10.36.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.9.10.36\lib\net45\NJsonSchema.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration, Version=9.10.35.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.9.10.35\lib\net451\NJsonSchema.CodeGeneration.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration, Version=9.10.36.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.9.10.36\lib\net451\NJsonSchema.CodeGeneration.dll</HintPath>
</Reference>
<Reference Include="NJsonSchema.CodeGeneration.TypeScript, Version=9.10.35.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.TypeScript.9.10.35\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll</HintPath>
<Reference Include="NJsonSchema.CodeGeneration.TypeScript, Version=9.10.36.0, Culture=neutral, PublicKeyToken=c2f9c3bdfae56102, processorArchitecture=MSIL">
<HintPath>..\packages\NJsonSchema.CodeGeneration.TypeScript.9.10.36\lib\net451\NJsonSchema.CodeGeneration.TypeScript.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
Expand Down
6 changes: 3 additions & 3 deletions src/NSwag.CodeGeneration.TypeScript.Tests/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net46" />
<package id="NETStandard.Library" version="1.6.1" targetFramework="net46" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net451" />
<package id="NJsonSchema" version="9.10.35" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration" version="9.10.35" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.TypeScript" version="9.10.35" targetFramework="net462" />
<package id="NJsonSchema" version="9.10.36" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration" version="9.10.36" targetFramework="net462" />
<package id="NJsonSchema.CodeGeneration.TypeScript" version="9.10.36" targetFramework="net462" />
<package id="System.AppContext" version="4.3.0" targetFramework="net46" />
<package id="System.Collections" version="4.3.0" targetFramework="net46" />
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net46" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
<EmbeddedResource Include="Templates\JQueryPromisesClient.liquid" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NJsonSchema.CodeGeneration.TypeScript" Version="9.10.35" />
<PackageReference Include="NJsonSchema.CodeGeneration.TypeScript" Version="9.10.36" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="Microsoft.CSharp" />
Expand Down
4 changes: 2 additions & 2 deletions src/NSwag.CodeGeneration/NSwag.CodeGeneration.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
<PackageReference Include="NJsonSchema" Version="9.10.35" />
<PackageReference Include="NJsonSchema.CodeGeneration" Version="9.10.35" />
<PackageReference Include="NJsonSchema" Version="9.10.36" />
<PackageReference Include="NJsonSchema.CodeGeneration" Version="9.10.36" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="Microsoft.CSharp" />
Expand Down
8 changes: 4 additions & 4 deletions src/NSwag.Commands/NSwag.Commands.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@
<PackageReference Include="Microsoft.Extensions.PlatformAbstractions" Version="1.1.0" />
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
<PackageReference Include="NConsole" Version="3.9.6519.30868" />
<PackageReference Include="NJsonSchema" Version="9.10.35" />
<PackageReference Include="NJsonSchema.CodeGeneration" Version="9.10.35" />
<PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="9.10.35" />
<PackageReference Include="NJsonSchema.CodeGeneration.TypeScript" Version="9.10.35" />
<PackageReference Include="NJsonSchema" Version="9.10.36" />
<PackageReference Include="NJsonSchema.CodeGeneration" Version="9.10.36" />
<PackageReference Include="NJsonSchema.CodeGeneration.CSharp" Version="9.10.36" />
<PackageReference Include="NJsonSchema.CodeGeneration.TypeScript" Version="9.10.36" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net451'">
<Reference Include="Microsoft.CSharp" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@

namespace NSwag.Core.Tests
{
public class GeneralTests
public class DocumentLoadingTests
{
[Fact]
public async Task WhenConvertingAndBackThenItShouldBeTheSame()
public async Task When_document_contains_readOnly_properties_then_they_are_correctly_loaded()
{
//// Arrange
var json = _sampleServiceCode;
Expand All @@ -30,7 +30,7 @@ public async Task WhenConvertingAndBackThenItShouldBeTheSame()
}

[Fact]
public async Task WhenGeneratingOperationIdsThenMissingIdsAreGenerated()
public async Task When_generating_operation_ids_then_missing_ids_are_generated()
{
//// Arrange
var json = _sampleServiceCode;
Expand All @@ -44,7 +44,7 @@ public async Task WhenGeneratingOperationIdsThenMissingIdsAreGenerated()
}

[Fact]
public async Task ExtensionDataTest()
public async Task When_json_has_extension_data_then_it_is_loaded()
{
//// Arrange
var json = _jsonVendorExtensionData;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
using System;
using System.Threading.Tasks;
using NJsonSchema;
using Xunit;

namespace NSwag.Core.Tests
namespace NSwag.Core.Tests.Serialization
{
public class ComponentsSerializationTests
{
Expand All @@ -15,9 +14,12 @@ public async Task When_schema_is_added_to_definitions_then_it_is_serialized_corr

//// Act
var json = document.ToJson(SchemaType.Swagger2);
document = await SwaggerDocument.FromJsonAsync(json, schemaType: SchemaType.Swagger2);
document = await SwaggerDocument.FromJsonAsync(json);

//// Assert
Assert.Contains(@"""swagger""", json);
Assert.DoesNotContain(@"""openapi""", json);

Assert.Contains("definitions", json);
Assert.DoesNotContain("components", json);

Expand All @@ -32,9 +34,12 @@ public async Task When_schema_is_added_to_definitions_then_it_is_serialized_corr

//// Act
var json = document.ToJson(SchemaType.OpenApi3);
document = await SwaggerDocument.FromJsonAsync(json, schemaType: SchemaType.OpenApi3);
document = await SwaggerDocument.FromJsonAsync(json);

//// Assert
Assert.DoesNotContain(@"""swagger""", json);
Assert.Contains(@"""openapi""", json);

Assert.Contains("components", json);
Assert.Contains("schemas", json);
Assert.DoesNotContain("#/definitions/Foo", json);
Expand Down
84 changes: 84 additions & 0 deletions src/NSwag.Core.Tests/Serialization/ExampleSerializationTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using NJsonSchema;
using Xunit;

namespace NSwag.Core.Tests.Serialization
{
public class ExampleSerializationTests
{
[Fact]
public async Task When_document_has_response_examples_then_it_is_serialized_in_Swagger()
{
//// Arrange
var document = CreateDocument();

//// Act
var json = document.ToJson(SchemaType.Swagger2);

//// Assert
Assert.Contains(@"""examples"": 1", json); // response examples
Assert.Contains(@"""example"": 2", json); // parameter example
Assert.DoesNotContain(@"""ParameterExamples""", json); // parameter examples
}

[Fact]
public async Task When_document_has_response_examples_then_it_is_not_serialized_in_OpenApi()
{
//// Arrange
var document = CreateDocument();

//// Act
var json = document.ToJson(SchemaType.OpenApi3);

//// Assert
Assert.DoesNotContain(@"""examples"": 1", json); // response examples
Assert.Contains(@"""example"": 2", json); // parameter example
Assert.Contains(@"""ParameterExamples""", json); // parameter examples
}

private static SwaggerDocument CreateDocument()
{
var document = new SwaggerDocument();
document.Paths["foo"] = new SwaggerOperations
{
{
SwaggerOperationMethod.Get,
new SwaggerOperation
{
Parameters =
{
new SwaggerParameter
{
Kind = SwaggerParameterKind.Query,
Example = 2,
Examples = new Dictionary<string, SwaggerExample>
{
{
"ParameterExamples",
new SwaggerExample
{
Description = "Bar"
}
}
}
}
},
Responses =
{
{
"200",
new SwaggerResponse
{
Examples = 1
}
}
}
}
}
};

return document;
}
}
}
25 changes: 25 additions & 0 deletions src/NSwag.Core/JsonExpectedSchema.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//-----------------------------------------------------------------------
// <copyright file="JsonExpectedSchema.cs" company="NSwag">
// Copyright (c) Rico Suter. All rights reserved.
// </copyright>
// <license>https://github.com/NSwag/NSwag/blob/master/LICENSE.md</license>
// <author>Rico Suter, mail@rsuter.com</author>
//-----------------------------------------------------------------------

using Newtonsoft.Json;
using NJsonSchema;

namespace NSwag
{
/// <summary>Specifies a schema which is expected.</summary>
public class JsonExpectedSchema
{
/// <summary>Gets or sets the description.</summary>
[JsonProperty(PropertyName = "description", DefaultValueHandling = DefaultValueHandling.Ignore)]
public string Description { get; set; }

/// <summary>Gets or sets the schema.</summary>
[JsonProperty(PropertyName = "schema", DefaultValueHandling = DefaultValueHandling.Ignore)]
public JsonSchema4 Schema { get; set; }
}
}
2 changes: 1 addition & 1 deletion src/NSwag.Core/NSwag.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
<PackageReference Include="NJsonSchema" Version="9.10.35" />
<PackageReference Include="NJsonSchema" Version="9.10.36" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net45'">
<Reference Include="Microsoft.CSharp" />
Expand Down
Loading

0 comments on commit aa3d161

Please sign in to comment.