示例#1
0
def test_set_rules_warning_rule_is_false():
    '''
    test_set_rules method warning_rule is false
    '''
    v = Validator()

    v.set_rules('string', 'strssss', warning_rule=False)
示例#2
0
def test_set_rules_warning_rule_is_true():
    '''
    test set_rules method warning_rule is true
    '''
    v = Validator()

    with pytest.raises(RulesError):
        v.set_rules('string', 'strssss', warning_rule=True)
示例#3
0
def test_vlde_return_format_is_object():
    '''
    测试返回 object 类型的验证信息
    '''
    v = Validator(return_format='object')
    result1 = v.set_rules('string', 'str')
    assert result1.status is True
    result2 = v.set_rules('string', 'dict')
    assert result2.status is False
示例#4
0
def test_vlde_return_format_is_exception():
    '''
    test return_format is exception
    '''
    v = Validator(return_format='exception')

    try:
        hello = 'hello, world'
        world = 'world, hello'
        v.set_rules(hello, 'required|str')
        v.set_rules(world, 'required|str')
    except ValidateError as e:
        print(e)
示例#5
0
def test_set_rules():
    '''set_rules 參數測試'''

    v = Validator()

    v.set_rules(None)
    v.set_rules('string', rule=None)
    v.set_rules('string', schema='str')
    v.set_rules(dict(hello='world'), schema=dict())
示例#6
0
def test_email():
    '''email rule validate'''
    v = Validator()

    v.set_rules('*****@*****.**', 'email')
    v.set_rules('*****@*****.**', 'email')

    with pytest.raises(ValidateError):
        v.set_rules('emailemail', 'email')
示例#7
0
def test_schema_list():
    v = Validator()

    v.set_rules([10, 20, 'string'], schema=['int', 'int', 'str'])
    v.set_rules([20, 30, ['hello']], schema=['int', 'int', ['str']])
    v.set_rules([20, 30, ['']], schema=['int', 'int', 'required'])
示例#8
0
def test_tuple():
    '''test tuple type '''

    v = Validator()

    v.set_rules((), 'tuple')
    v.set_rules((123, ), 'tuple')

    with pytest.raises(ValidateError):
        v.set_rules('', 'tuple')
    with pytest.raises(ValidateError):
        v.set_rules({}, 'tuple')
    with pytest.raises(ValidateError):
        v.set_rules(float(), 'tuple')
    with pytest.raises(ValidateError):
        v.set_rules([], 'tuple')
    with pytest.raises(ValidateError):
        v.set_rules(int(), 'tuple')
    with pytest.raises(ValidateError):
        v.set_rules(bool(), 'tuple')
    with pytest.raises(ValidateError):
        v.set_rules(bytes(), 'tuple')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'tuple')
示例#9
0
def test_ipv6():
    '''test ipv6 rule'''

    v = Validator()

    v.set_rules('0000:0000:0000:0000:0000:0000:0000:0000', 'ipv6')
    v.set_rules('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'ipv6')
    v.set_rules('0:0:0:0:0:0:0:0', 'ipv6')
    v.set_rules('f:f:f:f:f:f:f:f', 'ipv6')
    v.set_rules('::', 'ipv6')
    v.set_rules('a::a', 'ipv6')

    with pytest.raises(ValidateError):
        v.set_rules('ff', 'ipv6')
    with pytest.raises(ValidateError):
        v.set_rules('192.168.1.1', 'ipv6')
示例#10
0
def test_float():
    '''test float type '''
    v = Validator()
    v.set_rules(float(), 'float')
    v.set_rules(123.456, 'float')
    v.set_rules(123.00, 'float')

    with pytest.raises(ValidateError):
        v.set_rules('', 'float')
    with pytest.raises(ValidateError):
        v.set_rules({}, 'float')
    with pytest.raises(ValidateError):
        v.set_rules((), 'float')
    with pytest.raises(ValidateError):
        v.set_rules([], 'float')
    with pytest.raises(ValidateError):
        v.set_rules(int(), 'float')
    with pytest.raises(ValidateError):
        v.set_rules(bool(), 'float')
    with pytest.raises(ValidateError):
        v.set_rules(bytes(), 'float')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'float')
示例#11
0
def test_url():
    '''test url rule'''

    v = Validator()

    v.set_rules('http://google.com', 'url')
    v.set_rules('https://www.google.com', 'url')
    v.set_rules('ftp://google.com', 'url')
    v.set_rules('www.baidu.com', 'url')

    with pytest.raises(ValidateError):
        v.set_rules('baidu.com', 'url')
    with pytest.raises(ValidateError):
        v.set_rules('//baidu.com', 'url')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'url')
示例#12
0
def test_bool():
    '''test bool type '''
    v = Validator()

    v.set_rules(bool(), 'bool')
    v.set_rules(True, 'bool')
    v.set_rules(False, 'bool')

    with pytest.raises(ValidateError):
        v.set_rules('', 'bool')
    with pytest.raises(ValidateError):
        v.set_rules({}, 'bool')
    with pytest.raises(ValidateError):
        v.set_rules((), 'bool')
    with pytest.raises(ValidateError):
        v.set_rules([], 'bool')
    with pytest.raises(ValidateError):
        v.set_rules(int(), 'bool')
    with pytest.raises(ValidateError):
        v.set_rules(float(), 'bool')
    with pytest.raises(ValidateError):
        v.set_rules(bytes(), 'bool')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'bool')
示例#13
0
def test_max_length():
    '''
    rule test: max_lenght
    '''
    v = Validator()
    v.set_rules('string', 'max_length:6')
    v.set_rules('', 'max_length:0')
    v.set_rules(None, 'max_length:0')
    v.set_rules({'hello': 'world'}, 'max_length:1')

    with pytest.raises(ValidateError):
        v.set_rules('string', 'max_length:1')
    with pytest.raises(ValidateError):
        v.set_rules({'dict': 'world'}, 'max_length:0')
    with pytest.raises(ValidateError):
        v.set_rules(('tuple'), 'max_length:0')
    with pytest.raises(ValidateError):
        v.set_rules(['list'], 'max_length:0')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'max_length:1')

    with pytest.raises(RulesError):
        v.set_rules('string', 'max_length:-1')
    with pytest.raises(RulesError):
        v.set_rules('string', 'max_length:abc')
    with pytest.raises(RulesError):
        v.set_rules('string', 'max_length:')
    with pytest.raises(RulesError):
        v.set_rules('string', 'max_length:1 3/4')
示例#14
0
def test_str():
    '''test str type'''

    v = Validator()

    v.set_rules('hello', 'str|string')
    v.set_rules('', 'str|string')
    v.set_rules(str(123), 'str|string')

    with pytest.raises(ValidateError):
        v.set_rules(123, 'str')
    with pytest.raises(ValidateError):
        v.set_rules([], 'str')
    with pytest.raises(ValidateError):
        v.set_rules({}, 'str')
    with pytest.raises(ValidateError):
        v.set_rules((), 'str')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'str')
    with pytest.raises(ValidateError):
        v.set_rules(bool(), 'str')
    with pytest.raises(ValidateError):
        v.set_rules(float(), 'str')
    with pytest.raises(ValidateError):
        v.set_rules(bytes(), 'str')
示例#15
0
def test_range():
    '''test range rule'''

    v = Validator()

    v.set_rules(20, 'range:1-21')
    v.set_rules(20, 'range:20')
    v.set_rules(20.0, 'range:20.0-100.0')
    v.set_rules(int('20'), 'range:20')

    with pytest.raises(ValidateError):
        v.set_rules(0, 'range:10-100')
    with pytest.raises(ValidateError):
        v.set_rules(0, 'range:1')

    with pytest.raises(RulesError):
        v.set_rules('20', 'range:20')
    with pytest.raises(RulesError):
        v.set_rules(dict(), 'range:0')
    with pytest.raises(RulesError):
        v.set_rules(20, 'range:a-z')
    with pytest.raises(RulesError):
        v.set_rules('string', 'range:hello')
    with pytest.raises(RulesError):
        v.set_rules(None, 'range:0')
示例#16
0
def test_schema_dict():
    v = Validator()

    v.set_rules(dict(name='llnhhy'), schema=dict(name='str'))
    v.set_rules(dict(name='llnhhy', age=17),
                schema=dict(name='str', age='int'))
    v.set_rules(dict(name='luo', girlfriend=dict(name='wu', age=20)),
                schema=dict(name='str', girlfriend=dict(name='str',
                                                        age='int')))
    v.set_rules(dict(name='luo', girlfriend=dict(name='wu', age=20)),
                schema=dict(name='str', girlfriend='dict'))
    v.set_rules(dict(name='luo', girlfriend=['wu', 'sun', 'li']),
                schema=dict(name='str',
                            girlfriend=['str', 'str', 'max_length:2']))
    v.set_rules({
        'name': 'luo',
        'age': 20
    },
                schema={
                    'name': 'str',
                    'age': 'int'
                })
    v.set_rules({'name': 'luo', 'age': 20}, schema={'name': 'str'})
    v.set_rules({
        'name': 'luo',
        'age': 20
    },
                schema={
                    'name': 'str',
                    'age': 'int|min_length:2'
                })
    v.set_rules({
        'name': 'luo',
        'age': 20
    },
                rule='dict|max_length:2',
                schema={
                    'name': 'str',
                    'age': 'int'
                })
示例#17
0
def test_in_list():
    '''
    rule test length
    只支持字符串,整型,浮点型变量
    '''

    v = Validator()
    v.set_rules('hello', 'in_list:hello, world')
    v.set_rules(123, 'in_list:123, 321')
    v.set_rules(123.4, 'in_list:123.4')

    with pytest.raises(ValidateError):
        v.set_rules('str', 'in_list:string')
    with pytest.raises(ValidateError):
        v.set_rules('ss', 'in_list:hello, world')

    with pytest.raises(RulesError):
        v.set_rules({}, 'in_list:dict')
    with pytest.raises(RulesError):
        v.set_rules([], 'in_list:list')
    with pytest.raises(RulesError):
        v.set_rules((), 'in_list:tuple')
    with pytest.raises(RulesError):
        v.set_rules(None, 'in_list:None')
示例#18
0
def test_dict():
    '''test dict type'''

    v = Validator()
    v.set_rules({}, 'dict')
    v.set_rules(dict(), 'dict')
    with pytest.raises(ValidateError):
        v.set_rules('', 'dict')
    with pytest.raises(ValidateError):
        v.set_rules([], 'dict')
    with pytest.raises(ValidateError):
        v.set_rules((), 'dict')
    with pytest.raises(ValidateError):
        v.set_rules(int(), 'dict')
    with pytest.raises(ValidateError):
        v.set_rules(float(), 'dict')
    with pytest.raises(ValidateError):
        v.set_rules(bytes(), 'dict')
    with pytest.raises(ValidateError):
        v.set_rules(bool(), 'dict')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'dict')
示例#19
0
def test_length():
    '''rule test length'''
    v = Validator()

    v.set_rules('string', 'length:6')
    v.set_rules('', 'length:0')
    v.set_rules(['list1'], 'length:1')
    v.set_rules({'dict': 'dict'}, 'length:1')
    v.set_rules(('hello', 'world'), 'length:2')
    v.set_rules(None, 'length:0')
    v.set_rules(20, 'length:2')

    with pytest.raises(ValidateError):
        v.set_rules('string', 'length:0')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'length:1')
    with pytest.raises(ValidateError):
        v.set_rules(20, 'length:20')

    with pytest.raises(RulesError):
        v.set_rules('string', 'length:-1')
    with pytest.raises(RulesError):
        v.set_rules('string', 'length:')
    with pytest.raises(RulesError):
        v.set_rules('string', 'length:3/4')
示例#20
0
def test_function():
    '''
    用户自定义验证函数
    支持匿名函数
    '''
    def valid(key):
        if key == 'string':
            return True
        else:
            return False

    v = Validator()

    v.set_rules('string', callback=valid)
    v.set_rules('string', callback=lambda x: x == 'string')
    v.set_rules('string', callback=None)
    v.set_rules(['hello'], callback=lambda x: x == ['hello'])
    v.set_rules({'name': 'vlde'}, callback=lambda x: x == dict(name='vlde'))
    v.set_rules(('name', 'vlde'), callback=lambda x: x == ('name', 'vlde'))
    v.set_rules(123, callback=lambda x: x == 123)
    v.set_rules(123.4, callback=lambda x: x == 123.4)
    v.set_rules(True, callback=lambda x: x == True)
    v.set_rules(bytes(123), callback=lambda x: x == bytes(123))

    with pytest.raises(ValidateError):
        v.set_rules('string', callback=lambda x: x == 'key')
    with pytest.raises(ValidateError):
        v.set_rules(bytes(123), callback=lambda x: x == bytes(1234))

    with pytest.raises(RulesError):
        v.set_rules('string', callback='str', warning_rule=True)
示例#21
0
def test_ipv4():
    '''test ipv4 rule'''

    v = Validator()

    v.set_rules('192.168.1.1', 'ipv4')
    v.set_rules('255.255.255.255', 'ipv4')
    v.set_rules('0.0.0.0', 'ipv4')

    with pytest.raises(ValidateError):
        v.set_rules('192.168.1111', 'ipv4')
    with pytest.raises(ValidateError):
        v.set_rules('-1-1-1-1', 'ipv4')
    with pytest.raises(ValidateError):
        v.set_rules(None, 'ipv4')