]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth: api, add create/delete consumer zone test 12285/head
authorKees Monshouwer <mind04@monshouwer.org>
Tue, 6 Dec 2022 17:34:09 +0000 (18:34 +0100)
committermind04 <mind04@monshouwer.org>
Tue, 6 Dec 2022 17:34:09 +0000 (18:34 +0100)
regression-tests.api/test_Zones.py

index a36415fac24e81f5d2c070ef68feed9412cf55a5..0c26db393b8be9e4b059091c7abf1b76d2c27496 100644 (file)
@@ -706,6 +706,29 @@ class AuthZones(ApiTestCase, AuthZonesHelperMixin):
         self.assertEqual(data['serial'], 0)
         self.assertEqual(data['rrsets'], [])
 
+    def test_create_consumer_zone(self):
+        # Test that nameservers can be absent for consumer zones.
+        name, payload, data = self.create_zone(kind='Consumer', nameservers=None, masters=['127.0.0.2'])
+        for k in ('name', 'masters', 'kind'):
+            self.assertIn(k, data)
+            self.assertEqual(data[k], payload[k])
+        print("payload:", payload)
+        print("data:", data)
+        # Because consumer zones don't get a SOA, we need to test that they'll show up in the zone list.
+        r = self.session.get(self.url("/api/v1/servers/localhost/zones"))
+        zonelist = r.json()
+        print("zonelist:", zonelist)
+        self.assertIn(payload['name'], [zone['name'] for zone in zonelist])
+        # Also test that fetching the zone works.
+        r = self.session.get(self.url("/api/v1/servers/localhost/zones/" + data['id']))
+        data = r.json()
+        print("zone (fetched):", data)
+        for k in ('name', 'masters', 'kind'):
+            self.assertIn(k, data)
+            self.assertEqual(data[k], payload[k])
+        self.assertEqual(data['serial'], 0)
+        self.assertEqual(data['rrsets'], [])
+
     def test_find_zone_by_name(self):
         name = 'foo/' + unique_zone_name()
         name, payload, data = self.create_zone(name=name)
@@ -719,6 +742,11 @@ class AuthZones(ApiTestCase, AuthZonesHelperMixin):
         r = self.session.delete(self.url("/api/v1/servers/localhost/zones/" + data['id']))
         r.raise_for_status()
 
+    def test_delete_consumer_zone(self):
+        name, payload, data = self.create_zone(kind='Consumer', nameservers=None, masters=['127.0.0.2'])
+        r = self.session.delete(self.url("/api/v1/servers/localhost/zones/" + data['id']))
+        r.raise_for_status()
+
     def test_retrieve_slave_zone(self):
         name, payload, data = self.create_zone(kind='Slave', nameservers=None, masters=['127.0.0.2'])
         print("payload:", payload)