#173 Cleanup decorators

This commit is contained in:
João Santos
2016-05-11 10:10:05 +02:00
parent bb0d34a6b8
commit 714446fd2b
3 changed files with 11 additions and 7 deletions

View File

@@ -66,10 +66,12 @@ class ResponseValidator(BaseDecorator):
if response_definition and response_definition.get("headers"):
response_definition_header_keys = response_definition.get("headers").keys()
if not all(item in headers.keys() for item in response_definition_header_keys):
raise NonConformingResponseHeaders(
message="Keys in header don't match response specification. Difference: %s"
% list(set(headers.keys()).symmetric_difference(set(response_definition_header_keys))))
missing_keys = response_definition_header_keys - headers.keys()
if missing_keys:
pretty_list = ', '.join(missing_keys)
msg = ("Keys in header don't match response specification. "
"Difference: {0}").format(pretty_list)
raise NonConformingResponseHeaders(message=msg)
return True
def is_json_schema_compatible(self, response_definition):

View File

@@ -126,7 +126,8 @@ class RequestBodyValidator(object):
try:
validate(data, self.schema, format_checker=draft4_format_checker)
except ValidationError as exception:
logger.error("%s validation error: %s" % (flask.request.url, exception))
logger.error("{url} validation error: {error}".format(url=flask.request.url,
error=exception))
return problem(400, 'Bad Request', str(exception))
return None
@@ -149,7 +150,8 @@ class ResponseBodyValidator(object):
try:
validate(data, self.schema, format_checker=draft4_format_checker)
except ValidationError as exception:
logger.error("%s validation error: %s" % (flask.request.url, exception))
logger.error("{url} validation error: {error}".format(url=flask.request.url,
error=exception))
six.reraise(*sys.exc_info())
return None

View File

@@ -26,7 +26,7 @@ def test_header_not_returned(simple_app):
data = json.loads(response.data.decode('utf-8'))
assert data['type'] == 'about:blank'
assert data['title'] == 'Response headers do not conform to specification'
assert data['detail'] == "Keys in header don't match response specification. Difference: ['Location']"
assert data['detail'] == "Keys in header don't match response specification. Difference: Location"
assert data['status'] == 500