diff --git a/openapi_core/templating/media_types/finders.py b/openapi_core/templating/media_types/finders.py index 3425be96..89a379ba 100644 --- a/openapi_core/templating/media_types/finders.py +++ b/openapi_core/templating/media_types/finders.py @@ -8,13 +8,13 @@ class MediaTypeFinder: def __init__(self, content): self.content = content - def find(self, request): - if request.mimetype in self.content: - return self.content / request.mimetype, request.mimetype + def find(self, mimetype): + if mimetype in self.content: + return self.content / mimetype, mimetype - if request.mimetype: + if mimetype: for key, value in self.content.items(): - if fnmatch.fnmatch(request.mimetype, key): + if fnmatch.fnmatch(mimetype, key): return value, key - raise MediaTypeNotFound(request.mimetype, list(self.content.keys())) + raise MediaTypeNotFound(mimetype, list(self.content.keys())) diff --git a/openapi_core/validation/request/validators.py b/openapi_core/validation/request/validators.py index 4b44016c..2c42d92d 100644 --- a/openapi_core/validation/request/validators.py +++ b/openapi_core/validation/request/validators.py @@ -139,7 +139,7 @@ def _get_body(self, request, operation): try: media_type, mimetype = self._get_media_type( - request_body / "content", request + request_body / "content", request.mimetype ) except MediaTypeFinderError as exc: return None, [exc] diff --git a/openapi_core/validation/response/validators.py b/openapi_core/validation/response/validators.py index 897ca077..17804cf4 100644 --- a/openapi_core/validation/response/validators.py +++ b/openapi_core/validation/response/validators.py @@ -48,7 +48,7 @@ def _get_data(self, response, operation_response): try: media_type, mimetype = self._get_media_type( - operation_response / "content", response + operation_response / "content", response.mimetype ) except MediaTypeFinderError as exc: return None, [exc] diff --git a/openapi_core/validation/validators.py b/openapi_core/validation/validators.py index 280ac82e..87cf7979 100644 --- a/openapi_core/validation/validators.py +++ b/openapi_core/validation/validators.py @@ -51,11 +51,11 @@ def schema_unmarshallers_factory(self): def _find_path(self, request): return self.path_finder.find(request) - def _get_media_type(self, content, request_or_response): + def _get_media_type(self, content, mimetype): from openapi_core.templating.media_types.finders import MediaTypeFinder finder = MediaTypeFinder(content) - return finder.find(request_or_response) + return finder.find(mimetype) def _deserialise_data(self, mimetype, value): deserializer = self.media_type_deserializers_factory.create(mimetype) diff --git a/tests/unit/templating/test_media_types_finders.py b/tests/unit/templating/test_media_types_finders.py index 4c1fe9ef..d71260f6 100644 --- a/tests/unit/templating/test_media_types_finders.py +++ b/tests/unit/templating/test_media_types_finders.py @@ -23,25 +23,25 @@ def finder(self, content): return MediaTypeFinder(content) def test_exact(self, finder, content): - response = MockResponse("", mimetype="application/json") + mimetype = "application/json" - _, mimetype = finder.find(response) + _, mimetype = finder.find(mimetype) assert mimetype == "application/json" def test_match(self, finder, content): - response = MockResponse("", mimetype="text/html") + mimetype = "text/html" - _, mimetype = finder.find(response) + _, mimetype = finder.find(mimetype) assert mimetype == "text/*" def test_not_found(self, finder, content): - response = MockResponse("", mimetype="unknown") + mimetype = "unknown" with pytest.raises(MediaTypeNotFound): - finder.find(response) + finder.find(mimetype) def test_missing(self, finder, content): - response = MockResponse("", mimetype=None) + mimetype = None with pytest.raises(MediaTypeNotFound): - finder.find(response) + finder.find(mimetype)