Skip to content

Commit 3541793

Browse files
committed
Check response invalid content type
1 parent 08fdf7c commit 3541793

File tree

3 files changed

+20
-1
lines changed

3 files changed

+20
-1
lines changed

openapi_core/responses.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from six import iteritems
55

6+
from openapi_core.exceptions import InvalidContentType
67
from openapi_core.media_types import MediaTypeGenerator
78
from openapi_core.parameters import ParametersGenerator
89

@@ -18,6 +19,13 @@ def __init__(
1819
self.content = content and dict(content) or {}
1920
self.links = links and dict(links) or {}
2021

22+
def __getitem__(self, mimetype):
23+
try:
24+
return self.content[mimetype]
25+
except KeyError:
26+
raise InvalidContentType(
27+
"Invalid mime type `{0}`".format(mimetype))
28+
2129

2230
class ResponsesGenerator(object):
2331

openapi_core/validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def validate(self, request, response):
167167

168168
if operation_response.content:
169169
try:
170-
media_type = operation_response.content[response.mimetype]
170+
media_type = operation_response[response.mimetype]
171171
except OpenAPIMappingError as exc:
172172
errors.append(exc)
173173
else:

tests/integration/test_validators.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,17 @@ def test_invalid_response(self, validator):
206206
assert result.body is None
207207
assert result.headers == {}
208208

209+
def test_invalid_content_type(self, validator):
210+
request = MockRequest(self.host_url, 'get', '/v1/pets')
211+
response = MockResponse('Not Found', mimetype='text/csv')
212+
213+
result = validator.validate(request, response)
214+
215+
assert len(result.errors) == 1
216+
assert type(result.errors[0]) == InvalidContentType
217+
assert result.body is None
218+
assert result.headers == {}
219+
209220
def test_missing_body(self, validator):
210221
request = MockRequest(self.host_url, 'get', '/v1/pets')
211222
response = MockResponse(None)

0 commit comments

Comments
 (0)