Skip to content

Commit 956a47e

Browse files
committed
Merge branch 'copilot/fix-ea45d0db-41a9-4eb8-ab64-a899005cb84b' of https://github.com/BinkyLabs/OpenAPI.NET into copilot/fix-ea45d0db-41a9-4eb8-ab64-a899005cb84b
2 parents 5f514b5 + b4eec89 commit 956a47e

File tree

12 files changed

+168
-3
lines changed

12 files changed

+168
-3
lines changed

src/Microsoft.OpenApi/Reader/V3/OpenApiEncodingDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ internal static partial class OpenApiV3Deserializer
4444
}
4545
},
4646
{
47-
"allowedReserved",
47+
"allowReserved",
4848
(o, n, _) =>
4949
{
5050
var allowReserved = n.GetScalarValue();

src/Microsoft.OpenApi/Reader/V31/OpenApiEncodingDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ internal static partial class OpenApiV31Deserializer
4343
}
4444
},
4545
{
46-
"allowedReserved", (o, n, _) =>
46+
"allowReserved", (o, n, _) =>
4747
{
4848
var allowReserved = n.GetScalarValue();
4949
if (allowReserved is not null)

src/Microsoft.OpenApi/Reader/V32/OpenApiEncodingDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ internal static partial class OpenApiV32Deserializer
4343
}
4444
},
4545
{
46-
"allowedReserved", (o, n, _) =>
46+
"allowReserved", (o, n, _) =>
4747
{
4848
var allowReserved = n.GetScalarValue();
4949
if (allowReserved is not null)

test/Microsoft.OpenApi.Readers.Tests/V31Tests/OpenApiMediaTypeTests.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,5 +140,45 @@ public async Task ParseMediaTypeWithXOaiItemSchemaShouldSucceed()
140140
};
141141
Assert.Equivalent(expected, mediaType);
142142
}
143+
144+
[Fact]
145+
public async Task ParseMediaTypeWithXOaiItemEncodingShouldSucceed()
146+
{
147+
// Act
148+
var mediaType = await OpenApiModelFactory.LoadAsync<OpenApiMediaType>(
149+
Path.Combine(SampleFolderPath, "mediaTypeWithXOaiItemEncoding.yaml"),
150+
OpenApiSpecVersion.OpenApi3_1,
151+
new(),
152+
SettingsFixture.ReaderSettings);
153+
154+
// Assert
155+
Assert.NotNull(mediaType);
156+
Assert.NotNull(mediaType.ItemEncoding);
157+
Assert.Equal("image/png, image/jpeg", mediaType.ItemEncoding.ContentType);
158+
Assert.Equal(ParameterStyle.Simple, mediaType.ItemEncoding.Style);
159+
Assert.True(mediaType.ItemEncoding.Explode);
160+
Assert.True(mediaType.ItemEncoding.AllowReserved);
161+
}
162+
163+
[Fact]
164+
public async Task ParseMediaTypeWithXOaiPrefixEncodingShouldSucceed()
165+
{
166+
// Act
167+
var mediaType = await OpenApiModelFactory.LoadAsync<OpenApiMediaType>(
168+
Path.Combine(SampleFolderPath, "mediaTypeWithXOaiPrefixEncoding.yaml"),
169+
OpenApiSpecVersion.OpenApi3_1,
170+
new(),
171+
SettingsFixture.ReaderSettings);
172+
173+
// Assert
174+
Assert.NotNull(mediaType);
175+
Assert.NotNull(mediaType.PrefixEncoding);
176+
Assert.Equal(2, mediaType.PrefixEncoding.Count);
177+
Assert.Equal("application/json", mediaType.PrefixEncoding[0].ContentType);
178+
Assert.Equal(ParameterStyle.Simple, mediaType.PrefixEncoding[0].Style);
179+
Assert.Equal("text/plain", mediaType.PrefixEncoding[1].ContentType);
180+
Assert.Equal(ParameterStyle.Form, mediaType.PrefixEncoding[1].Style);
181+
Assert.False(mediaType.PrefixEncoding[1].Explode);
182+
}
143183
}
144184
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
schema:
2+
type: array
3+
x-oai-itemEncoding:
4+
contentType: image/png, image/jpeg
5+
style: simple
6+
explode: true
7+
allowReserved: true
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
schema:
2+
type: array
3+
x-oai-prefixEncoding:
4+
- contentType: application/json
5+
style: simple
6+
- contentType: text/plain
7+
style: form
8+
explode: false

test/Microsoft.OpenApi.Readers.Tests/V32Tests/OpenApiMediaTypeTests.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,5 +140,45 @@ public async Task ParseMediaTypeWithItemSchemaShouldSucceed()
140140
};
141141
Assert.Equivalent(expected, mediaType);
142142
}
143+
144+
[Fact]
145+
public async Task ParseMediaTypeWithItemEncodingShouldSucceed()
146+
{
147+
// Act
148+
var mediaType = await OpenApiModelFactory.LoadAsync<OpenApiMediaType>(
149+
Path.Combine(SampleFolderPath, "mediaTypeWithItemEncoding.yaml"),
150+
OpenApiSpecVersion.OpenApi3_2,
151+
new(),
152+
SettingsFixture.ReaderSettings);
153+
154+
// Assert
155+
Assert.NotNull(mediaType);
156+
Assert.NotNull(mediaType.ItemEncoding);
157+
Assert.Equal("image/png, image/jpeg", mediaType.ItemEncoding.ContentType);
158+
Assert.Equal(ParameterStyle.Simple, mediaType.ItemEncoding.Style);
159+
Assert.True(mediaType.ItemEncoding.Explode);
160+
Assert.True(mediaType.ItemEncoding.AllowReserved);
161+
}
162+
163+
[Fact]
164+
public async Task ParseMediaTypeWithPrefixEncodingShouldSucceed()
165+
{
166+
// Act
167+
var mediaType = await OpenApiModelFactory.LoadAsync<OpenApiMediaType>(
168+
Path.Combine(SampleFolderPath, "mediaTypeWithPrefixEncoding.yaml"),
169+
OpenApiSpecVersion.OpenApi3_2,
170+
new(),
171+
SettingsFixture.ReaderSettings);
172+
173+
// Assert
174+
Assert.NotNull(mediaType);
175+
Assert.NotNull(mediaType.PrefixEncoding);
176+
Assert.Equal(2, mediaType.PrefixEncoding.Count);
177+
Assert.Equal("application/json", mediaType.PrefixEncoding[0].ContentType);
178+
Assert.Equal(ParameterStyle.Simple, mediaType.PrefixEncoding[0].Style);
179+
Assert.Equal("text/plain", mediaType.PrefixEncoding[1].ContentType);
180+
Assert.Equal(ParameterStyle.Form, mediaType.PrefixEncoding[1].Style);
181+
Assert.False(mediaType.PrefixEncoding[1].Explode);
182+
}
143183
}
144184
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
schema:
2+
type: array
3+
itemEncoding:
4+
contentType: image/png, image/jpeg
5+
style: simple
6+
explode: true
7+
allowReserved: true
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
schema:
2+
type: array
3+
prefixEncoding:
4+
- contentType: application/json
5+
style: simple
6+
- contentType: text/plain
7+
style: form
8+
explode: false

test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,45 @@ public async Task ParseMediaTypeWithEmptyArrayInExamplesWorks()
114114
// Assert
115115
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), serialized.MakeLineBreaksEnvironmentNeutral());
116116
}
117+
118+
[Fact]
119+
public async Task ParseMediaTypeWithXOaiItemEncodingShouldSucceed()
120+
{
121+
// Act
122+
var mediaType = await OpenApiModelFactory.LoadAsync<OpenApiMediaType>(
123+
Path.Combine(SampleFolderPath, "mediaTypeWithXOaiItemEncoding.yaml"),
124+
OpenApiSpecVersion.OpenApi3_0,
125+
new(),
126+
SettingsFixture.ReaderSettings);
127+
128+
// Assert
129+
Assert.NotNull(mediaType);
130+
Assert.NotNull(mediaType.ItemEncoding);
131+
Assert.Equal("image/png, image/jpeg", mediaType.ItemEncoding.ContentType);
132+
Assert.Equal(ParameterStyle.Simple, mediaType.ItemEncoding.Style);
133+
Assert.True(mediaType.ItemEncoding.Explode);
134+
Assert.True(mediaType.ItemEncoding.AllowReserved);
135+
}
136+
137+
[Fact]
138+
public async Task ParseMediaTypeWithXOaiPrefixEncodingShouldSucceed()
139+
{
140+
// Act
141+
var mediaType = await OpenApiModelFactory.LoadAsync<OpenApiMediaType>(
142+
Path.Combine(SampleFolderPath, "mediaTypeWithXOaiPrefixEncoding.yaml"),
143+
OpenApiSpecVersion.OpenApi3_0,
144+
new(),
145+
SettingsFixture.ReaderSettings);
146+
147+
// Assert
148+
Assert.NotNull(mediaType);
149+
Assert.NotNull(mediaType.PrefixEncoding);
150+
Assert.Equal(2, mediaType.PrefixEncoding.Count);
151+
Assert.Equal("application/json", mediaType.PrefixEncoding[0].ContentType);
152+
Assert.Equal(ParameterStyle.Simple, mediaType.PrefixEncoding[0].Style);
153+
Assert.Equal("text/plain", mediaType.PrefixEncoding[1].ContentType);
154+
Assert.Equal(ParameterStyle.Form, mediaType.PrefixEncoding[1].Style);
155+
Assert.False(mediaType.PrefixEncoding[1].Explode);
156+
}
117157
}
118158
}

0 commit comments

Comments
 (0)