from django.conf.urls import url from django.contrib.auth.models import User from drf.rest_framework.authentication import TokenAuthentication from drf.rest_framework.authtoken.models import Token from drf.rest_framework.test import APITestCase from drf.rest_framework.views import APIView urlpatterns = [ 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', '*****@*****.**', 'password') key = 'abcd1234' Token.objects.create(key=key, user=user)
def _finalize_response(self, request, response, *args, **kwargs): response.request = request return APIView.finalize_response(self, request, response, *args, **kwargs)