]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth: api, add create/delete consumer zone test 12291/head
authorKees Monshouwer <mind04@monshouwer.org>
Tue, 6 Dec 2022 17:34:09 +0000 (18:34 +0100)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Wed, 7 Dec 2022 13:14:24 +0000 (14:14 +0100)
(cherry picked from commit 2f27a15fb72cdbef5c4f5af8f0d089722ee2253a)

regression-tests.api/test_Zones.py

index 15384539b95a2508c627656cf4942effe9f987bb..89896df0194b4df68ce2451b39270ce487a4785f 100644 (file)
@@ -707,6 +707,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)
@@ -720,6 +743,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)