def test_duplicate_ip_failure(self): '''Tests duplicate address protection''' interface_cfg = NetworkInterfaceConfig('dummy0') interface_cfg.add_v4_ip(ip_address='10.0.241.123', prefix_length=24) with self.assertRaises(DuplicateIPError): interface_cfg.add_v4_ip(ip_address='10.0.241.123', prefix_length=24)
def test_remove_ipv4(self): '''Tests interface deconfiguration of v4 addresses''' interface_cfg = NetworkInterfaceConfig('dummy0') interface_cfg.add_v4_ip(ip_address='10.0.241.123', prefix_length=24) # Now remove the IP interface_cfg.remove_ip('10.0.241.123') # And make sure its gone if interface_cfg.get_ips(): self.fail("dummy configuration returned an IP!")
def test_add_ipv4(self): '''Adds an IPv4 address, and then confirms it via get_ips()''' interface_cfg = NetworkInterfaceConfig('dummy0') interface_cfg.add_v4_ip(ip_address='10.0.241.123', prefix_length=24) # Retrieve the IPs on the interface and make sure its the only one # plus that it is the correct IP ips = interface_cfg.get_ips() self.assertEqual(len(ips), 1, "dummy interface either didn't get the IP or has multiple!") self.assertEqual(ips[0]['ip_address'], '10.0.241.123', "IP assignment failure!") self.assertEqual(ips[0]['family'], AF_INET) self.assertEqual(ips[0]['broadcast'], '10.0.241.255', "IP assignment failure!") self.assertEqual(ips[0]['prefix_length'], 24, "IP assignment failure!")
def test_ipv4_class_e_rejection(self): '''Reject if we try to use a class E address''' interface_cfg = NetworkInterfaceConfig('dummy0') with self.assertRaises(ValueError): interface_cfg.add_v4_ip(ip_address='240.0.0.1', prefix_length=24)
def test_ipv4_link_local_rejection(self): '''Reject if we try to use a link-local address''' interface_cfg = NetworkInterfaceConfig('dummy0') with self.assertRaises(ValueError): interface_cfg.add_v4_ip(ip_address='169.254.1.1', prefix_length=24)
def test_ipv4_multicast_rejection(self): '''Reject if we try to assign a multicast address''' interface_cfg = NetworkInterfaceConfig('dummy0') with self.assertRaises(ValueError): interface_cfg.add_v4_ip(ip_address='224.0.0.1', prefix_length=24)
def test_ipv4_loopback_address_rejection(self): '''Rejects if we try using a loopback address''' interface_cfg = NetworkInterfaceConfig('dummy0') with self.assertRaises(ValueError): interface_cfg.add_v4_ip(ip_address='127.0.1.2', prefix_length=24)
def test_broadcast_address_rejection(self): '''Rejects if we try using a broadcast address of a prefix''' interface_cfg = NetworkInterfaceConfig('dummy0') with self.assertRaises(ValueError): interface_cfg.add_v4_ip(ip_address='192.168.1.191', prefix_length=26)
def test_network_address_rejection(self): '''Prefixes >/24 require a dedicated network address that can't be used as an IP''' interface_cfg = NetworkInterfaceConfig('dummy0') with self.assertRaises(ValueError): interface_cfg.add_v4_ip(ip_address='192.168.1.192', prefix_length=26)
def test_invalid_ip_check(self): '''Makes sure we raise ValueError on if we pass in an invalid IP''' interface_cfg = NetworkInterfaceConfig('dummy0') with self.assertRaises(ValueError): interface_cfg.add_v4_ip(ip_address='ImNotAnIP!', prefix_length=1337)