Example #1
0
 def test_writes_reverse_dns_zone_config_for_small_network(self):
     target_dir = patch_dns_config_path(self)
     domain = factory.make_string()
     ns_host_name = factory.make_name("ns")
     network = IPNetwork("192.168.0.1/26")
     dynamic_network = IPNetwork("192.168.0.1/28")
     dns_zone_config = DNSReverseZoneConfig(
         domain,
         serial=random.randint(1, 100),
         network=network,
         ns_host_name=ns_host_name,
         dynamic_ranges=[
             IPRange(dynamic_network.first, dynamic_network.last)
         ],
     )
     dns_zone_config.write_config()
     reverse_zone_name = "0-26.0.168.192.in-addr.arpa"
     reverse_file_name = "zone.0-26.0.168.192.in-addr.arpa"
     expected_GEN_direct = dns_zone_config.get_GENERATE_directives(
         dynamic_network, domain, DomainInfo(network, reverse_zone_name))
     expected = ContainsAll(["30 IN NS %s." % ns_host_name] + [
         "$GENERATE %s %s IN PTR %s" %
         (iterator_values, reverse_dns, hostname)
         for iterator_values, reverse_dns, hostname in expected_GEN_direct
     ])
     self.assertThat(
         os.path.join(target_dir, reverse_file_name),
         FileContains(matcher=expected),
     )
Example #2
0
 def test_writes_reverse_dns_zone_config(self):
     target_dir = patch_dns_config_path(self)
     domain = factory.make_string()
     ns_host_name = factory.make_name("ns")
     network = IPNetwork('192.168.0.1/22')
     dynamic_network = IPNetwork('192.168.0.1/28')
     dns_zone_config = DNSReverseZoneConfig(domain,
                                            serial=random.randint(1, 100),
                                            network=network,
                                            ns_host_name=ns_host_name,
                                            dynamic_ranges=[
                                                IPRange(
                                                    dynamic_network.first,
                                                    dynamic_network.last)
                                            ])
     dns_zone_config.write_config()
     for sub in range(4):
         reverse_file_name = 'zone.%d.168.192.in-addr.arpa' % sub
         expected_GEN_direct = dns_zone_config.get_GENERATE_directives(
             dynamic_network, domain,
             DomainInfo(IPNetwork('192.168.%d.0/24' % sub),
                        "%d.168.192.in-addr.arpa" % sub))
         expected = ContainsAll(['30 IN NS %s.' % ns_host_name] + [
             '$GENERATE %s %s IN PTR %s' %
             (iterator_values, reverse_dns, hostname) for iterator_values,
             reverse_dns, hostname in expected_GEN_direct
         ])
         self.assertThat(os.path.join(target_dir, reverse_file_name),
                         FileContains(matcher=expected))
Example #3
0
 def test_reverse_config_file_is_world_readable(self):
     patch_dns_config_path(self)
     dns_zone_config = DNSReverseZoneConfig(
         factory.make_string(),
         serial=random.randint(1, 100),
         network=factory.make_ipv4_network())
     dns_zone_config.write_config()
     for tgt in [zi.target_path for zi in dns_zone_config.zone_info]:
         filepath = FilePath(tgt)
         self.assertTrue(filepath.getPermissions().other.read)
Example #4
0
 def test_writes_dns_zone_config_with_NS_record(self):
     target_dir = patch_dns_config_path(self)
     network = factory.make_ipv4_network()
     ns_host_name = factory.make_name("ns")
     dns_zone_config = DNSReverseZoneConfig(factory.make_string(),
                                            serial=random.randint(1, 100),
                                            ns_host_name=ns_host_name,
                                            network=network)
     dns_zone_config.write_config()
     for zone_name in [zi.zone_name for zi in dns_zone_config.zone_info]:
         self.assertThat(
             os.path.join(target_dir, 'zone.%s' % zone_name),
             FileContains(matcher=Contains('30 IN NS %s.' % ns_host_name)))
Example #5
0
 def test_ignores_generate_directives_for_v6_dynamic_ranges(self):
     patch_dns_config_path(self)
     domain = factory.make_string()
     network = IPNetwork("192.168.0.1/22")
     dynamic_network = IPNetwork("%s/64" % factory.make_ipv6_address())
     dns_zone_config = DNSReverseZoneConfig(
         domain,
         serial=random.randint(1, 100),
         network=network,
         dynamic_ranges=[
             IPRange(dynamic_network.first, dynamic_network.last)
         ],
     )
     get_generate_directives = self.patch(dns_zone_config,
                                          "get_GENERATE_directives")
     dns_zone_config.write_config()
     self.assertThat(get_generate_directives, MockNotCalled())