Example #1
0
 def _test_is(self, method, yes, no):
     for value in yes:
         i = IP(value)
         self.assertTrue(getattr(i, method)())
     for value in no:
         i = IP(value)
         self.assertFalse(getattr(i, method)())
Example #2
0
 def test_reverse_dns(self):
     expected = [
         ('127.0.0.1', '1.0.0.127.in-addr.arpa'),
         ('0.0.0.0', '0.0.0.0.in-addr.arpa'),
         ('255.255.255.255', '255.255.255.255.in-addr.arpa'),
         ('1.2.3.4', '4.3.2.1.in-addr.arpa'),
         ('::', '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa'),
         ('2001:db8::', '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa'),
         ('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.ip6.arpa'),
     ]
     for value, output in expected:
         i = IP(value)
         self.assertEqual(i.reverse_dns(), output)
Example #3
0
    def test_reverse_dns_pieces(self):
        # This test is purposely short because test_reverse_dns() implicitly tests this.
        expected = [
            ('1.2.3.4', '4.3.2.1'),
            ('123.234.56.67', '67.56.234.123'),
            ('2001:db8::', '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2'),
            ('1234:5678:9abc:def0::', '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.e.d.c.b.a.9.8.7.6.5.4.3.2.1'),
        ]
        for value, output in expected:
            i = IP(value)
            self.assertEqual(i.reverse_dns_pieces(), output)

        for value, output in expected:
            i = IP(value)
            self.assertEqual(i.reverse_dns_pieces('suffix'), output + '.suffix')
Example #4
0
 def test_reverse_dns(self):
     expected = [
         ('127.0.0.1', '1.0.0.127.in-addr.arpa'),
         ('0.0.0.0', '0.0.0.0.in-addr.arpa'),
         ('255.255.255.255', '255.255.255.255.in-addr.arpa'),
         ('1.2.3.4', '4.3.2.1.in-addr.arpa'),
         ('::',
          '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa'
          ),
         ('2001:db8::',
          '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa'
          ),
         ('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
          'f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.ip6.arpa'
          ),
     ]
     for value, output in expected:
         i = IP(value)
         self.assertEqual(i.reverse_dns(), output)
Example #5
0
    def test_hex(self):
        expected = [
            ('1.2.3.4', '0x01020304'),
            ('0.0.0.0', '0x00000000'),
            ('255.255.255.255', '0xffffffff'),
            ('::', '0x00000000000000000000000000000000'),
            ('2001:db8::', '0x20010db8000000000000000000000000'),
        ]

        for value, output in expected:
            self.assertEqual(hex(IP(value)), output)
Example #6
0
    def test_sub(self):
        sub_e = [
            ('1.2.3.4', 1, '1.2.3.3'),
            ('255.255.255.255', 255, '255.255.255.0'),
            ('1.2.3.0', IPv4('0.0.0.255'), '1.2.2.1'),
            ('1.2.3.0', -1, '1.2.3.1'),
            ('::1', 1, '::'),
            ('1:2:3:4:5:6:7:8', IPv6('::5:6:7:8'), '1:2:3:4::'),
            ('2001:db8::', -1, '2001:db8::1'),
        ]
        for value, diff, output in sub_e:
            i = IP(value)
            p = i - diff
            self.assertEqual(p, IP(output))

        invalid = [
            ('0.0.0.0', 1),
            ('255.255.255.255', -1),
            ('::', 1),
            ('ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', -1),
        ]
        for value, diff in invalid:
            i = IP(value)
            self.assertRaises(IPValidationError, lambda: i - diff)
Example #7
0
    def test_netmask(self):
        self.assertEqual(IPv4('1.2.3.4/32').netmask, Mask4(0xffffffff))
        self.assertEqual(IPv4('1.2.3.4/24').netmask, Mask4(0xffffff00))
        self.assertEqual(IPv4('1.2.3.4/0').netmask, Mask4(0))
        self.assertEqual(
            IPv4('1.2.3.4/24').netmask,
            IP('1.2.3.4', '24').netmask)

        self.assertEqual(IPv4('1.2.3.4/32').netmask_int, 0xffffffff)
        self.assertEqual(
            IPv4('1.2.3.4/32').netmask_int,
            IP('1.2.3.4', '32').netmask_int)
        self.assertEqual(IPv4('1.2.3.4/24').netmask_int, 0xffffff00)
        self.assertEqual(IPv4('1.2.3.4/0').netmask_int, 0)

        self.assertEqual(
            IPv6('1:2:3:4:5:6:7:8/128').netmask,
            Mask6(0xffffffffffffffffffffffffffffffff))
        self.assertEqual(
            IPv6('1:2:3:4:5:6:7:8/128').netmask,
            IP('1:2:3:4:5:6:7:8', '128').netmask)
        self.assertEqual(
            IPv6('1:2:3:4:5:6:7:8/64').netmask,
            Mask6(0xffffffffffffffff0000000000000000))
        self.assertEqual(IPv6('1:2:3:4:5:6:7:8/0').netmask, Mask6(0))

        self.assertEqual(
            IPv6('1:2:3:4:5:6:7:8/128').netmask_int,
            0xffffffffffffffffffffffffffffffff)
        self.assertEqual(
            IPv6('1:2:3:4:5:6:7:8/64').netmask_int,
            0xffffffffffffffff0000000000000000)
        self.assertEqual(
            IPv6('1:2:3:4:5:6:7:8/64').netmask_int,
            IP('1:2:3:4:5:6:7:8', '64').netmask_int)
        self.assertEqual(IPv6('1:2:3:4:5:6:7:8/0').netmask_int, 0)
Example #8
0
    def test_reverse_dns_pieces(self):
        # This test is purposely short because test_reverse_dns() implicitly tests this.
        expected = [
            ('1.2.3.4', '4.3.2.1'),
            ('123.234.56.67', '67.56.234.123'),
            ('2001:db8::',
             '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2'
             ),
            ('1234:5678:9abc:def0::',
             '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.e.d.c.b.a.9.8.7.6.5.4.3.2.1'
             ),
        ]
        for value, output in expected:
            i = IP(value)
            self.assertEqual(i.reverse_dns_pieces(), output)

        for value, output in expected:
            i = IP(value)
            self.assertEqual(i.reverse_dns_pieces('suffix'),
                             output + '.suffix')
Example #9
0
 def test_pickle(self):
     for ip in valid_ips:
         self.assertEqual(IP(ip), pickle.loads(pickle.dumps(IP(ip))))
     valid_cidrs = valid_v4_cidrs + valid_v6_cidrs
     for ip in valid_cidrs:
         self.assertEqual(IP(ip), pickle.loads(pickle.dumps(IP(ip))))
Example #10
0
 def test_forward_dns_rr_type(self):
     self.assertEqual(IP('::1').forward_dns_rr_type, 'AAAA')
     self.assertEqual(IP('127.0.0.1').forward_dns_rr_type, 'A')