9
9
from django .test import TestCase , override_settings
10
10
from django .urls import path
11
11
12
- from rest_framework import fields , serializers
12
+ from rest_framework import fields , parsers , serializers
13
13
from rest_framework .authtoken .models import Token
14
- from rest_framework .decorators import api_view
14
+ from rest_framework .decorators import api_view , parser_classes
15
15
from rest_framework .response import Response
16
16
from rest_framework .test import (
17
17
APIClient , APIRequestFactory , URLPatternsTestCase , force_authenticate
@@ -51,6 +51,12 @@ class BasicSerializer(serializers.Serializer):
51
51
flag = fields .BooleanField (default = lambda : True )
52
52
53
53
54
+ @api_view (['POST' ])
55
+ @parser_classes ((parsers .JSONParser ,))
56
+ def post_json_view (request ):
57
+ return Response (request .data )
58
+
59
+
54
60
@api_view (['POST' ])
55
61
def post_view (request ):
56
62
serializer = BasicSerializer (data = request .data )
@@ -63,7 +69,8 @@ def post_view(request):
63
69
path ('session-view/' , session_view ),
64
70
path ('redirect-view/' , redirect_view ),
65
71
path ('redirect-view/<int:code>/' , redirect_307_308_view ),
66
- path ('post-view/' , post_view )
72
+ path ('post-json-view/' , post_json_view ),
73
+ path ('post-view/' , post_view ),
67
74
]
68
75
69
76
@@ -237,6 +244,17 @@ def test_empty_post_uses_default_boolean_value(self):
237
244
assert response .status_code == 200
238
245
assert response .data == {"flag" : True }
239
246
247
+ def test_post_encodes_data_based_on_json_content_type (self ):
248
+ data = {'data' : True }
249
+ response = self .client .post (
250
+ '/post-json-view/' ,
251
+ data = data ,
252
+ content_type = 'application/json'
253
+ )
254
+
255
+ assert response .status_code == 200
256
+ assert response .data == data
257
+
240
258
241
259
class TestAPIRequestFactory (TestCase ):
242
260
def test_csrf_exempt_by_default (self ):
0 commit comments