test_radvd.py (1318B)
1 import os 2 import pytest 3 import stat 4 5 from aetherscale.vpn import radvd 6 7 8 def test_add_interface_config(tmppath): 9 r = radvd.Radvd(tmppath / 'radvd.conf', '2001:0db8:0') 10 r.add_interface('my-interface', '2001:0db8:0::/64') 11 r.add_interface('my-second-interface', '2001:0db8:1::/64') 12 13 with open(r.config_file) as f: 14 content = f.read() 15 16 assert 'my-interface' in content 17 assert '001:0db8::/64' 18 assert 'my-second-interface' in content 19 20 21 def test_cannot_assign_same_prefix_twice(tmppath): 22 r = radvd.Radvd(tmppath / 'radvd.conf', '2001:0db8:0') 23 r.add_interface('first', '2001:0db8::/64') 24 25 with pytest.raises(radvd.RadvdException): 26 r.add_interface('second', '2001:0db8::/64') 27 28 29 def test_generate_next_prefix(tmppath): 30 r = radvd.Radvd(tmppath / 'radvd.conf', prefix='2001:0db8:0') 31 prefix = r.generate_prefix() 32 r.add_interface('interface', prefix) 33 prefix2 = r.generate_prefix() 34 35 assert prefix != prefix2 36 37 38 def test_config_is_readonly(tmppath): 39 r = radvd.Radvd(tmppath / 'radvd.conf', '2001:0db8:0') 40 r.add_interface('some-interface', '::/64') 41 42 assert stat.S_IMODE(os.lstat(r.config_file).st_mode) == 0o400 43 44 45 def test_drops_privileges(tmppath): 46 r = radvd.Radvd(tmppath / 'radvd.conf', '2001:0db8:0') 47 assert '-u' in r.get_start_command()