Skip to content

Commit b530580

Browse files
authored
Merge pull request #1097 from microsoft/bugfix/validate-open-api-path-item
- adds missing validation methods
2 parents 460d267 + 2d9a007 commit b530580

File tree

4 files changed

+114
-3
lines changed

4 files changed

+114
-3
lines changed

src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<Company>Microsoft</Company>
1111
<Title>Microsoft.OpenApi.Readers</Title>
1212
<PackageId>Microsoft.OpenApi.Readers</PackageId>
13-
<Version>1.4.4</Version>
13+
<Version>1.4.5</Version>
1414
<Description>OpenAPI.NET Readers for JSON and YAML documents</Description>
1515
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
1616
<PackageTags>OpenAPI .NET</PackageTags>

src/Microsoft.OpenApi/Microsoft.OpenApi.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<Company>Microsoft</Company>
1212
<Title>Microsoft.OpenApi</Title>
1313
<PackageId>Microsoft.OpenApi</PackageId>
14-
<Version>1.4.4</Version>
14+
<Version>1.4.5</Version>
1515
<Description>.NET models with JSON and YAML writers for OpenAPI specification</Description>
1616
<Copyright>© Microsoft Corporation. All rights reserved.</Copyright>
1717
<PackageTags>OpenAPI .NET</PackageTags>

src/Microsoft.OpenApi/Validations/OpenApiValidator.cs

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class OpenApiValidator : OpenApiVisitorBase, IValidationContext
2020
private readonly IList<OpenApiValidatorWarning> _warnings = new List<OpenApiValidatorWarning>();
2121

2222
/// <summary>
23-
/// Create a vistor that will validate an OpenAPIDocument
23+
/// Create a visitor that will validate an OpenAPIDocument
2424
/// </summary>
2525
/// <param name="ruleSet"></param>
2626
public OpenApiValidator(ValidationRuleSet ruleSet)
@@ -198,6 +198,100 @@ public void AddWarning(OpenApiValidatorWarning warning)
198198
/// <param name="items">The object to be validated</param>
199199
public override void Visit(IList<OpenApiExample> items) => Validate(items, items.GetType());
200200

201+
/// <summary>
202+
/// Execute validation rules against a <see cref="OpenApiPathItem"/>
203+
/// </summary>
204+
/// <param name="item">The object to be validated</param>
205+
public override void Visit(OpenApiPathItem item) => Validate(item);
206+
207+
/// <summary>
208+
/// Execute validation rules against a <see cref="OpenApiServerVariable"/>
209+
/// </summary>
210+
/// <param name="item">The object to be validated</param>
211+
public override void Visit(OpenApiServerVariable item) => Validate(item);
212+
213+
/// <summary>
214+
/// Execute validation rules against a <see cref="OpenApiSecurityScheme"/>
215+
/// </summary>
216+
/// <param name="item">The object to be validated</param>
217+
public override void Visit(OpenApiSecurityScheme item) => Validate(item);
218+
219+
/// <summary>
220+
/// Execute validation rules against a <see cref="OpenApiSecurityRequirement"/>
221+
/// </summary>
222+
/// <param name="item">The object to be validated</param>
223+
public override void Visit(OpenApiSecurityRequirement item) => Validate(item);
224+
225+
/// <summary>
226+
/// Execute validation rules against a <see cref="OpenApiRequestBody"/>
227+
/// </summary>
228+
/// <param name="item">The object to be validated</param>
229+
public override void Visit(OpenApiRequestBody item) => Validate(item);
230+
231+
/// <summary>
232+
/// Execute validation rules against a <see cref="OpenApiPaths"/>
233+
/// </summary>
234+
/// <param name="item">The object to be validated</param>
235+
public override void Visit(OpenApiPaths item) => Validate(item);
236+
237+
/// <summary>
238+
/// Execute validation rules against a <see cref="OpenApiLink"/>
239+
/// </summary>
240+
/// <param name="item">The object to be validated</param>
241+
public override void Visit(OpenApiLink item) => Validate(item);
242+
243+
/// <summary>
244+
/// Execute validation rules against a <see cref="OpenApiExample"/>
245+
/// </summary>
246+
/// <param name="item">The object to be validated</param>
247+
public override void Visit(OpenApiExample item) => Validate(item);
248+
249+
/// <summary>
250+
/// Execute validation rules against a <see cref="OpenApiOperation"/>
251+
/// </summary>
252+
/// <param name="item">The object to be validated</param>
253+
public override void Visit(OpenApiOperation item) => Validate(item);
254+
/// <summary>
255+
/// Execute validation rules against a <see cref="IDictionary{OperationType, OpenApiOperation}"/>
256+
/// </summary>
257+
/// <param name="item">The object to be validated</param>
258+
public override void Visit(IDictionary<OperationType, OpenApiOperation> item) => Validate(item, item.GetType());
259+
/// <summary>
260+
/// Execute validation rules against a <see cref="IDictionary{String, OpenApiHeader}"/>
261+
/// </summary>
262+
/// <param name="item">The object to be validated</param>
263+
public override void Visit(IDictionary<string, OpenApiHeader> item) => Validate(item, item.GetType());
264+
/// <summary>
265+
/// Execute validation rules against a <see cref="IDictionary{String, OpenApiCallback}"/>
266+
/// </summary>
267+
/// <param name="item">The object to be validated</param>
268+
public override void Visit(IDictionary<string, OpenApiCallback> item) => Validate(item, item.GetType());
269+
/// <summary>
270+
/// Execute validation rules against a <see cref="IDictionary{String, OpenApiMediaType}"/>
271+
/// </summary>
272+
/// <param name="item">The object to be validated</param>
273+
public override void Visit(IDictionary<string, OpenApiMediaType> item) => Validate(item, item.GetType());
274+
/// <summary>
275+
/// Execute validation rules against a <see cref="IDictionary{String, OpenApiExample}"/>
276+
/// </summary>
277+
/// <param name="item">The object to be validated</param>
278+
public override void Visit(IDictionary<string, OpenApiExample> item) => Validate(item, item.GetType());
279+
/// <summary>
280+
/// Execute validation rules against a <see cref="IDictionary{String, OpenApiLink}"/>
281+
/// </summary>
282+
/// <param name="item">The object to be validated</param>
283+
public override void Visit(IDictionary<string, OpenApiLink> item) => Validate(item, item.GetType());
284+
/// <summary>
285+
/// Execute validation rules against a <see cref="IDictionary{String, OpenApiServerVariable}"/>
286+
/// </summary>
287+
/// <param name="item">The object to be validated</param>
288+
public override void Visit(IDictionary<string, OpenApiServerVariable> item) => Validate(item, item.GetType());
289+
/// <summary>
290+
/// Execute validation rules against a <see cref="IDictionary{String, OpenApiEncoding}"/>
291+
/// </summary>
292+
/// <param name="item">The object to be validated</param>
293+
public override void Visit(IDictionary<string, OpenApiEncoding> item) => Validate(item, item.GetType());
294+
201295
private void Validate<T>(T item)
202296
{
203297
var type = typeof(T);

test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,18 +1212,35 @@ namespace Microsoft.OpenApi.Validations
12121212
public override void Visit(Microsoft.OpenApi.Models.OpenApiContact item) { }
12131213
public override void Visit(Microsoft.OpenApi.Models.OpenApiDocument item) { }
12141214
public override void Visit(Microsoft.OpenApi.Models.OpenApiEncoding item) { }
1215+
public override void Visit(Microsoft.OpenApi.Models.OpenApiExample item) { }
12151216
public override void Visit(Microsoft.OpenApi.Models.OpenApiExternalDocs item) { }
12161217
public override void Visit(Microsoft.OpenApi.Models.OpenApiHeader item) { }
12171218
public override void Visit(Microsoft.OpenApi.Models.OpenApiInfo item) { }
12181219
public override void Visit(Microsoft.OpenApi.Models.OpenApiLicense item) { }
1220+
public override void Visit(Microsoft.OpenApi.Models.OpenApiLink item) { }
12191221
public override void Visit(Microsoft.OpenApi.Models.OpenApiMediaType item) { }
12201222
public override void Visit(Microsoft.OpenApi.Models.OpenApiOAuthFlow item) { }
1223+
public override void Visit(Microsoft.OpenApi.Models.OpenApiOperation item) { }
12211224
public override void Visit(Microsoft.OpenApi.Models.OpenApiParameter item) { }
1225+
public override void Visit(Microsoft.OpenApi.Models.OpenApiPathItem item) { }
1226+
public override void Visit(Microsoft.OpenApi.Models.OpenApiPaths item) { }
1227+
public override void Visit(Microsoft.OpenApi.Models.OpenApiRequestBody item) { }
12221228
public override void Visit(Microsoft.OpenApi.Models.OpenApiResponse item) { }
12231229
public override void Visit(Microsoft.OpenApi.Models.OpenApiResponses item) { }
12241230
public override void Visit(Microsoft.OpenApi.Models.OpenApiSchema item) { }
1231+
public override void Visit(Microsoft.OpenApi.Models.OpenApiSecurityRequirement item) { }
1232+
public override void Visit(Microsoft.OpenApi.Models.OpenApiSecurityScheme item) { }
12251233
public override void Visit(Microsoft.OpenApi.Models.OpenApiServer item) { }
1234+
public override void Visit(Microsoft.OpenApi.Models.OpenApiServerVariable item) { }
12261235
public override void Visit(Microsoft.OpenApi.Models.OpenApiTag item) { }
1236+
public override void Visit(System.Collections.Generic.IDictionary<Microsoft.OpenApi.Models.OperationType, Microsoft.OpenApi.Models.OpenApiOperation> item) { }
1237+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiCallback> item) { }
1238+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiEncoding> item) { }
1239+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiExample> item) { }
1240+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiHeader> item) { }
1241+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiLink> item) { }
1242+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiMediaType> item) { }
1243+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiServerVariable> item) { }
12271244
public override void Visit(System.Collections.Generic.IList<Microsoft.OpenApi.Models.OpenApiExample> items) { }
12281245
}
12291246
public class OpenApiValidatorError : Microsoft.OpenApi.Models.OpenApiError

0 commit comments

Comments
 (0)