Warning: Can't synchronize with repository "(default)" (Unsupported version control system "svn": No module named svn). Look in the Trac log for more information.

Ticket #1203: dummy-request.diff

File dummy-request.diff, 5.0 KB (added by Chris Arndt, 3 years ago)

Combined above two files into one patch and adapted it to work with latest 1.0 HEAD

  • turbogears/tests/test_testutil.py

     
     1import unittest 
     2 
    13import cherrypy 
     4from turbogears import controllers, expose, redirect, testutil 
    25 
    3 import turbogears 
    4 from turbogears import controllers 
    5 from turbogears import testutil 
    6  
    76class MyRoot(controllers.RootController): 
    87    def set_name(self, name): 
    98        cookies = cherrypy.response.simple_cookie 
    109        cookies['name'] = name 
    1110        return "Hello " + name 
    12     set_name = turbogears.expose()(set_name) 
     11    set_name = expose()(set_name) 
    1312 
    1413    def get_name(self): 
    1514        cookies = cherrypy.request.simple_cookie 
     
    1716            return cookies['name'].value 
    1817        else: 
    1918            return "cookie not found" 
    20     get_name = turbogears.expose()(get_name) 
     19    get_name = expose()(get_name) 
    2120 
    2221    def get_unicode_name(self): 
    2322        """Return a nonsense string of non-ascii characters""" 
    2423        cherrypy.response.headers['Content-Type'] = 'text/plain; encoding=utf-8' 
    2524        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) 
    2726 
    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) 
    3630 
    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' 
     31class 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 
    4737 
    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

     
    131131    to_be_loaded = None 
    132132 
    133133 
    134 class DummyRequest: 
     134class DummyRequest(_cphttptools.Request): 
    135135    """A very simple dummy request.""" 
    136136 
    137137    remote_host = "127.0.0.1" 
    138138 
    139139    def __init__(self, method='GET', path='/', headers=None): 
     140        super(DummyRequest, self).__init__("127.0.0.1", "4711", "127.0.0.1") 
    140141        self.headers = headers or {} 
    141142        self.method = method 
    142143        self.path = path 
     144        self.path_info = '' 
     145        self.query_string = '' 
    143146        self.base = '' 
     147        self.params = {} 
     148        self.object_trail = [] 
    144149        self._session = DummySession() 
    145150 
    146151    def purge__(self): 
     
    162167    orig_proc_output = controllers._process_output 
    163168    controllers._process_output = _return_directly 
    164169    cherrypy.serving.response = _cphttptools.Response() 
     170    cherrypy.serving.response.version = "1.1" 
    165171    cherrypy.serving.request = request 
    166172    if not hasattr(request, "identity"): 
    167173        attach_identity(request)