|
3 | 3 |
|
4 | 4 | This module integrates the external test suite from |
5 | 5 | https://github.com/python-openapi/openapi-schema-test-suite |
6 | | -to validate OAS 3.1 and OAS 3.2 schema validators against |
| 6 | +to validate OAS 3.0, OAS 3.1 and OAS 3.2 schema validators against |
7 | 7 | the canonical test cases. |
8 | 8 | """ |
9 | 9 |
|
|
14 | 14 | import pytest |
15 | 15 | from jsonschema.exceptions import ValidationError |
16 | 16 |
|
| 17 | +from openapi_schema_validator import OAS30Validator |
17 | 18 | from openapi_schema_validator import OAS31Validator |
18 | 19 | from openapi_schema_validator import OAS32Validator |
| 20 | +from openapi_schema_validator import oas30_format_checker |
19 | 21 | from openapi_schema_validator import oas31_format_checker |
20 | 22 | from openapi_schema_validator import oas32_format_checker |
21 | 23 |
|
|
28 | 30 |
|
29 | 31 | # Each entry is (dialect, relative_path, case_description, test_description). |
30 | 32 | _KNOWN_FAILURES: dict[tuple[str, str, str, str], str] = { |
| 33 | + ( |
| 34 | + "oas30", |
| 35 | + "optional/format/format-assertion.json", |
| 36 | + "format uri with assertion", |
| 37 | + "a relative URI is not a valid URI", |
| 38 | + ): "uri format checker does not validate RFC 3986 absolute-URI requirement", |
| 39 | + ( |
| 40 | + "oas30", |
| 41 | + "optional/format/format-assertion.json", |
| 42 | + "format uri with assertion", |
| 43 | + "an invalid URI is not valid", |
| 44 | + ): "uri format checker does not validate RFC 3986 absolute-URI requirement", |
31 | 45 | ( |
32 | 46 | "oas31", |
33 | 47 | "optional/format/format-assertion.json", |
|
52 | 66 | "format uri with assertion", |
53 | 67 | "an invalid URI is not valid", |
54 | 68 | ): "uri format checker does not validate RFC 3986 absolute-URI requirement", |
| 69 | + ( |
| 70 | + "oas30", |
| 71 | + "discriminator.json", |
| 72 | + "discriminator as annotation", |
| 73 | + "a cat object is valid", |
| 74 | + ): "discriminator not fully supported in base oas30", |
| 75 | + ( |
| 76 | + "oas30", |
| 77 | + "discriminator.json", |
| 78 | + "discriminator as annotation", |
| 79 | + "a dog object is valid", |
| 80 | + ): "discriminator not fully supported in base oas30", |
| 81 | + ( |
| 82 | + "oas30", |
| 83 | + "discriminator.json", |
| 84 | + "discriminator with mapping", |
| 85 | + "a car object is valid", |
| 86 | + ): "discriminator mapping", |
| 87 | + ( |
| 88 | + "oas30", |
| 89 | + "discriminator.json", |
| 90 | + "discriminator with mapping", |
| 91 | + "a truck object is valid", |
| 92 | + ): "discriminator mapping", |
| 93 | + ( |
| 94 | + "oas30", |
| 95 | + "ref.json", |
| 96 | + "$ref sibling keywords are ignored", |
| 97 | + "a short string is valid because minLength sibling is ignored", |
| 98 | + ): "we do not ignore sibling keywords in oas30", |
| 99 | + ( |
| 100 | + "oas30", |
| 101 | + "type.json", |
| 102 | + "integer type matches integers", |
| 103 | + "a float with zero fractional part is an integer", |
| 104 | + ): "float with zero fractional part", |
55 | 105 | } |
56 | 106 |
|
57 | 107 | _DIALECT_CONFIG: dict[str, dict[str, Any]] = { |
| 108 | + "oas30": { |
| 109 | + "validator_class": OAS30Validator, |
| 110 | + "format_checker": oas30_format_checker, |
| 111 | + }, |
58 | 112 | "oas31": { |
59 | 113 | "validator_class": OAS31Validator, |
60 | 114 | "format_checker": oas31_format_checker, |
|
0 commit comments