17
17
18
18
import mock
19
19
20
- from .decorators import json_view
20
+ from .decorators import json_view , json_request
21
21
from .exceptions import BadRequest
22
22
23
23
@@ -29,6 +29,7 @@ def eq_(a, b, msg=None):
29
29
"""From nose.tools.eq_."""
30
30
assert a == b , msg or '%r != %r' % (a , b )
31
31
32
+
32
33
if sys .version < '3' :
33
34
def b (x ):
34
35
return x
@@ -326,3 +327,101 @@ def get(self, request):
326
327
eq_ (JSON , res ['content-type' ])
327
328
data = json .loads (res .content .decode ('utf-8' ))
328
329
eq_ ('bar' , data ['foo' ])
330
+
331
+
332
+ class JsonRequestTests (TestCase ):
333
+ def test_application_json (self ):
334
+ data = {
335
+ 'foo' : 'bar' ,
336
+ 'baz' : 'qux' ,
337
+ 'quz' : [{'foo' : 'bar' }],
338
+ }
339
+
340
+ @json_request
341
+ def temp (req ):
342
+ return req .data
343
+
344
+ res = temp (rf .post (
345
+ '/' ,
346
+ data = json .dumps (data ),
347
+ content_type = 'application/json'
348
+ ))
349
+ eq_ (res , data )
350
+
351
+ def test_get_requests (self ):
352
+ data = {
353
+ 'foo' : 'bar' ,
354
+ 'baz' : '0'
355
+ }
356
+
357
+ @json_request (assume_json = False )
358
+ def temp (req ):
359
+ return req .data
360
+
361
+ res = temp (rf .get ('/?foo=bar&baz=0' ))
362
+ eq_ (res , data )
363
+
364
+ def test_post_requests (self ):
365
+ data = {
366
+ 'foo' : 'bar' ,
367
+ 'baz' : '0'
368
+ }
369
+
370
+ @json_request (assume_json = False )
371
+ def temp (req ):
372
+ return req .data
373
+
374
+ # test application/x-www-form-urlencoded
375
+ res = temp (rf .post (
376
+ '/' ,
377
+ data = 'foo=bar&baz=0' ,
378
+ content_type = 'application/x-www-form-urlencoded'
379
+ ))
380
+ eq_ (res , data )
381
+
382
+ # test multipart/form-data
383
+ res = temp (rf .post ('/' , data = data , files = None ))
384
+ eq_ (res , data )
385
+
386
+ def test_assume_json (self ):
387
+ data = {
388
+ 'foo' : 'bar' ,
389
+ 'baz' : '0'
390
+ }
391
+
392
+ @json_request (assume_json = True )
393
+ def temp (req ):
394
+ return req .data
395
+
396
+ @json_request (assume_json = False )
397
+ def temp_2 (req ):
398
+ return req .data
399
+
400
+ # test get request
401
+ res = temp (rf .get ('/?foo=bar&baz=0' ))
402
+ eq_ (res , {})
403
+
404
+ res = temp_2 (rf .get ('/?foo=bar&baz=0' ))
405
+ eq_ (res , data )
406
+
407
+ # test application/x-www-form-urlencoded
408
+ res = temp (rf .post (
409
+ '/' ,
410
+ data = 'foo=bar&baz=0' ,
411
+ content_type = 'application/x-www-form-urlencoded'
412
+ ))
413
+ eq_ (res , {})
414
+
415
+ res = temp_2 (rf .post (
416
+ '/' ,
417
+ data = 'foo=bar&baz=0' ,
418
+ content_type = 'application/x-www-form-urlencoded'
419
+ ))
420
+ eq_ (res , data )
421
+
422
+ # test multipart/form-data
423
+ res = temp (rf .post ('/' , data = data , files = None ))
424
+ eq_ (res , {})
425
+
426
+ res = temp_2 (rf .post ('/' , data = data , files = None ))
427
+ eq_ (res , data )
0 commit comments