Ticket #1203: dummy-request.diff
| File dummy-request.diff, 5.0 KB (added by Chris Arndt, 3 years ago) |
|---|
-
turbogears/tests/test_testutil.py
1 import unittest 2 1 3 import cherrypy 4 from turbogears import controllers, expose, redirect, testutil 2 5 3 import turbogears4 from turbogears import controllers5 from turbogears import testutil6 7 6 class MyRoot(controllers.RootController): 8 7 def set_name(self, name): 9 8 cookies = cherrypy.response.simple_cookie 10 9 cookies['name'] = name 11 10 return "Hello " + name 12 set_name = turbogears.expose()(set_name)11 set_name = expose()(set_name) 13 12 14 13 def get_name(self): 15 14 cookies = cherrypy.request.simple_cookie … … 17 16 return cookies['name'].value 18 17 else: 19 18 return "cookie not found" 20 get_name = turbogears.expose()(get_name)19 get_name = expose()(get_name) 21 20 22 21 def get_unicode_name(self): 23 22 """Return a nonsense string of non-ascii characters""" 24 23 cherrypy.response.headers['Content-Type'] = 'text/plain; encoding=utf-8' 25 24 return u'\u1234\u9876\u3456'.encode('utf-8') 26 get_unicode_name = turbogears.expose()(get_unicode_name)25 get_unicode_name = expose()(get_unicode_name) 27 26 28 def test_browser_session(): 29 cherrypy.root = MyRoot() 30 bs = testutil.BrowsingSession() 31 bs.goto('/get_name') 32 assert bs.response == 'cookie not found' 33 bs.goto('/set_name?name=me') 34 bs.goto('/get_name') 35 assert bs.response == 'me' 27 def redirect(self): 28 raise redirect("foo") 29 redirect = expose()(redirect) 36 30 37 def test_browser_session_for_two_users(): 38 cherrypy.root = MyRoot() 39 bs1 = testutil.BrowsingSession() 40 bs2 = testutil.BrowsingSession() 41 bs1.goto('/set_name?name=bs1') 42 bs2.goto('/set_name?name=bs2') 43 bs1.goto('/get_name') 44 assert bs1.response == 'bs1' 45 bs2.goto('/get_name') 46 assert bs2.response == 'bs2' 31 class TestControllers(unittest.TestCase): 32 def setUp(self): 33 cherrypy.root = None 34 cherrypy.tree.mount_points = {} 35 cherrypy.tree.mount(MyRoot(), "/") 36 self.root = cherrypy.root 47 37 48 def test_unicode_response(): 49 cherrypy.root = MyRoot() 50 bs = testutil.BrowsingSession() 51 bs.goto('/get_unicode_name') 52 assert bs.response == u'\u1234\u9876\u3456'.encode('utf-8') 53 assert bs.unicode_response == u'\u1234\u9876\u3456' 54 assert type(bs.unicode_response) == unicode 38 def tearDown(self): 39 cherrypy.root = None 40 cherrypy.tree.mount_points = {} 41 42 def test_browser_session(self): 43 bs = testutil.BrowsingSession() 44 bs.goto('/get_name') 45 assert bs.response == 'cookie not found' 46 bs.goto('/set_name?name=me') 47 bs.goto('/get_name') 48 assert bs.response == 'me' 49 50 def test_browser_session_for_two_users(self): 51 bs1 = testutil.BrowsingSession() 52 bs2 = testutil.BrowsingSession() 53 bs1.goto('/set_name?name=bs1') 54 bs2.goto('/set_name?name=bs2') 55 bs1.goto('/get_name') 56 assert bs1.response == 'bs1' 57 bs2.goto('/get_name') 58 assert bs2.response == 'bs2' 59 60 def test_unicode_response(self): 61 bs = testutil.BrowsingSession() 62 bs.goto('/get_unicode_name') 63 assert bs.response == u'\u1234\u9876\u3456'.encode('utf-8') 64 assert bs.unicode_response == u'\u1234\u9876\u3456' 65 assert type(bs.unicode_response) == unicode 66 67 def test_index(self): 68 "Test that call_with_request is usable if controller uses redirect" 69 try: 70 testutil.call(self.root.redirect) 71 self.fail("no redirect exception raised") 72 except cherrypy.HTTPRedirect, e: 73 assert e.status in [302, 303] 74 self.assertEquals(1, len(e.urls)) 75 assert e.urls[0].endswith("foo") -
turbogears/testutil.py
131 131 to_be_loaded = None 132 132 133 133 134 class DummyRequest :134 class DummyRequest(_cphttptools.Request): 135 135 """A very simple dummy request.""" 136 136 137 137 remote_host = "127.0.0.1" 138 138 139 139 def __init__(self, method='GET', path='/', headers=None): 140 super(DummyRequest, self).__init__("127.0.0.1", "4711", "127.0.0.1") 140 141 self.headers = headers or {} 141 142 self.method = method 142 143 self.path = path 144 self.path_info = '' 145 self.query_string = '' 143 146 self.base = '' 147 self.params = {} 148 self.object_trail = [] 144 149 self._session = DummySession() 145 150 146 151 def purge__(self): … … 162 167 orig_proc_output = controllers._process_output 163 168 controllers._process_output = _return_directly 164 169 cherrypy.serving.response = _cphttptools.Response() 170 cherrypy.serving.response.version = "1.1" 165 171 cherrypy.serving.request = request 166 172 if not hasattr(request, "identity"): 167 173 attach_identity(request)