aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/tests
diff options
context:
space:
mode:
authorTom Christie2013-06-26 15:37:42 -0700
committerTom Christie2013-06-26 15:37:42 -0700
commit7e67ad666bf67a60fc4ca67ff2b58bf3fddd42c7 (patch)
treee5a40c157c1d4a31ddaaef93ad77d2c528f8b697 /rest_framework/tests
parentaf2fdc03a6f4cafe6e2f19b2adcf59c8918088f2 (diff)
parentc127e63c32b2fb93d1a9422943005c1f6cc5328b (diff)
downloaddjango-rest-framework-7e67ad666bf67a60fc4ca67ff2b58bf3fddd42c7.tar.bz2
Merge pull request #953 from j4mie/prevent-duplicate-routing
Prevent dynamically routing to a method that is already routed to.
Diffstat (limited to 'rest_framework/tests')
-rw-r--r--rest_framework/tests/test_routers.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/rest_framework/tests/test_routers.py b/rest_framework/tests/test_routers.py
index fe0711fa..d375f4a8 100644
--- a/rest_framework/tests/test_routers.py
+++ b/rest_framework/tests/test_routers.py
@@ -2,6 +2,7 @@ from __future__ import unicode_literals
from django.db import models
from django.test import TestCase
from django.test.client import RequestFactory
+from django.core.exceptions import ImproperlyConfigured
from rest_framework import serializers, viewsets, permissions
from rest_framework.compat import include, patterns, url
from rest_framework.decorators import link, action
@@ -191,3 +192,24 @@ class TestActionKeywordArgs(TestCase):
response.data,
{'permission_classes': [permissions.AllowAny]}
)
+
+class TestActionAppliedToExistingRoute(TestCase):
+ """
+ Ensure `@action` decorator raises an except when applied
+ to an existing route
+ """
+
+ def test_exception_raised_when_action_applied_to_existing_route(self):
+ class TestViewSet(viewsets.ModelViewSet):
+
+ @action()
+ def retrieve(self, request, *args, **kwargs):
+ return Response({
+ 'hello': 'world'
+ })
+
+ self.router = SimpleRouter()
+ self.router.register(r'test', TestViewSet, base_name='test')
+
+ with self.assertRaises(ImproperlyConfigured):
+ self.router.urls