@@ -376,6 +376,24 @@ class URLSchema(Schema):
376376 # Longest to date (Feb 2017) TLD in punicode format is 24 chars long
377377 self .assertValid (URLSchema ({'url' : u'http://test.xn--vermgensberatung-pwb' }), {'url' : u'http://test.xn--vermgensberatung-pwb' })
378378
379+ def test_url_required_flag (self ):
380+ class URLSchema (Schema ):
381+ url = URL ()
382+
383+ for value in (None , '' ):
384+ schema = URLSchema ({'url' : value })
385+ self .assertInvalid (schema , {'field-errors' : ['url' ]})
386+ assert schema .field_errors ['url' ] == 'This field is required.'
387+
388+ def test_url_bad_data_type (self ):
389+ class URLSchema (Schema ):
390+ url = URL ()
391+
392+ schema = URLSchema ({'url' : 23.0 })
393+ self .assertInvalid (schema , {'field-errors' : ['url' ]})
394+ assert schema .field_errors ['url' ] == 'Value must be of basestring type.'
395+
396+ def test_url_with_default_schema (self ):
379397 class DefaultURLSchema (Schema ):
380398 url = URL (default_scheme = 'http://' )
381399
@@ -385,6 +403,7 @@ class DefaultURLSchema(Schema):
385403 self .assertInvalid (DefaultURLSchema ({'url' : 'invalid' }), {'field-errors' : ['url' ]})
386404 self .assertInvalid (DefaultURLSchema ({'url' : True }), {'field-errors' : ['url' ]})
387405
406+ def test_relaxed_url (self ):
388407 class RelaxedURLSchema (Schema ):
389408 url = RelaxedURL (default_scheme = 'http://' )
390409
@@ -398,6 +417,7 @@ class RelaxedURLSchema(Schema):
398417 self .assertInvalid (RelaxedURLSchema ({'url' : 'invalid' }), {'field-errors' : ['url' ]})
399418 self .assertInvalid (RelaxedURLSchema ({'url' : True }), {'field-errors' : ['url' ]})
400419
420+ def test_optional_relaxed_url (self ):
401421 class OptionalRelaxedURLSchema (Schema ):
402422 url = RelaxedURL (required = False , default_scheme = 'http://' )
403423
@@ -408,6 +428,7 @@ class OptionalRelaxedURLSchema(Schema):
408428 self .assertInvalid (OptionalRelaxedURLSchema ({'url' : 'invalid' }), {'field-errors' : ['url' ]})
409429 self .assertInvalid (OptionalRelaxedURLSchema ({'url' : True }), {'field-errors' : ['url' ]})
410430
431+ def test_url_with_allowed_schemes (self ):
411432 class OnlyHTTPSURLSchema (Schema ):
412433 url = URL (default_scheme = 'https://' , allowed_schemes = ['https://' ])
413434
0 commit comments