4
4
5
5
from rest_framework .authentication import TokenAuthentication
6
6
from rest_framework .authtoken .models import Token
7
+ from rest_framework .response import Response
7
8
from rest_framework .test import APITestCase
8
9
from rest_framework .views import APIView
9
10
11
+
12
+ class PostView (APIView ):
13
+ def post (self , request ):
14
+ return Response (data = request .data , status = 200 )
15
+
16
+
10
17
urlpatterns = [
11
- url (r'^$' , APIView .as_view (authentication_classes = (TokenAuthentication ,))),
18
+ url (r'^auth$' , APIView .as_view (authentication_classes = (TokenAuthentication ,))),
19
+ url (r'^post$' , PostView .as_view ()),
12
20
]
13
21
14
22
15
- class MyMiddleware (object ):
23
+ class RequestUserMiddleware (object ):
16
24
def __init__ (self , get_response ):
17
25
self .get_response = get_response
18
26
@@ -24,13 +32,30 @@ def __call__(self, request):
24
32
return response
25
33
26
34
35
+ class RequestPOSTMiddleware (object ):
36
+ def __init__ (self , get_response ):
37
+ self .get_response = get_response
38
+
39
+ def __call__ (self , request ):
40
+ request .body
41
+ response = self .get_response (request )
42
+ assert request .POST ['foo' ] == 'bar'
43
+
44
+ return response
45
+
46
+
27
47
@override_settings (ROOT_URLCONF = 'tests.test_middleware' )
28
48
class TestMiddleware (APITestCase ):
29
49
30
- @override_settings (MIDDLEWARE = ('tests.test_middleware.MyMiddleware ' ,))
50
+ @override_settings (MIDDLEWARE = ('tests.test_middleware.RequestUserMiddleware ' ,))
31
51
def test_middleware_can_access_user_when_processing_response (self ):
32
52
user = User .
objects .
create_user (
'john' ,
'[email protected] ' ,
'password' )
33
53
key = 'abcd1234'
34
54
Token .objects .create (key = key , user = user )
35
55
36
56
self .client .get ('/auth' , HTTP_AUTHORIZATION = 'Token %s' % key )
57
+
58
+ @override_settings (MIDDLEWARE = ('tests.test_middleware.RequestPOSTMiddleware' ,))
59
+ def test_middleware_can_access_request_post_when_processing_response (self ):
60
+ response = self .client .post ('/post' , {'foo' : 'bar' })
61
+ assert response .status_code == 200
0 commit comments