Skip to content

Commit e2cd111

Browse files
Merge pull request #2340 from microsoft/chore/implement-tests-for-routing-issues
chore: implement tests for routing issues during serialization
2 parents 0d3593d + 8f15c33 commit e2cd111

40 files changed

+1605
-138
lines changed

src/Microsoft.OpenApi/Models/OpenApiCallback.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,15 @@ public void AddPathItem(RuntimeExpression expression, IOpenApiPathItem pathItem)
5959
/// </summary>
6060
/// <param name="writer"></param>
6161
/// <exception cref="System.NotImplementedException"></exception>
62-
public void SerializeAsV31(IOpenApiWriter writer)
62+
public virtual void SerializeAsV31(IOpenApiWriter writer)
6363
{
6464
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_1, (writer, element) => element.SerializeAsV31(writer));
6565
}
6666

6767
/// <summary>
6868
/// Serialize <see cref="OpenApiCallback"/> to Open Api v3.0
6969
/// </summary>
70-
public void SerializeAsV3(IOpenApiWriter writer)
70+
public virtual void SerializeAsV3(IOpenApiWriter writer)
7171
{
7272
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (writer, element) => element.SerializeAsV3(writer));
7373
}
@@ -97,7 +97,7 @@ internal void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion versio
9797
/// <summary>
9898
/// Serialize <see cref="OpenApiCallback"/> to Open Api v2.0
9999
/// </summary>
100-
public void SerializeAsV2(IOpenApiWriter writer)
100+
public virtual void SerializeAsV2(IOpenApiWriter writer)
101101
{
102102
// Callback object does not exist in V2.
103103
}

src/Microsoft.OpenApi/Models/OpenApiComponents.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public OpenApiComponents(OpenApiComponents? components)
9898
/// Serialize <see cref="OpenApiComponents"/> to Open API v3.1.
9999
/// </summary>
100100
/// <param name="writer"></param>
101-
public void SerializeAsV31(IOpenApiWriter writer)
101+
public virtual void SerializeAsV31(IOpenApiWriter writer)
102102
{
103103
Utils.CheckArgumentNull(writer);
104104

@@ -136,7 +136,7 @@ public void SerializeAsV31(IOpenApiWriter writer)
136136
/// Serialize <see cref="OpenApiComponents"/> to v3.0
137137
/// </summary>
138138
/// <param name="writer"></param>
139-
public void SerializeAsV3(IOpenApiWriter writer)
139+
public virtual void SerializeAsV3(IOpenApiWriter writer)
140140
{
141141
Utils.CheckArgumentNull(writer);
142142

@@ -338,7 +338,7 @@ private void RenderComponents(IOpenApiWriter writer, Action<IOpenApiWriter, IOpe
338338
/// <summary>
339339
/// Serialize <see cref="OpenApiComponents"/> to Open Api v2.0.
340340
/// </summary>
341-
public void SerializeAsV2(IOpenApiWriter writer)
341+
public virtual void SerializeAsV2(IOpenApiWriter writer)
342342
{
343343
// Components object does not exist in V2.
344344
}

src/Microsoft.OpenApi/Models/OpenApiContact.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,23 @@ public OpenApiContact(OpenApiContact contact)
5454
/// Serialize <see cref="OpenApiContact"/> to Open Api v3.1
5555
/// </summary>
5656
/// <param name="writer"></param>
57-
public void SerializeAsV31(IOpenApiWriter writer)
57+
public virtual void SerializeAsV31(IOpenApiWriter writer)
5858
{
5959
WriteInternal(writer, OpenApiSpecVersion.OpenApi3_1);
6060
}
6161

6262
/// <summary>
6363
/// Serialize <see cref="OpenApiContact"/> to Open Api v3.0
6464
/// </summary>
65-
public void SerializeAsV3(IOpenApiWriter writer)
65+
public virtual void SerializeAsV3(IOpenApiWriter writer)
6666
{
6767
WriteInternal(writer, OpenApiSpecVersion.OpenApi3_0);
6868
}
6969

7070
/// <summary>
7171
/// Serialize <see cref="OpenApiContact"/> to Open Api v2.0
7272
/// </summary>
73-
public void SerializeAsV2(IOpenApiWriter writer)
73+
public virtual void SerializeAsV2(IOpenApiWriter writer)
7474
{
7575
WriteInternal(writer, OpenApiSpecVersion.OpenApi2_0);
7676
}

src/Microsoft.OpenApi/Models/OpenApiEncoding.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public OpenApiEncoding(OpenApiEncoding encoding)
7676
/// Serialize <see cref="OpenApiEncoding"/> to Open Api v3.1
7777
/// </summary>
7878
/// <param name="writer"></param>
79-
public void SerializeAsV31(IOpenApiWriter writer)
79+
public virtual void SerializeAsV31(IOpenApiWriter writer)
8080
{
8181
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_1, (writer, element) => element.SerializeAsV31(writer));
8282
}
@@ -85,7 +85,7 @@ public void SerializeAsV31(IOpenApiWriter writer)
8585
/// Serialize <see cref="OpenApiEncoding"/> to Open Api v3.0
8686
/// </summary>
8787
/// <param name="writer"></param>
88-
public void SerializeAsV3(IOpenApiWriter writer)
88+
public virtual void SerializeAsV3(IOpenApiWriter writer)
8989
{
9090
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (writer, element) => element.SerializeAsV3(writer));
9191
}
@@ -124,7 +124,7 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
124124
/// <summary>
125125
/// Serialize <see cref="OpenApiExternalDocs"/> to Open Api v2.0.
126126
/// </summary>
127-
public void SerializeAsV2(IOpenApiWriter writer)
127+
public virtual void SerializeAsV2(IOpenApiWriter writer)
128128
{
129129
// nothing here
130130
}

src/Microsoft.OpenApi/Models/OpenApiExample.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ internal OpenApiExample(IOpenApiExample example)
5050
}
5151

5252
/// <inheritdoc/>
53-
public void SerializeAsV31(IOpenApiWriter writer)
53+
public virtual void SerializeAsV31(IOpenApiWriter writer)
5454
{
5555
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_1);
5656
}
5757

5858
/// <inheritdoc/>
59-
public void SerializeAsV3(IOpenApiWriter writer)
59+
public virtual void SerializeAsV3(IOpenApiWriter writer)
6060
{
6161
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0);
6262
}
@@ -86,7 +86,7 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
8686
}
8787

8888
/// <inheritdoc/>
89-
public void SerializeAsV2(IOpenApiWriter writer)
89+
public virtual void SerializeAsV2(IOpenApiWriter writer)
9090
{
9191
SerializeInternal(writer, OpenApiSpecVersion.OpenApi2_0);
9292
}

src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,23 @@ public OpenApiExternalDocs(OpenApiExternalDocs externalDocs)
4646
/// <summary>
4747
/// Serialize <see cref="OpenApiExternalDocs"/> to Open Api v3.1.
4848
/// </summary>
49-
public void SerializeAsV31(IOpenApiWriter writer)
49+
public virtual void SerializeAsV31(IOpenApiWriter writer)
5050
{
5151
WriteInternal(writer, OpenApiSpecVersion.OpenApi3_1);
5252
}
5353

5454
/// <summary>
5555
/// Serialize <see cref="OpenApiExternalDocs"/> to Open Api v3.0.
5656
/// </summary>
57-
public void SerializeAsV3(IOpenApiWriter writer)
57+
public virtual void SerializeAsV3(IOpenApiWriter writer)
5858
{
5959
WriteInternal(writer, OpenApiSpecVersion.OpenApi3_0);
6060
}
6161

6262
/// <summary>
6363
/// Serialize <see cref="OpenApiExternalDocs"/> to Open Api v2.0.
6464
/// </summary>
65-
public void SerializeAsV2(IOpenApiWriter writer)
65+
public virtual void SerializeAsV2(IOpenApiWriter writer)
6666
{
6767
WriteInternal(writer, OpenApiSpecVersion.OpenApi2_0);
6868
}

src/Microsoft.OpenApi/Models/OpenApiHeader.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,15 @@ internal OpenApiHeader(IOpenApiHeader header)
8383
/// <summary>
8484
/// Serialize <see cref="OpenApiHeader"/> to Open Api v3.1
8585
/// </summary>
86-
public void SerializeAsV31(IOpenApiWriter writer)
86+
public virtual void SerializeAsV31(IOpenApiWriter writer)
8787
{
8888
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (writer, element) => element.SerializeAsV31(writer));
8989
}
9090

9191
/// <summary>
9292
/// Serialize <see cref="OpenApiHeader"/> to Open Api v3.0
9393
/// </summary>
94-
public void SerializeAsV3(IOpenApiWriter writer)
94+
public virtual void SerializeAsV3(IOpenApiWriter writer)
9595
{
9696
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (writer, element) => element.SerializeAsV3(writer));
9797
}
@@ -145,7 +145,7 @@ internal void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion versio
145145
/// <summary>
146146
/// Serialize to OpenAPI V2 document without using reference.
147147
/// </summary>
148-
public void SerializeAsV2(IOpenApiWriter writer)
148+
public virtual void SerializeAsV2(IOpenApiWriter writer)
149149
{
150150
Utils.CheckArgumentNull(writer);
151151

src/Microsoft.OpenApi/Models/OpenApiLicense.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public OpenApiLicense(OpenApiLicense license)
5252
/// <summary>
5353
/// Serialize <see cref="OpenApiLicense"/> to Open Api v3.1
5454
/// </summary>
55-
public void SerializeAsV31(IOpenApiWriter writer)
55+
public virtual void SerializeAsV31(IOpenApiWriter writer)
5656
{
5757
WriteInternal(writer, OpenApiSpecVersion.OpenApi3_1);
5858
writer.WriteProperty(OpenApiConstants.Identifier, Identifier);
@@ -62,7 +62,7 @@ public void SerializeAsV31(IOpenApiWriter writer)
6262
/// <summary>
6363
/// Serialize <see cref="OpenApiLicense"/> to Open Api v3.0
6464
/// </summary>
65-
public void SerializeAsV3(IOpenApiWriter writer)
65+
public virtual void SerializeAsV3(IOpenApiWriter writer)
6666
{
6767
WriteInternal(writer, OpenApiSpecVersion.OpenApi3_0);
6868
writer.WriteEndObject();
@@ -71,7 +71,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
7171
/// <summary>
7272
/// Serialize <see cref="OpenApiLicense"/> to Open Api v2.0
7373
/// </summary>
74-
public void SerializeAsV2(IOpenApiWriter writer)
74+
public virtual void SerializeAsV2(IOpenApiWriter writer)
7575
{
7676
WriteInternal(writer, OpenApiSpecVersion.OpenApi2_0);
7777
writer.WriteEndObject();

src/Microsoft.OpenApi/Models/OpenApiLink.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ internal OpenApiLink(IOpenApiLink link)
5656
}
5757

5858
/// <inheritdoc/>
59-
public void SerializeAsV31(IOpenApiWriter writer)
59+
public virtual void SerializeAsV31(IOpenApiWriter writer)
6060
{
6161
SerializeInternal(writer, (writer, element) => element.SerializeAsV31(writer));
6262
}
6363

6464
/// <inheritdoc/>
65-
public void SerializeAsV3(IOpenApiWriter writer)
65+
public virtual void SerializeAsV3(IOpenApiWriter writer)
6666
{
6767
SerializeInternal(writer, (writer, element) => element.SerializeAsV3(writer));
6868
}
@@ -98,7 +98,7 @@ internal void SerializeInternal(IOpenApiWriter writer, Action<IOpenApiWriter, IO
9898
}
9999

100100
/// <inheritdoc/>
101-
public void SerializeAsV2(IOpenApiWriter writer)
101+
public virtual void SerializeAsV2(IOpenApiWriter writer)
102102
{
103103
// Link object does not exist in V2.
104104
}

src/Microsoft.OpenApi/Models/OpenApiMediaType.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,15 @@ public OpenApiMediaType(OpenApiMediaType? mediaType)
6767
/// <summary>
6868
/// Serialize <see cref="OpenApiMediaType"/> to Open Api v3.1.
6969
/// </summary>
70-
public void SerializeAsV31(IOpenApiWriter writer)
70+
public virtual void SerializeAsV31(IOpenApiWriter writer)
7171
{
7272
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_1, (w, element) => element.SerializeAsV31(w));
7373
}
7474

7575
/// <summary>
7676
/// Serialize <see cref="OpenApiMediaType"/> to Open Api v3.0.
7777
/// </summary>
78-
public void SerializeAsV3(IOpenApiWriter writer)
78+
public virtual void SerializeAsV3(IOpenApiWriter writer)
7979
{
8080
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (w, element) => element.SerializeAsV3(w));
8181
}
@@ -99,7 +99,7 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
9999
// examples
100100
if (Examples != null && Examples.Any())
101101
{
102-
SerializeExamples(writer, Examples);
102+
SerializeExamples(writer, Examples, callback);
103103
}
104104

105105
// encoding
@@ -114,12 +114,12 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
114114
/// <summary>
115115
/// Serialize <see cref="OpenApiMediaType"/> to Open Api v2.0.
116116
/// </summary>
117-
public void SerializeAsV2(IOpenApiWriter writer)
117+
public virtual void SerializeAsV2(IOpenApiWriter writer)
118118
{
119119
// Media type does not exist in V2.
120120
}
121121

122-
private static void SerializeExamples(IOpenApiWriter writer, Dictionary<string, IOpenApiExample> examples)
122+
private static void SerializeExamples(IOpenApiWriter writer, Dictionary<string, IOpenApiExample> examples, Action<IOpenApiWriter, IOpenApiSerializable> callback)
123123
{
124124
/* Special case for writing out empty arrays as valid response examples
125125
* Check if there is any example with an empty array as its value and set the flag `hasEmptyArray` to true
@@ -143,7 +143,7 @@ private static void SerializeExamples(IOpenApiWriter writer, Dictionary<string,
143143
}
144144
else
145145
{
146-
writer.WriteOptionalMap(OpenApiConstants.Examples, examples, (w, e) => e.SerializeAsV3(w));
146+
writer.WriteOptionalMap(OpenApiConstants.Examples, examples, callback);
147147
}
148148
}
149149
}

src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,15 @@ public OpenApiOAuthFlows(OpenApiOAuthFlows oAuthFlows)
5959
/// <summary>
6060
/// Serialize <see cref="OpenApiOAuthFlows"/> to Open Api v3.1
6161
/// </summary>
62-
public void SerializeAsV31(IOpenApiWriter writer)
62+
public virtual void SerializeAsV31(IOpenApiWriter writer)
6363
{
6464
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_1, (writer, element) => element.SerializeAsV31(writer));
6565
}
6666

6767
/// <summary>
6868
/// Serialize <see cref="OpenApiOAuthFlows"/> to Open Api v3.0
6969
/// </summary>
70-
public void SerializeAsV3(IOpenApiWriter writer)
70+
public virtual void SerializeAsV3(IOpenApiWriter writer)
7171
{
7272
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (writer, element) => element.SerializeAsV3(writer));
7373
}
@@ -109,7 +109,7 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
109109
/// <summary>
110110
/// Serialize <see cref="OpenApiOAuthFlows"/> to Open Api v2.0
111111
/// </summary>
112-
public void SerializeAsV2(IOpenApiWriter writer)
112+
public virtual void SerializeAsV2(IOpenApiWriter writer)
113113
{
114114
// OAuthFlows object does not exist in V2.
115115
}

src/Microsoft.OpenApi/Models/OpenApiOperation.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -158,15 +158,15 @@ public OpenApiOperation(OpenApiOperation operation)
158158
/// <summary>
159159
/// Serialize <see cref="OpenApiOperation"/> to Open Api v3.1.
160160
/// </summary>
161-
public void SerializeAsV31(IOpenApiWriter writer)
161+
public virtual void SerializeAsV31(IOpenApiWriter writer)
162162
{
163163
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_1, (writer, element) => element.SerializeAsV31(writer));
164164
}
165165

166166
/// <summary>
167167
/// Serialize <see cref="OpenApiOperation"/> to Open Api v3.0.
168168
/// </summary>
169-
public void SerializeAsV3(IOpenApiWriter writer)
169+
public virtual void SerializeAsV3(IOpenApiWriter writer)
170170
{
171171
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (writer, element) => element.SerializeAsV3(writer));
172172
}
@@ -228,7 +228,7 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
228228
/// <summary>
229229
/// Serialize <see cref="OpenApiOperation"/> to Open Api v2.0.
230230
/// </summary>
231-
public void SerializeAsV2(IOpenApiWriter writer)
231+
public virtual void SerializeAsV2(IOpenApiWriter writer)
232232
{
233233
Utils.CheckArgumentNull(writer);
234234

src/Microsoft.OpenApi/Models/OpenApiParameter.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,13 @@ internal OpenApiParameter(IOpenApiParameter parameter)
100100
}
101101

102102
/// <inheritdoc/>
103-
public void SerializeAsV31(IOpenApiWriter writer)
103+
public virtual void SerializeAsV31(IOpenApiWriter writer)
104104
{
105105
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_1, (writer, element) => element.SerializeAsV31(writer));
106106
}
107107

108108
/// <inheritdoc/>
109-
public void SerializeAsV3(IOpenApiWriter writer)
109+
public virtual void SerializeAsV3(IOpenApiWriter writer)
110110
{
111111
SerializeInternal(writer, OpenApiSpecVersion.OpenApi3_0, (writer, element) => element.SerializeAsV3(writer));
112112
}
@@ -248,7 +248,7 @@ internal virtual void WriteRequestBodySchemaForV2(IOpenApiWriter writer, Diction
248248
}
249249

250250
/// <inheritdoc/>
251-
public void SerializeAsV2(IOpenApiWriter writer)
251+
public virtual void SerializeAsV2(IOpenApiWriter writer)
252252
{
253253
Utils.CheckArgumentNull(writer);
254254

0 commit comments

Comments
 (0)