OpenAPI: Fixed generation when title or version not provided. (#6912)

This commit is contained in:
Yann Savary 2019-11-06 21:54:12 +01:00 committed by Carlton Gibson
parent 7c3477dcda
commit 0d3d548aa5
4 changed files with 18 additions and 4 deletions

View File

@ -73,7 +73,7 @@ The `get_schema_view()` helper takes the following keyword arguments:
* `title`: May be used to provide a descriptive title for the schema definition. * `title`: May be used to provide a descriptive title for the schema definition.
* `description`: Longer descriptive text. * `description`: Longer descriptive text.
* `version`: The version of the API. Defaults to `0.1.0`. * `version`: The version of the API.
* `url`: May be used to pass a canonical base URL for the schema. * `url`: May be used to pass a canonical base URL for the schema.
schema_view = get_schema_view( schema_view = get_schema_view(

View File

@ -151,7 +151,7 @@ class BaseSchemaGenerator(object):
# Set by 'SCHEMA_COERCE_PATH_PK'. # Set by 'SCHEMA_COERCE_PATH_PK'.
coerce_path_pk = None coerce_path_pk = None
def __init__(self, title=None, url=None, description=None, patterns=None, urlconf=None, version=''): def __init__(self, title=None, url=None, description=None, patterns=None, urlconf=None, version=None):
if url and not url.endswith('/'): if url and not url.endswith('/'):
url += '/' url += '/'

View File

@ -21,9 +21,10 @@ from .utils import get_pk_description, is_list_view
class SchemaGenerator(BaseSchemaGenerator): class SchemaGenerator(BaseSchemaGenerator):
def get_info(self): def get_info(self):
# Title and version are required by openapi specification 3.x
info = { info = {
'title': self.title, 'title': self.title or '',
'version': self.version, 'version': self.version or ''
} }
if self.description is not None: if self.description is not None:

View File

@ -704,3 +704,16 @@ class TestGenerator(TestCase):
assert schema['info']['title'] == 'My title' assert schema['info']['title'] == 'My title'
assert schema['info']['version'] == '1.2.3' assert schema['info']['version'] == '1.2.3'
assert schema['info']['description'] == 'My description' assert schema['info']['description'] == 'My description'
def test_schema_information_empty(self):
"""Construction of the top level dictionary."""
patterns = [
url(r'^example/?$', views.ExampleListView.as_view()),
]
generator = SchemaGenerator(patterns=patterns)
request = create_request('/')
schema = generator.get_schema(request=request)
assert schema['info']['title'] == ''
assert schema['info']['version'] == ''