Skip to content

Commit 109358a

Browse files
authored
Merge branch 'master' into dm/visitreference
2 parents 65f8d7e + d169527 commit 109358a

File tree

5 files changed

+1
-210
lines changed

5 files changed

+1
-210
lines changed

src/Microsoft.OpenApi/Properties/SRResource.Designer.cs

Lines changed: 0 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Microsoft.OpenApi/Properties/SRResource.resx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -198,12 +198,6 @@
198198
<data name="Validation_ComponentsKeyMustMatchRegularExpr" xml:space="preserve">
199199
<value>The key '{0}' in '{1}' of components MUST match the regular expression '{2}'.</value>
200200
</data>
201-
<data name="Validation_CompositeSchemaMustContainPropertySpecifiedInTheDiscriminator" xml:space="preserve">
202-
<value>Composite Schema {0} must contain property specified in the discriminator {1}.</value>
203-
</data>
204-
<data name="Validation_CompositeSchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator" xml:space="preserve">
205-
<value>Composite schema {0} must contain property specified in the discriminator {1} in the required field list.</value>
206-
</data>
207201
<data name="Validation_ExtensionNameMustBeginWithXDash" xml:space="preserve">
208202
<value>The extension name '{0}' in '{1}' object MUST begin with 'x-'.</value>
209203
</data>

src/Microsoft.OpenApi/Validations/Rules/OpenApiSchemaRules.cs

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -79,69 +79,5 @@ public static class OpenApiSchemaRules
7979

8080
context.Exit();
8181
});
82-
83-
/// <summary>
84-
/// Validates OneOf Discriminator
85-
/// </summary>
86-
public static ValidationRule<OpenApiSchema> ValidateOneOfDiscriminator =>
87-
new ValidationRule<OpenApiSchema>(
88-
(context, schema) =>
89-
{
90-
// oneOf
91-
context.Enter("oneOf");
92-
93-
if (schema.OneOf != null && schema.Discriminator != null)
94-
{
95-
ValidateSchemaListDiscriminator(context, nameof(ValidateOneOfDiscriminator),
96-
schema.OneOf, schema.Discriminator);
97-
}
98-
99-
context.Exit();
100-
});
101-
102-
// <summary>
103-
/// Validates AnyOf Discriminator
104-
/// </summary>
105-
public static ValidationRule<OpenApiSchema> ValidateAnyOfDiscriminator =>
106-
new ValidationRule<OpenApiSchema>(
107-
(context, schema) =>
108-
{
109-
// oneOf
110-
context.Enter("anyOf");
111-
112-
if (schema.AnyOf != null && schema.Discriminator != null)
113-
{
114-
ValidateSchemaListDiscriminator(context, nameof(ValidateAnyOfDiscriminator),
115-
schema.AnyOf, schema.Discriminator);
116-
}
117-
118-
context.Exit();
119-
});
120-
121-
// add more rule.
122-
123-
124-
/// <summary>
125-
/// Checks if the schemas in the list contain a property with the property name specified by the discriminator.
126-
/// </summary>
127-
private static void ValidateSchemaListDiscriminator(IValidationContext context, string ruleName,
128-
IList<OpenApiSchema> schemas, OpenApiDiscriminator discriminator)
129-
{
130-
foreach (var schema in schemas)
131-
{
132-
if (schema.Reference != null && !schema.Properties.ContainsKey(discriminator.PropertyName))
133-
{
134-
context.CreateError(ruleName,
135-
string.Format(SRResource.Validation_CompositeSchemaMustContainPropertySpecifiedInTheDiscriminator,
136-
schema.Reference.Id, discriminator.PropertyName));
137-
}
138-
if (schema.Reference != null && !schema.Required.Contains(discriminator.PropertyName))
139-
{
140-
context.CreateError(ruleName,
141-
string.Format(SRResource.Validation_CompositeSchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator,
142-
schema.Reference.Id, discriminator.PropertyName));
143-
}
144-
}
145-
}
14682
}
14783
}

test/Microsoft.OpenApi.Tests/Validations/OpenApiSchemaValidationTests.cs

Lines changed: 0 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -233,126 +233,6 @@ public void ValidateDefaultShouldNotHaveDataTypeMismatchForComplexSchema()
233233
});
234234
}
235235

236-
[Fact]
237-
public void ValidateOneOfCompositeSchemaMustContainPropertySpecifiedInTheDiscriminator()
238-
{
239-
IEnumerable<OpenApiError> errors;
240-
var schema = new OpenApiSchema
241-
{
242-
Type = "object",
243-
OneOf = new List<OpenApiSchema>
244-
{
245-
new OpenApiSchema
246-
{
247-
Type = "object",
248-
Properties = {
249-
["property1"] = new OpenApiSchema() { Type = "integer", Format ="int64" },
250-
["property2"] = new OpenApiSchema() { Type = "string" }
251-
},
252-
Reference = new OpenApiReference{ Id = "schema1" }
253-
},
254-
new OpenApiSchema
255-
{
256-
Type = "object",
257-
Properties = {
258-
["property1"] = new OpenApiSchema() { Type = "integer", Format ="int64" },
259-
},
260-
Reference = new OpenApiReference{ Id = "schema2" }
261-
}
262-
},
263-
Discriminator = new OpenApiDiscriminator
264-
{
265-
PropertyName = "property2"
266-
}
267-
};
268-
269-
// Act
270-
var validator = new OpenApiValidator(ValidationRuleSet.GetDefaultRuleSet());
271-
var walker = new OpenApiWalker(validator);
272-
walker.Walk(schema);
273-
274-
errors = validator.Errors;
275-
bool result = !errors.Any();
276-
277-
// Assert
278-
result.Should().BeFalse();
279-
errors.ShouldAllBeEquivalentTo(new List<OpenApiValidatorError>
280-
{
281-
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateOneOfDiscriminator),"#/oneOf",
282-
string.Format(SRResource.Validation_CompositeSchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator,
283-
"schema1", "property2")),
284-
285-
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateOneOfDiscriminator),"#/oneOf",
286-
string.Format(SRResource.Validation_CompositeSchemaMustContainPropertySpecifiedInTheDiscriminator,
287-
"schema2", "property2")),
288-
289-
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateOneOfDiscriminator),"#/oneOf",
290-
string.Format(SRResource.Validation_CompositeSchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator,
291-
"schema2", "property2")),
292-
293-
});
294-
}
295-
296-
[Fact]
297-
public void ValidateAnyOfCompositeSchemaMustContainPropertySpecifiedInTheDiscriminator()
298-
{
299-
IEnumerable<OpenApiError> errors;
300-
var schema = new OpenApiSchema
301-
{
302-
Type = "object",
303-
AnyOf = new List<OpenApiSchema>
304-
{
305-
new OpenApiSchema
306-
{
307-
Type = "object",
308-
Properties = {
309-
["property1"] = new OpenApiSchema() { Type = "integer", Format ="int64" },
310-
["property2"] = new OpenApiSchema() { Type = "string" }
311-
},
312-
Reference = new OpenApiReference{ Id = "schema1" }
313-
},
314-
new OpenApiSchema
315-
{
316-
Type = "object",
317-
Properties = {
318-
["property1"] = new OpenApiSchema() { Type = "integer", Format ="int64" },
319-
},
320-
Reference = new OpenApiReference{ Id = "schema2" }
321-
}
322-
},
323-
Discriminator = new OpenApiDiscriminator
324-
{
325-
PropertyName = "property2"
326-
}
327-
};
328-
329-
// Act
330-
var validator = new OpenApiValidator(ValidationRuleSet.GetDefaultRuleSet());
331-
var walker = new OpenApiWalker(validator);
332-
walker.Walk(schema);
333-
334-
errors = validator.Errors;
335-
bool result = !errors.Any();
336-
337-
// Assert
338-
result.Should().BeFalse();
339-
errors.ShouldAllBeEquivalentTo(new List<OpenApiValidatorError>
340-
{
341-
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateAnyOfDiscriminator),"#/anyOf",
342-
string.Format(SRResource.Validation_CompositeSchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator,
343-
"schema1", "property2")),
344-
345-
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateAnyOfDiscriminator),"#/anyOf",
346-
string.Format(SRResource.Validation_CompositeSchemaMustContainPropertySpecifiedInTheDiscriminator,
347-
"schema2", "property2")),
348-
349-
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateAnyOfDiscriminator),"#/anyOf",
350-
string.Format(SRResource.Validation_CompositeSchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator,
351-
"schema2", "property2")),
352-
353-
});
354-
}
355-
356236
[Fact]
357237
public void ValidateSchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator()
358238
{

test/Microsoft.OpenApi.Tests/Validations/ValidationRuleSetTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public void DefaultRuleSetPropertyReturnsTheCorrectRules()
4343
Assert.NotEmpty(rules);
4444

4545
// Update the number if you add new default rule(s).
46-
Assert.Equal(23, rules.Count);
46+
Assert.Equal(21, rules.Count);
4747
}
4848
}
4949
}

0 commit comments

Comments
 (0)