tiramisu/tests/test_config_domain.py

278 lines
11 KiB
Python
Raw Permalink Normal View History

2017-07-09 09:49:03 +02:00
from .autopath import do_autopath
2015-07-24 17:54:10 +02:00
do_autopath()
2019-06-21 23:04:04 +02:00
from .config import config_type, get_config, value_list, global_owner
2015-07-24 17:54:10 +02:00
2016-03-19 21:27:37 +01:00
import warnings, sys
2019-12-24 15:24:20 +01:00
import pytest
from tiramisu import Config, DomainnameOption, EmailOption, URLOption, OptionDescription
from tiramisu.error import ValueWarning
from tiramisu.i18n import _
def test_domainname(config_type):
d = DomainnameOption('d', '')
2013-10-01 10:13:17 +02:00
f = DomainnameOption('f', '', allow_without_dot=True)
2014-02-06 22:17:20 +01:00
g = DomainnameOption('g', '', allow_ip=True)
2019-12-08 09:09:48 +01:00
h = DomainnameOption('h', '', allow_cidr_network=True)
i = DomainnameOption('i', '', allow_ip=True, allow_cidr_network=True)
j = DomainnameOption('j', '', allow_startswith_dot=True)
od1 = OptionDescription('a', '', [d, f, g, h, i, j])
cfg = Config(od1)
cfg.property.read_write()
cfg = get_config(cfg, config_type)
#
cfg.option('d').value.set('toto.com')
with pytest.raises(ValueError):
cfg.option('d').value.set('.toto.com')
with pytest.raises(ValueError):
cfg.option('d').value.set('toto')
cfg.option('d').value.set('toto3.com')
with pytest.raises(ValueError):
cfg.option('d').value.set('toto_super.com')
cfg.option('d').value.set('toto-.com')
with pytest.raises(ValueError):
cfg.option('d').value.set('toto..com')
#
cfg.option('f').value.set('toto.com')
cfg.option('f').value.set('toto')
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamea')
with pytest.raises(ValueError):
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamean')
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamea.nd')
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamea.nditsnoteasytogeneratesolongdomainnamewithoutrepeatdomainnameto.olongthathavemorethanmaximumsizeforatruedomainnameanditsnoteas.ytogeneratesolongdomainnamewithoutrepeatbutimnotabletodoitnowie')
with pytest.raises(ValueError):
cfg.option('d').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamea.nditsnoteasytogeneratesolongdomainnamewithoutrepeatdomainnameto.olongthathavemorethanmaximumsizeforatruedomainnameanditsnoteas.ytogeneratesolongdomainnamewithoutrepeatbutimnotabletodoitnowien')
cfg.option('f').value.set('d')
cfg.option('f').value.set('d.t')
#
if config_type != 'tiramisu-api':
# FIXME
2020-01-22 20:46:18 +01:00
with pytest.raises(ValueError):
cfg.option('f').value.set('192.168.1.1')
with pytest.raises(ValueError):
cfg.option('f').value.set('192.168.1.0/24')
#
cfg.option('g').value.set('toto.com')
cfg.option('g').value.set('192.168.1.0')
cfg.option('g').value.set('192.168.1.29')
with pytest.raises(ValueError):
cfg.option('g').value.set('192.168.1.0/24')
with pytest.raises(ValueError):
cfg.option('g').value.set('240.94.1.1')
#
cfg.option('h').value.set('toto.com')
if config_type != 'tiramisu-api':
# FIXME
2020-01-22 20:46:18 +01:00
with pytest.raises(ValueError):
cfg.option('h').value.set('192.168.1.0')
2020-01-22 20:46:18 +01:00
with pytest.raises(ValueError):
cfg.option('h').value.set('192.168.1.29')
# it's a network address
cfg.option('h').value.set('192.168.1.0/24')
# but not here
with pytest.raises(ValueError):
cfg.option('h').value.set('192.168.1.1/24')
#
cfg.option('i').value.set('toto.com')
cfg.option('i').value.set('192.168.1.0')
cfg.option('i').value.set('192.168.1.1')
cfg.option('i').value.set('192.168.1.0/24')
with pytest.raises(ValueError):
cfg.option('i').value.set('192.168.1.1/24')
with pytest.raises(ValueError):
cfg.option('i').value.set('240.94.1.1')
#
cfg.option('j').value.set('toto.com')
cfg.option('j').value.set('.toto.com')
# assert not list_sessions()
def test_domainname_invalid(config_type):
with pytest.raises(ValueError):
DomainnameOption('a', '', allow_cidr_network='str')
with pytest.raises(ValueError):
DomainnameOption('a', '', allow_startswith_dot='str')
def test_domainname_upper(config_type):
d = DomainnameOption('d', '')
od1 = OptionDescription('a', '', [d])
cfg = Config(od1)
cfg.property.read_write()
cfg = get_config(cfg, config_type)
cfg.option('d').value.set('toto.com')
msg = _('some characters are uppercase')
has_error = False
try:
cfg.option('d').value.set('TOTO.COM')
except ValueError as err:
2020-01-22 20:46:18 +01:00
if config_type != 'tiramisu-api':
# FIXME
assert msg in str(err)
has_error = True
assert has_error is True
has_error = False
try:
cfg.option('d').value.set('toTo.com')
except ValueError as err:
2020-01-22 20:46:18 +01:00
if config_type != 'tiramisu-api':
# FIXME
assert msg in str(err)
has_error = True
assert has_error is True
# assert not list_sessions()
def test_domainname_warning(config_type):
d = DomainnameOption('d', '', warnings_only=True)
f = DomainnameOption('f', '', allow_without_dot=True, warnings_only=True)
g = DomainnameOption('g', '', allow_ip=True, warnings_only=True)
od1 = OptionDescription('a', '', [d, f, g])
warnings.simplefilter("always", ValueWarning)
cfg = Config(od1)
cfg.property.read_write()
cfg = get_config(cfg, config_type)
cfg.option('d').value.set('toto.com')
cfg.option('d').value.set('toto.com.')
with pytest.raises(ValueError):
cfg.option('d').value.set('toto')
cfg.option('d').value.set('toto3.com')
if config_type != 'tiramisu-api':
# FIXME
2019-06-21 23:04:04 +02:00
with warnings.catch_warnings(record=True) as w:
cfg.option('d').value.set('toto_super.com')
assert len(w) == 1
with warnings.catch_warnings(record=True) as w:
cfg.option('d').value.set('toto-.com')
assert len(w) == 0
with pytest.raises(ValueError):
cfg.option('d').value.set('toto..com')
#
cfg.option('f').value.set('toto.com')
cfg.option('f').value.set('toto')
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamea')
with pytest.raises(ValueError):
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamean')
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamea.nd')
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainnamea.nditsnoteasytogeneratesolongdomainnamewithoutrepeatdomainnameto.olongthathavemorethanmaximumsizeforatruedomainnameanditsnoteas.ytogeneratesolongdomainnamewithoutrepeatbutimnotabletodoitnowie')
if config_type != 'tiramisu-api':
# FIXME
2020-01-22 20:46:18 +01:00
with pytest.raises(ValueError):
cfg.option('f').value.set('domainnametoolongthathavemorethanmaximumsizeforatruedomainname.nditsnoteasytogeneratesolongdomainnamewithoutrepeatdomainnamet.olongthathavemorethanmaximumsizeforatruedomainnameanditsnotea.ytogeneratesolongdomainnamewithoutrepeatbutimnotabletodoitnowie.xxxx')
cfg.option('f').value.set('d')
cfg.option('f').value.set('d.t')
#
if config_type != 'tiramisu-api':
# FIXME
2020-01-22 20:46:18 +01:00
with pytest.raises(ValueError):
cfg.option('f').value.set('192.168.1.1')
cfg.option('g').value.set('toto.com')
cfg.option('g').value.set('192.168.1.0')
cfg.option('g').value.set('192.168.1.29')
# assert not list_sessions()
def test_special_domain_name(config_type):
"""domain name option that starts with a number or not
"""
d = DomainnameOption('d', '')
2019-12-08 09:09:48 +01:00
e = DomainnameOption('e', '', type='netbios')
od1 = OptionDescription('a', '', [d, e])
cfg = Config(od1)
cfg.property.read_write()
cfg = get_config(cfg, config_type)
cfg.option('d').value.set('1toto.com')
cfg.option('d').value.set('123toto.com')
cfg.option('e').value.set('toto')
cfg.option('e').value.set('1toto')
# assert not list_sessions()
def test_domainname_netbios(config_type):
2019-12-08 09:09:48 +01:00
d = DomainnameOption('d', '', type='netbios')
e = DomainnameOption('e', '', "toto", type='netbios')
od1 = OptionDescription('a', '', [d, e])
cfg = Config(od1)
cfg.property.read_write()
cfg = get_config(cfg, config_type)
with pytest.raises(ValueError):
cfg.option('d').value.set('toto.com')
cfg.option('d').value.set('toto')
with pytest.raises(ValueError):
cfg.option('d').value.set('domainnametoolong')
# assert not list_sessions()
def test_domainname_hostname(config_type):
2019-12-08 09:09:48 +01:00
d = DomainnameOption('d', '', type='hostname')
e = DomainnameOption('e', '', "toto", type='hostname')
od1 = OptionDescription('a', '', [d, e])
cfg = Config(od1)
cfg.property.read_write()
cfg = get_config(cfg, config_type)
with pytest.raises(ValueError):
cfg.option('d').value.set('toto.com')
cfg.option('d').value.set('toto')
cfg.option('d').value.set('domainnametoolong')
# assert not list_sessions()
def test_email(config_type):
e = EmailOption('e', '')
od1 = OptionDescription('a', '', [e])
cfg = Config(od1)
cfg.property.read_write()
cfg = get_config(cfg, config_type)
cfg.option('e').value.set('foo-bar.baz@example.com')
cfg.option('e').value.set('root@foo.com')
cfg.option('e').value.set('root@domain')
with pytest.raises(ValueError):
cfg.option('e').value.set(1)
with pytest.raises(ValueError):
cfg.option('e').value.set('root')
with pytest.raises(ValueError):
cfg.option('e').value.set('root[]@domain')
# assert not list_sessions()
2019-12-24 15:24:20 +01:00
def test_url(config_type):
u = URLOption('u', '')
od1 = OptionDescription('a', '', [u])
cfg = Config(od1)
cfg.property.read_write()
cfg = get_config(cfg, config_type)
cfg.option('u').value.set('http://foo.com')
cfg.option('u').value.set('https://foo.com')
cfg.option('u').value.set('https://foo.com/')
with pytest.raises(ValueError):
cfg.option('u').value.set(1)
if config_type != 'tiramisu-api':
# FIXME
2020-01-22 20:46:18 +01:00
with pytest.raises(ValueError):
cfg.option('u').value.set('ftp://foo.com')
with pytest.raises(ValueError):
cfg.option('u').value.set('foo.com')
with pytest.raises(ValueError):
cfg.option('u').value.set(':/foo.com')
with pytest.raises(ValueError):
cfg.option('u').value.set('foo.com/http://')
cfg.option('u').value.set('https://foo.com/index.html')
cfg.option('u').value.set('https://foo.com/index.html?var=value&var2=val2')
if config_type != 'tiramisu-api':
# FIXME
with pytest.raises(ValueError):
cfg.option('u').value.set('https://foo.com/index\\n.html')
cfg.option('u').value.set('https://foo.com:8443')
cfg.option('u').value.set('https://foo.com:8443/')
cfg.option('u').value.set('https://foo.com:8443/index.html')
if config_type != 'tiramisu-api':
# FIXME
with pytest.raises(ValueError):
cfg.option('u').value.set('https://foo.com:84438989')
cfg.option('u').value.set('https://foo.com:8443/INDEX')
if config_type != 'tiramisu-api':
# FIXME
with pytest.raises(ValueError):
cfg.option('u').value.set('https://FOO.COM:8443')
# assert not list_sessions()