Fix requestBody not wrapped in a schema in OpenAPI (#6565)

* Wrap requestBody contents in JSON schemas

* Update unit test

* Wrap response schemas in a schema object
This commit is contained in:
Lucidiot 2019-04-04 11:29:51 +02:00 committed by Carlton Gibson
parent 1c0a430049
commit e181610291
2 changed files with 13 additions and 7 deletions

View File

@ -770,7 +770,10 @@ class OpenAPIAutoSchema(ViewInspector):
del content['properties'][name]
return {
'content': {ct: content for ct in self.content_types}
'content': {
ct: {'schema': content}
for ct in self.content_types
}
}
def _get_responses(self, path, method):
@ -797,6 +800,9 @@ class OpenAPIAutoSchema(ViewInspector):
return {
'200': {
'content': {ct: content for ct in self.content_types}
'content': {
ct: {'schema': content}
for ct in self.content_types
}
}
}

View File

@ -59,7 +59,7 @@ class TestOperationIntrospection(TestCase):
assert operation == {
'operationId': 'ListExamples',
'parameters': [],
'responses': {'200': {'content': {'application/json': {}}}},
'responses': {'200': {'content': {'application/json': {'schema': {}}}}},
}
def test_path_with_id_parameter(self):
@ -105,8 +105,8 @@ class TestOperationIntrospection(TestCase):
inspector.view = view
request_body = inspector._get_request_body(path, method)
assert request_body['content']['application/json']['required'] == ['text']
assert list(request_body['content']['application/json']['properties'].keys()) == ['text']
assert request_body['content']['application/json']['schema']['required'] == ['text']
assert list(request_body['content']['application/json']['schema']['properties'].keys()) == ['text']
def test_response_body_generation(self):
path = '/'
@ -128,8 +128,8 @@ class TestOperationIntrospection(TestCase):
inspector.view = view
responses = inspector._get_responses(path, method)
assert responses['200']['content']['application/json']['required'] == ['text']
assert list(responses['200']['content']['application/json']['properties'].keys()) == ['text']
assert responses['200']['content']['application/json']['schema']['required'] == ['text']
assert list(responses['200']['content']['application/json']['schema']['properties'].keys()) == ['text']
@pytest.mark.skipif(uritemplate is None, reason='uritemplate not installed.')