Browse Source

fix(api): don't fetch keys for unpublished domains from pdns, fixes #167

Peter Thomassen 6 years ago
parent
commit
99170f2edd
3 changed files with 6 additions and 12 deletions
  1. 1 1
      api/desecapi/models.py
  2. 4 9
      api/desecapi/pdns.py
  3. 1 2
      api/desecapi/tests/testdomains.py

+ 1 - 1
api/desecapi/models.py

@@ -156,7 +156,7 @@ class Domain(models.Model, mixins.SetterMixin):
 
     @property
     def keys(self):
-        return pdns.get_keys(self)
+        return pdns.get_keys(self) if self.published else None
 
     @property
     def pdns_id(self):

+ 4 - 9
api/desecapi/pdns.py

@@ -96,15 +96,10 @@ def get_keys(domain):
     """
     Retrieves a dict representation of the DNSSEC key information
     """
-    try:
-        r = _pdns_get('/zones/%s/cryptokeys' % domain.pdns_id)
-        return [{k: key[k] for k in ('dnskey', 'ds', 'flags', 'keytype')}
-                for key in r.json()
-                if key['active'] and key['keytype'] in ['csk', 'ksk']]
-    except PdnsException as e:
-        if e.status_code in [400, 404]:
-            return []
-        raise e
+    r = _pdns_get('/zones/%s/cryptokeys' % domain.pdns_id)
+    return [{k: key[k] for k in ('dnskey', 'ds', 'flags', 'keytype')}
+            for key in r.json()
+            if key['active'] and key['keytype'] in ['csk', 'ksk']]
 
 
 def get_zone(domain):

+ 1 - 2
api/desecapi/tests/testdomains.py

@@ -270,8 +270,7 @@ class LockedAutoDelegationDomainOwnerTests(LockedDomainOwnerTestCase):
         name = self.random_domain_name(self.AUTO_DELEGATION_DOMAINS[0])
 
         # Users should be able to create domains under auto delegated domains even when locked
-        with self.assertPdnsRequests(self.request_pdns_zone_retrieve_crypto_keys(name=name)):
-            response = self.client.post(self.reverse('v1:domain-list'), {'name': name})
+        response = self.client.post(self.reverse('v1:domain-list'), {'name': name})
         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
 
         with self.assertPdnsRequests(self.request_pdns_zone_create_already_exists(existing_domains=[name])),\