def create_domains(self): private = View(name="private") private.save() public = View(name="public") public.save() d0 = create_fake_zone("dc.mozilla.com", suffix="") s = d0.soa d = Domain(name='vlan.dc.mozilla.com') d.save() d.soa = s d.save() Domain(name='arpa').save() Domain(name='in-addr.arpa').save() # Create Reverse Domains d = create_fake_zone("10.in-addr.arpa", suffix="") d = create_fake_zone("66.in-addr.arpa", suffix="") vlan = Vlan(name='vlan', number=99) vlan.save() site = Site(name='dc') site.save() network = Network(network_str="10.0.0.0/8", ip_type='4') network2 = Network(network_str="66.66.66.0/24", ip_type='4') network2.update_network() network2.save() network.vlan = vlan network.site = site network.update_network() network.save() r = Range( start_str='10.99.99.1', end_str='10.99.99.254', network=network,) r.clean() r.save() r = Range( start_str='66.66.66.1', end_str='66.66.66.254', network=network2,) r.clean() r.save()
def create_domains(self): private = View(name="private") private.save() public = View(name="public") public.save() Domain(name='com').save() Domain(name='mozilla.com').save() Domain(name='dc.mozilla.com').save() Domain(name='vlan.dc.mozilla.com').save() Domain(name='arpa').save() Domain(name='in-addr.arpa').save() Domain(name='10.in-addr.arpa').save() Domain(name='66.in-addr.arpa').save() vlan = Vlan(name='vlan', number=99) vlan.save() site = Site(name='dc') site.save() network = Network(network_str="10.0.0.0/8", ip_type='4') network2 = Network(network_str="66.66.66.0/24", ip_type='4') network2.update_network() network2.save() network.vlan = vlan network.site = site network.update_network() network.save() r = Range( start_str='10.99.99.1', end_str='10.99.99.254', network=network,) r.clean() r.save() r = Range( start_str='66.66.66.1', end_str='66.66.66.254', network=network2,) r.clean() r.save()
class V4RangeTests(TestCase): def setUp(self): self.d = Domain(name="com") self.d.save() Domain(name="arpa").save() Domain(name="in-addr.arpa").save() Domain(name="10.in-addr.arpa").save() self.s = Network(network_str="10.0.0.0/16", ip_type='4') self.s.update_network() self.s.save() self.s1 = Network(network_str="10.2.1.0/24", ip_type='4') self.s1.update_network() self.s1.save() def do_add(self, start_str, end_str, default_domain, network, rtype, ip_type): r = Range(start_str=start_str, end_str=end_str, network=network) r.__repr__() r.save() return r def test1_create(self): start_str = "10.0.0.1" end_str = "10.0.0.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) def test2_create(self): start_str = "10.0.1.1" end_str = "10.0.1.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) def test2_bad_create(self): # start > end start_str = "10.0.0.2" end_str = "10.0.0.1" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test3_bad_create(self): # outside of network start_str = "11.0.0.2" end_str = "10.0.0.88" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test4_bad_create(self): # outside of network start_str = "10.2.0.0" end_str = "10.2.1.88" default_domain = self.d network = self.s1 rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test5_bad_create(self): # duplicate start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test6_bad_create(self): # Partial overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.30" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test7_bad_create(self): # Partial overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.56" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test8_bad_create(self): # Full overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test9_bad_create(self): # Full overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.54" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test10_bad_create(self): # Duplicate add start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.5.2" end_str = "10.0.5.56" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs) def test11_bad_create(self): # More overlap tests start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.60" end_str = "10.0.4.63" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.4" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.54" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test12_bad_create(self): # Update range to something outside of the subnet. start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.60" end_str = "10.0.4.63" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.4" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} r = self.do_add(**kwargs) r.end_str = "160.0.4.60" self.assertRaises(ValidationError, r.clean) def test13_bad_create(self): start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs) def test1_freeip(self): start_str = "10.0.33.1" end_str = "10.0.33.3" default_domain = self.d network = self.s rtype = 's' ip_type = '4' system = create_fake_host(hostname="foo.mozilla.com") kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} r = self.do_add(**kwargs) self.assertEqual(str(r.get_next_ip()), "10.0.33.1") self.assertEqual(str(r.get_next_ip()), "10.0.33.1") StaticReg.objects.create( label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system ) self.assertEqual(str(r.get_next_ip()), "10.0.33.2") StaticReg.objects.create( label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system ) self.assertEqual(str(r.get_next_ip()), "10.0.33.3") StaticReg.objects.create( label="foo", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system ) self.assertEqual(r.get_next_ip(), None)
class V6RangeTests(TestCase): def setUp(self): self.d = Domain(name="com") self.s = Network(network_str="1234:1234:1234::/16", ip_type='6') self.s.update_network() self.s.save() self.s1 = Network(network_str="1234:1134:1234::/32", ip_type='6') self.s1.update_network() self.s1.save() self.s2 = Network(network_str="fff::/4", ip_type='6') self.s2.update_network() self.s2.save() self.s3 = Network(network_str="ffff::/4", ip_type='6') self.s3.update_network() self.s3.save() def do_add(self, start_str, end_str, default_domain, network, rtype, ip_type): r = Range(start_str=start_str, end_str=end_str, network=network) r.__repr__() r.save() return r def test1_create(self): start_str = "1234:1234:1234:1::" end_str = "1234:1234:1234:1234:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) def test2_create(self): start_str = "1234:1234:1234:1234::" end_str = "1234:1234:1235:1234:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) def test3_create(self): start_str = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0" end_str = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe" default_domain = self.d network = self.s3 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} r = self.do_add(**kwargs) self.assertEqual(r.start_upper, 0xffffffffffffffff) self.assertEqual(r.start_lower, 0xfffffffffffffff0) self.assertEqual(r.end_upper, 0xffffffffffffffff) self.assertEqual(r.end_lower, 0xfffffffffffffffe) def test2_bad_create(self): # start > end start_str = "1234:1235:1234:1235::" end_str = "1234:1235:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test3_bad_create(self): # outside of network start_str = "2235:1235:1234:1233::" end_str = "2235:1235:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test4_bad_create(self): # outside of network start_str = "1234:1234:1234:1::" end_str = "1234:1234:1234:1234:1234:1234::" default_domain = self.d network = self.s1 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test5_bad_create(self): # duplicate start_str = "1234:123e:1234:1234::" end_str = "1234:123e:1235:1234:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) start_str = "1234:123e:1234:1234::" end_str = "1234:123e:1235:1234:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test6_bad_create(self): # Partial overlap # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe:1::" end_str = "fe:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.1" # end_str = "10.0.4.30" start_str = "fe:1::" end_str = "fe:1:3::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test7_bad_create(self): # Partial overlap # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe1:1::" end_str = "fe1:1:3::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.1" # end_str = "10.0.4.56" start_str = "fe1:1::" end_str = "fe1:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test8_bad_create(self): # Full overlap # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe2:1::" end_str = "fe2:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.2" # end_str = "10.0.4.55" start_str = "fe2:1:2::" end_str = "fe2:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test9_bad_create(self): # Full overlap # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe3:1:1::" end_str = "fe3:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.2" # end_str = "10.0.4.54" start_str = "fe3:1:2::" end_str = "fe3:1:3::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test10_bad_create(self): # Duplicate add # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe5:1:1::" end_str = "fe5:1:55::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.5.2" # end_str = "10.0.5.56" start_str = "fe5:1:56::" end_str = "fe5:1:57::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs) def test11_bad_create(self): # More overlap tests # start_str = "10.0.4.5" # end_str = "10.0.4.55" start_str = "fe6:4:5::" end_str = "fe6:4:55::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.60" # end_str = "10.0.4.63" start_str = "fe6:4:60::" end_str = "fe6:4:63::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.1" # end_str = "10.0.4.4" start_str = "fe6:4:1::" end_str = "fe6:4:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.2" # end_str = "10.0.4.54" start_str = "fe6:4:2::" end_str = "fe6:4:54::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.assertRaises(ValidationError, self.do_add, **kwargs) def test12_bad_create(self): # Update range to something outside of the subnet. # start_str = "10.0.4.5" # end_str = "10.0.4.55" start_str = "fe7:4:5::" end_str = "fe7:4:55::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.60" # end_str = "10.0.4.63" start_str = "fe7:4:60::" end_str = "fe7:4:63::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) # start_str = "10.0.4.1" # end_str = "10.0.4.4" start_str = "fe7:4:1::" end_str = "fe7:4:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} r = self.do_add(**kwargs) r.end_str = "ffff:ffff:ffff::" self.assertRaises(ValidationError, r.clean) def test13_bad_create(self): # start_str = "10.0.4.5" # end_str = "10.0.4.55" start_str = "fe8:4:5::" end_str = "fe8:4:55::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type} self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs)
class V4RangeTests(TestCase): def setUp(self): self.d = Domain(name="com") self.d.save() Domain(name="arpa").save() Domain(name="in-addr.arpa").save() Domain(name="10.in-addr.arpa").save() self.s = Network(network_str="10.0.0.0/16", ip_type="4") self.s.update_network() self.s.save() self.s1 = Network(network_str="10.2.1.0/24", ip_type="4") self.s1.update_network() self.s1.save() def do_add(self, start_str, end_str, default_domain, network, rtype, ip_type): r = Range(start_str=start_str, end_str=end_str, network=network) r.__repr__() r.save() return r def test1_create(self): start_str = "10.0.0.1" end_str = "10.0.0.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) def test2_create(self): start_str = "10.0.1.1" end_str = "10.0.1.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) def test2_bad_create(self): # start > end start_str = "10.0.0.2" end_str = "10.0.0.1" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test3_bad_create(self): # outside of network start_str = "11.0.0.2" end_str = "10.0.0.88" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test4_bad_create(self): # outside of network start_str = "10.2.0.0" end_str = "10.2.1.88" default_domain = self.d network = self.s1 rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test5_bad_create(self): # duplicate start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test6_bad_create(self): # Partial overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.30" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test7_bad_create(self): # Partial overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.56" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test8_bad_create(self): # Full overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test9_bad_create(self): # Full overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.54" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test10_bad_create(self): # Duplicate add start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.5.2" end_str = "10.0.5.56" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs) def test11_bad_create(self): # More overlap tests start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.60" end_str = "10.0.4.63" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.4" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.54" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.assertRaises(ValidationError, self.do_add, **kwargs) def test12_bad_create(self): # Update range to something outside of the subnet. start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.60" end_str = "10.0.4.63" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.4" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } r = self.do_add(**kwargs) r.end_str = "160.0.4.60" self.assertRaises(ValidationError, r.clean) def test13_bad_create(self): start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = "s" ip_type = "4" kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs) def test1_freeip(self): start_str = "10.0.33.1" end_str = "10.0.33.3" default_domain = self.d network = self.s rtype = "s" ip_type = "4" system = System() kwargs = { "start_str": start_str, "end_str": end_str, "default_domain": default_domain, "network": network, "rtype": rtype, "ip_type": ip_type, } r = self.do_add(**kwargs) self.assertEqual(str(r.get_next_ip()), "10.0.33.1") self.assertEqual(str(r.get_next_ip()), "10.0.33.1") s = StaticInterface( label="foo", domain=self.d, ip_type="4", ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00" ) s.clean() s.save() self.assertEqual(str(r.get_next_ip()), "10.0.33.2") s = StaticInterface( label="foo", domain=self.d, ip_type="4", ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00" ) s.clean() s.save() self.assertEqual(str(r.get_next_ip()), "10.0.33.3") s = StaticInterface( label="foo", domain=self.d, ip_type="4", ip_str=str(r.get_next_ip()), system=system, mac="00:00:00:00:00:00" ) s.clean() s.save() self.assertEqual(r.get_next_ip(), None)
class V6RangeTests(TestCase): def setUp(self): self.d = Domain(name="com") self.s = Network(network_str="1234:1234:1234::/16", ip_type='6') self.s.update_network() self.s.save() self.s1 = Network(network_str="1234:1134:1234::/32", ip_type='6') self.s1.update_network() self.s1.save() self.s2 = Network(network_str="fff::/4", ip_type='6') self.s2.update_network() self.s2.save() self.s3 = Network(network_str="ffff::/4", ip_type='6') self.s3.update_network() self.s3.save() def do_add(self, start_str, end_str, default_domain, network, rtype, ip_type): r = Range(start_str=start_str, end_str=end_str, network=network) r.__repr__() r.save() return r def test1_create(self): start_str = "1234:1234:1234:1::" end_str = "1234:1234:1234:1234:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) def test2_create(self): start_str = "1234:1234:1234:1234::" end_str = "1234:1234:1235:1234:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) def test3_create(self): start_str = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0" end_str = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe" default_domain = self.d network = self.s3 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } r = self.do_add(**kwargs) self.assertEqual(r.start_upper, 0xffffffffffffffff) self.assertEqual(r.start_lower, 0xfffffffffffffff0) self.assertEqual(r.end_upper, 0xffffffffffffffff) self.assertEqual(r.end_lower, 0xfffffffffffffffe) def test2_bad_create(self): # start > end start_str = "1234:1235:1234:1235::" end_str = "1234:1235:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test3_bad_create(self): # outside of network start_str = "2235:1235:1234:1233::" end_str = "2235:1235:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test4_bad_create(self): # outside of network start_str = "1234:1234:1234:1::" end_str = "1234:1234:1234:1234:1234:1234::" default_domain = self.d network = self.s1 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test5_bad_create(self): # duplicate start_str = "1234:123e:1234:1234::" end_str = "1234:123e:1235:1234:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "1234:123e:1234:1234::" end_str = "1234:123e:1235:1234:1234:1234::" default_domain = self.d network = self.s rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test6_bad_create(self): # Partial overlap # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe:1::" end_str = "fe:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.1" # end_str = "10.0.4.30" start_str = "fe:1::" end_str = "fe:1:3::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test7_bad_create(self): # Partial overlap # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe1:1::" end_str = "fe1:1:3::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.1" # end_str = "10.0.4.56" start_str = "fe1:1::" end_str = "fe1:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test8_bad_create(self): # Full overlap # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe2:1::" end_str = "fe2:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.2" # end_str = "10.0.4.55" start_str = "fe2:1:2::" end_str = "fe2:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test9_bad_create(self): # Full overlap # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe3:1:1::" end_str = "fe3:1:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.2" # end_str = "10.0.4.54" start_str = "fe3:1:2::" end_str = "fe3:1:3::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test10_bad_create(self): # Duplicate add # start_str = "10.0.4.1" # end_str = "10.0.4.55" start_str = "fe5:1:1::" end_str = "fe5:1:55::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.5.2" # end_str = "10.0.5.56" start_str = "fe5:1:56::" end_str = "fe5:1:57::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs) def test11_bad_create(self): # More overlap tests # start_str = "10.0.4.5" # end_str = "10.0.4.55" start_str = "fe6:4:5::" end_str = "fe6:4:55::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.60" # end_str = "10.0.4.63" start_str = "fe6:4:60::" end_str = "fe6:4:63::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.1" # end_str = "10.0.4.4" start_str = "fe6:4:1::" end_str = "fe6:4:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.2" # end_str = "10.0.4.54" start_str = "fe6:4:2::" end_str = "fe6:4:54::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test12_bad_create(self): # Update range to something outside of the subnet. # start_str = "10.0.4.5" # end_str = "10.0.4.55" start_str = "fe7:4:5::" end_str = "fe7:4:55::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.60" # end_str = "10.0.4.63" start_str = "fe7:4:60::" end_str = "fe7:4:63::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) # start_str = "10.0.4.1" # end_str = "10.0.4.4" start_str = "fe7:4:1::" end_str = "fe7:4:4::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } r = self.do_add(**kwargs) r.end_str = "ffff:ffff:ffff::" self.assertRaises(ValidationError, r.clean) def test13_bad_create(self): # start_str = "10.0.4.5" # end_str = "10.0.4.55" start_str = "fe8:4:5::" end_str = "fe8:4:55::" default_domain = self.d network = self.s2 rtype = 's' ip_type = '6' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs)
class V4RangeTests(TestCase): def setUp(self): self.d, _ = Domain.objects.get_or_create(name="com") Domain.objects.get_or_create(name="arpa") Domain.objects.get_or_create(name="in-addr.arpa") Domain.objects.get_or_create(name="10.in-addr.arpa") self.s = Network(network_str="10.0.0.0/16", ip_type='4') self.s.update_network() self.s.save() self.s1 = Network(network_str="10.2.1.0/24", ip_type='4') self.s1.update_network() self.s1.save() def do_add(self, start_str, end_str, default_domain, network, rtype, ip_type): r = Range(start_str=start_str, end_str=end_str, network=network) r.__repr__() r.save() return r def test1_create(self): start_str = "10.0.0.1" end_str = "10.0.0.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) def test2_create(self): start_str = "10.0.1.1" end_str = "10.0.1.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) def test2_bad_create(self): # start > end start_str = "10.0.0.2" end_str = "10.0.0.1" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test3_bad_create(self): # outside of network start_str = "11.0.0.2" end_str = "10.0.0.88" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test4_bad_create(self): # outside of network start_str = "10.2.0.0" end_str = "10.2.1.88" default_domain = self.d network = self.s1 rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test5_bad_create(self): # duplicate start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test6_bad_create(self): # Partial overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.30" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test7_bad_create(self): # Partial overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.56" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test8_bad_create(self): # Full overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test9_bad_create(self): # Full overlap start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.54" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test10_bad_create(self): # Duplicate add start_str = "10.0.4.1" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.5.2" end_str = "10.0.5.56" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs) def test11_bad_create(self): # More overlap tests start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.60" end_str = "10.0.4.63" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.4" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.2" end_str = "10.0.4.54" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.assertRaises(ValidationError, self.do_add, **kwargs) def test12_bad_create(self): # Update range to something outside of the subnet. start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.60" end_str = "10.0.4.63" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) start_str = "10.0.4.1" end_str = "10.0.4.4" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } r = self.do_add(**kwargs) r.end_str = "160.0.4.60" self.assertRaises(ValidationError, r.clean) def test13_bad_create(self): start_str = "10.0.4.5" end_str = "10.0.4.55" default_domain = self.d network = self.s rtype = 's' ip_type = '4' kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } self.do_add(**kwargs) self.assertRaises(ValidationError, self.do_add, **kwargs) def test1_freeip(self): start_str = "10.0.33.1" end_str = "10.0.33.3" default_domain = self.d network = self.s rtype = 's' ip_type = '4' system = create_fake_host(hostname="fooasdf.mozilla.com") kwargs = { 'start_str': start_str, 'end_str': end_str, 'default_domain': default_domain, 'network': network, 'rtype': rtype, 'ip_type': ip_type } r = self.do_add(**kwargs) self.assertEqual(str(r.get_next_ip()), "10.0.33.1") self.assertEqual(str(r.get_next_ip()), "10.0.33.1") StaticReg.objects.create(label="foobar", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system) self.assertEqual(str(r.get_next_ip()), "10.0.33.2") StaticReg.objects.create(label="foobar", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system) self.assertEqual(str(r.get_next_ip()), "10.0.33.3") StaticReg.objects.create(label="foobar", domain=self.d, ip_type='4', ip_str=str(r.get_next_ip()), system=system) self.assertEqual(r.get_next_ip(), None)