Skip to content

Commit

Permalink
validate min/max
Browse files Browse the repository at this point in the history
  • Loading branch information
hjacobs committed Jul 24, 2015
1 parent e8d6c01 commit 5e6a470
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
16 changes: 14 additions & 2 deletions connexion/decorators/validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,23 @@ def validate_format(schema, data):
def validate_pattern(schema, data):
pattern = schema.get('pattern')
# TODO: check Swagger pattern format
if pattern and not re.match(pattern, data):
if pattern is not None and not re.match(pattern, data):
return 'Invalid value, pattern "{}" does not match'.format(pattern)


VALIDATORS = [validate_format, validate_pattern]
def validate_minimum(schema, data):
minimum = schema.get('minimum')
if minimum is not None and data < minimum:
return 'Invalid value, must be at least {}'.format(minimum)


def validate_maximum(schema, data):
maximum = schema.get('maximum')
if maximum is not None and data > maximum:
return 'Invalid value, must be at most {}'.format(maximum)


VALIDATORS = [validate_format, validate_pattern, validate_minimum, validate_maximum]


class RequestBodyValidator:
Expand Down
13 changes: 12 additions & 1 deletion tests/test_validation.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
import pytest

from connexion.decorators.validation import validate_pattern
from connexion.decorators.validation import validate_pattern, validate_minimum, validate_maximum

def test_validate_pattern():
assert validate_pattern({}, '') is None
assert validate_pattern({'pattern': 'a'}, 'a') is None
assert validate_pattern({'pattern': 'a'}, 'b') == 'Invalid value, pattern "a" does not match'


def test_validate_minimum():
assert validate_minimum({}, 1) is None
assert validate_minimum({'minimum': 1}, 1) is None
assert validate_minimum({'minimum': 1.1}, 1) == 'Invalid value, must be at least 1.1'


def test_validate_maximum():
assert validate_maximum({}, 1) is None
assert validate_maximum({'maximum': 1}, 1) is None
assert validate_maximum({'maximum': 0}, 1) == 'Invalid value, must be at most 0'

0 comments on commit 5e6a470

Please sign in to comment.