bcae92a88ef6711abaa7717e87f40c59d9311d3d
[tiramisu.git] / test / test_config_domain.py
1 import autopath
2 from py.test import raises
3
4 from tiramisu.config import Config
5 from tiramisu.option import DomainnameOption, EmailOption, URLOption, OptionDescription
6
7
8 def test_domainname():
9     d = DomainnameOption('d', '')
10     f = DomainnameOption('f', '', allow_without_dot=True)
11     g = DomainnameOption('g', '', allow_ip=True)
12     od = OptionDescription('a', '', [d, f, g])
13     c = Config(od)
14     c.read_write()
15     c.d = 'toto.com'
16     raises(ValueError, "c.d = 'toto'")
17     c.d = 'toto3.com'
18     raises(ValueError, "c.d = 'toto3.3la'")
19     #raises(ValueError, "c.d = '3toto.com'")
20     raises(ValueError, "c.d = 'toto.co3'")
21     raises(ValueError, "c.d = 'toto_super.com'")
22     c.d = 'toto-.com'
23     raises(ValueError, "c.d = 'toto..com'")
24     #
25     c.f = 'toto.com'
26     c.f = 'toto'
27     raises(ValueError, "c.f = 'domainnametoolongthathavemorethanmaximumsizeforatruedomainnameanditsnoteasytogeneratesolongdomainnamewithoutrepeatdomainnametoolongthathavemorethanmaximumsizeforatruedomainnameanditsnoteasytogeneratesolongdomainnamewithoutrepeatbutimnotabletodoitnowiendityeah'")
28     raises(ValueError, "c.f = 'd'")
29     #
30     c.g = 'toto.com'
31     c.g = '192.168.1.0'
32     c.g = '192.168.1.29'
33
34 def test_special_domain_name():
35     """domain name option that starts with a number or not
36     """
37     d = DomainnameOption('d', '')
38     e = DomainnameOption('e', '', type_='netbios')
39     od = OptionDescription('a', '', [d,e])
40     c = Config(od)
41     c.read_write()
42     c.d = '1toto.com'
43     c.d = '123toto.com'
44     c.e = 'toto'
45     raises(ValueError, "c.e = '1toto'")
46
47
48 def test_domainname_netbios():
49     d = DomainnameOption('d', '', type_='netbios')
50     e = DomainnameOption('e', '', "toto", type_='netbios')
51     od = OptionDescription('a', '', [d, e])
52     c = Config(od)
53     c.read_write()
54     raises(ValueError, "c.d = 'toto.com'")
55     c.d = 'toto'
56     raises(ValueError, "c.d = 'domainnametoolong'")
57
58
59 def test_domainname_hostname():
60     d = DomainnameOption('d', '', type_='hostname')
61     e = DomainnameOption('e', '', "toto", type_='hostname')
62     od = OptionDescription('a', '', [d, e])
63     c = Config(od)
64     c.read_write()
65     raises(ValueError, "c.d = 'toto.com'")
66     c.d = 'toto'
67     c.d = 'domainnametoolong'
68
69
70 def test_email():
71     e = EmailOption('e', '')
72     od = OptionDescription('a', '', [e])
73     c = Config(od)
74     c.read_write()
75     c.e = 'root@foo.com'
76     raises(ValueError, "c.e = 'root'")
77     raises(ValueError, "c.e = 'root@domain'")
78     raises(ValueError, "c.e = 'root[]@domain'")
79
80
81 def test_url():
82     u = URLOption('u', '')
83     od = OptionDescription('a', '', [u])
84     c = Config(od)
85     c.read_write()
86     c.u = 'http://foo.com'
87     c.u = 'https://foo.com'
88     c.u = 'https://foo.com/'
89     raises(ValueError, "c.u = 'ftp://foo.com'")
90     raises(ValueError, "c.u = 'foo.com'")
91     raises(ValueError, "c.u = ':/foo.com'")
92     raises(ValueError, "c.u = 'foo.com/http://'")
93     c.u = 'https://foo.com/index.html'
94     c.u = 'https://foo.com/index.html?var=value&var2=val2'
95     raises(ValueError, "c.u = 'https://foo.com/index\\n.html'")
96     c.u = 'https://foo.com:8443'
97     c.u = 'https://foo.com:8443/'
98     c.u = 'https://foo.com:8443/index.html'
99     raises(ValueError, "c.u = 'https://foo.com:84438989'")