Ver Fonte

feat(api): reduce RRsetSerializer max TTL to 86400s

Peter Thomassen há 4 anos atrás
pai
commit
e472622ea2
2 ficheiros alterados com 13 adições e 2 exclusões
  1. 1 1
      api/desecapi/serializers.py
  2. 12 1
      api/desecapi/tests/test_rrsets.py

+ 1 - 1
api/desecapi/serializers.py

@@ -410,7 +410,7 @@ class RRsetListSerializer(serializers.ListSerializer):
 class RRsetSerializer(ConditionalExistenceModelSerializer):
 class RRsetSerializer(ConditionalExistenceModelSerializer):
     domain = serializers.SlugRelatedField(read_only=True, slug_field='name')
     domain = serializers.SlugRelatedField(read_only=True, slug_field='name')
     records = RRSerializer(many=True)
     records = RRSerializer(many=True)
-    ttl = serializers.IntegerField(max_value=604800)
+    ttl = serializers.IntegerField(max_value=86400)
 
 
     class Meta:
     class Meta:
         model = models.RRset
         model = models.RRset

+ 12 - 1
api/desecapi/tests/test_rrsets.py

@@ -679,7 +679,7 @@ class AuthenticatedRRSetTestCase(AuthenticatedRRSetBaseTestCase):
             )
             )
 
 
 
 
-    def test_create_my_rr_sets_insufficient_ttl(self):
+    def test_create_my_rr_sets_ttl_too_small(self):
         ttl = settings.MINIMUM_TTL_DEFAULT - 1
         ttl = settings.MINIMUM_TTL_DEFAULT - 1
         response = self.client.post_rr_set(self.my_empty_domain.name, records=['1.2.3.4'], ttl=ttl, type='A')
         response = self.client.post_rr_set(self.my_empty_domain.name, records=['1.2.3.4'], ttl=ttl, type='A')
         self.assertStatus(response, status.HTTP_400_BAD_REQUEST)
         self.assertStatus(response, status.HTTP_400_BAD_REQUEST)
@@ -691,6 +691,17 @@ class AuthenticatedRRSetTestCase(AuthenticatedRRSetBaseTestCase):
             response = self.client.post_rr_set(self.my_empty_domain.name, records=['1.2.23.4'], ttl=ttl, type='A')
             response = self.client.post_rr_set(self.my_empty_domain.name, records=['1.2.23.4'], ttl=ttl, type='A')
         self.assertStatus(response, status.HTTP_201_CREATED)
         self.assertStatus(response, status.HTTP_201_CREATED)
 
 
+    def test_create_my_rr_sets_ttl_too_large(self):
+        max_ttl = 24*3600
+        response = self.client.post_rr_set(self.my_empty_domain.name, records=['1.2.3.4'], ttl=max_ttl + 1, type='A')
+        self.assertStatus(response, status.HTTP_400_BAD_REQUEST)
+        detail = f'Ensure this value is less than or equal to {max_ttl}.'
+        self.assertEqual(response.data['ttl'][0], detail)
+
+        with self.assertPdnsRequests(self.requests_desec_rr_sets_update(name=self.my_empty_domain.name)):
+            response = self.client.post_rr_set(self.my_empty_domain.name, records=['1.2.23.4'], ttl=max_ttl, type='A')
+        self.assertStatus(response, status.HTTP_201_CREATED)
+
     def test_retrieve_my_rr_sets_apex(self):
     def test_retrieve_my_rr_sets_apex(self):
         response = self.client.get_rr_set(self.my_rr_set_domain.name, subname='', type_='A')
         response = self.client.get_rr_set(self.my_rr_set_domain.name, subname='', type_='A')
         self.assertStatus(response, status.HTTP_200_OK)
         self.assertStatus(response, status.HTTP_200_OK)