瀏覽代碼

feat(api): allow modifying Token.name

Peter Thomassen 5 年之前
父節點
當前提交
8eb78fde1f
共有 2 個文件被更改,包括 7 次插入15 次删除
  1. 4 4
      api/desecapi/tests/test_tokens.py
  2. 3 11
      api/desecapi/views.py

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

@@ -52,12 +52,12 @@ class TokenTestCase(DomainOwnerTestCase):
         self.assertStatus(response, status.HTTP_404_NOT_FOUND)
 
     def test_update_my_token(self):
-        token_id = Token.objects.get(user=self.user).id
-        url = self.reverse('v1:token-detail', pk=token_id)
+        url = self.reverse('v1:token-detail', pk=self.token.id)
 
         for method in [self.client.patch, self.client.put]:
-            response = method(url, data={'name': 'foobar'})
-            self.assertStatus(response, status.HTTP_405_METHOD_NOT_ALLOWED)
+            response = method(url, data={'name': method.__name__})
+            self.assertStatus(response, status.HTTP_200_OK)
+            self.assertEqual(response.data['name'], method.__name__)
 
     def test_create_token(self):
         n = len(Token.objects.filter(user=self.owner).all())

+ 3 - 11
api/desecapi/views.py

@@ -9,9 +9,7 @@ from django.core.mail import EmailMessage
 from django.http import Http404
 from django.shortcuts import redirect
 from django.template.loader import get_template
-from rest_framework import generics
-from rest_framework import mixins
-from rest_framework import status
+from rest_framework import generics, mixins, status, viewsets
 from rest_framework.authentication import get_authorization_header
 from rest_framework.exceptions import (NotAcceptable, NotFound, PermissionDenied, ValidationError)
 from rest_framework.permissions import IsAuthenticated, SAFE_METHODS
@@ -19,7 +17,6 @@ from rest_framework.renderers import JSONRenderer, StaticHTMLRenderer
 from rest_framework.response import Response
 from rest_framework.reverse import reverse
 from rest_framework.views import APIView
-from rest_framework.viewsets import GenericViewSet
 
 import desecapi.authentication as auth
 from desecapi import metrics, models, serializers
@@ -71,12 +68,7 @@ class DomainViewMixin:
             raise Http404
 
 
-class TokenViewSet(IdempotentDestroyMixin,
-                   mixins.CreateModelMixin,
-                   mixins.RetrieveModelMixin,
-                   mixins.DestroyModelMixin,
-                   mixins.ListModelMixin,
-                   GenericViewSet):
+class TokenViewSet(IdempotentDestroyMixin, viewsets.ModelViewSet):
     serializer_class = serializers.TokenSerializer
     permission_classes = (IsAuthenticated,)
     throttle_scope = 'account_management_passive'
@@ -99,7 +91,7 @@ class DomainViewSet(IdempotentDestroyMixin,
                     mixins.RetrieveModelMixin,
                     mixins.DestroyModelMixin,
                     mixins.ListModelMixin,
-                    GenericViewSet):
+                    viewsets.GenericViewSet):
     serializer_class = serializers.DomainSerializer
     permission_classes = (IsAuthenticated, IsOwner, WithinDomainLimitOnPOST)
     lookup_field = 'name'