Browse Source

fixup(api): unit tests for captcha

Nils Wisiol 8 năm trước cách đây
mục cha
commit
920f0dae2b

+ 37 - 1
api/desecapi/tests/testdyndns12update.py

@@ -35,6 +35,9 @@ class DynDNS12UpdateTest(APITestCase):
         httpretty.register_uri(httpretty.POST, settings.POWERDNS_API + '/zones')
         httpretty.register_uri(httpretty.PATCH, settings.POWERDNS_API + '/zones/' + self.domain + '.')
 
+    def tearDown(self):
+        httpretty.disable()
+
     def assertIP(self, ipv4=None, ipv6=None):
         old_credentials = self.client._credentials['HTTP_AUTHORIZATION']
         self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.password)
@@ -136,7 +139,6 @@ class DynDNS12UpdateTest(APITestCase):
         domain.arecord = '10.1.1.1'
         domain.save()
 
-        httpretty.register_uri(httpretty.POST, settings.POWERDNS_API + '/zones')
         httpretty.register_uri(httpretty.PATCH, settings.POWERDNS_API + '/zones/' + self.domain + '.')
         httpretty.register_uri(httpretty.GET, settings.POWERDNS_API + '/zones/' + self.domain + '.', status=200)
 
@@ -147,3 +149,37 @@ class DynDNS12UpdateTest(APITestCase):
         self.assertTrue(self.domain in httpretty.last_request().parsed_body)
         self.assertTrue('10.1.1.1' in httpretty.last_request().parsed_body)
 
+    def testSuspendedUpdatesDomainCreation(self):
+        self.owner.captcha_required = True
+        self.owner.save()
+
+        httpretty.reset()
+        httpretty.enable()
+        httpretty.HTTPretty.allow_net_connect = False
+
+        url = reverse('domain-list')
+        newdomain = utils.generateDynDomainname()
+        data = {'name': newdomain, 'dyn': True, 'arecord': '10.2.2.2'}
+        self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token)
+        response = self.client.post(url, data)
+        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+        self.assertEqual(response.data['dyn'], True)
+
+        domain = self.owner.domains.all()[0]
+        domain.arecord = '10.1.1.1'
+        domain.save()
+
+        httpretty.register_uri(httpretty.POST, settings.POWERDNS_API + '/zones')
+        httpretty.register_uri(httpretty.PATCH, settings.POWERDNS_API + '/zones/' + newdomain + '.')
+        httpretty.register_uri(httpretty.GET, settings.POWERDNS_API + '/zones/' + newdomain + '.', status=200)
+        httpretty.register_uri(httpretty.PATCH, settings.POWERDNS_API + '/zones/' + self.domain + '.')
+        httpretty.register_uri(httpretty.GET, settings.POWERDNS_API + '/zones/' + self.domain + '.', status=200)
+
+        self.owner.unlock()
+
+        self.assertEqual(httpretty.last_request().method, 'PATCH')
+        self.assertTrue(
+                (settings.POWERDNS_API + '/zones/' + self.domain + '.').endswith(httpretty.last_request().path) \
+                or (settings.POWERDNS_API + '/zones/' + newdomain + '.').endswith(httpretty.last_request().path)
+            )
+        self.assertTrue('10.2.2.2' in httpretty.last_request().parsed_body)

+ 7 - 7
api/desecapi/tests/testregistration.py

@@ -11,7 +11,8 @@ from desecapi import settings
 
 
 class RegistrationTest(APITestCase):
-    def testRegistrationSuccessful(self):
+
+    def test_registration_successful(self):
         url = reverse('register')
         data = {'email': utils.generateUsername(), 'password': utils.generateRandomString(size=12)}
         response = self.client.post(url, data, REMOTE_ADDR="1.3.3.7")
@@ -20,7 +21,7 @@ class RegistrationTest(APITestCase):
         self.assertEqual(user.email, data['email'])
         self.assertEqual(user.registration_remote_ip, "1.3.3.7")
 
-    def testMultipleRegistrationCaptchaRequiredSameIpShortTime(self):
+    def test_multiple_registration_captcha_required_same_ip_short_time(self):
         outboxlen = len(mail.outbox)
 
         url = reverse('register')
@@ -31,7 +32,6 @@ class RegistrationTest(APITestCase):
         self.assertEqual(user.email, data['email'])
         self.assertEqual(user.registration_remote_ip, "1.3.3.7")
         self.assertEqual(user.captcha_required, False)
-        print(user.created)
 
         self.assertEqual(len(mail.outbox), outboxlen)
 
@@ -57,7 +57,7 @@ class RegistrationTest(APITestCase):
 
         self.assertEqual(len(mail.outbox), outboxlen + 2)
 
-    def testMultipleRegistrationNoCaptchaRequiredDifferentIp(self):
+    def test_multiple_registration_no_captcha_required_different_ip(self):
         url = reverse('register')
         data = {'email': utils.generateUsername(), 'password': utils.generateRandomString(size=12)}
         response = self.client.post(url, data, REMOTE_ADDR="1.3.3.8")
@@ -76,7 +76,7 @@ class RegistrationTest(APITestCase):
         self.assertEqual(user.registration_remote_ip, "1.3.3.9")
         self.assertEqual(user.captcha_required, False)
 
-    def testMultipleRegistrationNoCaptchaRequiredSameIpLongTime(self):
+    def test_multiple_registration_no_captcha_required_same_ip_long_time(self):
         url = reverse('register')
         data = {'email': utils.generateUsername(), 'password': utils.generateRandomString(size=12)}
         response = self.client.post(url, data, REMOTE_ADDR="1.3.3.10")
@@ -99,7 +99,7 @@ class RegistrationTest(APITestCase):
         self.assertEqual(user.registration_remote_ip, "1.3.3.10")
         self.assertEqual(user.captcha_required, False)
 
-    def testSendCaptchaEmailManually(self):
+    def test_send_captcha_email_manually(self):
         outboxlen = len(mail.outbox)
 
         url = reverse('register')
@@ -107,6 +107,6 @@ class RegistrationTest(APITestCase):
         response = self.client.post(url, data, REMOTE_ADDR="1.3.3.10")
         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
         user = models.User.objects.get(email=data['email'])
-        send_account_lock_email(None, user.email)
+        send_account_lock_email(None, user)
 
         self.assertEqual(len(mail.outbox), outboxlen+1)