Skip to content

Commit

Permalink
OpenAPI: Fixed generation when title or version not provided. (#6912)
Browse files Browse the repository at this point in the history
  • Loading branch information
ysavary authored and carltongibson committed Nov 6, 2019
1 parent 7c3477d commit 0d3d548
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
2 changes: 1 addition & 1 deletion docs/api-guide/schemas.md
Expand Up @@ -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.
* `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.

schema_view = get_schema_view(
Expand Down
2 changes: 1 addition & 1 deletion rest_framework/schemas/generators.py
Expand Up @@ -151,7 +151,7 @@ class BaseSchemaGenerator(object):
# Set by 'SCHEMA_COERCE_PATH_PK'.
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('/'):
url += '/'

Expand Down
5 changes: 3 additions & 2 deletions rest_framework/schemas/openapi.py
Expand Up @@ -21,9 +21,10 @@
class SchemaGenerator(BaseSchemaGenerator):

def get_info(self):
# Title and version are required by openapi specification 3.x
info = {
'title': self.title,
'version': self.version,
'title': self.title or '',
'version': self.version or ''
}

if self.description is not None:
Expand Down
13 changes: 13 additions & 0 deletions tests/schemas/test_openapi.py
Expand Up @@ -704,3 +704,16 @@ def test_schema_information(self):
assert schema['info']['title'] == 'My title'
assert schema['info']['version'] == '1.2.3'
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'] == ''

0 comments on commit 0d3d548

Please sign in to comment.