Sfoglia il codice sorgente

fix(api): tests: move set_credentials* to client class

Nils Wisiol 6 anni fa
parent
commit
c09c776551

+ 22 - 27
api/desecapi/tests/base.py

@@ -15,6 +15,26 @@ from desecapi.models import User, Domain, Token, RRset, RR
 
 
 class DesecAPIClient(APIClient):
 class DesecAPIClient(APIClient):
 
 
+    @staticmethod
+    def _http_header_base64_conversion(content):
+        return base64.b64encode(content.encode()).decode()
+
+    def set_credentials(self, authorization):
+        self.credentials(HTTP_AUTHORIZATION=authorization)
+
+    def set_credentials_basic_auth(self, part_1, part_2=None):
+        if not part_1 and not part_2:
+            self.set_credentials('')
+        else:
+            s = part_1 if not part_2 else '%s:%s' % (part_1, part_2)
+            self.set_credentials('Basic ' + self._http_header_base64_conversion(s))
+
+    def set_credentials_token_auth(self, token):
+        if token is None:
+            self.set_credentials('')
+        else:
+            self.set_credentials('Token ' + token)
+
     def __init__(self, *args, **kwargs):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
         super().__init__(*args, **kwargs)
         self.reverse = DesecTestCase.reverse
         self.reverse = DesecTestCase.reverse
@@ -620,31 +640,6 @@ class LockedDomainOwnerTestCase(DomainOwnerTestCase):
 class DynDomainOwnerTestCase(DomainOwnerTestCase):
 class DynDomainOwnerTestCase(DomainOwnerTestCase):
     DYN = True
     DYN = True
 
 
-    @staticmethod
-    def _http_header_base64_conversion(content):
-        return base64.b64encode(content.encode()).decode()
-
-    @staticmethod
-    def _set_credentials(client, authorization):
-        client.credentials(HTTP_AUTHORIZATION=authorization)
-
-    @classmethod
-    def _set_credentials_basic_auth(cls, client, user_name, token):
-        if not user_name and not token:
-            cls._set_credentials(client, '')
-        else:
-            cls._set_credentials(client, 'Basic ' + DynDomainOwnerTestCase._http_header_base64_conversion(
-                    user_name + ':' + token
-                )
-            )
-
-    @classmethod
-    def _set_credentials_token_auth(cls, client, token):
-        if token is None:
-            cls._set_credentials(client, '')
-        else:
-            cls._set_credentials(client, 'Token ' + token)
-
     def _assertDynDNS12Update(self, requests, mock_remote_addr='', **kwargs):
     def _assertDynDNS12Update(self, requests, mock_remote_addr='', **kwargs):
         with self.assertPdnsRequests(requests):
         with self.assertPdnsRequests(requests):
             if mock_remote_addr:
             if mock_remote_addr:
@@ -665,5 +660,5 @@ class DynDomainOwnerTestCase(DomainOwnerTestCase):
     def setUp(self):
     def setUp(self):
         super().setUp()
         super().setUp()
         self.client_token_authorized = self.client_class()
         self.client_token_authorized = self.client_class()
-        self._set_credentials_basic_auth(self.client, self.my_domain.name, self.token.key)
-        self._set_credentials_token_auth(self.client_token_authorized, self.token.key)
+        self.client.set_credentials_basic_auth(self.my_domain.name, self.token.key)
+        self.client_token_authorized.set_credentials_token_auth(self.token.key)

+ 3 - 3
api/desecapi/tests/testauthentication.py

@@ -12,13 +12,13 @@ class DynUpdateAuthenticationTestCase(DynDomainOwnerTestCase):
 
 
     def assertDynDNS12Status(self, status=HTTP_200_OK, authorization=None):
     def assertDynDNS12Status(self, status=HTTP_200_OK, authorization=None):
         if authorization:
         if authorization:
-            self._set_credentials(self.client, 'Basic ' + self._http_header_base64_conversion(authorization))
+            self.client.set_credentials_basic_auth(authorization)
         request = self._get_dyndns12()
         request = self._get_dyndns12()
         self.assertEqual(request.status_code, status, request)
         self.assertEqual(request.status_code, status, request)
 
 
     def assertDynDNS12AuthenticationStatus(self, username, token, status):
     def assertDynDNS12AuthenticationStatus(self, username, token, status):
         # Note that this overwrites self.client's credentials, which may be unexpected
         # Note that this overwrites self.client's credentials, which may be unexpected
-        self._set_credentials_basic_auth(self.client, username, token)
+        self.client.set_credentials_basic_auth(username, token)
         self.assertDynDNS12Status(status)
         self.assertDynDNS12Status(status)
 
 
     def test_username_password(self):
     def test_username_password(self):
@@ -48,7 +48,7 @@ class TokenAuthenticationTestCase(DynDomainOwnerTestCase):
             return self.client.get(self.reverse('v1:domain-list'))
             return self.client.get(self.reverse('v1:domain-list'))
 
 
     def assertAuthenticationStatus(self, status=HTTP_200_OK, token=''):
     def assertAuthenticationStatus(self, status=HTTP_200_OK, token=''):
-        self._set_credentials_token_auth(self.client, token)
+        self.client.set_credentials_token_auth(token)
         response = self._get_domains()
         response = self._get_domains()
         self.assertEqual(response.status_code, status, response)
         self.assertEqual(response.status_code, status, response)
 
 

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

@@ -21,13 +21,13 @@ class DynDNS12UpdateTest(DynDomainOwnerTestCase):
         self.assertRRSet(name, '', 'AAAA', ipv6)
         self.assertRRSet(name, '', 'AAAA', ipv6)
 
 
     def test_identification_by_domain_name(self):
     def test_identification_by_domain_name(self):
-        self._set_credentials_basic_auth(self.client, self.my_domain.name + '.invalid', self.token.key)
+        self.client.set_credentials_basic_auth(self.my_domain.name + '.invalid', self.token.key)
         response = self.assertDynDNS12NoUpdate(mock_remote_addr='10.5.5.6')
         response = self.assertDynDNS12NoUpdate(mock_remote_addr='10.5.5.6')
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
 
 
     def test_identification_by_query_params(self):
     def test_identification_by_query_params(self):
         # /update?username=foobar.dedyn.io&password=secret
         # /update?username=foobar.dedyn.io&password=secret
-        self._set_credentials_basic_auth(self.client, None, None)
+        self.client.set_credentials_basic_auth(None, None)
         response = self.assertDynDNS12Update(username=self.my_domain.name, password=self.token.key)
         response = self.assertDynDNS12Update(username=self.my_domain.name, password=self.token.key)
         self.assertEqual(response.status_code, status.HTTP_200_OK)
         self.assertEqual(response.status_code, status.HTTP_200_OK)
         self.assertEqual(response.data, 'good')
         self.assertEqual(response.data, 'good')
@@ -133,7 +133,7 @@ class SingleDomainDynDNS12UpdateTest(DynDNS12UpdateTest):
     NUM_OWNED_DOMAINS = 1
     NUM_OWNED_DOMAINS = 1
 
 
     def test_identification_by_token(self):
     def test_identification_by_token(self):
-        self._set_credentials_basic_auth(self.client, '', self.token.key)
+        self.client.set_credentials_basic_auth('', self.token.key)
         response = self.assertDynDNS12Update(self.my_domain.name, mock_remote_addr='10.5.5.6')
         response = self.assertDynDNS12Update(self.my_domain.name, mock_remote_addr='10.5.5.6')
         self.assertEqual(response.status_code, status.HTTP_200_OK)
         self.assertEqual(response.status_code, status.HTTP_200_OK)
         self.assertEqual(response.data, 'good')
         self.assertEqual(response.data, 'good')
@@ -147,6 +147,6 @@ class MultipleDomainDynDNS12UpdateTest(DynDNS12UpdateTest):
         """
         """
         Test if the conflict of having multiple domains, but not specifying which to update is correctly recognized.
         Test if the conflict of having multiple domains, but not specifying which to update is correctly recognized.
         """
         """
-        self._set_credentials_basic_auth(self.client, '', self.token.key)
+        self.client.set_credentials_basic_auth('', self.token.key)
         response = self.client.get(self.reverse('v1:dyndns12update'), REMOTE_ADDR='10.5.5.7')
         response = self.client.get(self.reverse('v1:dyndns12update'), REMOTE_ADDR='10.5.5.7')
         self.assertEqual(response.status_code, status.HTTP_409_CONFLICT)
         self.assertEqual(response.status_code, status.HTTP_409_CONFLICT)