Browse Source

feat(api): add domain information to activation response

Peter Thomassen 5 years ago
parent
commit
5e3c8eb84a

+ 4 - 1
api/desecapi/models.py

@@ -206,6 +206,7 @@ class Domain(models.Model):
     owner = models.ForeignKey(User, on_delete=models.PROTECT, related_name='domains')
     owner = models.ForeignKey(User, on_delete=models.PROTECT, related_name='domains')
     published = models.DateTimeField(null=True, blank=True)
     published = models.DateTimeField(null=True, blank=True)
     minimum_ttl = models.PositiveIntegerField(default=get_minimum_ttl_default)
     minimum_ttl = models.PositiveIntegerField(default=get_minimum_ttl_default)
+    _keys = None
 
 
     @classmethod
     @classmethod
     def is_registrable(cls, domain_name: str, user: User):
     def is_registrable(cls, domain_name: str, user: User):
@@ -261,7 +262,9 @@ class Domain(models.Model):
 
 
     @property
     @property
     def keys(self):
     def keys(self):
-        return pdns.get_keys(self)
+        if not self._keys:
+            self._keys = pdns.get_keys(self)
+        return self._keys
 
 
     @property
     @property
     def is_locally_registrable(self):
     def is_locally_registrable(self):

+ 0 - 1
api/desecapi/tests/base.py

@@ -774,7 +774,6 @@ class DesecTestCase(MockPDNSTestCase):
         return cls.requests_desec_domain_creation(name=name) + [
         return cls.requests_desec_domain_creation(name=name) + [
             cls.request_pdns_zone_update(name=delegate_at),
             cls.request_pdns_zone_update(name=delegate_at),
             cls.request_pdns_zone_axfr(name=delegate_at),
             cls.request_pdns_zone_axfr(name=delegate_at),
-            cls.request_pdns_zone_retrieve_crypto_keys(name=name),
         ]
         ]
 
 
     @classmethod
     @classmethod

+ 2 - 2
api/desecapi/tests/test_user_management.py

@@ -412,8 +412,8 @@ class UserManagementTestCase(DesecTestCase, PublicSuffixMockMixin):
         if self.has_local_suffix(domain):
         if self.has_local_suffix(domain):
             cm = self.requests_desec_domain_creation_auto_delegation(domain)
             cm = self.requests_desec_domain_creation_auto_delegation(domain)
         else:
         else:
-            cm = self.requests_desec_domain_creation(domain)
-        with self.assertPdnsRequests(cm[:-1]):
+            cm = self.requests_desec_domain_creation(domain)[:-1]
+        with self.assertPdnsRequests(cm):
             response = self.client.verify(confirmation_link)
             response = self.client.verify(confirmation_link)
         self.assertRegistrationWithDomainVerificationSuccessResponse(response, domain, email)
         self.assertRegistrationWithDomainVerificationSuccessResponse(response, domain, email)
         self.assertTrue(User.objects.get(email=email).is_active)
         self.assertTrue(User.objects.get(email=email).is_active)

+ 1 - 0
api/desecapi/views.py

@@ -597,6 +597,7 @@ class AuthenticatedActivateUserActionView(AuthenticatedActionView):
             return Response({
             return Response({
                 'detail': 'Success! Here is the password ("token") to configure your router (or any other dynDNS '
                 'detail': 'Success! Here is the password ("token") to configure your router (or any other dynDNS '
                           'client). This password is different from your account password for security reasons.',
                           'client). This password is different from your account password for security reasons.',
+                'domain': serializers.DomainSerializer(domain).data,
                 **serializers.TokenSerializer(token, include_plain=True).data,
                 **serializers.TokenSerializer(token, include_plain=True).data,
             })
             })
         else:
         else: