diff options
| author | Tom Christie | 2014-12-17 13:12:01 +0000 | 
|---|---|---|
| committer | Tom Christie | 2014-12-17 13:12:01 +0000 | 
| commit | 7fbf5b0e6bf49a7f2761229b1576027d39e56be4 (patch) | |
| tree | 30be2bad8ba2447601d7436082d2297d3af166a5 /tests | |
| parent | d872c8e2e7f3e5c3a4d8d648361394858f68f5d6 (diff) | |
| parent | a68e78bd0b5174d2c8a40497d3d5842f66c65a34 (diff) | |
| download | django-rest-framework-7fbf5b0e6bf49a7f2761229b1576027d39e56be4.tar.bz2 | |
Merge pull request #2155 from martinmaillard/set-user-on-wrapped-request
Set authenticated user on wrapped request
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_middleware.py | 37 | ||||
| -rw-r--r-- | tests/test_request.py | 7 | 
2 files changed, 43 insertions, 1 deletions
| diff --git a/tests/test_middleware.py b/tests/test_middleware.py new file mode 100644 index 00000000..4c099fca --- /dev/null +++ b/tests/test_middleware.py @@ -0,0 +1,37 @@ + +from django.conf.urls import patterns, url +from django.contrib.auth.models import User +from rest_framework.authentication import TokenAuthentication +from rest_framework.authtoken.models import Token +from rest_framework.test import APITestCase +from rest_framework.views import APIView + + +urlpatterns = patterns( +    '', +    url(r'^$', APIView.as_view(authentication_classes=(TokenAuthentication,))), +) + + +class MyMiddleware(object): + +    def process_response(self, request, response): +        assert hasattr(request, 'user'), '`user` is not set on request' +        assert request.user.is_authenticated(), '`user` is not authenticated' +        return response + + +class TestMiddleware(APITestCase): + +    urls = 'tests.test_middleware' + +    def test_middleware_can_access_user_when_processing_response(self): +        user = User.objects.create_user('john', 'john@example.com', 'password') +        key = 'abcd1234' +        Token.objects.create(key=key, user=user) + +        with self.settings( +            MIDDLEWARE_CLASSES=('tests.test_middleware.MyMiddleware',) +        ): +            auth = 'Token ' + key +            self.client.get('/', HTTP_AUTHORIZATION=auth) diff --git a/tests/test_request.py b/tests/test_request.py index 7cf8c327..02a9b1e2 100644 --- a/tests/test_request.py +++ b/tests/test_request.py @@ -224,7 +224,8 @@ class TestUserSetter(TestCase):      def setUp(self):          # Pass request object through session middleware so session is          # available to login and logout functions -        self.request = Request(factory.get('/')) +        self.wrapped_request = factory.get('/') +        self.request = Request(self.wrapped_request)          SessionMiddleware().process_request(self.request)          User.objects.create_user('ringo', 'starr@thebeatles.com', 'yellow') @@ -244,6 +245,10 @@ class TestUserSetter(TestCase):          logout(self.request)          self.assertTrue(self.request.user.is_anonymous()) +    def test_logged_in_user_is_set_on_wrapped_request(self): +        login(self.request, self.user) +        self.assertEqual(self.wrapped_request.user, self.user) +  class TestAuthSetter(TestCase): | 
