Skip to content
This repository was archived by the owner on Nov 19, 2023. It is now read-only.

Commit ab32bc1

Browse files
authored
Merge pull request #274 from darduf/trailing-slash-optional
added granular check for OAS version validation
2 parents dacbf6c + 0e23f3c commit ab32bc1

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

openapi_tester/loaders.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
import difflib
55
import json
66
import pathlib
7+
import re
78
from json import dumps, loads
89
from typing import TYPE_CHECKING, cast
910
from urllib.parse import urlparse
1011

1112
import yaml
1213
from django.urls import Resolver404, resolve
1314
from django.utils.functional import cached_property
14-
from openapi_spec_validator import openapi_v2_spec_validator, openapi_v3_spec_validator
15+
from openapi_spec_validator import openapi_v2_spec_validator, openapi_v30_spec_validator, openapi_v31_spec_validator
1516
from prance.util.resolver import RefResolver
1617
from rest_framework.schemas.generators import BaseSchemaGenerator, EndpointEnumerator
1718
from rest_framework.settings import api_settings
@@ -98,7 +99,14 @@ def normalize_schema_paths(self, schema: dict) -> dict[str, dict]:
9899
@staticmethod
99100
def validate_schema(schema: dict):
100101
if "openapi" in schema:
101-
validator = openapi_v3_spec_validator
102+
openapi_version_pattern = re.compile(r"^(\d)\.(\d+)")
103+
result = openapi_version_pattern.findall(schema["openapi"])
104+
if result:
105+
major, minor = result[0]
106+
if (major, minor) == ("3", "0"):
107+
validator = openapi_v30_spec_validator
108+
elif (major, minor) == ("3", "1"):
109+
validator = openapi_v31_spec_validator
102110
else:
103111
validator = openapi_v2_spec_validator
104112
validator.validate(schema)

poetry.lock

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

0 commit comments

Comments
 (0)