Пример #1
0
def test_reservedaddress():
  s1 = Site( name='tsite1', description='test site1' )
  s1.full_clean()
  s1.save()

  nwd = Networked( site=s1, hostname='test' )
  nwd.full_clean()
  nwd.save()

  ab1 = AddressBlock( site=s1, subnet=StrToIp( '0.0.0.0' ), prefix=24 )
  ab1.full_clean()
  ab1.save()

  ab2 = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=31 )
  ab2.full_clean()
  ab2.save()

  ra = ReservedAddress()
  with pytest.raises( ValidationError ):
    ra.full_clean()

  ra = ReservedAddress( reason='testing' )
  with pytest.raises( ValidationError ):
    ra.full_clean()

  ra = ReservedAddress( address_block=ab1 )
  with pytest.raises( ValidationError ):
    ra.full_clean()

  ra = ReservedAddress( address_block=ab1, offset=1 )
  with pytest.raises( ValidationError ):
    ra.full_clean()

  ra = ReservedAddress( address_block=ab1, offset=1, reason='testing' )
  ra.full_clean()
  ra.save()

  ba = BaseAddress( address_block=ab1, offset=1 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab1, offset=2 )
  ba.full_clean()
  ba.save()

  ra = ReservedAddress( address_block=ab1, offset=2, reason='testing' )
  with pytest.raises( ValidationError ):
    ra.full_clean()

  ra = BaseAddress.objects.get( address_block=ab1, offset=1 )
  assert ra.type == 'ReservedAddress'
  assert ra.ip_address == '0.0.0.1'

  ba = BaseAddress.objects.get( address_block=ab1, offset=1 )
  assert ba.type == 'ReservedAddress'
  assert ba.ip_address == '0.0.0.1'

  ba = BaseAddress.objects.get( address_block=ab1, offset=2 )
  assert ba.type == 'Unknown'
  assert ba.ip_address == '0.0.0.2'
Пример #2
0
def test_dynamicaddress():
  s1 = Site( name='tsite1', description='test site1' )
  s1.full_clean()
  s1.save()

  nwd = Networked( site=s1, hostname='test' )
  nwd.full_clean()
  nwd.save()

  ab1 = AddressBlock( site=s1, subnet=StrToIp( '0.0.0.0' ), prefix=24 )
  ab1.full_clean()
  ab1.save()

  ab2 = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=31 )
  ab2.full_clean()
  ab2.save()

  da = DynamicAddress()
  with pytest.raises( ValidationError ):
    da.full_clean()

  da = DynamicAddress( address_block=ab1 )
  with pytest.raises( ValidationError ):
    da.full_clean()

  da = DynamicAddress( address_block=ab1, offset=1 )  # TODO: test with PXE set
  da.full_clean()
  da.save()

  ba = BaseAddress( address_block=ab1, offset=1 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab1, offset=2 )
  ba.full_clean()
  ba.save()

  da = DynamicAddress( address_block=ab1, offset=2 )
  with pytest.raises( ValidationError ):
    da.full_clean()

  da = DynamicAddress.objects.get( address_block=ab1, offset=1 )
  assert da.type == 'DynamicAddress'
  assert da.ip_address == '0.0.0.1'

  ba = BaseAddress.objects.get( address_block=ab1, offset=1 )
  assert ba.type == 'DynamicAddress'
  assert ba.ip_address == '0.0.0.1'

  ba = BaseAddress.objects.get( address_block=ab1, offset=2 )
  assert ba.type == 'Unknown'
  assert ba.ip_address == '0.0.0.2'
Пример #3
0
def test_reservedaddress():
    s1 = Site(name='tsite1', description='test site1')
    s1.full_clean()
    s1.save()

    nwd = Networked(site=s1, hostname='test')
    nwd.full_clean()
    nwd.save()

    ab1 = AddressBlock(site=s1,
                       subnet=StrToIp('0.0.0.0'),
                       prefix=24,
                       name='test1')
    ab1.full_clean()
    ab1.save()

    ab2 = AddressBlock(site=s1,
                       subnet=StrToIp('1.0.0.0'),
                       prefix=31,
                       name='test2')
    ab2.full_clean()
    ab2.save()

    ra = ReservedAddress()
    with pytest.raises(ValidationError):
        ra.full_clean()

    ra = ReservedAddress(reason='testing')
    with pytest.raises(ValidationError):
        ra.full_clean()

    ra = ReservedAddress(address_block=ab1)
    with pytest.raises(ValidationError):
        ra.full_clean()

    ra = ReservedAddress(address_block=ab1, offset=1)
    with pytest.raises(ValidationError):
        ra.full_clean()

    ra = ReservedAddress(address_block=ab1, offset=1, reason='testing')
    ra.full_clean()
    ra.save()
    assert ra.as_dict == {
        'address': '0.0.0.1',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress(address_block=ab1, offset=1)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab1, offset=2)
    ba.full_clean()
    ba.save()
    assert ba.as_dict == {
        'address': '0.0.0.2',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ra = ReservedAddress(address_block=ab1, offset=2, reason='testing')
    with pytest.raises(ValidationError):
        ra.full_clean()

    ra = BaseAddress.objects.get(address_block=ab1, offset=1)
    assert ra.type == 'ReservedAddress'
    assert ra.ip_address == '0.0.0.1'
    assert ra.as_dict == {
        'address': '0.0.0.1',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress.objects.get(address_block=ab1, offset=1)
    assert ba.type == 'ReservedAddress'
    assert ba.ip_address == '0.0.0.1'
    assert ba.as_dict == {
        'address': '0.0.0.1',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress.objects.get(address_block=ab1, offset=2)
    assert ba.type == 'Unknown'
    assert ba.ip_address == '0.0.0.2'
    assert ba.as_dict == {
        'address': '0.0.0.2',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }
Пример #4
0
def test_address():
    s1 = Site(name='tsite1', description='test site1')
    s1.full_clean()
    s1.save()

    nwd = Networked(site=s1, hostname='test')
    nwd.full_clean()
    nwd.save()

    ab1 = AddressBlock(site=s1,
                       subnet=StrToIp('0.0.0.0'),
                       prefix=24,
                       name='test1')
    ab1.full_clean()
    ab1.save()

    ab2 = AddressBlock(site=s1,
                       subnet=StrToIp('1.0.0.0'),
                       prefix=31,
                       name='test2')
    ab2.full_clean()
    ab2.save()

    ad = Address()
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad1 = Address(networked=nwd, interface_name='tun0')
    ad1.full_clean()
    ad1.save()
    assert ad1.as_dict == {
        'address': None,
        'netmask': None,
        'prefix': None,
        'subnet': None,
        'gateway': None,
        'sub_interface': None,
        'primary': False,
        'auto': True,
        'mtu': 1500
    }

    ad1.address_block = ab2
    ad1.offset = 5
    ad1.save()
    assert ad1.as_dict == {
        'address': '1.0.0.5',
        'netmask': '255.255.255.254',
        'prefix': 31,
        'subnet': '1.0.0.0',
        'gateway': None,
        'sub_interface': None,
        'primary': False,
        'auto': True,
        'mtu': 1500
    }

    ad = Address(address_block=ab1)
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(address_block=ab1, offset=1)
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(address_block=ab1, offset=1, networked=nwd)
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(address_block=ab1,
                 offset=1,
                 networked=nwd,
                 interface_name='lo')
    ad.full_clean()
    ad.save()
    assert ad.as_dict == {
        'address': '0.0.0.1',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'sub_interface': None,
        'primary': False,
        'auto': True,
        'mtu': 1500
    }

    ad = Address(address_block=ab1,
                 offset=1,
                 pointer=ad1,
                 networked=nwd,
                 interface_name='vpn0')
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(offset=1, pointer=ad1, networked=nwd, interface_name='vpn0')
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(address_block=ab1,
                 pointer=ad1,
                 networked=nwd,
                 interface_name='vpn0')
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(address_block=ab1,
                 pointer=ad1,
                 networked=nwd,
                 interface_name='vpn0')
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(offset=1, pointer=ad1, networked=nwd, interface_name='vpn0')
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(pointer=ad1, networked=nwd, interface_name='vpn0')
    ad.full_clean()
    ad.save()
    assert ad.as_dict == {
        'address': '1.0.0.5',
        'netmask': '255.255.255.254',
        'prefix': 31,
        'subnet': '1.0.0.0',
        'gateway': None,
        'sub_interface': None,
        'primary': False,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress(address_block=ab1, offset=1)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab1, offset=2)
    ba.full_clean()
    ba.save()
    assert ba.as_dict == {
        'address': '0.0.0.2',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ad = Address(address_block=ab1,
                 offset=2,
                 networked=nwd,
                 interface_name='eth0')
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(address_block=ab1,
                 offset=3,
                 networked=nwd,
                 interface_name='lo')
    ad.full_clean()

    ad = Address(address_block=ab2,
                 offset=0,
                 networked=nwd,
                 interface_name='lo',
                 sub_interface=0)
    ad.full_clean()

    ad = Address(address_block=ab2,
                 offset=0,
                 networked=nwd,
                 interface_name='lo',
                 sub_interface=123)
    ad.full_clean()

    ad = Address(address_block=ab2,
                 offset=0,
                 networked=nwd,
                 interface_name='lo',
                 sub_interface=-1)
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(address_block=ab2,
                 offset=0,
                 networked=nwd,
                 interface_name='lo',
                 is_primary=True)
    ad.full_clean()
    ad.save()
    assert ad.as_dict == {
        'address': '1.0.0.0',
        'netmask': '255.255.255.254',
        'prefix': 31,
        'subnet': '1.0.0.0',
        'gateway': None,
        'sub_interface': None,
        'primary': True,
        'auto': True,
        'mtu': 1500
    }

    ad = Address(address_block=ab2,
                 offset=1,
                 networked=nwd,
                 interface_name='lo',
                 is_primary=True)
    with pytest.raises(ValidationError):
        ad.full_clean()

    ad = Address(address_block=ab2,
                 offset=1,
                 networked=nwd,
                 interface_name='lo',
                 is_primary=False)
    ad.full_clean()

    ad = Address.objects.get(address_block=ab1, offset=1)
    assert ad.type == 'Address'
    assert ad.ip_address == '0.0.0.1'
    assert ad.structure is None  # TODO: make a networked with a structure and test that
    assert ad.interface is None  # TODO: dido ^
    assert ad.as_dict == {
        'address': '0.0.0.1',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'sub_interface': None,
        'primary': False,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress.objects.get(address_block=ab1, offset=1)
    assert ba.type == 'Address'
    assert ba.ip_address == '0.0.0.1'
    assert ba.as_dict == {
        'address': '0.0.0.1',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress.objects.get(address_block=ab1, offset=2)
    assert ba.type == 'Unknown'
    assert ba.ip_address == '0.0.0.2'
    assert ba.as_dict == {
        'address': '0.0.0.2',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ad = Address.objects.get(networked=nwd, interface_name='vpn0')
    assert ad.type == 'Address'
    assert ad.ip_address == '1.0.0.5'
    assert ad.as_dict == {
        'address': '1.0.0.5',
        'netmask': '255.255.255.254',
        'prefix': 31,
        'subnet': '1.0.0.0',
        'gateway': None,
        'sub_interface': None,
        'primary': False,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress.objects.get(pk=ad.baseaddress_ptr.pk)
    assert ba.type == 'Address'
    assert ba.ip_address is None
    assert ba.subclass.ip_address == '1.0.0.5'
    assert ba.as_dict == {
        'address': None,
        'netmask': None,
        'prefix': None,
        'subnet': None,
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }
    assert ba.subclass.as_dict == {
        'address': '1.0.0.5',
        'netmask': '255.255.255.254',
        'prefix': 31,
        'subnet': '1.0.0.0',
        'gateway': None,
        'sub_interface': None,
        'primary': False,
        'auto': True,
        'mtu': 1500
    }
Пример #5
0
def test_baseaddress():
    s1 = Site(name='tsite1', description='test site1')
    s1.full_clean()
    s1.save()

    ab1 = AddressBlock(site=s1,
                       subnet=StrToIp('0.0.0.0'),
                       prefix=24,
                       name='test1')
    ab1.full_clean()
    ab1.save()

    ab2 = AddressBlock(site=s1,
                       subnet=StrToIp('1.0.0.0'),
                       prefix=31,
                       name='test2')
    ab2.full_clean()
    ab2.save()

    ab3 = AddressBlock(site=s1,
                       subnet=StrToIp('2.0.0.0'),
                       prefix=24,
                       gateway_offset=1,
                       name='test3')
    ab3.full_clean()
    ab3.save()

    ba1 = BaseAddress()
    ba1.full_clean()
    ba1.save()
    assert ba1.as_dict == {
        'address': None,
        'netmask': None,
        'prefix': None,
        'subnet': None,
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress(address_block=ab1)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(offset=0)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(offset=1)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab1, offset=0)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab1, offset=1)
    ba.full_clean()
    ba.save()
    assert ba.as_dict == {
        'address': '0.0.0.1',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress(address_block=ab1, offset=1)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab1, offset=254)
    ba.full_clean()
    assert ba.as_dict == {
        'address': '0.0.0.254',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress(address_block=ab1, offset=255)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab2, offset=0)
    ba.full_clean()
    assert ba.as_dict == {
        'address': '1.0.0.0',
        'netmask': '255.255.255.254',
        'prefix': 31,
        'subnet': '1.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress(address_block=ab2, offset=1)
    ba.full_clean()
    assert ba.as_dict == {
        'address': '1.0.0.1',
        'netmask': '255.255.255.254',
        'prefix': 31,
        'subnet': '1.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress(address_block=ab2, offset=2)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab2, offset=-1)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab3, offset=0)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab3, offset=1)
    with pytest.raises(ValidationError):
        ba.full_clean()

    ba = BaseAddress(address_block=ab3, offset=2)
    ba.full_clean()
    assert ba.as_dict == {
        'address': '2.0.0.2',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '2.0.0.0',
        'gateway': '2.0.0.1',
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress.objects.get(address_block=ab1, offset=1)
    assert ba.type == 'Unknown'
    assert ba.ip_address == '0.0.0.1'
    assert ba.as_dict == {
        'address': '0.0.0.1',
        'netmask': '255.255.255.0',
        'prefix': 24,
        'subnet': '0.0.0.0',
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }

    ba = BaseAddress.objects.get(pk=ba1.pk)
    assert ba.type == 'Unknown'
    assert ba.ip_address is None
    assert ba.as_dict == {
        'address': None,
        'netmask': None,
        'prefix': None,
        'subnet': None,
        'gateway': None,
        'auto': True,
        'mtu': 1500
    }
Пример #6
0
def test_addressblock():
    s1 = Site(name='tsite1', description='test site1')
    s1.full_clean()
    s1.save()

    s2 = Site(name='tsite2', description='test site2')
    s2.full_clean()
    s2.save()

    ab = AddressBlock()
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1)
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1, subnet=StrToIp('0.0.0.0'))
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1, subnet=StrToIp('0.0.0.0'), prefix=24)
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('0.0.0.0'),
                      prefix=24,
                      name='test')
    ab.full_clean()
    ab.save()

    ab.gateway_offset = 1
    ab.full_clean()
    ab.save()

    ab.name = 'something_else'
    ab.full_clean()
    ab.save()

    ab.name = 'test'
    ab.full_clean()
    ab.save()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('50.0.0.0'),
                      prefix=24,
                      name='test')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s2,
                      subnet=StrToIp('51.0.0.0'),
                      prefix=24,
                      name='test')
    ab.full_clean()
    ab.save()

    ab.site = s1
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab.site = s2
    ab.full_clean()
    ab.save()

    ab = AddressBlock.objects.get(site=s1, name='test')
    ab.gateway_offset = None
    ab.full_clean()
    ab.save()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('0.0.0.0'),
                      prefix=24,
                      name='test2')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s2,
                      subnet=StrToIp('0.0.0.0'),
                      prefix=24,
                      name='test2')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=24,
                      name='test3')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=-1,
                      name='test4')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=33,
                      name='test5')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('255.0.0.0'),
                      prefix=1,
                      name='test6')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=32,
                      name='test7')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('2.0.0.0'),
                      prefix=8,
                      gateway_offset=1,
                      name='test8')
    ab.full_clean()
    ab.save()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=24,
                      gateway_offset=1,
                      name='test9')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=32,
                      gateway_offset=0,
                      name='test10')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=32,
                      gateway_offset=1,
                      name='test11')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=32,
                      gateway_offset=2,
                      name='test12')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=31,
                      gateway_offset=0,
                      name='test13')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=31,
                      gateway_offset=1,
                      name='test14')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=31,
                      gateway_offset=2,
                      name='test15')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=30,
                      gateway_offset=0,
                      name='test16')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=30,
                      gateway_offset=1,
                      name='test17')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=30,
                      gateway_offset=2,
                      name='test18')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=30,
                      gateway_offset=3,
                      name='test19')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=29,
                      gateway_offset=0,
                      name='test20')
    with pytest.raises(ValidationError):
        ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=29,
                      gateway_offset=1,
                      name='test21')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=29,
                      gateway_offset=2,
                      name='test22')
    ab.full_clean()

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('1.0.0.0'),
                      prefix=29,
                      gateway_offset=3,
                      name='test23')
    ab.full_clean()

    ab = AddressBlock.objects.get(site=s1, name='test')
    assert ab.subnet == '0.0.0.0'
    assert ab._max_address == '0.0.0.255'
    assert ab.gateway is None
    assert ab.netmask == '255.255.255.0'
    assert ab.prefix == 24
    assert ab.size == 254
    assert ab.offsetBounds == (1, 254)
    assert ab.isIpV4 is True

    ab = AddressBlock.objects.get(site=s1, name='test8')
    assert ab.subnet == '2.0.0.0'
    assert ab._max_address == '2.255.255.255'
    assert ab.gateway == '2.0.0.1'
    assert ab.netmask == '255.0.0.0'
    assert ab.prefix == 8
    assert ab.size == 16777214
    assert ab.offsetBounds == (1, 16777214)
    assert ab.isIpV4 is True

    ab = AddressBlock(site=s1,
                      subnet=StrToIp('10.0.0.0'),
                      prefix=24,
                      name='test30')
    ab.full_clean()
    ab.save()

    ab = AddressBlock(site=s1, subnet='11.0.0.0', prefix=24, name='test31')
    ab.full_clean()
    ab.save()

    ab = AddressBlock.objects.get(name='test30')
    assert ab.subnet == '10.0.0.0'
    assert ab._max_address == '10.0.0.255'
    assert ab.gateway is None
    assert ab.netmask == '255.255.255.0'
    assert ab.prefix == 24
    assert ab.size == 254
    assert ab.offsetBounds == (1, 254)
    assert ab.isIpV4 is True

    ab = AddressBlock.objects.get(name='test31')
    assert ab.subnet == '11.0.0.0'
    assert ab._max_address == '11.0.0.255'
    assert ab.gateway is None
    assert ab.netmask == '255.255.255.0'
    assert ab.prefix == 24
    assert ab.size == 254
    assert ab.offsetBounds == (1, 254)
    assert ab.isIpV4 is True
Пример #7
0
def test_network():
    s1 = Site(name='tsite1', description='test site1')
    s1.full_clean()
    s1.save()

    ab1 = AddressBlock(site=s1,
                       subnet=StrToIp('10.0.0.0'),
                       prefix=24,
                       name='test')
    ab1.full_clean()
    ab1.save()

    n1 = Network()
    with pytest.raises(ValidationError):
        n1.full_clean()

    n1 = Network(name='test', site=s1)
    n1.full_clean()
    n1.save()

    n2 = Network(name='test', site=s1)
    with pytest.raises(ValidationError):
        n2.full_clean()

    nab1 = NetworkAddressBlock(network=n1, address_block=ab1)
    nab1.full_clean()
    nab1.save()

    nab2 = NetworkAddressBlock(network=n1, address_block=ab1, vlan=0)
    nab2.full_clean()

    nab2 = NetworkAddressBlock(network=n1, address_block=ab1, vlan=1)
    nab2.full_clean()

    nab2 = NetworkAddressBlock(network=n1, address_block=ab1, vlan=-1)
    with pytest.raises(ValidationError):
        nab2.full_clean()

    nab2 = NetworkAddressBlock(network=n1, address_block=ab1, vlan=4097)
    with pytest.raises(ValidationError):
        nab2.full_clean()

    nab2 = NetworkAddressBlock(network=n1,
                               address_block=ab1,
                               vlan=2,
                               vlan_tagged=False)
    nab2.full_clean()

    nab2 = NetworkAddressBlock(network=n1,
                               address_block=ab1,
                               vlan=2,
                               vlan_tagged=True)
    nab2.full_clean()

    nab2 = NetworkAddressBlock(network=n1,
                               address_block=ab1,
                               vlan=0,
                               vlan_tagged=False)
    nab2.full_clean()

    nab2 = NetworkAddressBlock(network=n1,
                               address_block=ab1,
                               vlan=0,
                               vlan_tagged=True)
    with pytest.raises(ValidationError):
        nab2.full_clean()
Пример #8
0
def test_handler():
    s = Site(name='test', description='test site')
    s.full_clean()
    s.save()

    ab = AddressBlock(name='test',
                      site=s,
                      subnet='10.0.0.0',
                      gateway_offset=1,
                      prefix=24)
    ab.full_clean()
    ab.save()

    n = Network(name='test', site=s)
    n.full_clean()
    n.save()

    fbp = FoundationBluePrint(name='fdn_test',
                              description='foundation test bp')
    fbp.foundation_type_list = 'Unknown'
    fbp.full_clean()
    fbp.save()

    sbp = StructureBluePrint(name='str_test', description='structure test bp')
    sbp.full_clean()
    sbp.save()
    sbp.foundation_blueprint_list.add(fbp)

    pxe = PXE(name='testpxe',
              boot_script='boot',
              template='this is for the testing')
    pxe.full_clean()
    pxe.save()

    fdn = Foundation(locator='ftester', blueprint=fbp, site=s)
    fdn.full_clean()
    fdn.save()

    iface = RealNetworkInterface(name='eth0', is_provisioning=True)
    iface.foundation = fdn
    iface.physical_location = 'eth0'
    iface.network = n
    iface.full_clean()
    iface.save()

    str = Structure(hostname='stester', foundation=fdn, blueprint=sbp, site=s)
    str.full_clean()
    str.save()
    str.config_uuid = '8b6663f9-efa8-467c-b973-ac79e66e3c78'
    str.save()

    addr = Address(networked=str,
                   address_block=ab,
                   interface_name='eth0',
                   offset=5,
                   is_primary=True)
    addr.full_clean()
    addr.save()

    assert handler(Request('', None)).http_code == 400
    assert handler(Request('/config/config', None)).http_code == 400
    assert handler(Request('/config/234/', None)).http_code == 400
    assert handler(Request('/config/config/', '127.0.0.1')).http_code == 404
    with pytest.raises(ValueError):
        handler(Request('/config/config/', None))

    assert handler(Request('/config/config/s/1000', None)).http_code == 404
    assert handler(Request('/config/config/f/test', None)).http_code == 404
    assert handler(
        Request('/config/config/c/00000000-0000-4000-0000-000000000000',
                None)).http_code == 404

    assert handler(Request('/config/config/s/asdf', None)).http_code == 400
    assert handler(
        Request('/config/config/c/00000000-0000-4000-0000-00000',
                None)).http_code == 400

    assert handler(Request('/config/config/', '10.0.0.1')).http_code == 404

    resp = handler(Request('/config/config/', '10.0.0.5'))
    assert resp.http_code == 200
    _test_dict(
        resp.data, {
            '_blueprint': 'str_test',
            '_foundation_id': 'ftester',
            '_foundation_locator': 'ftester',
            '_foundation_state': 'planned',
            '_foundation_type': 'Unknown',
            '_fqdn': 'stester',
            '_hostname': 'stester',
            '_structure_config_uuid': '8b6663f9-efa8-467c-b973-ac79e66e3c78'
        })

    resp = handler(Request('/config/config/s/{0}'.format(str.pk), None))
    assert resp.http_code == 200
    _test_dict(
        resp.data, {
            '_blueprint': 'str_test',
            '_foundation_id': 'ftester',
            '_foundation_locator': 'ftester',
            '_foundation_state': 'planned',
            '_foundation_type': 'Unknown',
            '_fqdn': 'stester',
            '_hostname': 'stester',
            '_structure_config_uuid': '8b6663f9-efa8-467c-b973-ac79e66e3c78',
        })

    resp = handler(
        Request('/config/config/c/8b6663f9-efa8-467c-b973-ac79e66e3c78', None))
    assert resp.http_code == 200
    _test_dict(
        resp.data, {
            '_blueprint': 'str_test',
            '_foundation_id': 'ftester',
            '_foundation_locator': 'ftester',
            '_foundation_state': 'planned',
            '_foundation_type': 'Unknown',
            '_fqdn': 'stester',
            '_hostname': 'stester',
            '_structure_config_uuid': '8b6663f9-efa8-467c-b973-ac79e66e3c78',
        })

    resp = handler(Request('/config/config/f/ftester', None))
    assert resp.http_code == 200
    _test_dict(
        resp.data, {
            '_blueprint': 'fdn_test',
            '_foundation_id': 'ftester',
            '_foundation_locator': 'ftester',
            '_foundation_state': 'planned',
            '_foundation_type': 'Unknown',
        })

    resp = handler(Request('/config/pxe_template/', '10.0.0.5'))
    assert resp.http_code == 200
    assert resp.data == ''

    resp = handler(Request('/config/boot_script/', '10.0.0.5'))
    assert resp.http_code == 200
    assert resp.data == ''

    iface.pxe = pxe
    iface.full_clean()
    iface.save()

    resp = handler(Request('/config/pxe_template/', '10.0.0.5'))
    assert resp.http_code == 200
    assert resp.data == 'this is for the testing'

    resp = handler(Request('/config/boot_script/', '10.0.0.5'))
    assert resp.http_code == 200
    assert resp.data == '#!ipxe\n\nboot'
Пример #9
0
def test_addressblock():
  s1 = Site( name='tsite1', description='test site1' )
  s1.full_clean()
  s1.save()

  ab = AddressBlock()
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '0.0.0.0' ) )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '0.0.0.0' ), prefix=24 )
  ab.full_clean()
  ab.save()

  ab = AddressBlock( site=s1, subnet=StrToIp( '0.0.0.0' ), prefix=24 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=24 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=-1 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=33 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '255.0.0.0' ), prefix=1 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=32 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '2.0.0.0' ), prefix=8, gateway_offset=1 )
  ab.full_clean()
  ab.save()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=24, gateway_offset=1 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=32, gateway_offset=0 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=32, gateway_offset=1 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=32, gateway_offset=2 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=31, gateway_offset=0 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=31, gateway_offset=1 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=31, gateway_offset=2 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=30, gateway_offset=0 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=30, gateway_offset=1 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=30, gateway_offset=2 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=30, gateway_offset=3 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=29, gateway_offset=0 )
  with pytest.raises( ValidationError ):
    ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=29, gateway_offset=1 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=29, gateway_offset=2 )
  ab.full_clean()

  ab = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=29, gateway_offset=3 )
  ab.full_clean()

  ab = AddressBlock.objects.get( site=s1, subnet='0.0.0.0', prefix=24 )
  assert ab.gateway_ip is None
  assert ab.dns_servers == [ '192.168.200.1' ]
  assert ab.netmask == '255.255.255.0'
  assert ab.size == 254
  assert ab.offsetBounds == ( 1, 254 )
  assert ab.isIpV4 is True

  ab = AddressBlock.objects.get( site=s1, subnet='2.0.0.0', prefix=8, gateway_offset=1 )
  assert ab.gateway_ip == '2.0.0.1'
  assert ab.dns_servers == [ '192.168.200.1' ]
  assert ab.netmask == '255.0.0.0'
  assert ab.size == 16777214
  assert ab.offsetBounds == ( 1, 16777214 )
  assert ab.isIpV4 is True
Пример #10
0
def test_address():
  s1 = Site( name='tsite1', description='test site1' )
  s1.full_clean()
  s1.save()

  nwd = Networked( site=s1, hostname='test' )
  nwd.full_clean()
  nwd.save()

  ab1 = AddressBlock( site=s1, subnet=StrToIp( '0.0.0.0' ), prefix=24 )
  ab1.full_clean()
  ab1.save()

  ab2 = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=31 )
  ab2.full_clean()
  ab2.save()

  ad = Address()
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad1 = Address( networked=nwd, interface_name='tun0' )
  ad1.full_clean()
  ad1.save()

  ad1.address_block = ab2
  ad1.offset = 5
  ad1.save()

  ad = Address( address_block=ab1 )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab1, offset=1 )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab1, offset=1, networked=nwd )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab1, offset=1, networked=nwd, interface_name='lo' )
  ad.full_clean()
  ad.save()

  ad = Address( address_block=ab1, offset=1, pointer=ad1, networked=nwd, interface_name='vpn0' )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( offset=1, pointer=ad1, networked=nwd, interface_name='vpn0' )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab1, pointer=ad1, networked=nwd, interface_name='vpn0' )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab1, pointer=ad1, networked=nwd, interface_name='vpn0' )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( offset=1, pointer=ad1, networked=nwd, interface_name='vpn0' )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( pointer=ad1, networked=nwd, interface_name='vpn0' )
  ad.full_clean()
  ad.save()

  ba = BaseAddress( address_block=ab1, offset=1 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab1, offset=2 )
  ba.full_clean()
  ba.save()

  ad = Address( address_block=ab1, offset=2, networked=nwd, interface_name='eth0' )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab1, offset=3, networked=nwd, interface_name='lo' )
  ad.full_clean()

  ad = Address( address_block=ab2, offset=0, networked=nwd, interface_name='lo', vlan=0 )
  ad.full_clean()

  ad = Address( address_block=ab2, offset=0, networked=nwd, interface_name='lo', vlan=1 )
  ad.full_clean()

  ad = Address( address_block=ab2, offset=0, networked=nwd, interface_name='lo', vlan=-1 )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab2, offset=0, networked=nwd, interface_name='lo', vlan=4097 )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab2, offset=0, networked=nwd, interface_name='lo', sub_interface=0 )
  ad.full_clean()

  ad = Address( address_block=ab2, offset=0, networked=nwd, interface_name='lo', sub_interface=123 )
  ad.full_clean()

  ad = Address( address_block=ab2, offset=0, networked=nwd, interface_name='lo', sub_interface=-1 )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab2, offset=0, networked=nwd, interface_name='lo', is_primary=True )
  ad.full_clean()
  ad.save()

  ad = Address( address_block=ab2, offset=1, networked=nwd, interface_name='lo', is_primary=True )
  with pytest.raises( ValidationError ):
    ad.full_clean()

  ad = Address( address_block=ab2, offset=1, networked=nwd, interface_name='lo', is_primary=False )
  ad.full_clean()

  ad = Address.objects.get( address_block=ab1, offset=1 )
  assert ad.type == 'Address'
  assert ad.ip_address == '0.0.0.1'
  assert ad.structure is None   # TODO: make a networked with a structure and test that
  assert ad.interface is None   # TODO: dido ^

  ba = BaseAddress.objects.get( address_block=ab1, offset=1 )
  assert ba.type == 'Address'
  assert ba.ip_address == '0.0.0.1'

  ba = BaseAddress.objects.get( address_block=ab1, offset=2 )
  assert ba.type == 'Unknown'
  assert ba.ip_address == '0.0.0.2'

  ad = Address.objects.get( networked=nwd, interface_name='vpn0' )
  assert ad.type == 'Address'
  assert ad.ip_address == '1.0.0.5'

  ba = BaseAddress.objects.get( pk=ad.baseaddress_ptr.pk )
  assert ba.type == 'Address'
  assert ba.ip_address is None
  assert ba.subclass.ip_address == '1.0.0.5'
Пример #11
0
def test_baseaddress():
  s1 = Site( name='tsite1', description='test site1' )
  s1.full_clean()
  s1.save()

  ab1 = AddressBlock( site=s1, subnet=StrToIp( '0.0.0.0' ), prefix=24 )
  ab1.full_clean()
  ab1.save()

  ab2 = AddressBlock( site=s1, subnet=StrToIp( '1.0.0.0' ), prefix=31 )
  ab2.full_clean()
  ab2.save()

  ab3 = AddressBlock( site=s1, subnet=StrToIp( '2.0.0.0' ), prefix=24, gateway_offset=1 )
  ab3.full_clean()
  ab3.save()

  ba1 = BaseAddress()
  ba1.full_clean()
  ba1.save()

  ba = BaseAddress( address_block=ab1 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( offset=0 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( offset=1 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab1, offset=0 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab1, offset=1 )
  ba.full_clean()
  ba.save()

  ba = BaseAddress( address_block=ab1, offset=1 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab1, offset=254 )
  ba.full_clean()

  ba = BaseAddress( address_block=ab1, offset=255 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab2, offset=0 )
  ba.full_clean()

  ba = BaseAddress( address_block=ab2, offset=1 )
  ba.full_clean()

  ba = BaseAddress( address_block=ab2, offset=2 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab2, offset=-1 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab3, offset=0 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab3, offset=1 )
  with pytest.raises( ValidationError ):
    ba.full_clean()

  ba = BaseAddress( address_block=ab3, offset=2 )
  ba.full_clean()

  ba = BaseAddress.objects.get( address_block=ab1, offset=1 )
  assert ba.type == 'Unknown'
  assert ba.ip_address == '0.0.0.1'

  ba = BaseAddress.objects.get( pk=ba1.pk )
  assert ba.type == 'Unknown'
  assert ba.ip_address is None