]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
API: add cryptokeys test
authorChristian Hofstaedtler <christian.hofstaedtler@deduktiva.com>
Sun, 27 Dec 2015 22:49:23 +0000 (23:49 +0100)
committerChristian Hofstaedtler <christian.hofstaedtler@deduktiva.com>
Tue, 29 Dec 2015 22:29:16 +0000 (23:29 +0100)
regression-tests.api/.gitignore
regression-tests.api/runtests.py
regression-tests.api/test_Zones.py

index 6349768ea4e28984a49312d524e9ddc7b7fdd334..3277e4715d4d347ad030a03bd9c874825dfd9b49 100644 (file)
@@ -4,8 +4,9 @@
 /pdns.sqlite3
 /*.controlsocket
 /named.conf
+/pdns.conf
 /*.pyc
-acl.conf
-acl.list
-recursor.conf
-rec-conf.d
+/acl.conf
+/acl.list
+/recursor.conf
+/rec-conf.d
index 4d3666720f4486ce5e220ddcf101ea57803a33f3..d77d1d014dc314962a1631a2c2b53aac1d6c62c4 100755 (executable)
@@ -18,6 +18,16 @@ NAMED_CONF_TPL = """
 # Generated by runtests.py
 options { directory "../regression-tests/zones/"; };
 zone "example.com" { type master; file "example.com"; };
+zone "powerdnssec.org" { type master; file "powerdnssec.org"; };
+"""
+
+AUTH_CONF_TPL = """
+# Generated by runtests.py
+launch=gsqlite3
+gsqlite3-dnssec=on
+gsqlite3-database="""+SQLITE_DB+"""
+module-dir=../regression-tests/modules
+#
 """
 
 ACL_LIST_TPL = """
@@ -61,7 +71,7 @@ daemon = sys.argv[1]
 
 if daemon == 'authoritative':
 
-    # Prepare sqlite DB with a single zone.
+    # Prepare sqlite DB with some zones.
     subprocess.check_call(["rm", "-f", SQLITE_DB])
     subprocess.check_call(["make", "-C", "../pdns", "zone2sql"])
 
@@ -78,7 +88,11 @@ if daemon == 'authoritative':
         tf.seek(0, os.SEEK_SET)  # rewind
         subprocess.check_call(["sqlite3", SQLITE_DB], stdin=tf)
 
-    pdnscmd = ("../pdns/pdns_server --daemon=no --local-port=5300 --socket-dir=./ --module-dir=../regression-tests/modules --no-shuffle --launch=gsqlite3 --gsqlite3-dnssec --send-root-referral --dnsupdate=yes --cache-ttl=0 --no-config --gsqlite3-dnssec=on --gsqlite3-database="+SQLITE_DB+" --api=yes --webserver=yes --webserver-port="+WEBPORT+" --webserver-address=127.0.0.1 --webserver-password=something --api-key="+APIKEY).split()
+    with open('pdns.conf', 'w') as named_conf:
+        named_conf.write(AUTH_CONF_TPL)
+
+    subprocess.check_call(["../pdns/pdnsutil", "--config-dir=.", "secure-zone", "powerdnssec.org"])
+    pdnscmd = ("../pdns/pdns_server --daemon=no --local-port=5300 --socket-dir=./ --no-shuffle --send-root-referral --dnsupdate=yes --cache-ttl=0 --config-dir=. --api=yes --webserver=yes --webserver-port="+WEBPORT+" --webserver-address=127.0.0.1 --webserver-password=something --api-key="+APIKEY).split()
 
 else:
     conf_dir = 'rec-conf.d'
index 138fca456df988504e23f3909c43cbda77c7a818..4d23ce333f1c88be37b8a1d73df6f8b0af1388c4 100644 (file)
@@ -1,6 +1,7 @@
 import json
 import time
 import unittest
+from copy import deepcopy
 from test_helper import ApiTestCase, unique_zone_name, is_auth, is_recursor, eq_zone_dict, get_db_records
 
 
@@ -1285,3 +1286,26 @@ class RecursorZones(ApiTestCase):
         print r.json()
         # should return zone, SOA
         self.assertEquals(len(r.json()), 2)
+
+
+@unittest.skipIf(not is_auth(), "Not applicable")
+class AuthZoneKeys(ApiTestCase, AuthZonesHelperMixin):
+
+    def test_get_keys(self):
+        r = self.session.get(
+            self.url("/api/v1/servers/localhost/zones/powerdnssec.org./cryptokeys"))
+        self.assert_success_json(r)
+        keys = r.json()
+        self.assertGreater(len(keys), 0)
+
+        key0 = deepcopy(keys[0])
+        del key0['dnskey']
+        expected = {
+            u'active': True,
+            u'type': u'Cryptokey',
+            u'keytype': u'zsk',
+            u'id': 1}
+        self.assertEquals(key0, expected)
+
+        keydata = keys[0]['dnskey'].split()
+        self.assertEqual(len(keydata), 4)