import autopath from py.test import raises from tiramisu.config import Config from tiramisu.option import DomainnameOption, EmailOption, URLOption, OptionDescription def test_domainname(): d = DomainnameOption('d', '') e = DomainnameOption('e', '', "toto.com") od = OptionDescription('a', '', [d, e]) c = Config(od) c.read_write() c.d = 'toto.com' raises(ValueError, "c.d = 'toto'") c.d = 'toto3.com' raises(ValueError, "c.d = 'toto3.3la'") raises(ValueError, "c.d = '3toto.com'") raises(ValueError, "c.d = 'toto.co3'") raises(ValueError, "c.d = 'toto_super.com'") c.d = 'toto-.com' raises(ValueError, "c.d = 'toto..com'") def test_domainname_netbios(): d = DomainnameOption('d', '', type_='netbios') e = DomainnameOption('e', '', "toto", type_='netbios') od = OptionDescription('a', '', [d, e]) c = Config(od) c.read_write() raises(ValueError, "c.d = 'toto.com'") c.d = 'toto' raises(ValueError, "c.d = 'domainnametoolong'") def test_domainname_hostname(): d = DomainnameOption('d', '', type_='hostname') e = DomainnameOption('e', '', "toto", type_='hostname') od = OptionDescription('a', '', [d, e]) c = Config(od) c.read_write() raises(ValueError, "c.d = 'toto.com'") c.d = 'toto' c.d = 'domainnametoolong' def test_email(): e = EmailOption('e', '') od = OptionDescription('a', '', [e]) c = Config(od) c.read_write() c.e = 'root@foo.com' raises(ValueError, "c.e = 'root'") raises(ValueError, "c.e = 'root@domain'") def test_url(): u = URLOption('u', '') od = OptionDescription('a', '', [u]) c = Config(od) c.read_write() c.u = 'http://foo.com' c.u = 'https://foo.com' c.u = 'https://foo.com/' raises(ValueError, "c.u = 'ftp://foo.com'") raises(ValueError, "c.u = 'foo.com'") raises(ValueError, "c.u = ':/foo.com'") raises(ValueError, "c.u = 'foo.com/http://'") c.u = 'https://foo.com/index.html' c.u = 'https://foo.com/index.html?var=value&var2=val2' raises(ValueError, "c.u = 'https://foo.com/index\\n.html'") c.u = 'https://foo.com:8443' c.u = 'https://foo.com:8443/' c.u = 'https://foo.com:8443/index.html'