Skip to content

Commit 6ad77b3

Browse files
committed
Return valid OpenAPI schema even when empty.
1 parent 373e521 commit 6ad77b3

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

rest_framework/schemas/openapi.py

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,7 @@ def get_info(self):
3535
def get_paths(self, request=None):
3636
result = {}
3737

38-
paths, view_endpoints = self._get_paths_and_endpoints(request)
39-
40-
# Only generate the path prefix for paths that will be included
41-
if not paths:
42-
return None
43-
38+
_, view_endpoints = self._get_paths_and_endpoints(request)
4439
for path, method, view in view_endpoints:
4540
if not self.has_view_permissions(path, method, view):
4641
continue
@@ -62,9 +57,6 @@ def get_schema(self, request=None, public=False):
6257
self._initialise_endpoints()
6358

6459
paths = self.get_paths(None if public else request)
65-
if not paths:
66-
return None
67-
6860
schema = {
6961
'openapi': '3.0.2',
7062
'info': self.get_info(),

tests/schemas/test_openapi.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,15 @@ def test_schema_construction(self):
707707
assert 'openapi' in schema
708708
assert 'paths' in schema
709709

710+
def test_schema_with_no_paths(self):
711+
patterns = []
712+
generator = SchemaGenerator(patterns=patterns)
713+
714+
request = create_request('/')
715+
schema = generator.get_schema(request=request)
716+
717+
assert schema['paths'] == {}
718+
710719
def test_schema_information(self):
711720
"""Construction of the top level dictionary."""
712721
patterns = [

0 commit comments

Comments
 (0)