Source code for cherrypy.test.test_json

import cherrypy
from cherrypy.test import helper
from cherrypy._json import json


json_out = cherrypy.config(**{'tools.json_out.on': True})
json_in = cherrypy.config(**{'tools.json_in.on': True})


[docs]class JsonTest(helper.CPWebCase):
[docs] @staticmethod def setup_server(): class Root(object): @cherrypy.expose def plain(self): return 'hello' @cherrypy.expose @json_out def json_string(self): return 'hello' @cherrypy.expose @json_out def json_list(self): return ['a', 'b', 42] @cherrypy.expose @json_out def json_dict(self): return {'answer': 42} @cherrypy.expose @json_in def json_post(self): if cherrypy.request.json == [13, 'c']: return 'ok' else: return 'nok' @cherrypy.expose @json_out @cherrypy.config(**{'tools.caching.on': True}) def json_cached(self): return 'hello there' root = Root() cherrypy.tree.mount(root)
[docs] def test_json_output(self): if json is None: self.skip('json not found ') return self.getPage('/plain') self.assertBody('hello') self.getPage('/json_string') self.assertBody('"hello"') self.getPage('/json_list') self.assertBody('["a", "b", 42]') self.getPage('/json_dict') self.assertBody('{"answer": 42}')
[docs] def test_json_input(self): if json is None: self.skip('json not found ') return body = '[13, "c"]' headers = [('Content-Type', 'application/json'), ('Content-Length', str(len(body)))] self.getPage('/json_post', method='POST', headers=headers, body=body) self.assertBody('ok') body = '[13, "c"]' headers = [('Content-Type', 'text/plain'), ('Content-Length', str(len(body)))] self.getPage('/json_post', method='POST', headers=headers, body=body) self.assertStatus(415, 'Expected an application/json content type') body = '[13, -]' headers = [('Content-Type', 'application/json'), ('Content-Length', str(len(body)))] self.getPage('/json_post', method='POST', headers=headers, body=body) self.assertStatus(400, 'Invalid JSON document')
[docs] def test_cached(self): if json is None: self.skip('json not found ') return self.getPage('/json_cached') self.assertStatus(200, '"hello"') self.getPage('/json_cached') # 2'nd time to hit cache self.assertStatus(200, '"hello"')