コード例 #1
0
    def test_dot_length(self):
        validate = Validator().validate(
            {'user': {
                'id': 1,
                'email': '*****@*****.**'
            }}, length(['user.id'], min=1, max=10))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate(
            {
                'user': {
                    'id': 1,
                    'email': '*****@*****.**',
                    'description': 'this is a really long description'
                }
            }, length(['user.id'], '1..10'))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate(
            {
                'user': {
                    'id': 1,
                    'email': '*****@*****.**',
                    'description': 'this is a really long description'
                }
            }, length(['user.description'], min=1, max=10))

        self.assertEqual(
            validate, {
                'user.description':
                ['The user.description length must be between 1 and 10.']
            })
コード例 #2
0
    def test_confirmed(self):
        validate = Validator().validate(
            {
                'password': '******',
                'password_confirmation': 'secret',
            }, confirmed(['password']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({
            'password': '******',
        }, confirmed(['password']))

        self.assertEqual(
            validate,
            {'password': ['The password confirmation does not match.']})

        validate = Validator().validate({}, confirmed(['password']))

        self.assertEqual(
            validate,
            {'password': ['The password confirmation does not match.']})

        validate = Validator().validate(
            {
                'password': '******',
                'password_confirmation': 'foo',
            }, confirmed(['password']))

        self.assertEqual(
            validate,
            {'password': ['The password confirmation does not match.']})
コード例 #3
0
    def test_one_of(self):
        validate = Validator().validate(
            {
                'email': '*****@*****.**',
                'phone': '123-456-7890'
            }, one_of(['email', 'phone']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({
            'accepted': 'on',
            'user': '******'
        }, one_of(['email', 'phone']))

        self.assertEqual(validate['email'],
                         ['The email or phone is required.'])
        self.assertEqual(validate['phone'],
                         ['The email or phone is required.'])

        validate = Validator().validate({
            'accepted': 'on',
            'user': '******'
        }, one_of(['email', 'phone', 'password']))

        self.assertEqual(validate['email'],
                         ['The email, phone, password is required.'])

        validate = Validator().validate({
            'accepted': 'on',
            'user': '******'
        }, one_of(['email', 'phone', 'password', 'user']))

        self.assertEqual(len(validate), 0)
コード例 #4
0
    def test_when(self):
        validate = Validator().validate(
            {
                'email': '*****@*****.**',
                'phone': '123-456-7890'
            },
            when(isnt(required('email'))).then(required('phone')))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'email': '*****@*****.**'},
                                        when(exists('email')).then(
                                            required('phone')))

        self.assertEqual(validate['phone'], ['The phone field is required.'])

        validate = Validator().validate({'user': '******'},
                                        when(exists('email')).then(
                                            required('phone')))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({
            'email': '*****@*****.**',
        },
                                        when(does_not(exists('email'))).then(
                                            required('phone')))

        self.assertEqual(len(validate), 0)
コード例 #5
0
    def test_dot_error_message_required(self):
        validate = Validator().validate(
            {'user': {
                'id': 1,
                'email': '*****@*****.**',
                'age': 25
            }},
            required(
                ['user.description'],
                messages={'user.description':
                          'You are missing a description'}))

        self.assertEqual(
            validate, {'user.description': ['You are missing a description']})

        validate = Validator().validate(
            {'user': {
                'id': 1,
                'email': '*****@*****.**'
            }},
            required(['user.id', 'user.email', 'user.age'],
                     messages={'user.age': 'You are missing a user age'}))

        self.assertEqual(validate,
                         {'user.age': ['You are missing a user age']})
コード例 #6
0
    def test_string(self):
        validate = Validator().validate({'text': 'hey'}, string(['text']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'text': 1}, string(['text']))

        self.assertEqual(validate, {'text': ['The text must be a string.']})
コード例 #7
0
    def test_accepted(self):
        validate = Validator().validate({'terms': 'on'}, accepted(['terms']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'terms': 'test'}, accepted(['terms']))

        self.assertEqual(validate, {'terms': ['The terms must be accepted.']})
コード例 #8
0
    def test_none(self):
        validate = Validator().validate({'text': None}, none(['text']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'text': 1}, none(['text']))

        self.assertEqual(validate, {'text': ['The text must be None.']})
コード例 #9
0
    def test_numeric(self):
        validate = Validator().validate({'test': 1}, numeric(['test']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'test': 'hey'}, numeric(['test']))

        self.assertEqual(validate, {'test': ['The test must be a numeric.']})
コード例 #10
0
    def test_less_than(self):
        validate = Validator().validate({'text': 10}, less_than(['text'], 25))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'text': 101}, less_than(['text'], 75))

        self.assertEqual(validate,
                         {'text': ['The text must be less than 75.']})
コード例 #11
0
    def test_ip(self):
        validate = Validator().validate({'ip': '192.168.1.1'}, ip(['ip']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'ip': 'test'}, ip(['ip']))

        self.assertEqual(validate,
                         {'ip': ['The ip must be a valid ipv4 address.']})
コード例 #12
0
    def test_contains(self):
        validate = Validator().validate({'test': 'this is a sentence'},
                                        contains(['test'], 'this'))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'test': 'this is a not sentence'},
                                        contains(['test'], 'test'))

        self.assertEqual(validate, {'test': ['The test must contain test.']})
コード例 #13
0
    def test_required(self):
        validate = Validator().validate({'test': 1},
                                        required(['user', 'email']))

        self.assertEqual(validate['user'], ['The user field is required.'])
        self.assertEqual(validate['email'], ['The email field is required.'])

        validate = Validator().validate({'test': 1}, required(['test']))

        self.assertEqual(len(validate), 0)
コード例 #14
0
    def test_email(self):
        validate = Validator().validate({'email': '*****@*****.**'},
                                        email(['email']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'email': 'user'}, email(['email']))

        self.assertEqual(
            validate, {'email': ['The email must be a valid email address.']})
コード例 #15
0
    def test_json(self):
        validate = Validator().validate({'json': 'hey'}, vjson(['json']))

        self.assertEqual(validate,
                         {'json': ['The json must be a valid JSON.']})

        validate = Validator().validate({'json': json.dumps({'test': 'key'})},
                                        vjson(['json']))

        self.assertEqual(len(validate), 0)
コード例 #16
0
    def test_conditional(self):
        validate = Validator().validate({'terms': 'on'},
                                        when(accepted(['terms'])).then(
                                            required(['user'])))

        self.assertEqual(validate, {'user': ['The user field is required.']})

        validate = Validator().validate({'terms': 'test'}, accepted(['terms']))

        self.assertEqual(validate, {'terms': ['The terms must be accepted.']})
コード例 #17
0
    def test_timezone(self):
        validate = Validator().validate({'timezone': 'America/New_York'},
                                        timezone(['timezone']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'timezone': 'test'},
                                        timezone(['timezone']))

        self.assertEqual(
            validate, {'timezone': ['The timezone must be a valid timezone.']})
コード例 #18
0
    def test_exists(self):
        validate = Validator().validate({
            'terms': 'on',
            'user': '******',
        }, exists(['user']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'terms': 'test'}, exists(['user']))

        self.assertEqual(validate, {'user': ['The user must exist.']})
コード例 #19
0
    def test_in_range(self):
        validate = Validator().validate({'text': 52},
                                        in_range(['text'], min=25, max=72))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'text': 101},
                                        in_range(['text'], min=25, max=72))

        self.assertEqual(validate,
                         {'text': ['The text must be between 25 and 72.']})
コード例 #20
0
    def test_equals(self):
        validate = Validator().validate({'text': 'test1'},
                                        equals(['text'], 'test1'))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'text': 'test2'},
                                        equals(['text'], 'test1'))

        self.assertEqual(validate,
                         {'text': ['The text must be equal to test1.']})
コード例 #21
0
    def test_greater_than(self):
        validate = Validator().validate({'text': 52}, greater_than(['text'],
                                                                   25))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'text': 101},
                                        greater_than(['text'], 150))

        self.assertEqual(validate,
                         {'text': ['The text must be greater than 150.']})
コード例 #22
0
    def test_is_in(self):
        validate = Validator().validate({'test': 1}, is_in(['test'],
                                                           [1, 2, 3]))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'test': 1}, is_in(['test'],
                                                           [4, 2, 3]))

        self.assertEqual(
            validate,
            {'test': ['The test must contain an element in [4, 2, 3].']})
コード例 #23
0
    def test_phone(self):
        validate = Validator().validate({'phone': '876-182-1921'},
                                        phone('phone', pattern='123-456-7890'))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'phone': '(876)182-1921'},
                                        phone('phone', pattern='123-456-7890'))

        self.assertEqual(
            validate,
            {'phone': ['The phone must be in the format XXX-XXX-XXXX.']})
コード例 #24
0
    def test_date(self):
        validate = Validator().validate({
            'date': '1975-05-21T22:00:00',
        }, date(['date']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({
            'date': 'woop',
        }, date(['date']))

        self.assertEqual(validate,
                         {'date': ['The date must be a valid date.']})
コード例 #25
0
    def test_truthy(self):
        validate = Validator().validate({'text': 'value'}, truthy(['text']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'text': 1}, truthy(['text']))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'text': False}, truthy(['text']))

        self.assertEqual(validate,
                         {'text': ['The text must be a truthy value.']})
コード例 #26
0
    def test_isnt(self):
        validate = Validator().validate({'test': 50},
                                        isnt(in_range(['test'], min=10,
                                                      max=20)))

        self.assertEqual(len(validate), 0)

        validate = Validator().validate({'test': 15},
                                        isnt(in_range(['test'], min=10,
                                                      max=20)))

        self.assertEqual(validate,
                         {'test': ['The test must not be between 10 and 20.']})
コード例 #27
0
    def test_dot_required(self):
        validate = Validator().validate(
            {'user': {
                'email': '*****@*****.**'
            }}, required(['user.id']))

        self.assertEqual(validate,
                         {'user.id': ['The user.id field is required.']})

        validate = Validator().validate({'user': {
            'id': 1
        }}, required(['user.id']))

        self.assertEqual(len(validate), 0)
コード例 #28
0
    def test_error_message_required(self):
        validate = Validator().validate(
            {'test': 1},
            required(['user', 'email'],
                     messages={'user': '******'}))

        self.assertEqual(validate['user'], ['there must be a user value'])
        self.assertEqual(validate['email'], ['The email field is required.'])

        validate = Validator().validate(
            {'test': 1},
            required(['user', 'email'],
                     messages={'email': 'there must be an email value'}))

        self.assertEqual(validate['user'], ['The user field is required.'])
        self.assertEqual(validate['email'], ['there must be an email value'])
コード例 #29
0
    def test_isnt_equals(self):
        validate = Validator().validate({'test': 'test'},
                                        isnt(equals(['test'], 'test'),
                                             length(['test'], min=10, max=20)))

        self.assertEqual(validate,
                         {'test': ['The test must not be equal to test.']})
コード例 #30
0
    def test_enclosure_can_encapsulate_rules(self):
        validate = Validator().validate(
            {
                'username': '******',
                'email': '*****@*****.**',
                'terms': 'on'
            }, MockRuleEnclosure)

        self.assertEqual(len(validate), 0)

        validate = Validator().validate(
            {
                'email': '*****@*****.**',
                'terms': 'on'
            }, MockRuleEnclosure)

        self.assertEqual(len(validate), 1)