Skip to content

Commit

Permalink
bugfix format param: path params must be required=True
Browse files Browse the repository at this point in the history
  • Loading branch information
tfranzel committed Jul 1, 2020
1 parent b64e915 commit 6b29d1b
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
11 changes: 5 additions & 6 deletions drf_spectacular/plumbing.py
Original file line number Diff line number Diff line change
Expand Up @@ -649,12 +649,11 @@ def resolve_regex_path_parameter(path_regex, variable):
converter = 'drf_format_suffix' # remove appended options

if parameter == variable and converter in DJANGO_PATH_CONVERTER_MAPPING:
return {
'name': parameter,
'schema': build_basic_type(DJANGO_PATH_CONVERTER_MAPPING[converter]),
'in': OpenApiParameter.PATH,
'required': False if converter == 'drf_format_suffix' else True,
}
return build_parameter_type(
name=parameter,
schema=build_basic_type(DJANGO_PATH_CONVERTER_MAPPING[converter]),
location=OpenApiParameter.PATH,
)

return None

Expand Down
6 changes: 4 additions & 2 deletions tests/test_regressions.py
Original file line number Diff line number Diff line change
Expand Up @@ -328,11 +328,11 @@ def pi(request, format=None):

generator = SchemaGenerator(patterns=urlpatterns)
schema = generator.get_schema(request=None, public=True)

validate_schema(schema)
assert len(schema['paths']) == 2
format_parameter = schema['paths']['/pi{format}']['get']['parameters'][0]
assert format_parameter['name'] == 'format'
assert format_parameter['required'] is False
assert format_parameter['required'] is True
assert format_parameter['in'] == 'path'


Expand All @@ -345,6 +345,7 @@ def pi(request, foo):
urlpatterns = [re_path(r'^/pi/<int:precision>', pi)]
generator = SchemaGenerator(patterns=urlpatterns)
schema = generator.get_schema(request=None, public=True)
validate_schema(schema)
parameter = schema['paths']['/pi/{precision}']['get']['parameters'][0]
assert parameter['name'] == 'precision'
assert parameter['in'] == 'path'
Expand Down Expand Up @@ -750,6 +751,7 @@ def get(self, request):
]
generator = SchemaGenerator(patterns=urlpatterns)
schema = generator.get_schema(request=None, public=True)
validate_schema(schema)
assert len(schema['components']['schemas']) == 1
assert 'X' in schema['components']['schemas']
operation = schema['paths']['/api/x/']['get']
Expand Down

0 comments on commit 6b29d1b

Please sign in to comment.