Skip to content

Commit 73cbb34

Browse files
fix#375 - removed check for existence of required/discriminator properties in the property list
1 parent 0c54668 commit 73cbb34

File tree

5 files changed

+2
-98
lines changed

5 files changed

+2
-98
lines changed

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

Lines changed: 0 additions & 18 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
@@ -216,12 +216,6 @@
216216
<data name="Validation_RuleAddTwice" xml:space="preserve">
217217
<value>The same rule cannot be in the same rule set twice.</value>
218218
</data>
219-
<data name="Validation_SchemaMustContainPropertySpecifiedInTheDiscriminator" xml:space="preserve">
220-
<value>Schema {0} must contain property specified in the discriminator {1}.</value>
221-
</data>
222-
<data name="Validation_SchemaMustContainPropertySpecifiedInTheRequiredField" xml:space="preserve">
223-
<value>Schema {0} must contain property specified in the required field {1}.</value>
224-
</data>
225219
<data name="Validation_SchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator" xml:space="preserve">
226220
<value>Schema {0} must contain property specified in the discriminator {1} in the required field list.</value>
227221
</data>

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

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -57,32 +57,6 @@ public static class OpenApiSchemaRules
5757
context.Exit();
5858
});
5959

60-
/// <summary>
61-
/// Validates Schema Required Fields
62-
/// </summary>
63-
public static ValidationRule<OpenApiSchema> ValidateSchemaRequiredFields =>
64-
new ValidationRule<OpenApiSchema>(
65-
(context, schema) =>
66-
{
67-
// discriminator
68-
context.Enter("required");
69-
70-
if (schema.Reference != null)
71-
{
72-
foreach (var requiredField in schema.Required)
73-
{
74-
if (!schema.Properties.ContainsKey(requiredField))
75-
{
76-
context.CreateError(nameof(ValidateSchemaRequiredFields),
77-
string.Format(SRResource.Validation_SchemaMustContainPropertySpecifiedInTheRequiredField,
78-
schema.Reference.Id, requiredField));
79-
}
80-
}
81-
}
82-
83-
context.Exit();
84-
});
85-
8660
/// <summary>
8761
/// Validates Schema Discriminator
8862
/// </summary>
@@ -95,13 +69,6 @@ public static class OpenApiSchemaRules
9569

9670
if(schema.Reference != null && schema.Discriminator != null)
9771
{
98-
if (!schema.Properties.ContainsKey(schema.Discriminator.PropertyName))
99-
{
100-
context.CreateError(nameof(ValidateSchemaDiscriminator),
101-
string.Format(SRResource.Validation_SchemaMustContainPropertySpecifiedInTheDiscriminator,
102-
schema.Reference.Id, schema.Discriminator.PropertyName));
103-
}
104-
10572
if (!schema.Required.Contains(schema.Discriminator?.PropertyName))
10673
{
10774
context.CreateError(nameof(ValidateSchemaDiscriminator),

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

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -354,43 +354,7 @@ public void ValidateAnyOfCompositeSchemaMustContainPropertySpecifiedInTheDiscrim
354354
}
355355

356356
[Fact]
357-
public void ValidateSchemaMustContainPropertySpecifiedInTheRequiredFieldList()
358-
{
359-
IEnumerable<OpenApiError> errors;
360-
var components = new OpenApiComponents
361-
{
362-
Schemas = {
363-
{
364-
"schema1",
365-
new OpenApiSchema
366-
{
367-
Type = "object",
368-
Required = { "property1" },
369-
Reference = new OpenApiReference { Id = "schema1" }
370-
}
371-
}
372-
}
373-
};
374-
// Act
375-
var validator = new OpenApiValidator(ValidationRuleSet.GetDefaultRuleSet());
376-
var walker = new OpenApiWalker(validator);
377-
walker.Walk(components);
378-
379-
errors = validator.Errors;
380-
bool result = !errors.Any();
381-
382-
// Assert
383-
result.Should().BeFalse();
384-
errors.ShouldAllBeEquivalentTo(new List<OpenApiValidatorError>
385-
{
386-
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateSchemaRequiredFields),"#/schemas/schema1/required",
387-
string.Format(SRResource.Validation_SchemaMustContainPropertySpecifiedInTheRequiredField,
388-
"schema1", "property1")),
389-
});
390-
}
391-
392-
[Fact]
393-
public void ValidateSchemaMustContainPropertySpecifiedInTheDiscriminator()
357+
public void ValidateSchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator()
394358
{
395359
IEnumerable<OpenApiError> errors;
396360
var components = new OpenApiComponents
@@ -419,9 +383,6 @@ public void ValidateSchemaMustContainPropertySpecifiedInTheDiscriminator()
419383
result.Should().BeFalse();
420384
errors.ShouldAllBeEquivalentTo(new List<OpenApiValidatorError>
421385
{
422-
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateSchemaDiscriminator),"#/schemas/schema1/discriminator",
423-
string.Format(SRResource.Validation_SchemaMustContainPropertySpecifiedInTheDiscriminator,
424-
"schema1", "property1")),
425386
new OpenApiValidatorError(nameof(OpenApiSchemaRules.ValidateSchemaDiscriminator),"#/schemas/schema1/discriminator",
426387
string.Format(SRResource.Validation_SchemaRequiredFieldListMustContainThePropertySpecifiedInTheDiscriminator,
427388
"schema1", "property1"))

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(24, rules.Count);
46+
Assert.Equal(23, rules.Count);
4747
}
4848
}
4949
}

0 commit comments

Comments
 (0)