aetherscale

[unmaintained] code for a cloud provider tutorial
Log | Files | Refs | README | LICENSE

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()