from __future__ import absolute_import, division, with_statement
from wsgiref.validate import validator
+from tornado.escape import json_decode
+from tornado.test.httpserver_test import TypeCheckHandler
from tornado.testing import AsyncHTTPTestCase, LogTrapTestCase
from tornado.util import b
from tornado.web import RequestHandler
return WSGIContainer(validator(WSGIApplication([
("/", HelloHandler),
("/path/(.*)", PathQuotingHandler),
+ ("/typecheck", TypeCheckHandler),
])))
def test_simple(self):
response = self.fetch("/path/foo%20bar%C3%A9")
self.assertEqual(response.body, u"foo bar\u00e9".encode("utf-8"))
+ def test_types(self):
+ headers = {"Cookie": "foo=bar"}
+ response = self.fetch("/typecheck?foo=bar", headers=headers)
+ data = json_decode(response.body)
+ self.assertEqual(data, {})
+
+ response = self.fetch("/typecheck", method="POST", body="foo=bar", headers=headers)
+ data = json_decode(response.body)
+ self.assertEqual(data, {})
+
# This is kind of hacky, but run some of the HTTPServer tests through
# WSGIContainer and WSGIApplication to make sure everything survives
# repeated disassembly and reassembly.
self.query = environ.get("QUERY_STRING", "")
if self.query:
self.uri += "?" + self.query
- arguments = cgi.parse_qs(self.query)
+ arguments = parse_qs_bytes(native_str(self.query))
for name, values in arguments.iteritems():
values = [v for v in values if v]
if values: