Skip to content

Commit 4b712cb

Browse files
authored
Merge pull request #173 from gjo/feature/webob
webob support
2 parents 26f0ca0 + 9bd5a1d commit 4b712cb

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

openapi_core/schema/parameters/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ def get_raw_value(self, request):
8787
return self.schema.default
8888

8989
if self.aslist and self.explode:
90+
if hasattr(location, 'getall'):
91+
return location.getall(self.name)
9092
return location.getlist(self.name)
9193

9294
return location[self.name]

requirements_dev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ pytest-flake8
44
pytest-cov==2.5.1
55
flask
66
django==2.2.8; python_version>="3.0"
7+
webob

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ tests_require =
3737
pytest-flake8
3838
pytest-cov
3939
flask
40+
webob
4041

4142
[options.packages.find]
4243
exclude =

tests/integration/validation/test_validators.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def test_missing_parameter(self, validator):
9494
def test_get_pets(self, validator):
9595
request = MockRequest(
9696
self.host_url, 'get', '/v1/pets',
97-
path_pattern='/v1/pets', args={'limit': '10'},
97+
path_pattern='/v1/pets', args={'limit': '10', 'ids': ['1', '2']},
9898
)
9999

100100
result = validator.validate(request)
@@ -106,6 +106,31 @@ def test_get_pets(self, validator):
106106
'limit': 10,
107107
'page': 1,
108108
'search': '',
109+
'ids': [1, 2],
110+
},
111+
)
112+
113+
def test_get_pets_webob(self, validator):
114+
from webob.multidict import GetDict
115+
request = MockRequest(
116+
self.host_url, 'get', '/v1/pets',
117+
path_pattern='/v1/pets',
118+
)
119+
request.parameters.query = GetDict(
120+
[('limit', '5'), ('ids', '1'), ('ids', '2')],
121+
{}
122+
)
123+
124+
result = validator.validate(request)
125+
126+
assert result.errors == []
127+
assert result.body is None
128+
assert result.parameters == RequestParameters(
129+
query={
130+
'limit': 5,
131+
'page': 1,
132+
'search': '',
133+
'ids': [1, 2],
109134
},
110135
)
111136

0 commit comments

Comments
 (0)