Example #1
0
    def test_import_zone_axfr(self):
        payload = {}
        payload['zone'] = """
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58571
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1680
;; QUESTION SECTION:
;powerdns.com.                  IN      SOA

;; ANSWER SECTION:
powerdns.com.           86400   IN      SOA     powerdnssec1.ds9a.nl. ahu.ds9a.nl. 1343746984 10800 3600 604800 10800
powerdns.com.           3600    IN      NS      powerdnssec2.ds9a.nl.
powerdns.com.           3600    IN      AAAA    2001:888:2000:1d::2
powerdns.com.           86400   IN      A       82.94.213.34
powerdns.com.           3600    IN      MX      0 xs.powerdns.com.
powerdns.com.           3600    IN      NS      powerdnssec1.ds9a.nl.
powerdns.com.           86400   IN      SOA     powerdnssec1.ds9a.nl. ahu.ds9a.nl. 1343746984 10800 3600 604800 10800
"""
        payload['name'] = 'powerdns.com.'
        payload['kind'] = 'Master'
        payload['nameservers'] = []
        payload['soa_edit_api'] = ''  # turn off so exact SOA comparison works.
        r = self.session.post(
            self.url("/api/v1/servers/localhost/zones"),
            data=json.dumps(payload),
            headers={'content-type': 'application/json'})
        self.assert_success_json(r)
        data = r.json()
        self.assertIn('name', data)

        expected = {
            'NS': [
                {'content': 'powerdnssec1.ds9a.nl.'},
                {'content': 'powerdnssec2.ds9a.nl.'},
            ],
            'SOA': [
                {'content': 'powerdnssec1.ds9a.nl. ahu.ds9a.nl. 1343746984 10800 3600 604800 10800'},
            ],
            'MX': [
                {'content': '0 xs.powerdns.com.'},
            ],
            'A': [
                {'content': '82.94.213.34', 'name': 'powerdns.com.'},
            ],
            'AAAA': [
                {'content': '2001:888:2000:1d::2', 'name': 'powerdns.com.'},
            ],
        }

        eq_zone_rrsets(data['rrsets'], expected)

        # noDot check
        dbrecs = get_db_records(payload['name'], 'NS')
        self.assertEqual(dbrecs[0]['content'], 'powerdnssec2.ds9a.nl')
Example #2
0
 def test_create_zone_with_symbols(self):
     name, payload, data = self.create_zone(name='foo/bar.'+unique_zone_name())
     name = payload['name']
     expected_id = name.replace('/', '=2F')
     for k in ('id', 'url', 'name', 'masters', 'kind', 'last_check', 'notified_serial', 'serial'):
         self.assertIn(k, data)
         if k in payload:
             self.assertEquals(data[k], payload[k])
     self.assertEquals(data['id'], expected_id)
     dbrecs = get_db_records(name, 'SOA')
     self.assertEqual(dbrecs[0]['name'], name.rstrip('.'))
Example #3
0
 def test_create_zone_with_custom_soa(self):
     name = unique_zone_name()
     content = u"ns1.example.net. [email protected]. 10 10800 3600 604800 3600"
     rrset = {
         "name": name,
         "type": "soa",  # test uppercasing of type, too.
         "ttl": 3600,
         "records": [{
             "content": content,
             "disabled": False,
         }],
     }
     name, payload, data = self.create_zone(name=name, rrsets=[rrset], soa_edit_api='')
     self.assertEquals(get_rrset(data, name, 'SOA')['records'], rrset['records'])
     dbrecs = get_db_records(name, 'SOA')
     self.assertEqual(dbrecs[0]['content'], content.replace('. ', ' '))
Example #4
0
 def test_create_zone_with_custom_soa(self):
     name = unique_zone_name()
     records = [
         {
             u"name": name,
             u"type": u"soa",  # test uppercasing of type, too.
             u"ttl": 3600,
             u"content": u"ns1.example.net. [email protected]. 10 10800 3600 604800 3600",
             u"disabled": False
         }
     ]
     payload, data = self.create_zone(name=name, records=records, soa_edit_api='')
     records[0]['type'] = records[0]['type'].upper()
     self.assertEquals([r for r in data['records'] if r['type'] == records[0]['type']], records)
     dbrecs = get_db_records(name, records[0]['type'])
     self.assertEqual(dbrecs[0]['content'], records[0]['content'].replace('. ', ' '))
Example #5
0
 def test_create_zone(self):
     # soa_edit_api has a default, override with empty for this test
     name, payload, data = self.create_zone(serial=22, soa_edit_api='')
     for k in ('id', 'url', 'name', 'masters', 'kind', 'last_check', 'notified_serial', 'serial', 'soa_edit_api', 'soa_edit', 'account'):
         self.assertIn(k, data)
         if k in payload:
             self.assertEquals(data[k], payload[k])
     # validate generated SOA
     expected_soa = "a.misconfigured.powerdns.server. hostmaster." + name + " " + \
                    str(payload['serial']) + " 10800 3600 604800 3600"
     self.assertEquals(
         get_first_rec(data, name, 'SOA')['content'],
         expected_soa
     )
     # Because we had confusion about dots, check that the DB is without dots.
     dbrecs = get_db_records(name, 'SOA')
     self.assertEqual(dbrecs[0]['content'], expected_soa.replace('. ', ' '))