Skip to content

Commit 4c8ab29

Browse files
authored
Merge pull request #892 from matt9ucci/contact-fragment
Add OpenApiContact for ReadFragment
2 parents 5fa5c65 + a955bb1 commit 4c8ab29

File tree

4 files changed

+84
-0
lines changed

4 files changed

+84
-0
lines changed

src/Microsoft.OpenApi.Readers/V2/OpenApiV2VersionService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public OpenApiV2VersionService(OpenApiDiagnostic diagnostic)
3434
private IDictionary<Type, Func<ParseNode, object>> _loaders = new Dictionary<Type, Func<ParseNode, object>>
3535
{
3636
[typeof(IOpenApiAny)] = OpenApiV2Deserializer.LoadAny,
37+
[typeof(OpenApiContact)] = OpenApiV2Deserializer.LoadContact,
3738
[typeof(OpenApiExternalDocs)] = OpenApiV2Deserializer.LoadExternalDocs,
3839
[typeof(OpenApiHeader)] = OpenApiV2Deserializer.LoadHeader,
3940
[typeof(OpenApiInfo)] = OpenApiV2Deserializer.LoadInfo,

src/Microsoft.OpenApi.Readers/V3/OpenApiV3VersionService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public OpenApiV3VersionService(OpenApiDiagnostic diagnostic)
3535
[typeof(IOpenApiAny)] = OpenApiV3Deserializer.LoadAny,
3636
[typeof(OpenApiCallback)] = OpenApiV3Deserializer.LoadCallback,
3737
[typeof(OpenApiComponents)] = OpenApiV3Deserializer.LoadComponents,
38+
[typeof(OpenApiContact)] = OpenApiV3Deserializer.LoadContact,
3839
[typeof(OpenApiEncoding)] = OpenApiV3Deserializer.LoadEncoding,
3940
[typeof(OpenApiExample)] = OpenApiV3Deserializer.LoadExample,
4041
[typeof(OpenApiExternalDocs)] = OpenApiV3Deserializer.LoadExternalDocs,
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT license.
3+
4+
using FluentAssertions;
5+
using Microsoft.OpenApi.Models;
6+
using System;
7+
using Xunit;
8+
9+
namespace Microsoft.OpenApi.Readers.Tests.V2Tests
10+
{
11+
public class OpenApiContactTests
12+
{
13+
[Fact]
14+
public void ParseStringContactFragmentShouldSucceed()
15+
{
16+
var input = @"
17+
{
18+
""name"": ""API Support"",
19+
""url"": ""http://www.swagger.io/support"",
20+
""email"": ""[email protected]""
21+
}
22+
";
23+
var reader = new OpenApiStringReader();
24+
var diagnostic = new OpenApiDiagnostic();
25+
26+
// Act
27+
var contact = reader.ReadFragment<OpenApiContact>(input, OpenApiSpecVersion.OpenApi2_0, out diagnostic);
28+
29+
// Assert
30+
diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic());
31+
32+
contact.Should().BeEquivalentTo(
33+
new OpenApiContact
34+
{
35+
Email = "[email protected]",
36+
Name = "API Support",
37+
Url = new Uri("http://www.swagger.io/support")
38+
});
39+
}
40+
}
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT license.
3+
4+
using FluentAssertions;
5+
using Microsoft.OpenApi.Models;
6+
using System;
7+
using Xunit;
8+
9+
namespace Microsoft.OpenApi.Readers.Tests.V3Tests
10+
{
11+
public class OpenApiContactTests
12+
{
13+
[Fact]
14+
public void ParseStringContactFragmentShouldSucceed()
15+
{
16+
var input = @"
17+
{
18+
""name"": ""API Support"",
19+
""url"": ""http://www.swagger.io/support"",
20+
""email"": ""[email protected]""
21+
}
22+
";
23+
var reader = new OpenApiStringReader();
24+
var diagnostic = new OpenApiDiagnostic();
25+
26+
// Act
27+
var contact = reader.ReadFragment<OpenApiContact>(input, OpenApiSpecVersion.OpenApi3_0, out diagnostic);
28+
29+
// Assert
30+
diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic());
31+
32+
contact.Should().BeEquivalentTo(
33+
new OpenApiContact
34+
{
35+
Email = "[email protected]",
36+
Name = "API Support",
37+
Url = new Uri("http://www.swagger.io/support")
38+
});
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)