Просмотр исходного кода

fix(api): data structure typo. explicit is better than implicit!

Peter Thomassen 7 лет назад
Родитель
Сommit
1238a2e72c

+ 1 - 1
api/desecapi/models.py

@@ -258,7 +258,7 @@ class Domain(models.Model, mixins.SetterMixin):
         if parent_pdns_id == 'dedyn.io.':
             parent = Domain.objects.filter(name='dedyn.io').first()
             if parent:
-                records_data = [('content', x) for x in settings.DEFAULT_NS]
+                records_data = [{'content': x} for x in settings.DEFAULT_NS]
                 rrset = RRset(domain=parent, subname=subname, type='NS',
                               ttl=60, records_data=records_data)
                 rrset.save(notify=False)

+ 5 - 5
api/desecapi/pdns.py

@@ -94,13 +94,13 @@ def get_keys(domain):
     """
     try:
         r = _pdns_get('/zones/%s/cryptokeys' % domain.pdns_id)
-        keys = [{k: key[k] for k in ('dnskey', 'ds', 'flags', 'keytype')}
+        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:
-        keys = []
-
-    return keys
+    except PdnsException as e:
+        if e.status_code == 404:
+            return []
+        raise e
 
 
 def get_zone(domain):

+ 4 - 0
api/desecapi/tests/testdomains.py

@@ -132,6 +132,10 @@ class AuthenticatedDomainTests(APITestCase):
                                settings.NSLORD_PDNS_API + '/zones/' + name + '.',
                                body='{"rrsets": []}',
                                content_type="application/json")
+        httpretty.register_uri(httpretty.GET,
+                               settings.NSLORD_PDNS_API + '/zones/' + name + './cryptokeys',
+                               body='[]',
+                               content_type="application/json")
 
         url = reverse('domain-list')
         data = {'name': name}

+ 4 - 0
api/desecapi/tests/testdyndns12update.py

@@ -247,6 +247,10 @@ class DynDNS12UpdateTest(APITestCase):
 
         data = {'name': newdomain}
         self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token)
+        httpretty.register_uri(httpretty.GET,
+                               settings.NSLORD_PDNS_API + '/zones/' + newdomain + './cryptokeys',
+                               body='[]',
+                               content_type="application/json")
         response = self.client.post(url, data)
         self.assertEqual(response.status_code, status.HTTP_201_CREATED)