forked from microsoft/OpenAPI.NET
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOpenApiEncodingTests.cs
More file actions
130 lines (112 loc) · 4.04 KB
/
OpenApiEncodingTests.cs
File metadata and controls
130 lines (112 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
using System.Threading.Tasks;
using Xunit;
namespace Microsoft.OpenApi.Tests.Models
{
[Collection("DefaultSettings")]
public class OpenApiEncodingTests
{
public static OpenApiEncoding BasicEncoding = new();
public static OpenApiEncoding AdvanceEncoding = new()
{
ContentType = "image/png, image/jpeg",
Style = ParameterStyle.Simple,
Explode = true,
AllowReserved = true,
};
[Theory]
[InlineData(OpenApiConstants.Json, "{ }")]
[InlineData(OpenApiConstants.Yaml, "{ }")]
public async Task SerializeBasicEncodingAsV3Works(string format, string expected)
{
// Arrange & Act
var actual = await BasicEncoding.SerializeAsync(OpenApiSpecVersion.OpenApi3_0, format);
// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
expected = expected.MakeLineBreaksEnvironmentNeutral();
Assert.Equal(expected, actual);
}
[Fact]
public async Task SerializeAdvanceEncodingAsV3JsonWorks()
{
// Arrange
var expected =
"""
{
"contentType": "image/png, image/jpeg",
"style": "simple",
"explode": true,
"allowReserved": true
}
""";
// Act
var actual = await AdvanceEncoding.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_0);
// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
expected = expected.MakeLineBreaksEnvironmentNeutral();
Assert.Equal(expected, actual);
}
[Fact]
public async Task SerializeAdvanceEncodingAsV3YamlWorks()
{
// Arrange
var expected =
"""
contentType: 'image/png, image/jpeg'
style: simple
explode: true
allowReserved: true
""";
// Act
var actual = await AdvanceEncoding.SerializeAsYamlAsync(OpenApiSpecVersion.OpenApi3_0);
// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
expected = expected.MakeLineBreaksEnvironmentNeutral();
Assert.Equal(expected, actual);
}
[Theory]
[InlineData(ParameterStyle.Form, true)]
[InlineData(ParameterStyle.SpaceDelimited, false)]
[InlineData(null, false)]
public void WhenStyleIsFormTheDefaultValueOfExplodeShouldBeTrueOtherwiseFalse(ParameterStyle? style, bool expectedExplode)
{
// Arrange
var parameter = new OpenApiEncoding
{
Style = style
};
// Act & Assert
Assert.Equal(parameter.Explode, expectedExplode);
}
[Theory]
[InlineData(true, true)]
[InlineData(false, true)]
[InlineData(null, false)]
public async Task WhenExplodeIsSetOutputShouldHaveExplode(bool? expectedExplode, bool hasExplode)
{
// Arrange
OpenApiEncoding parameter = new()
{
ContentType = "multipart/form-data",
Style = ParameterStyle.Form,
Explode = expectedExplode,
};
var expected =
$"""
contentType: multipart/form-data
style: form
""";
if (hasExplode)
{
expected = expected + $"\nexplode: {expectedExplode.ToString().ToLower()}";
}
// Act
var actual = await parameter.SerializeAsYamlAsync(OpenApiSpecVersion.OpenApi3_0);
// Assert
actual = actual.MakeLineBreaksEnvironmentNeutral();
expected = expected.MakeLineBreaksEnvironmentNeutral();
Assert.Equal(actual, expected);
}
}
}