from copy import deepcopy
from parameterized import parameterized
from pprint import pprint
-from test_helper import ApiTestCase, unique_zone_name, is_auth, is_recursor, get_db_records, pdnsutil_rectify
+from test_helper import ApiTestCase, unique_zone_name, is_auth, is_auth_lmdb, is_recursor, get_db_records, pdnsutil_rectify
def get_rrset(data, qname, qtype):
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('. ', ' '))
- self.assertNotEquals(data['serial'], data['edited_serial'])
+
+ if not is_auth_lmdb():
+ # 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('. ', ' '))
+ self.assertNotEquals(data['serial'], data['edited_serial'])
def test_create_zone_with_soa_edit_api(self):
# soa_edit_api wins over serial
# check our record has appeared
self.assertEquals(get_rrset(data, rrset['name'], 'A')['records'], rrset['records'])
+ @unittest.skipIf(is_auth_lmdb(), "No comments in LMDB")
def test_create_zone_with_comments(self):
name = unique_zone_name()
rrsets = [
}
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('. ', ' '))
+ if not is_auth_lmdb():
+ dbrecs = get_db_records(name, 'SOA')
+ self.assertEqual(dbrecs[0]['content'], content.replace('. ', ' '))
def test_create_zone_double_dot(self):
name = 'test..' + unique_zone_name()
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('.'))
+ if not is_auth_lmdb():
+ dbrecs = get_db_records(name, 'SOA')
+ self.assertEqual(dbrecs[0]['name'], name.rstrip('.'))
def test_create_zone_with_nameservers_non_string(self):
# ensure we don't crash
eq_zone_rrsets(data['rrsets'], expected)
- # check content in DB is stored WITHOUT trailing dot.
- dbrecs = get_db_records(payload['name'], 'NS')
- dbrec = next((dbrec for dbrec in dbrecs if dbrec['content'].startswith('powerdnssec1')))
- self.assertEqual(dbrec['content'], 'powerdnssec1.ds9a.nl')
+ if not is_auth_lmdb():
+ # check content in DB is stored WITHOUT trailing dot.
+ dbrecs = get_db_records(payload['name'], 'NS')
+ dbrec = next((dbrec for dbrec in dbrecs if dbrec['content'].startswith('powerdnssec1')))
+ self.assertEqual(dbrec['content'], 'powerdnssec1.ds9a.nl')
def test_import_zone_bind(self):
payload = {
self.assertIn(k, data)
self.assertEquals(data[k], payload[k])
+ @unittest.skipIf(is_auth_lmdb(), "No disabled in LMDB")
def test_zone_rr_update(self):
name, payload, zone = self.create_zone()
# do a replace (= update)
self.assertEquals(r.status_code, 422)
self.assertIn('Not in expected format', r.json()['error'])
+ @unittest.skipIf(is_auth_lmdb(), "No out-of-zone storage in LMDB")
def test_zone_rr_delete_out_of_zone(self):
name, payload, zone = self.create_zone()
rrset = {
self.assertEquals(r.status_code, 204)
self.assertNotIn('Content-Type', r.headers)
+ @unittest.skipIf(is_auth_lmdb(), "No comments in LMDB")
def test_zone_comment_create(self):
name, payload, zone = self.create_zone()
rrset = {
# verify that TTL is correct (regression test)
self.assertEquals(serverset['ttl'], 3600)
+ @unittest.skipIf(is_auth_lmdb(), "No comments in LMDB")
def test_zone_comment_delete(self):
# Test: Delete ONLY comments.
name, payload, zone = self.create_zone()
self.assertNotEquals(serverset['records'], [])
self.assertEquals(serverset['comments'], [])
+ @unittest.skipIf(is_auth_lmdb(), "No comments in LMDB")
def test_zone_comment_out_of_range_modified_at(self):
# Test if comments on an rrset stay intact if the rrset is replaced
name, payload, zone = self.create_zone()
self.assertEquals(r.status_code, 422)
self.assertIn("Value for key 'modified_at' is out of range", r.json()['error'])
+ @unittest.skipIf(is_auth_lmdb(), "No comments in LMDB")
def test_zone_comment_stay_intact(self):
# Test if comments on an rrset stay intact if the rrset is replaced
name, payload, zone = self.create_zone()
self.assertEquals(serverset['records'], rrset2['records'])
self.assertEquals(serverset['comments'], rrset['comments'])
+ @unittest.skipIf(is_auth_lmdb(), "No search in LMDB")
def test_search_rr_exact_zone(self):
name = unique_zone_name()
self.create_zone(name=name, serial=22, soa_edit_api='')
u'ttl': 3600, u'type': u'SOA', u'name': name},
])
+ @unittest.skipIf(is_auth_lmdb(), "No search in LMDB")
def test_search_rr_exact_zone_filter_type_zone(self):
name = unique_zone_name()
data_type = "zone"
{u'object_type': u'zone', u'name': name, u'zone_id': name},
])
+ @unittest.skipIf(is_auth_lmdb(), "No search in LMDB")
def test_search_rr_exact_zone_filter_type_record(self):
name = unique_zone_name()
data_type = "record"
u'ttl': 3600, u'type': u'SOA', u'name': name},
])
+ @unittest.skipIf(is_auth_lmdb(), "No search in LMDB")
def test_search_rr_substring(self):
name = unique_zone_name()
search = name[5:-5]
# should return zone, SOA, ns1, ns2
self.assertEquals(len(r.json()), 4)
+ @unittest.skipIf(is_auth_lmdb(), "No search in LMDB")
def test_search_rr_case_insensitive(self):
name = unique_zone_name()+'testsuffix.'
self.create_zone(name=name)
# should return zone, SOA, ns1, ns2
self.assertEquals(len(r.json()), 4)
+ @unittest.skipIf(is_auth_lmdb(), "No search in LMDB")
def test_search_after_rectify_with_ent(self):
name = unique_zone_name()
search = name.split('.')[0]
# should return zone, SOA, ns1, ns2, sub.sub A (but not the ENT)
self.assertEquals(len(r.json()), 5)
+ @unittest.skipIf(is_auth_lmdb(), "No get_db_records for LMDB")
def test_default_api_rectify(self):
name = unique_zone_name()
search = name.split('.')[0]
dbrecs = get_db_records(name, 'AAAA')
self.assertIsNotNone(dbrecs[0]['ordername'])
+ @unittest.skipIf(is_auth_lmdb(), "No get_db_records for LMDB")
def test_override_api_rectify(self):
name = unique_zone_name()
search = name.split('.')[0]
dbrecs = get_db_records(name, 'AAAA')
self.assertIsNone(dbrecs[0]['ordername'])
+ @unittest.skipIf(is_auth_lmdb(), "No get_db_records for LMDB")
def test_explicit_rectify_success(self):
name, _, data = self.create_zone = self.create_zone(api_rectify=False, dnssec=True, nsec3param='1 0 1 ab')
dbrecs = get_db_records(name, 'SOA')
self.assertEquals(r.status_code, 204)
r = self.session.put(self.url("/api/v1/servers/localhost/zones/" + data['id'] + "/rectify"))
self.assertEquals(r.status_code, 200)
- dbrecs = get_db_records(name, 'SOA')
- self.assertIsNotNone(dbrecs[0]['ordername'])
+ if not is_auth_lmdb():
+ dbrecs = get_db_records(name, 'SOA')
+ self.assertIsNotNone(dbrecs[0]['ordername'])
def test_cname_at_ent_place(self):
name, payload, zone = self.create_zone(dnssec=True, api_rectify=True)