# -*- encoding:utf-8 -*- import py import validator import re def test_minsize(): v = validator.minsize(5) assert v.validate(None) == None assert v.validate('foobar') == 'foobar' py.test.raises(ValueError, "v.validate('foo')") py.test.raises(ValueError, "v.validate('')") try: v.validate('foo') except ValueError, e: assert e.args[0] == 'field should contain at least 5 characters' else: py.test.fail(e.args[0]) def test_id(): v = validator.id() assert v.validate(None) == None assert v.validate('') == '' assert v.validate('foobar') == 'foobar' assert v.validate('foo_bar') == 'foo_bar' assert v.validate('foo123_.bar') == 'foo123_.bar' py.test.raises(ValueError, "v.validate('_foo')") py.test.raises(ValueError, "v.validate('.foo')") py.test.raises(ValueError, "v.validate('1foo')") def test_regvalidator(): v = validator.regvalidator(reg=re.compile('^\w{3}$'), msg='foo bar') v.validate(None) v.validate('') # might not be mandatory... v.validate('foo') v.validate('bar') py.test.raises(ValueError, "v.validate('quux')") py.test.raises(ValueError, "v.validate('fo')") py.test.raises(ValueError, "v.validate('...')") try: v.validate('foobar') except ValueError, e: assert e.args[0] == 'foo bar' else: raise AssertionError('unexpected message on ValueError') def test_email(): v = validator.email() v.validate(None) v.validate('') v.validate('foo@bar.com') v.validate(u'新游戏@新游戏.com') v.validate('foo-bar@baz-qux.com') v.validate('test.foo.bar_whatever@some.strange.toplevel') py.test.raises(ValueError, "v.validate('foobar')") py.test.raises(ValueError, "v.validate('foo@bar')") py.test.raises(ValueError, "v.validate('foo@.bar')")