Skip to content

Commit b0c4141

Browse files
committed
Response ranges support
1 parent 1a05e7d commit b0c4141

File tree

2 files changed

+39
-6
lines changed

2 files changed

+39
-6
lines changed

openapi_core/operations.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ def get_response(self, http_status='default'):
3434
try:
3535
return self.responses[http_status]
3636
except KeyError:
37+
# try range
38+
http_status_range = '{0}XX'.format(http_status[0])
39+
if http_status_range in self.responses:
40+
return self.responses[http_status_range]
41+
42+
3743
if 'default' not in self.responses:
3844
raise InvalidResponse(
3945
"Unknown response http status {0}".format(http_status))

tests/unit/test_operations.py

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,41 @@
77
class TestSchemas(object):
88

99
@pytest.fixture
10-
def oepration(self):
10+
def operation(self):
1111
parameters = {
1212
'parameter_1': mock.sentinel.parameter_1,
1313
'parameter_2': mock.sentinel.parameter_2,
1414
}
15-
return Operation('get', '/path', parameters=parameters)
15+
return Operation('get', '/path', {}, parameters=parameters)
1616

17-
@property
18-
def test_iteritems(self, oepration):
19-
for name in oepration.parameters.keys():
20-
assert oepration[name] == oepration.parameters[name]
17+
def test_iteritems(self, operation):
18+
for name in operation.parameters.keys():
19+
assert operation[name] == operation.parameters[name]
20+
21+
22+
class TestResponses(object):
23+
24+
@pytest.fixture
25+
def operation(self):
26+
responses = {
27+
'200': mock.sentinel.response_200,
28+
'299': mock.sentinel.response_299,
29+
'2XX': mock.sentinel.response_2XX,
30+
'default': mock.sentinel.response_default,
31+
}
32+
return Operation('get', '/path', responses, parameters={})
33+
34+
def test_default(self, operation):
35+
response = operation.get_response()
36+
37+
assert response == operation.responses['default']
38+
39+
def test_range(self, operation):
40+
response = operation.get_response('201')
41+
42+
assert response == operation.responses['2XX']
43+
44+
def test_exact(self, operation):
45+
response = operation.get_response('200')
46+
47+
assert response == operation.responses['200']

0 commit comments

Comments
 (0)