Exemple #1
0
 def test_search_rr_exact_zone(self):
     name = unique_zone_name()
     self.create_zone(name=name)
     r = self.session.get(self.url("/servers/localhost/search-data?q=" + name))
     self.assert_success_json(r)
     print r.json()
     self.assertEquals(r.json(), [{u'object_type': u'zone', u'name': name, u'zone_id': name+'.'}])
Exemple #2
0
 def test_RenameAuthZone(self):
     name = unique_zone_name()+'.'
     payload = {
         'name': name,
         'kind': 'Native',
         'recursion_desired': False
     }
     r = self.session.post(
         self.url("/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     # now rename it
     payload = {
         'name': 'renamed-'+name,
         'kind': 'Native',
         'recursion_desired': False
     }
     r = self.session.put(
         self.url("/servers/localhost/zones/" + name),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     data = r.json()
     for k in payload.keys():
         self.assertEquals(data[k], payload[k])
Exemple #3
0
 def test_SearchRRExactZone(self):
     name = unique_zone_name() + '.'
     self.create_zone(name=name, kind='Native')
     r = self.session.get(self.url("/servers/localhost/search-data?q=" + name))
     self.assertSuccessJson(r)
     print r.json()
     self.assertEquals(r.json(), [{u'type': u'zone', u'name': name, u'zone_id': name}])
Exemple #4
0
 def test_create_auth_zone_with_symbols(self):
     payload, data = self.create_zone(name='foo/bar.'+unique_zone_name(), kind='Native')
     # return values are normalized
     payload['name'] += '.'
     expected_id = (payload['name'].replace('/', '=2F'))
     for k in payload.keys():
         self.assertEquals(data[k], payload[k])
     self.assertEquals(data['id'], expected_id)
Exemple #5
0
 def test_GetZoneWithSymbols(self):
     payload, data = self.create_zone(name='foo/bar.'+unique_zone_name())
     name = payload['name']
     zone_id = (name.replace('/', '=47')) + '.'
     r = self.session.get(self.url("/servers/localhost/zones/" + zone_id))
     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])
Exemple #6
0
 def test_create_zone_with_symbols(self):
     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)
Exemple #7
0
 def test_get_zone_with_symbols(self):
     name, payload, data = self.create_zone(name='foo/bar.'+unique_zone_name())
     name = payload['name']
     zone_id = (name.replace('/', '=2F'))
     r = self.session.get(self.url("/api/v1/servers/localhost/zones/" + zone_id))
     data = r.json()
     for k in ('id', 'url', 'name', 'masters', 'kind', 'last_check', 'notified_serial', 'serial', 'dnssec'):
         self.assertIn(k, data)
         if k in payload:
             self.assertEquals(data[k], payload[k])
Exemple #8
0
 def test_get_zone_with_symbols(self):
     payload, data = self.create_zone(name='foo/bar.'+unique_zone_name())
     name = payload['name']
     zone_id = (name.replace('/', '=2F')) + '.'
     r = self.session.get(self.url("/servers/localhost/zones/" + zone_id))
     data = r.json()
     for k in ('id', 'url', 'name', 'masters', 'kind', 'last_check', 'notified_serial', 'serial', 'dnssec'):
         self.assertIn(k, data)
         if k in payload:
             self.assertEquals(data[k], payload[k])
Exemple #9
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('.'))
Exemple #10
0
 def test_create_zone_with_comments(self):
     name = unique_zone_name()
     comments = [{
         'name': name,
         'type': 'SOA',
         'account': 'test1',
         'content': 'blah blah',
         'modified_at': 11112,
     }]
     payload, data = self.create_zone(name=name, comments=comments)
     # check our comment has appeared
     self.assertEquals(data['comments'], comments)
Exemple #11
0
 def test_create_zone_with_custom_soa(self):
     name = unique_zone_name()
     records = [
         {
             "name": name,
             "type": "SOA",
             "ttl": 3600,
             "content": "ns1.example.net [email protected] 10 10800 3600 604800 3600",
             "disabled": False
         }
     ]
     payload, data = self.create_zone(name=name, records=records)
     self.assertEquals([r for r in data['records'] if r['type'] == records[0]['type']], records)
Exemple #12
0
 def test_create_auth_zone_no_name(self):
     name = unique_zone_name()
     payload = {
         'name': '',
         'kind': 'Native',
     }
     print payload
     r = self.session.post(
         self.url("/api/v1/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertEquals(r.status_code, 422)
     self.assertIn('is not canonical', r.json()['error'])
Exemple #13
0
 def test_create_zone_with_comments(self):
     name = unique_zone_name()
     comments = [{
         'name': name,
         'type': 'soa',  # test uppercasing of type, too.
         'account': 'test1',
         'content': 'blah blah',
         'modified_at': 11112,
     }]
     payload, data = self.create_zone(name=name, comments=comments)
     comments[0]['type'] = comments[0]['type'].upper()
     # check our comment has appeared
     self.assertEquals(data['comments'], comments)
Exemple #14
0
 def test_create_zone_with_comments(self):
     name = unique_zone_name()
     rrset = {
         "name": name,
         "type": "soa",  # test uppercasing of type, too.
         "comments": [{
             "account": "test1",
             "content": "blah blah",
             "modified_at": 11112,
         }],
     }
     name, payload, data = self.create_zone(name=name, rrsets=[rrset])
     # check our comment has appeared
     self.assertEquals(get_rrset(data, name, 'SOA')['comments'], rrset['comments'])
Exemple #15
0
 def test_create_zone_with_nameservers_non_string(self):
     # ensure we don't crash
     name = unique_zone_name()
     payload = {
         'name': name,
         'kind': 'Native',
         'nameservers': [{'a': 'ns1.example.com'}]  # invalid
     }
     print payload
     r = self.session.post(
         self.url("/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertEquals(r.status_code, 422)
Exemple #16
0
 def test_create_zone_with_comments(self):
     name = unique_zone_name()
     comments = [
         {
             'name': name,
             'type': 'SOA',
             'account': 'test1',
             'content': 'blah blah',
             'modified_at': 11112,
         }
     ]
     payload, data = self.create_zone(name=name, comments=comments)
     # check our comment has appeared
     self.assertEquals(data['comments'], comments)
Exemple #17
0
 def test_create_zone_with_records(self):
     name = unique_zone_name()
     records = [
         {
             "name": name,
             "type": "A",
             "ttl": 3600,
             "content": "4.3.2.1",
             "disabled": False
         }
     ]
     payload, data = self.create_zone(name=name, records=records)
     # check our record has appeared
     self.assertEquals([r for r in data['records'] if r['type'] == records[0]['type']], records)
Exemple #18
0
 def test_create_zone_with_wildcard_records(self):
     name = unique_zone_name()
     rrset = {
         "name": "*."+name,
         "type": "A",
         "ttl": 3600,
         "records": [{
             "content": "4.3.2.1",
             "disabled": False,
         }],
     }
     name, payload, data = self.create_zone(name=name, rrsets=[rrset])
     # check our record has appeared
     self.assertEquals(get_rrset(data, rrset['name'], 'A')['records'], rrset['records'])
Exemple #19
0
 def test_create_zone_restricted_chars(self):
     name = 'test:' + unique_zone_name()  # : isn't good as a name.
     payload = {
         'name': name,
         'kind': 'Native',
         'nameservers': ['ns1.example.com']
     }
     print payload
     r = self.session.post(
         self.url("/api/v1/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertEquals(r.status_code, 422)
     self.assertIn('contains unsupported characters', r.json()['error'])
Exemple #20
0
 def test_create_zone_double_dot(self):
     name = 'test..' + unique_zone_name()
     payload = {
         'name': name,
         'kind': 'Native',
         'nameservers': ['ns1.example.com.']
     }
     print payload
     r = self.session.post(
         self.url("/api/v1/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertEquals(r.status_code, 422)
     self.assertIn('Unable to parse DNS Name', r.json()['error'])
Exemple #21
0
 def test_create_zone_with_records(self):
     name = unique_zone_name()
     records = [{
         "name": name,
         "type": "A",
         "ttl": 3600,
         "content": "4.3.2.1",
         "disabled": False
     }]
     payload, data = self.create_zone(name=name, records=records)
     # check our record has appeared
     self.assertEquals(
         [r for r in data['records'] if r['type'] == records[0]['type']],
         records)
Exemple #22
0
 def create_zone(self, name=None, nameservers=None):
     if name is None:
         name = unique_zone_name()
     payload = {
         'name': name,
         'kind': 'Native',
         'nameservers': ['ns1.example.com', 'ns2.example.com']
     }
     if nameservers is not None:
         payload['nameservers'] = nameservers
     r = self.session.post(self.url("/servers/localhost/zones"),
                           data=json.dumps(payload),
                           headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     return (payload, r.json())
Exemple #23
0
 def test_CreateAuthZone(self):
     payload = {
         'name': unique_zone_name(),
         'kind': 'Native',
         'recursion_desired': False
     }
     r = self.session.post(self.url("/servers/localhost/zones"),
                           data=json.dumps(payload),
                           headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     data = r.json()
     # return values are normalized
     payload['name'] += '.'
     for k in payload.keys():
         self.assertEquals(data[k], payload[k])
Exemple #24
0
 def setUp(self):
     super(Cryptokeys, self).setUp()
     self.keyid = 0
     self.zone = unique_zone_name()
     self.zone_nodot = self.zone[:-1]
     payload = {
         'name': self.zone,
         'kind': 'Native',
         'nameservers': ['ns1.example.com.', 'ns2.example.com.']
     }
     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)
     self.assertEqual(r.status_code, 201)
Exemple #25
0
 def test_create_zone_with_comments(self):
     name = unique_zone_name()
     comments = [
         {
             'name': name,
             'type': 'soa',  # test uppercasing of type, too.
             'account': 'test1',
             'content': 'blah blah',
             'modified_at': 11112,
         }
     ]
     payload, data = self.create_zone(name=name, comments=comments)
     comments[0]['type'] = comments[0]['type'].upper()
     # check our comment has appeared
     self.assertEquals(data['comments'], comments)
Exemple #26
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('. ', ' '))
Exemple #27
0
 def create_zone(self, name=None, kind=None, rd=False, servers=None):
     if name is None:
         name = unique_zone_name()
     if servers is None:
         servers = []
     payload = {
         'name': name,
         'kind': kind,
         'servers': servers,
         'recursion_desired': rd
     }
     r = self.session.post(self.url("/servers/localhost/zones"),
                           data=json.dumps(payload),
                           headers={'content-type': 'application/json'})
     self.assert_success_json(r)
     return payload, r.json()
Exemple #28
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('. ', ' '))
Exemple #29
0
 def setUp(self):
     super(Cryptokeys, self).setUp()
     self.keyid = 0
     self.zone = unique_zone_name()
     self.zone_nodot = self.zone[:-1]
     payload = {
         'name': self.zone,
         'kind': 'Native',
         'nameservers': ['ns1.example.com.', 'ns2.example.com.']
     }
     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)
     self.assertEquals(r.status_code, 201)
Exemple #30
0
 def test_CreateAuthZone(self):
     payload = {
         'name': unique_zone_name(),
         'kind': 'Native',
         'recursion_desired': False
     }
     r = self.session.post(
         self.url("/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     data = r.json()
     # return values are normalized
     payload['name'] += '.'
     for k in payload.keys():
         self.assertEquals(data[k], payload[k])
Exemple #31
0
 def create_zone(self, name=None, nameservers=None):
     if name is None:
         name = unique_zone_name()
     payload = {
         'name': name,
         'kind': 'Native',
         'nameservers': ['ns1.example.com', 'ns2.example.com']
     }
     if nameservers is not None:
         payload['nameservers'] = nameservers
     r = self.session.post(
         self.url("/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     return (payload, r.json())
Exemple #32
0
 def create_zone(self, name=None, **kwargs):
     if name is None:
         name = unique_zone_name()
     payload = {
         'name': name,
         'kind': 'Native',
         'nameservers': ['ns1.example.com', 'ns2.example.com']
     }
     for k, v in kwargs.items():
         payload[k] = v
     print payload
     r = self.session.post(
         self.url("/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     return (payload, r.json())
Exemple #33
0
 def create_zone(self, name=None, kind=None, rd=False, servers=None):
     if name is None:
         name = unique_zone_name()
     if servers is None:
         servers = []
     payload = {
         'name': name,
         'kind': kind,
         'servers': servers,
         'recursion_desired': rd
     }
     r = self.session.post(
         self.url("/servers/localhost/zones"),
         data=json.dumps(payload),
         headers={'content-type': 'application/json'})
     self.assert_success_json(r)
     return payload, r.json()
Exemple #34
0
 def test_search_rr_exact_zone(self):
     name = unique_zone_name()
     self.create_zone(name=name, serial=22, soa_edit_api='')
     r = self.session.get(self.url("/api/v1/servers/localhost/search-data?q=" + name.rstrip('.')))
     self.assert_success_json(r)
     print r.json()
     self.assertEquals(r.json(), [
         {u'object_type': u'zone', u'name': name, u'zone_id': name},
         {u'content': u'a.misconfigured.powerdns.server. hostmaster.'+name+' 22 10800 3600 604800 3600',
          u'zone_id': name, u'zone': name, u'object_type': u'record', u'disabled': False,
          u'ttl': 3600, u'type': u'SOA', u'name': name},
         {u'content': u'ns1.example.com.',
          u'zone_id': name, u'zone': name, u'object_type': u'record', u'disabled': False,
          u'ttl': 3600, u'type': u'NS', u'name': name},
         {u'content': u'ns2.example.com.',
          u'zone_id': name, u'zone': name, u'object_type': u'record', u'disabled': False,
          u'ttl': 3600, u'type': u'NS', u'name': name},
     ])
Exemple #35
0
 def create_zone(self, name=None, **kwargs):
     if name is None:
         name = unique_zone_name()
     payload = {
         'name': name,
         'kind': 'Native',
         'nameservers': ['ns1.example.com', 'ns2.example.com']
     }
     for k, v in kwargs.items():
         if v is None:
             del payload[k]
         else:
             payload[k] = v
     print payload
     r = self.session.post(self.url("/servers/localhost/zones"),
                           data=json.dumps(payload),
                           headers={'content-type': 'application/json'})
     self.assert_success_json(r)
     return payload, r.json()
Exemple #36
0
    def test_import_zone_axfr_outofzone(self):
        # Ensure we don't create out-of-zone records
        name = unique_zone_name()
        payload = {}
        payload['zone'] = """
NAME           86400   IN      SOA     powerdnssec1.ds9a.nl. ahu.ds9a.nl. 1343746984 10800 3600 604800 10800
NAME           3600    IN      NS      powerdnssec2.ds9a.nl.
example.org.   3600    IN      AAAA    2001:888:2000:1d::2
NAME           86400   IN      SOA     powerdnssec1.ds9a.nl. ahu.ds9a.nl. 1343746984 10800 3600 604800 10800
""".replace('NAME', name)
        payload['name'] = name
        payload['kind'] = 'Master'
        payload['nameservers'] = []
        r = self.session.post(
            self.url("/api/v1/servers/localhost/zones"),
            data=json.dumps(payload),
            headers={'content-type': 'application/json'})
        self.assertEquals(r.status_code, 422)
        self.assertEqual(r.json()['error'], 'RRset example.org. IN AAAA: Name is out of zone')
Exemple #37
0
 def test_RenameAuthZone(self):
     name = unique_zone_name() + '.'
     payload = {'name': name, 'kind': 'Native', 'recursion_desired': False}
     r = self.session.post(self.url("/servers/localhost/zones"),
                           data=json.dumps(payload),
                           headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     # now rename it
     payload = {
         'name': 'renamed-' + name,
         'kind': 'Native',
         'recursion_desired': False
     }
     r = self.session.put(self.url("/servers/localhost/zones/" + name),
                          data=json.dumps(payload),
                          headers={'content-type': 'application/json'})
     self.assertSuccessJson(r)
     data = r.json()
     for k in payload.keys():
         self.assertEquals(data[k], payload[k])
Exemple #38
0
 def create_zone(self, name=None, **kwargs):
     if name is None:
         name = unique_zone_name()
     payload = {
         'name': name,
         'kind': 'Native',
         'nameservers': ['ns1.example.com.', 'ns2.example.com.']
     }
     for k, v in kwargs.items():
         if v is None:
             del payload[k]
         else:
             payload[k] = v
     print "sending", payload
     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)
     self.assertEquals(r.status_code, 201)
     reply = r.json()
     print "reply", reply
     return name, payload, reply
Exemple #39
0
 def test_create_zone_trailing_dot(self):
     # Trailing dots should not end up in the zone name.
     basename = unique_zone_name()
     payload, data = self.create_zone(name=basename + '.')
     self.assertEquals(data['name'], basename)
Exemple #40
0
 def test_create_zone_trailing_dot(self):
     # Trailing dots should not end up in the zone name.
     basename = unique_zone_name()
     payload, data = self.create_zone(name=basename+'.')
     self.assertEquals(data['name'], basename)