Merge pull request #356 from niphlod/fix/tests

someone forgot tests.... grrrr!
This commit is contained in:
mdipierro
2014-01-20 13:14:37 -08:00
4 changed files with 153 additions and 153 deletions
+3 -3
View File
@@ -2224,7 +2224,7 @@ class FORM(DIV):
INPUT(_type="button", _value=value, _class=_class,
_onclick=url if url.startswith('javascript:') else
self.REDIRECT_JS % url))
@staticmethod
def confirm(text='OK', buttons=None, hidden=None):
if not buttons:
@@ -2531,7 +2531,7 @@ def test():
>>> print form.accepts({'myvar':'34'}, formname=None)
False
>>> print form.xml()
<form action="#" enctype="multipart/form-data" method="post"><input class="invalidinput" name="myvar" type="text" value="34" /><div class="error_wrapper"><div class="error" id="myvar__error">invalid expression</div></div></form>
<form action="#" enctype="multipart/form-data" method="post"><input class="invalidinput" name="myvar" type="text" value="34" /><div class="error_wrapper"><div class="error" id="myvar__error">Invalid expression</div></div></form>
>>> print form.accepts({'myvar':'4'}, formname=None, keepvalues=True)
True
>>> print form.xml()
@@ -2711,7 +2711,7 @@ class MARKMIN(XmlComponent):
self.extra = extra or {}
self.allowed = allowed or {}
self.sep = sep
self.url = URL if url == True else url
self.url = URL if url == True else url
self.environment = environment
self.latex = latex
self.autolinks = autolinks
+41 -41
View File
@@ -55,10 +55,10 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('google.ca:80'), ('http://google.ca:80',
None))
self.assertEqual(x('unreal.blargg'), ('unreal.blargg',
'enter a valid URL'))
self.assertEqual(x('google..ca'), ('google..ca', 'enter a valid URL'))
'Enter a valid URL'))
self.assertEqual(x('google..ca'), ('google..ca', 'Enter a valid URL'))
self.assertEqual(
x('google.ca..'), ('google.ca..', 'enter a valid URL'))
x('google.ca..'), ('google.ca..', 'Enter a valid URL'))
# explicit use of 'http' mode
@@ -69,7 +69,7 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('google.ca:80'), ('http://google.ca:80',
None))
self.assertEqual(x('unreal.blargg'), ('unreal.blargg',
'enter a valid URL'))
'Enter a valid URL'))
# prepends 'https' instead of 'http'
@@ -80,7 +80,7 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('google.ca:80'), ('https://google.ca:80',
None))
self.assertEqual(x('unreal.blargg'), ('unreal.blargg',
'enter a valid URL'))
'Enter a valid URL'))
# prepending disabled
@@ -90,7 +90,7 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('google.ca'), ('google.ca', None))
self.assertEqual(x('google.ca:80'), ('google.ca:80', None))
self.assertEqual(x('unreal.blargg'), ('unreal.blargg',
'enter a valid URL'))
'Enter a valid URL'))
# custom allowed_schemes
@@ -98,12 +98,12 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('http://google.ca'), ('http://google.ca',
None))
self.assertEqual(x('https://google.ca'), ('https://google.ca',
'enter a valid URL'))
'Enter a valid URL'))
self.assertEqual(x('google.ca'), ('http://google.ca', None))
self.assertEqual(x('google.ca:80'), ('http://google.ca:80',
None))
self.assertEqual(x('unreal.blargg'), ('unreal.blargg',
'enter a valid URL'))
'Enter a valid URL'))
# custom allowed_schemes, excluding None
@@ -111,32 +111,32 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('http://google.ca'), ('http://google.ca',
None))
self.assertEqual(x('https://google.ca'), ('https://google.ca',
'enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', 'enter a valid URL'))
'Enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', 'Enter a valid URL'))
self.assertEqual(x('google.ca:80'), ('google.ca:80',
'enter a valid URL'))
'Enter a valid URL'))
self.assertEqual(x('unreal.blargg'), ('unreal.blargg',
'enter a valid URL'))
'Enter a valid URL'))
# custom allowed_schemes and prepend_scheme
x = IS_URL(allowed_schemes=[None, 'https'],
prepend_scheme='https')
self.assertEqual(x('http://google.ca'), ('http://google.ca',
'enter a valid URL'))
'Enter a valid URL'))
self.assertEqual(x('https://google.ca'), ('https://google.ca',
None))
self.assertEqual(x('google.ca'), ('https://google.ca', None))
self.assertEqual(x('google.ca:80'), ('https://google.ca:80',
None))
self.assertEqual(x('unreal.blargg'), ('unreal.blargg',
'enter a valid URL'))
'Enter a valid URL'))
# Now any URL requiring prepending will fail, but prepending is still
# enabled!
x = IS_URL(allowed_schemes=['http'])
self.assertEqual(x('google.ca'), ('google.ca', 'enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', 'Enter a valid URL'))
def testModeGeneric(self):
@@ -147,7 +147,7 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('google.ca'), ('google.ca', None))
self.assertEqual(x('google.ca:80'), ('http://google.ca:80', None))
self.assertEqual(x('blargg://unreal'), ('blargg://unreal',
'enter a valid URL'))
'Enter a valid URL'))
# 'generic' mode with custom allowed_schemes that still includes
# 'http' (the default for prepend_scheme)
@@ -156,10 +156,10 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('http://google.ca'), ('http://google.ca',
None))
self.assertEqual(x('ftp://google.ca'), ('ftp://google.ca',
'enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', 'enter a valid URL'))
'Enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', 'Enter a valid URL'))
self.assertEqual(x('google.ca:80'), ('google.ca:80',
'enter a valid URL'))
'Enter a valid URL'))
self.assertEqual(x('blargg://unreal'), ('blargg://unreal',
None))
@@ -174,27 +174,27 @@ class TestIsUrl(unittest.TestCase):
self.assertEqual(x('google.ca:80'), ('ftp://google.ca:80',
None))
self.assertEqual(x('blargg://unreal'), ('blargg://unreal',
'enter a valid URL'))
'Enter a valid URL'))
# 'generic' mode with overriden allowed_schemes and prepend_scheme
x = IS_URL(mode='generic', allowed_schemes=[None, 'ftp', 'ftps'
], prepend_scheme='ftp')
self.assertEqual(x('http://google.ca'), ('http://google.ca',
'enter a valid URL'))
'Enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', None))
self.assertEqual(x('ftp://google.ca'), ('ftp://google.ca',
None))
self.assertEqual(x('google.ca:80'), ('ftp://google.ca:80',
None))
self.assertEqual(x('blargg://unreal'), ('blargg://unreal',
'enter a valid URL'))
'Enter a valid URL'))
# Now any URL requiring prepending will fail, but prepending is still
# enabled!
x = IS_URL(mode='generic', allowed_schemes=['http'])
self.assertEqual(x('google.ca'), ('google.ca', 'enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', 'Enter a valid URL'))
def testExceptionalUse(self):
@@ -305,14 +305,14 @@ class TestIsUrl(unittest.TestCase):
# prepend_scheme has the invalid value 'http', we don't care!
x = IS_URL(allowed_schemes=['https'], prepend_scheme='https')
self.assertEqual(x('google.ca'), ('google.ca', 'enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', 'Enter a valid URL'))
# Not inluding None in the allowed_schemes essentially disabled prepending, so even though
# prepend_scheme has the invalid value 'http', we don't care!
x = IS_URL(mode='generic', allowed_schemes=['https'],
prepend_scheme='https')
self.assertEqual(x('google.ca'), ('google.ca', 'enter a valid URL'))
self.assertEqual(x('google.ca'), ('google.ca', 'Enter a valid URL'))
# ##############################################################################
@@ -434,7 +434,7 @@ class TestIsGenericUrl(unittest.TestCase):
y = IS_GENERIC_URL(allowed_schemes=['http', 'blargg'],
prepend_scheme='http')
self.assertEqual(y('google.ca'), ('google.ca', 'enter a valid URL'))
self.assertEqual(y('google.ca'), ('google.ca', 'Enter a valid URL'))
# ##############################################################################
@@ -605,9 +605,9 @@ class TestIsHttpUrl(unittest.TestCase):
# Does not prepend if None type is not specified in allowed_scheme, because a scheme is required
a = IS_HTTP_URL(allowed_schemes=['http'])
self.assertEqual(a('google.ca'), ('google.ca', 'enter a valid URL'))
self.assertEqual(a('google.ca'), ('google.ca', 'Enter a valid URL'))
self.assertEqual(a('google.ca:80'), ('google.ca:80',
'enter a valid URL'))
'Enter a valid URL'))
class TestUnicode(unittest.TestCase):
@@ -667,33 +667,33 @@ class TestUnicode(unittest.TestCase):
def testInvalidUrls(self):
self.assertEquals(
self.x(u'://ABC.com'), (u'://ABC.com', 'enter a valid URL'))
self.x(u'://ABC.com'), (u'://ABC.com', 'Enter a valid URL'))
self.assertEquals(self.x(u'http://\u4e2d\u4fd4.dne'), (
u'http://\u4e2d\u4fd4.dne', 'enter a valid URL'))
u'http://\u4e2d\u4fd4.dne', 'Enter a valid URL'))
self.assertEquals(self.x(u'https://google.dne'), (
u'https://google.dne', 'enter a valid URL'))
u'https://google.dne', 'Enter a valid URL'))
self.assertEquals(self.x(u'https://google..ca'), (
u'https://google..ca', 'enter a valid URL'))
u'https://google..ca', 'Enter a valid URL'))
self.assertEquals(
self.x(u'google..ca'), (u'google..ca', 'enter a valid URL'))
self.x(u'google..ca'), (u'google..ca', 'Enter a valid URL'))
self.assertEquals(self.x(u'http://' + u'\u4e2d' * 1000 + u'.com'), (
u'http://' + u'\u4e2d' * 1000 + u'.com', 'enter a valid URL'))
u'http://' + u'\u4e2d' * 1000 + u'.com', 'Enter a valid URL'))
self.assertEquals(self.x(u'http://google.com#fragment_\u4e86'), (
u'http://google.com#fragment_\u4e86', 'enter a valid URL'))
u'http://google.com#fragment_\u4e86', 'Enter a valid URL'))
self.assertEquals(self.x(u'http\u4e86://google.com'), (
u'http\u4e86://google.com', 'enter a valid URL'))
u'http\u4e86://google.com', 'Enter a valid URL'))
self.assertEquals(self.x(u'http\u4e86://google.com#fragment_\u4e86'), (
u'http\u4e86://google.com#fragment_\u4e86', 'enter a valid URL'))
u'http\u4e86://google.com#fragment_\u4e86', 'Enter a valid URL'))
self.assertEquals(self.y(u'http://\u4e2d\u4fd4.com/\u4e86'), (
u'http://\u4e2d\u4fd4.com/\u4e86', 'enter a valid URL'))
#self.assertEquals(self.y(u'google.ca'), (u'google.ca', 'enter a valid URL'))
u'http://\u4e2d\u4fd4.com/\u4e86', 'Enter a valid URL'))
#self.assertEquals(self.y(u'google.ca'), (u'google.ca', 'Enter a valid URL'))
self.assertEquals(self.z(u'invalid.domain..com'), (
u'invalid.domain..com', 'enter a valid URL'))
u'invalid.domain..com', 'Enter a valid URL'))
self.assertEquals(self.z(u'invalid.\u4e2d\u4fd4.blargg'), (
u'invalid.\u4e2d\u4fd4.blargg', 'enter a valid URL'))
u'invalid.\u4e2d\u4fd4.blargg', 'Enter a valid URL'))
# ##############################################################################
+106 -106
View File
@@ -60,9 +60,9 @@ class TestValidators(unittest.TestCase):
rtn = ANY_OF([IS_EMAIL(),IS_ALPHANUMERIC()])('abco')
self.assertEqual(rtn, ('abco', None))
rtn = ANY_OF([IS_EMAIL(),IS_ALPHANUMERIC()])('@ab.co')
self.assertEqual(rtn, ('@ab.co', 'enter only letters, numbers, and underscore'))
self.assertEqual(rtn, ('@ab.co', 'Enter only letters, numbers, and underscore'))
rtn = ANY_OF([IS_ALPHANUMERIC(),IS_EMAIL()])('@ab.co')
self.assertEqual(rtn, ('@ab.co', 'enter a valid email address'))
self.assertEqual(rtn, ('@ab.co', 'Enter a valid email address'))
def test_CLEANUP(self):
rtn = CLEANUP()('helloò')
@@ -99,7 +99,7 @@ class TestValidators(unittest.TestCase):
rtn = IS_ALPHANUMERIC()('A_a')
self.assertEqual(rtn, ('A_a', None))
rtn = IS_ALPHANUMERIC()('!')
self.assertEqual(rtn, ('!', 'enter only letters, numbers, and underscore'))
self.assertEqual(rtn, ('!', 'Enter only letters, numbers, and underscore'))
def test_IS_DATE_IN_RANGE(self):
v = IS_DATE_IN_RANGE(minimum=datetime.date(2008,1,1),
@@ -151,39 +151,39 @@ class TestValidators(unittest.TestCase):
rtn = IS_DECIMAL_IN_RANGE(1,5)(1)
self.assertEqual(rtn, (decimal.Decimal('1'), None))
rtn = IS_DECIMAL_IN_RANGE(1,5)(5.25)
self.assertEqual(rtn, (5.25, 'enter a number between 1 and 5'))
self.assertEqual(rtn, (5.25, 'Enter a number between 1 and 5'))
rtn = IS_DECIMAL_IN_RANGE(5.25,6)(5.25)
self.assertEqual(rtn, (decimal.Decimal('5.25'), None))
rtn = IS_DECIMAL_IN_RANGE(5.25,6)('5.25')
self.assertEqual(rtn, (decimal.Decimal('5.25'), None))
rtn = IS_DECIMAL_IN_RANGE(1,5)(6.0)
self.assertEqual(rtn, (6.0, 'enter a number between 1 and 5'))
self.assertEqual(rtn, (6.0, 'Enter a number between 1 and 5'))
rtn = IS_DECIMAL_IN_RANGE(1,5)(3.5)
self.assertEqual(rtn, (decimal.Decimal('3.5'), None))
rtn = IS_DECIMAL_IN_RANGE(1.5,5.5)(3.5)
self.assertEqual(rtn, (decimal.Decimal('3.5'), None))
rtn = IS_DECIMAL_IN_RANGE(1.5,5.5)(6.5)
self.assertEqual(rtn, (6.5, 'enter a number between 1.5 and 5.5'))
self.assertEqual(rtn, (6.5, 'Enter a number between 1.5 and 5.5'))
rtn = IS_DECIMAL_IN_RANGE(1.5,None)(6.5)
self.assertEqual(rtn, (decimal.Decimal('6.5'), None))
rtn = IS_DECIMAL_IN_RANGE(1.5,None)(0.5)
self.assertEqual(rtn, (0.5, 'enter a number greater than or equal to 1.5'))
self.assertEqual(rtn, (0.5, 'Enter a number greater than or equal to 1.5'))
rtn = IS_DECIMAL_IN_RANGE(None,5.5)(4.5)
self.assertEqual(rtn, (decimal.Decimal('4.5'), None))
rtn = IS_DECIMAL_IN_RANGE(None,5.5)(6.5)
self.assertEqual(rtn, (6.5, 'enter a number less than or equal to 5.5'))
self.assertEqual(rtn, (6.5, 'Enter a number less than or equal to 5.5'))
rtn = IS_DECIMAL_IN_RANGE()(6.5)
self.assertEqual(rtn, (decimal.Decimal('6.5'), None))
rtn = IS_DECIMAL_IN_RANGE(0,99)(123.123)
self.assertEqual(rtn, (123.123, 'enter a number between 0 and 99'))
self.assertEqual(rtn, (123.123, 'Enter a number between 0 and 99'))
rtn = IS_DECIMAL_IN_RANGE(0,99)('123.123')
self.assertEqual(rtn, ('123.123', 'enter a number between 0 and 99'))
self.assertEqual(rtn, ('123.123', 'Enter a number between 0 and 99'))
rtn = IS_DECIMAL_IN_RANGE(0,99)('12.34')
self.assertEqual(rtn, (decimal.Decimal('12.34'), None))
rtn = IS_DECIMAL_IN_RANGE()('abc')
self.assertEqual(rtn, ('abc', 'enter a number'))
self.assertEqual(rtn, ('abc', 'Enter a number'))
rtn = IS_DECIMAL_IN_RANGE()('6,5')
self.assertEqual(rtn, ('6,5', 'enter a number'))
self.assertEqual(rtn, ('6,5', 'Enter a number'))
rtn = IS_DECIMAL_IN_RANGE(dot=',')('6.5')
self.assertEqual(rtn, (decimal.Decimal('6.5'), None))
@@ -199,25 +199,25 @@ class TestValidators(unittest.TestCase):
rtn = IS_EMAIL()('abc@d_-f.us')
self.assertEqual(rtn, ('abc@d_-f.us', None))
rtn = IS_EMAIL()('@def.com') # missing name
self.assertEqual(rtn, ('@def.com', 'enter a valid email address'))
self.assertEqual(rtn, ('@def.com', 'Enter a valid email address'))
rtn = IS_EMAIL()('"abc@def".com') # quoted name
self.assertEqual(rtn, ('"abc@def".com', 'enter a valid email address'))
self.assertEqual(rtn, ('"abc@def".com', 'Enter a valid email address'))
rtn = IS_EMAIL()('abc+def.com') # no @
self.assertEqual(rtn, ('abc+def.com', 'enter a valid email address'))
self.assertEqual(rtn, ('abc+def.com', 'Enter a valid email address'))
rtn = IS_EMAIL()('abc@def.x') # one-char TLD
self.assertEqual(rtn, ('abc@def.x', 'enter a valid email address'))
self.assertEqual(rtn, ('abc@def.x', 'Enter a valid email address'))
rtn = IS_EMAIL()('abc@def.12') # numeric TLD
self.assertEqual(rtn, ('abc@def.12', 'enter a valid email address'))
self.assertEqual(rtn, ('abc@def.12', 'Enter a valid email address'))
rtn = IS_EMAIL()('abc@def..com') # double-dot in domain
self.assertEqual(rtn, ('abc@def..com', 'enter a valid email address'))
self.assertEqual(rtn, ('abc@def..com', 'Enter a valid email address'))
rtn = IS_EMAIL()('abc@.def.com') # dot starts domain
self.assertEqual(rtn, ('abc@.def.com', 'enter a valid email address'))
self.assertEqual(rtn, ('abc@.def.com', 'Enter a valid email address'))
rtn = IS_EMAIL()('abc@def.c_m') # underscore in TLD
self.assertEqual(rtn, ('abc@def.c_m', 'enter a valid email address'))
self.assertEqual(rtn, ('abc@def.c_m', 'Enter a valid email address'))
rtn = IS_EMAIL()('NotAnEmail') # missing @
self.assertEqual(rtn, ('NotAnEmail', 'enter a valid email address'))
self.assertEqual(rtn, ('NotAnEmail', 'Enter a valid email address'))
rtn = IS_EMAIL()('abc@NotAnEmail') # missing TLD
self.assertEqual(rtn, ('abc@NotAnEmail', 'enter a valid email address'))
self.assertEqual(rtn, ('abc@NotAnEmail', 'Enter a valid email address'))
rtn = IS_EMAIL()('customer/department@example.com')
self.assertEqual(rtn, ('customer/department@example.com', None))
rtn = IS_EMAIL()('$A12345@example.com')
@@ -229,17 +229,17 @@ class TestValidators(unittest.TestCase):
rtn = IS_EMAIL()('~@example.com')
self.assertEqual(rtn, ('~@example.com', None))
rtn = IS_EMAIL()('.wooly@example.com') # dot starts name
self.assertEqual(rtn, ('.wooly@example.com', 'enter a valid email address'))
self.assertEqual(rtn, ('.wooly@example.com', 'Enter a valid email address'))
rtn = IS_EMAIL()('wo..oly@example.com') # adjacent dots in name
self.assertEqual(rtn, ('wo..oly@example.com', 'enter a valid email address'))
self.assertEqual(rtn, ('wo..oly@example.com', 'Enter a valid email address'))
rtn = IS_EMAIL()('pootietang.@example.com') # dot ends name
self.assertEqual(rtn, ('pootietang.@example.com', 'enter a valid email address'))
self.assertEqual(rtn, ('pootietang.@example.com', 'Enter a valid email address'))
rtn = IS_EMAIL()('.@example.com') # name is bare dot
self.assertEqual(rtn, ('.@example.com', 'enter a valid email address'))
self.assertEqual(rtn, ('.@example.com', 'Enter a valid email address'))
rtn = IS_EMAIL()('Ima.Fool@example.com')
self.assertEqual(rtn, ('Ima.Fool@example.com', None))
rtn = IS_EMAIL()('Ima Fool@example.com') # space in name
self.assertEqual(rtn, ('Ima Fool@example.com', 'enter a valid email address'))
self.assertEqual(rtn, ('Ima Fool@example.com', 'Enter a valid email address'))
rtn = IS_EMAIL()('localguy@localhost') # localhost as domain
self.assertEqual(rtn, ('localguy@localhost', None))
@@ -266,15 +266,15 @@ class TestValidators(unittest.TestCase):
rtn = IS_EMPTY_OR(IS_EMAIL(), null='abc', empty_regex='def')('def')
self.assertEqual(rtn, ('abc', None))
rtn = IS_EMPTY_OR(IS_EMAIL())('abc')
self.assertEqual(rtn, ('abc', 'enter a valid email address'))
self.assertEqual(rtn, ('abc', 'Enter a valid email address'))
rtn = IS_EMPTY_OR(IS_EMAIL())(' abc ')
self.assertEqual(rtn, ('abc', 'enter a valid email address'))
self.assertEqual(rtn, ('abc', 'Enter a valid email address'))
def test_IS_EXPR(self):
rtn = IS_EXPR('int(value) < 2')('1')
self.assertEqual(rtn, ('1', None))
rtn = IS_EXPR('int(value) < 2')('2')
self.assertEqual(rtn, ('2', 'invalid expression'))
self.assertEqual(rtn, ('2', 'Invalid expression'))
rtn = IS_EXPR(lambda value: int(value))('1')
self.assertEqual(rtn, ('1', 1))
rtn = IS_EXPR(lambda value: int(value) < 2 and 'invalid' or None)('2')
@@ -288,9 +288,9 @@ class TestValidators(unittest.TestCase):
rtn = IS_FLOAT_IN_RANGE(1,5)(1)
self.assertEqual(rtn, (1.0, None))
rtn = IS_FLOAT_IN_RANGE(1,5)(5.25)
self.assertEqual(rtn, (5.25, 'enter a number between 1 and 5'))
self.assertEqual(rtn, (5.25, 'Enter a number between 1 and 5'))
rtn = IS_FLOAT_IN_RANGE(1,5)(6.0)
self.assertEqual(rtn, (6.0, 'enter a number between 1 and 5'))
self.assertEqual(rtn, (6.0, 'Enter a number between 1 and 5'))
rtn = IS_FLOAT_IN_RANGE(1,5)(3.5)
self.assertEqual(rtn, (3.5, None))
rtn = IS_FLOAT_IN_RANGE(1,None)(3.5)
@@ -298,15 +298,15 @@ class TestValidators(unittest.TestCase):
rtn = IS_FLOAT_IN_RANGE(None,5)(3.5)
self.assertEqual(rtn, (3.5, None))
rtn = IS_FLOAT_IN_RANGE(1,None)(0.5)
self.assertEqual(rtn, (0.5, 'enter a number greater than or equal to 1'))
self.assertEqual(rtn, (0.5, 'Enter a number greater than or equal to 1'))
rtn = IS_FLOAT_IN_RANGE(None,5)(6.5)
self.assertEqual(rtn, (6.5, 'enter a number less than or equal to 5'))
self.assertEqual(rtn, (6.5, 'Enter a number less than or equal to 5'))
rtn = IS_FLOAT_IN_RANGE()(6.5)
self.assertEqual(rtn, (6.5, None))
rtn = IS_FLOAT_IN_RANGE()('abc')
self.assertEqual(rtn, ('abc', 'enter a number'))
self.assertEqual(rtn, ('abc', 'Enter a number'))
rtn = IS_FLOAT_IN_RANGE()('6,5')
self.assertEqual(rtn, ('6,5', 'enter a number'))
self.assertEqual(rtn, ('6,5', 'Enter a number'))
rtn = IS_FLOAT_IN_RANGE(dot=',')('6.5')
self.assertEqual(rtn, (6.5, None))
@@ -315,11 +315,11 @@ class TestValidators(unittest.TestCase):
rtn = IS_IN_SET(['max', 'john'])('max')
self.assertEqual(rtn, ('max', None))
rtn = IS_IN_SET(['max', 'john'])('massimo')
self.assertEqual(rtn, ('massimo', 'value not allowed'))
self.assertEqual(rtn, ('massimo', 'Value not allowed'))
rtn = IS_IN_SET(['max', 'john'], multiple=True)(('max', 'john'))
self.assertEqual(rtn, (('max', 'john'), None))
rtn = IS_IN_SET(['max', 'john'], multiple=True)(('bill', 'john'))
self.assertEqual(rtn, (('bill', 'john'), 'value not allowed'))
self.assertEqual(rtn, (('bill', 'john'), 'Value not allowed'))
rtn = IS_IN_SET(('id1','id2'), ['first label','second label'])('id1') # Traditional way
self.assertEqual(rtn, ('id1', None))
rtn = IS_IN_SET({'id1':'first label', 'id2':'second label'})('id1')
@@ -338,23 +338,23 @@ class TestValidators(unittest.TestCase):
rtn = IS_INT_IN_RANGE(1,5)(1)
self.assertEqual(rtn, (1, None))
rtn = IS_INT_IN_RANGE(1,5)(5)
self.assertEqual(rtn, (5, 'enter an integer between 1 and 4'))
self.assertEqual(rtn, (5, 'Enter an integer between 1 and 4'))
rtn = IS_INT_IN_RANGE(1,5)(5)
self.assertEqual(rtn, (5, 'enter an integer between 1 and 4'))
self.assertEqual(rtn, (5, 'Enter an integer between 1 and 4'))
rtn = IS_INT_IN_RANGE(1,5)(3.5)
self.assertEqual(rtn, (3.5, 'enter an integer between 1 and 4'))
self.assertEqual(rtn, (3.5, 'Enter an integer between 1 and 4'))
rtn = IS_INT_IN_RANGE(None,5)('4')
self.assertEqual(rtn, (4, None))
rtn = IS_INT_IN_RANGE(None,5)('6')
self.assertEqual(rtn, ('6', 'enter an integer less than or equal to 4'))
self.assertEqual(rtn, ('6', 'Enter an integer less than or equal to 4'))
rtn = IS_INT_IN_RANGE(1,None)('4')
self.assertEqual(rtn, (4, None))
rtn = IS_INT_IN_RANGE(1,None)('0')
self.assertEqual(rtn, ('0', 'enter an integer greater than or equal to 1'))
self.assertEqual(rtn, ('0', 'Enter an integer greater than or equal to 1'))
rtn = IS_INT_IN_RANGE()(6)
self.assertEqual(rtn, (6, None))
rtn = IS_INT_IN_RANGE()('abc')
self.assertEqual(rtn, ('abc', 'enter an integer'))
self.assertEqual(rtn, ('abc', 'Enter an integer'))
def test_IS_IPV4(self):
rtn = IS_IPV4()('1.2.3.4')
@@ -362,19 +362,19 @@ class TestValidators(unittest.TestCase):
rtn = IS_IPV4()('255.255.255.255')
self.assertEqual(rtn, ('255.255.255.255', None))
rtn = IS_IPV4()('1.2.3.4 ')
self.assertEqual(rtn, ('1.2.3.4 ', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('1.2.3.4 ', 'Enter valid IPv4 address'))
rtn = IS_IPV4()('1.2.3.4.5')
self.assertEqual(rtn, ('1.2.3.4.5', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('1.2.3.4.5', 'Enter valid IPv4 address'))
rtn = IS_IPV4()('123.123')
self.assertEqual(rtn, ('123.123', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('123.123', 'Enter valid IPv4 address'))
rtn = IS_IPV4()('1111.2.3.4')
self.assertEqual(rtn, ('1111.2.3.4', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('1111.2.3.4', 'Enter valid IPv4 address'))
rtn = IS_IPV4()('0111.2.3.4')
self.assertEqual(rtn, ('0111.2.3.4', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('0111.2.3.4', 'Enter valid IPv4 address'))
rtn = IS_IPV4()('256.2.3.4')
self.assertEqual(rtn, ('256.2.3.4', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('256.2.3.4', 'Enter valid IPv4 address'))
rtn = IS_IPV4()('300.2.3.4')
self.assertEqual(rtn, ('300.2.3.4', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('300.2.3.4', 'Enter valid IPv4 address'))
rtn = IS_IPV4(minip='1.2.3.4', maxip='1.2.3.4')('1.2.3.4')
self.assertEqual(rtn, ('1.2.3.4', None))
rtn = IS_IPV4(minip='1.2.3.5', maxip='1.2.3.9', error_message='bad ip')('1.2.3.4')
@@ -382,41 +382,41 @@ class TestValidators(unittest.TestCase):
rtn = IS_IPV4(maxip='1.2.3.4', invert=True)('127.0.0.1')
self.assertEqual(rtn, ('127.0.0.1', None))
rtn = IS_IPV4(maxip='1.2.3.4', invert=True)('1.2.3.4')
self.assertEqual(rtn, ('1.2.3.4', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('1.2.3.4', 'Enter valid IPv4 address'))
rtn = IS_IPV4(is_localhost=True)('127.0.0.1')
self.assertEqual(rtn, ('127.0.0.1', None))
rtn = IS_IPV4(is_localhost=True)('1.2.3.4')
self.assertEqual(rtn, ('1.2.3.4', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('1.2.3.4', 'Enter valid IPv4 address'))
rtn = IS_IPV4(is_localhost=False)('127.0.0.1')
self.assertEqual(rtn, ('127.0.0.1', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('127.0.0.1', 'Enter valid IPv4 address'))
rtn = IS_IPV4(maxip='100.0.0.0', is_localhost=True)('127.0.0.1')
self.assertEqual(rtn, ('127.0.0.1', 'enter valid IPv4 address'))
self.assertEqual(rtn, ('127.0.0.1', 'Enter valid IPv4 address'))
def test_IS_IPV6(self):
rtn = IS_IPV6()('fe80::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', None))
rtn = IS_IPV6()('192.168.1.1')
self.assertEqual(rtn, ('192.168.1.1', 'enter valid IPv6 address'))
self.assertEqual(rtn, ('192.168.1.1', 'Enter valid IPv6 address'))
rtn = IS_IPV6(error_message='bad ip')('192.168.1.1')
self.assertEqual(rtn, ('192.168.1.1', 'bad ip'))
rtn = IS_IPV6(is_link_local=True)('fe80::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', None))
rtn = IS_IPV6(is_link_local=False)('fe80::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', 'enter valid IPv6 address'))
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', 'Enter valid IPv6 address'))
rtn = IS_IPV6(is_link_local=True)('2001::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', 'enter valid IPv6 address'))
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', 'Enter valid IPv6 address'))
rtn = IS_IPV6(is_multicast=True)('2001::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', 'enter valid IPv6 address'))
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', 'Enter valid IPv6 address'))
rtn = IS_IPV6(is_multicast=True)('ff00::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('ff00::126c:8ffa:fe22:b3af', None))
rtn = IS_IPV6(is_routeable=True)('2001::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', None))
rtn = IS_IPV6(is_routeable=True)('ff00::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('ff00::126c:8ffa:fe22:b3af', 'enter valid IPv6 address'))
self.assertEqual(rtn, ('ff00::126c:8ffa:fe22:b3af', 'Enter valid IPv6 address'))
rtn = IS_IPV6(subnets='2001::/32')('2001::8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::8ffa:fe22:b3af', None))
rtn = IS_IPV6(subnets='fb00::/8')('2001::8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::8ffa:fe22:b3af', 'enter valid IPv6 address'))
self.assertEqual(rtn, ('2001::8ffa:fe22:b3af', 'Enter valid IPv6 address'))
rtn = IS_IPV6(subnets=['fc00::/8','2001::/32'])('2001::8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::8ffa:fe22:b3af', None))
rtn = IS_IPV6(subnets='invalidsubnet')('2001::8ffa:fe22:b3af')
@@ -430,19 +430,19 @@ class TestValidators(unittest.TestCase):
rtn = IS_IPADDRESS()('255.255.255.255')
self.assertEqual(rtn, ('255.255.255.255', None))
rtn = IS_IPADDRESS()('192.168.1.5 ')
self.assertEqual(rtn, ('192.168.1.5 ', 'enter valid IP address'))
self.assertEqual(rtn, ('192.168.1.5 ', 'Enter valid IP address'))
rtn = IS_IPADDRESS()('192.168.1.1.5')
self.assertEqual(rtn, ('192.168.1.1.5', 'enter valid IP address'))
self.assertEqual(rtn, ('192.168.1.1.5', 'Enter valid IP address'))
rtn = IS_IPADDRESS()('123.123')
self.assertEqual(rtn, ('123.123', 'enter valid IP address'))
self.assertEqual(rtn, ('123.123', 'Enter valid IP address'))
rtn = IS_IPADDRESS()('1111.2.3.4')
self.assertEqual(rtn, ('1111.2.3.4', 'enter valid IP address'))
self.assertEqual(rtn, ('1111.2.3.4', 'Enter valid IP address'))
rtn = IS_IPADDRESS()('0111.2.3.4')
self.assertEqual(rtn, ('0111.2.3.4', 'enter valid IP address'))
self.assertEqual(rtn, ('0111.2.3.4', 'Enter valid IP address'))
rtn = IS_IPADDRESS()('256.2.3.4')
self.assertEqual(rtn, ('256.2.3.4', 'enter valid IP address'))
self.assertEqual(rtn, ('256.2.3.4', 'Enter valid IP address'))
rtn = IS_IPADDRESS()('300.2.3.4')
self.assertEqual(rtn, ('300.2.3.4', 'enter valid IP address'))
self.assertEqual(rtn, ('300.2.3.4', 'Enter valid IP address'))
rtn = IS_IPADDRESS(minip='192.168.1.0', maxip='192.168.1.255')('192.168.1.100')
self.assertEqual(rtn, ('192.168.1.100', None))
rtn = IS_IPADDRESS(minip='1.2.3.5', maxip='1.2.3.9', error_message='bad ip')('1.2.3.4')
@@ -450,17 +450,17 @@ class TestValidators(unittest.TestCase):
rtn = IS_IPADDRESS(maxip='1.2.3.4', invert=True)('127.0.0.1')
self.assertEqual(rtn, ('127.0.0.1', None))
rtn = IS_IPADDRESS(maxip='192.168.1.4', invert=True)('192.168.1.4')
self.assertEqual(rtn, ('192.168.1.4', 'enter valid IP address'))
self.assertEqual(rtn, ('192.168.1.4', 'Enter valid IP address'))
rtn = IS_IPADDRESS(is_localhost=True)('127.0.0.1')
self.assertEqual(rtn, ('127.0.0.1', None))
rtn = IS_IPADDRESS(is_localhost=True)('192.168.1.10')
self.assertEqual(rtn, ('192.168.1.10', 'enter valid IP address'))
self.assertEqual(rtn, ('192.168.1.10', 'Enter valid IP address'))
rtn = IS_IPADDRESS(is_localhost=False)('127.0.0.1')
self.assertEqual(rtn, ('127.0.0.1', 'enter valid IP address'))
self.assertEqual(rtn, ('127.0.0.1', 'Enter valid IP address'))
rtn = IS_IPADDRESS(maxip='100.0.0.0', is_localhost=True)('127.0.0.1')
self.assertEqual(rtn, ('127.0.0.1', 'enter valid IP address'))
self.assertEqual(rtn, ('127.0.0.1', 'Enter valid IP address'))
rtn = IS_IPADDRESS()('aaa')
self.assertEqual(rtn, ('aaa', 'enter valid IP address'))
self.assertEqual(rtn, ('aaa', 'Enter valid IP address'))
rtn = IS_IPADDRESS()('fe80::126c:8ffa:fe22:b3af')
@@ -468,31 +468,31 @@ class TestValidators(unittest.TestCase):
rtn = IS_IPADDRESS(is_ipv4=False)('fe80::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', None))
rtn = IS_IPADDRESS()('fe80::126c:8ffa:fe22:b3af ')
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af ', 'enter valid IP address'))
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af ', 'Enter valid IP address'))
rtn = IS_IPADDRESS(is_ipv4=True)('fe80::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', 'enter valid IP address'))
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', 'Enter valid IP address'))
rtn = IS_IPADDRESS(is_ipv6=True)('192.168.1.1')
self.assertEqual(rtn, ('192.168.1.1', 'enter valid IP address'))
self.assertEqual(rtn, ('192.168.1.1', 'Enter valid IP address'))
rtn = IS_IPADDRESS(is_ipv6=True, error_message='bad ip')('192.168.1.1')
self.assertEqual(rtn, ('192.168.1.1', 'bad ip'))
rtn = IS_IPADDRESS(is_link_local=True)('fe80::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', None))
rtn = IS_IPADDRESS(is_link_local=False)('fe80::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', 'enter valid IP address'))
self.assertEqual(rtn, ('fe80::126c:8ffa:fe22:b3af', 'Enter valid IP address'))
rtn = IS_IPADDRESS(is_link_local=True)('2001::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', 'enter valid IP address'))
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', 'Enter valid IP address'))
rtn = IS_IPADDRESS(is_multicast=True)('2001::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', 'enter valid IP address'))
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', 'Enter valid IP address'))
rtn = IS_IPADDRESS(is_multicast=True)('ff00::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('ff00::126c:8ffa:fe22:b3af', None))
rtn = IS_IPADDRESS(is_routeable=True)('2001::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::126c:8ffa:fe22:b3af', None))
rtn = IS_IPADDRESS(is_routeable=True)('ff00::126c:8ffa:fe22:b3af')
self.assertEqual(rtn, ('ff00::126c:8ffa:fe22:b3af', 'enter valid IP address'))
self.assertEqual(rtn, ('ff00::126c:8ffa:fe22:b3af', 'Enter valid IP address'))
rtn = IS_IPADDRESS(subnets='2001::/32')('2001::8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::8ffa:fe22:b3af', None))
rtn = IS_IPADDRESS(subnets='fb00::/8')('2001::8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::8ffa:fe22:b3af', 'enter valid IP address'))
self.assertEqual(rtn, ('2001::8ffa:fe22:b3af', 'Enter valid IP address'))
rtn = IS_IPADDRESS(subnets=['fc00::/8','2001::/32'])('2001::8ffa:fe22:b3af')
self.assertEqual(rtn, ('2001::8ffa:fe22:b3af', None))
rtn = IS_IPADDRESS(subnets='invalidsubnet')('2001::8ffa:fe22:b3af')
@@ -504,17 +504,17 @@ class TestValidators(unittest.TestCase):
rtn = IS_LENGTH()('1234567890')
self.assertEqual(rtn, ('1234567890', None))
rtn = IS_LENGTH(maxsize=5, minsize=0)('1234567890') # too long
self.assertEqual(rtn, ('1234567890', 'enter from 0 to 5 characters'))
self.assertEqual(rtn, ('1234567890', 'Enter from 0 to 5 characters'))
rtn = IS_LENGTH(maxsize=50, minsize=20)('1234567890') # too short
self.assertEqual(rtn, ('1234567890', 'enter from 20 to 50 characters'))
self.assertEqual(rtn, ('1234567890', 'Enter from 20 to 50 characters'))
rtn = IS_LENGTH()(None)
self.assertEqual(rtn, (None, None))
rtn = IS_LENGTH(minsize=0)(None)
self.assertEqual(rtn, (None, None))
rtn = IS_LENGTH(minsize=1)(None)
self.assertEqual(rtn, (None, 'enter from 1 to 255 characters'))
self.assertEqual(rtn, (None, 'Enter from 1 to 255 characters'))
rtn = IS_LENGTH(minsize=1)([])
self.assertEqual(rtn, ([], 'enter from 1 to 255 characters'))
self.assertEqual(rtn, ([], 'Enter from 1 to 255 characters'))
rtn = IS_LENGTH(minsize=1)([1])
self.assertEqual(rtn, ([1], None))
@@ -532,7 +532,7 @@ class TestValidators(unittest.TestCase):
rtn = IS_MATCH('hell.*', strict=False)('hello')
self.assertEqual(rtn, ('hello', None))
rtn = IS_MATCH('hello')('shello')
self.assertEqual(rtn, ('shello', 'invalid expression'))
self.assertEqual(rtn, ('shello', 'Invalid expression'))
rtn = IS_MATCH('hello', search=True)('shello')
self.assertEqual(rtn, ('shello', None))
rtn = IS_MATCH('hello', search=True, strict=False)('shellox')
@@ -540,13 +540,13 @@ class TestValidators(unittest.TestCase):
rtn = IS_MATCH('.*hello.*', search=True, strict=False)('shellox')
self.assertEqual(rtn, ('shellox', None))
rtn = IS_MATCH('.+')('')
self.assertEqual(rtn, ('', 'invalid expression'))
self.assertEqual(rtn, ('', 'Invalid expression'))
rtn = IS_MATCH('hell', strict=True)('hellas')
self.assertEqual(rtn, ('hellas', 'invalid expression'))
self.assertEqual(rtn, ('hellas', 'Invalid expression'))
rtn = IS_MATCH('hell$', strict=True)('hellas')
self.assertEqual(rtn, ('hellas', 'invalid expression'))
self.assertEqual(rtn, ('hellas', 'Invalid expression'))
rtn = IS_MATCH(u'hell', is_unicode=True)('àòè')
self.assertEqual(rtn, ('\xc3\xa0\xc3\xb2\xc3\xa8', 'invalid expression'))
self.assertEqual(rtn, ('\xc3\xa0\xc3\xb2\xc3\xa8', 'Invalid expression'))
rtn = IS_MATCH(u'hell', is_unicode=True)(u'hell')
self.assertEqual(rtn, (u'hell', None))
@@ -555,7 +555,7 @@ class TestValidators(unittest.TestCase):
rtn = IS_EQUAL_TO('aaa')('aaa')
self.assertEqual(rtn, ('aaa', None))
rtn = IS_EQUAL_TO('aaa')('aab')
self.assertEqual(rtn, ('aab', 'no match'))
self.assertEqual(rtn, ('aab', 'No match'))
def test_IS_NOT_EMPTY(self):
rtn = IS_NOT_EMPTY()(1)
@@ -567,19 +567,19 @@ class TestValidators(unittest.TestCase):
rtn = IS_NOT_EMPTY()(' x ')
self.assertEqual(rtn, ('x', None))
rtn = IS_NOT_EMPTY()(None)
self.assertEqual(rtn, (None, 'enter a value'))
self.assertEqual(rtn, (None, 'Enter a value'))
rtn = IS_NOT_EMPTY()('')
self.assertEqual(rtn, ('', 'enter a value'))
self.assertEqual(rtn, ('', 'Enter a value'))
rtn = IS_NOT_EMPTY()(' ')
self.assertEqual(rtn, ('', 'enter a value'))
self.assertEqual(rtn, ('', 'Enter a value'))
rtn = IS_NOT_EMPTY()(' \n\t')
self.assertEqual(rtn, ('', 'enter a value'))
self.assertEqual(rtn, ('', 'Enter a value'))
rtn = IS_NOT_EMPTY()([])
self.assertEqual(rtn, ([], 'enter a value'))
self.assertEqual(rtn, ([], 'Enter a value'))
rtn = IS_NOT_EMPTY(empty_regex='def')('def')
self.assertEqual(rtn, ('', 'enter a value'))
self.assertEqual(rtn, ('', 'Enter a value'))
rtn = IS_NOT_EMPTY(empty_regex='de[fg]')('deg')
self.assertEqual(rtn, ('', 'enter a value'))
self.assertEqual(rtn, ('', 'Enter a value'))
rtn = IS_NOT_EMPTY(empty_regex='def')('abc')
self.assertEqual(rtn, ('abc', None))
@@ -621,7 +621,7 @@ class TestValidators(unittest.TestCase):
rtn = IS_SLUG(check=False)('a bc')
self.assertEqual(rtn, ('a-bc', None))
rtn = IS_SLUG(check=True)('a bc')
self.assertEqual(rtn, ('a bc', 'must be slug'))
self.assertEqual(rtn, ('a bc', 'Must be slug'))
def test_IS_STRONG(self):
rtn = IS_STRONG(es=True)('Abcd1234')
@@ -680,17 +680,17 @@ class TestValidators(unittest.TestCase):
rtn = IS_TIME()('5:30 pm')
self.assertEqual(rtn, (datetime.time(17, 30), None))
rtn = IS_TIME()('5:30 whatever')
self.assertEqual(rtn, ('5:30 whatever', 'enter time as hh:mm:ss (seconds, am, pm optional)'))
self.assertEqual(rtn, ('5:30 whatever', 'Enter time as hh:mm:ss (seconds, am, pm optional)'))
rtn = IS_TIME()('5:30 20')
self.assertEqual(rtn, ('5:30 20', 'enter time as hh:mm:ss (seconds, am, pm optional)'))
self.assertEqual(rtn, ('5:30 20', 'Enter time as hh:mm:ss (seconds, am, pm optional)'))
rtn = IS_TIME()('24:30')
self.assertEqual(rtn, ('24:30', 'enter time as hh:mm:ss (seconds, am, pm optional)'))
self.assertEqual(rtn, ('24:30', 'Enter time as hh:mm:ss (seconds, am, pm optional)'))
rtn = IS_TIME()('21:60')
self.assertEqual(rtn, ('21:60', 'enter time as hh:mm:ss (seconds, am, pm optional)'))
self.assertEqual(rtn, ('21:60', 'Enter time as hh:mm:ss (seconds, am, pm optional)'))
rtn = IS_TIME()('21:30::')
self.assertEqual(rtn, ('21:30::', 'enter time as hh:mm:ss (seconds, am, pm optional)'))
self.assertEqual(rtn, ('21:30::', 'Enter time as hh:mm:ss (seconds, am, pm optional)'))
rtn = IS_TIME()('')
self.assertEqual(rtn, ('', 'enter time as hh:mm:ss (seconds, am, pm optional)'))
self.assertEqual(rtn, ('', 'Enter time as hh:mm:ss (seconds, am, pm optional)'))
def test_IS_UPPER(self):
rtn = IS_UPPER()('abc')
@@ -716,7 +716,7 @@ class TestValidators(unittest.TestCase):
rtn = IS_JSON()('{"a": 100}')
self.assertEqual(rtn, ({u'a': 100}, None))
rtn = IS_JSON()('spam1234')
self.assertEqual(rtn, ('spam1234', 'invalid json'))
self.assertEqual(rtn, ('spam1234', 'Invalid json'))
if __name__ == '__main__':
+3 -3
View File
@@ -142,7 +142,7 @@ class TestWeb(LiveTest):
assert(s.headers['cache-control'].startswith('max-age'))
def testSoap(self):
# test soap server implementation
# test soap server implementation
from gluon.contrib.pysimplesoap.client import SoapClient, SoapFault
url = 'http://127.0.0.1:8000/examples/soap_examples/call/soap?WSDL'
client = SoapClient(wsdl=url)
@@ -155,7 +155,7 @@ class TestWeb(LiveTest):
ret = client.Division(a=3, b=0)
except SoapFault, sf:
# verify the exception value is ok
assert(sf.faultstring == "float division by zero")
# assert(sf.faultstring == "float division by zero") # true only in 2.7
assert(sf.faultcode == "Server.ZeroDivisionError")
# store sent and received xml for low level test
@@ -171,7 +171,7 @@ class TestWeb(LiveTest):
# check internal server error returned (issue 153)
assert(s.status == 500)
assert(s.text == xml_response)
if __name__ == '__main__':
unittest.main()