Browse Source

fix(api): fix domain regex

Peter Thomassen 5 years ago
parent
commit
1fa8ff78ca
2 changed files with 5 additions and 5 deletions
  1. 1 1
      api/desecapi/models.py
  2. 4 4
      api/desecapi/tests/test_domains.py

+ 1 - 1
api/desecapi/models.py

@@ -186,7 +186,7 @@ class Token(rest_framework.authtoken.models.Token):
 validate_domain_name = [
     validate_lower,
     RegexValidator(
-        regex=r'^[a-z0-9_.-]*[a-z]$',
+        regex=r'^([a-z0-9_-]{1,63}\.)*[a-z]{1,63}$',
         message='Invalid value (not a DNS name).',
         code='invalid_domain_name'
     )

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

@@ -311,10 +311,10 @@ class DomainOwnerTestCase1(DomainOwnerTestCase):
             self.assertStatus(response, status.HTTP_503_SERVICE_UNAVAILABLE)
 
     def test_create_domain_policy(self):
-        name = '*.' + self.random_domain_name()
-        response = self.client.post(self.reverse('v1:domain-list'), {'name': name})
-        self.assertStatus(response, status.HTTP_400_BAD_REQUEST)
-        self.assertTrue("Invalid value (not a DNS name)." in response.data['name'][0])
+        for name in ['1.2.3..4.test.dedyn.io', 'test..de', '*.' + self.random_domain_name(), 'a' * 64 + '.bla.test']:
+            response = self.client.post(self.reverse('v1:domain-list'), {'name': name})
+            self.assertStatus(response, status.HTTP_400_BAD_REQUEST)
+            self.assertTrue("Invalid value (not a DNS name)." in response.data['name'][0])
 
     def test_create_domain_other_parent(self):
         name = 'something.' + self.other_domain.name