Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 471

Show
Ignore:
Timestamp:
07/14/05 21:06:43
Author:
fumanchu
Message:

New webtest methods, such as assertStatus, assertHeader, assertInBody

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/test/helper.py

    r470 r471  
    8282class CPWebCase(webtest.WebCase): 
    8383     
     84    def _getRequest(self, url, headers, method, body): 
     85        # Like getPage, but for serverless requests. 
     86        requestLine = "%s %s HTTP/1.0" % (method.upper(), url) 
     87        headers = webtest.cleanHeaders(headers, method, body) 
     88         
     89        found = False 
     90        for k, v in headers: 
     91            if k.lower() == 'host': 
     92                found = True 
     93                break 
     94        if not found: 
     95            headers.append(("Host", "%s:%s" % (HOST, PORT))) 
     96         
     97        if body is not None: 
     98            body = StringIO.StringIO(body) 
     99         
     100        webtest.ServerError.on = False 
     101        cherrypy.server.request(HOST, HOST, requestLine, headers, body, "http") 
     102        self.status = cherrypy.response.status 
     103        self.headers = cherrypy.response.headers 
     104        self.body = "".join([chunk for chunk in cherrypy.response.body]) 
     105        if webtest.ServerError.on: 
     106            raise webtest.ServerError 
     107     
    84108    def getPage(self, url, headers=None, method="GET", body=None): 
    85109        # Install a custom error handler, so errors in the server will: 
     
    88112        cherrypy.root._cpOnError = onerror 
    89113         
    90         resp = cherrypy.response 
    91114        if cherrypy._httpserver is None: 
    92             requestLine = "%s %s HTTP/1.0" % (method.upper(), url) 
    93             headers = webtest.cleanHeaders(headers, method, body) 
    94              
    95             found = False 
    96             for k, v in headers: 
    97                 if k.lower() == 'host': 
    98                     found = True 
    99                     break 
    100             if not found: 
    101                 headers.append(("Host", "%s:%s" % (HOST, PORT))) 
    102              
    103             if body is not None: 
    104                 body = StringIO.StringIO(body) 
    105              
    106             webtest.ServerError.on = False 
    107             cherrypy.server.request(HOST, HOST, requestLine, headers, body, "http") 
    108             resp.body = "".join([chunk for chunk in resp.body]) 
    109             if webtest.ServerError.on: 
    110                 raise webtest.ServerError 
     115            self._getRequest(url, headers, method, body) 
    111116        else: 
    112             result = webtest.WebCase.getPage(self, url, headers, method, body) 
    113             resp.status, resp.headers, resp.body = result 
    114             # We want both .headerMap and .headers to be available. 
    115             resp.headerMap = dict(resp.headers) 
    116  
     117            webtest.WebCase.getPage(self, url, headers, method, body) 
  • trunk/cherrypy/test/test_baseurl_filter.py

    r467 r471  
    5353    def testBaseUrlFilter(self): 
    5454        self.getPage("/") 
    55         self.assertEqual(cherrypy.response.headerMap['Location'], 
    56                          "http://www.mydomain.com/dummy") 
     55        self.assertHeader('Location', "http://www.mydomain.com/dummy") 
    5756 
    5857 
  • trunk/cherrypy/test/test_cache_filter.py

    r467 r471  
    5959        for trial in xrange(2): 
    6060            self.getPage("/") 
    61             self.assertEqual(cherrypy.response.body, 'visit #1') 
     61            self.assertBody('visit #1') 
    6262 
    6363if __name__ == '__main__': 
  • trunk/cherrypy/test/test_combinedfilters.py

    r467 r471  
    6363         
    6464        self.getPage("/", headers=[("Accept-Encoding", "gzip")]) 
    65         self.assert_(zbuf.getvalue()[:3] in cherrypy.response.body
     65        self.assertInBody(zbuf.getvalue()[:3]
    6666 
    6767 
  • trunk/cherrypy/test/test_core.py

    r470 r471  
    257257    def testParams(self): 
    258258        self.getPage("/params/?thing=a") 
    259         self.assertEqual(cherrypy.response.body, 'a') 
     259        self.assertBody('a') 
    260260         
    261261        self.getPage("/params/?thing=a&thing=b&thing=c") 
    262         self.assertEqual(cherrypy.response.body, 'abc') 
     262        self.assertBody('abc') 
    263263     
    264264    def testStatus(self): 
    265265        self.getPage("/status/") 
    266         self.assertEqual(cherrypy.response.body, 'normal') 
    267         self.assertEqual(cherrypy.response.status, '200 OK') 
     266        self.assertBody('normal') 
     267        self.assertStatus('200 OK') 
    268268         
    269269        self.getPage("/status/blank") 
    270         self.assertEqual(cherrypy.response.body, '') 
    271         self.assertEqual(cherrypy.response.status, '200 OK') 
     270        self.assertBody('') 
     271        self.assertStatus('200 OK') 
    272272         
    273273        self.getPage("/status/illegal") 
    274         self.assertEqual(cherrypy.response.body, 'oops') 
    275         self.assertEqual(cherrypy.response.status, '500 Internal error') 
     274        self.assertBody('oops') 
     275        self.assertStatus('500 Internal error') 
    276276         
    277277        self.getPage("/status/unknown") 
    278         self.assertEqual(cherrypy.response.body, 'funky') 
    279         self.assertEqual(cherrypy.response.status, '431 My custom error') 
     278        self.assertBody('funky') 
     279        self.assertStatus('431 My custom error') 
    280280         
    281281        self.getPage("/status/bad") 
    282         self.assertEqual(cherrypy.response.body, 'hello') 
    283         self.assertEqual(cherrypy.response.status, '500 Internal error') 
     282        self.assertBody('hello') 
     283        self.assertStatus('500 Internal error') 
    284284     
    285285    def testRedirect(self): 
    286286        self.getPage("/redirect/") 
    287         self.assertEqual(cherrypy.response.body, 'child') 
    288         self.assertEqual(cherrypy.response.status, '200 OK') 
     287        self.assertBody('child') 
     288        self.assertStatus('200 OK') 
    289289         
    290290        self.getPage("/redirect?id=3") 
    291         self.assert_(cherrypy.response.status in ('302 Found', '303 See Other')) 
    292         self.assert_("<a href='http://127.0.0.1:8000/redirect/?id=3'>http://127.0.0.1:8000/redirect/?id=3</a>" 
    293                      in cherrypy.response.body
     291        self.assert_(self.status in ('302 Found', '303 See Other')) 
     292        self.assertInBody("<a href='http://127.0.0.1:8000/redirect/?id=3'>" 
     293                          "http://127.0.0.1:8000/redirect/?id=3</a>"
    294294         
    295295        self.getPage("/redirect/by_code?code=300") 
    296         self.assert_("<a href='somewhere else'>somewhere else</a>" in cherrypy.response.body
    297         self.assertEqual(cherrypy.response.status, '300 Multiple Choices') 
     296        self.assertInBody("<a href='somewhere else'>somewhere else</a>"
     297        self.assertStatus('300 Multiple Choices') 
    298298         
    299299        self.getPage("/redirect/by_code?code=301") 
    300         self.assert_("<a href='somewhere else'>somewhere else</a>" in cherrypy.response.body
    301         self.assertEqual(cherrypy.response.status, '301 Moved Permanently') 
     300        self.assertInBody("<a href='somewhere else'>somewhere else</a>"
     301        self.assertStatus('301 Moved Permanently') 
    302302         
    303303        self.getPage("/redirect/by_code?code=302") 
    304         self.assert_("<a href='somewhere else'>somewhere else</a>" in cherrypy.response.body
    305         self.assertEqual(cherrypy.response.status, '302 Found') 
     304        self.assertInBody("<a href='somewhere else'>somewhere else</a>"
     305        self.assertStatus('302 Found') 
    306306         
    307307        self.getPage("/redirect/by_code?code=303") 
    308         self.assert_("<a href='somewhere else'>somewhere else</a>" in cherrypy.response.body
    309         self.assertEqual(cherrypy.response.status, '303 See Other') 
     308        self.assertInBody("<a href='somewhere else'>somewhere else</a>"
     309        self.assertStatus('303 See Other') 
    310310         
    311311        self.getPage("/redirect/by_code?code=307") 
    312         self.assert_("<a href='somewhere else'>somewhere else</a>" in cherrypy.response.body
    313         self.assertEqual(cherrypy.response.status, '307 Temporary Redirect') 
     312        self.assertInBody("<a href='somewhere else'>somewhere else</a>"
     313        self.assertStatus('307 Temporary Redirect') 
    314314         
    315315        self.getPage("/redirect/nomodify") 
    316         self.assertEqual(cherrypy.response.body, '') 
    317         self.assertEqual(cherrypy.response.status, '304 Not modified') 
     316        self.assertBody('') 
     317        self.assertStatus('304 Not modified') 
    318318         
    319319        self.getPage("/redirect/proxy") 
    320         self.assertEqual(cherrypy.response.body, '') 
    321         self.assertEqual(cherrypy.response.status, '305 Use Proxy') 
     320        self.assertBody('') 
     321        self.assertStatus('305 Use Proxy') 
    322322         
    323323        # InternalRedirect 
    324324        self.getPage("/redirect/internal") 
    325         self.assertEqual(cherrypy.response.body, 'hello') 
    326         self.assertEqual(cherrypy.response.status, '200 OK') 
     325        self.assertBody('hello') 
     326        self.assertStatus('200 OK') 
    327327         
    328328        self.getPage("/redirect/internal2?user_id=Sir-not-appearing-in-this-film") 
    329         self.assertEqual(cherrypy.response.body, '0 images for Sir-not-appearing-in-this-film') 
    330         self.assertEqual(cherrypy.response.status, '200 OK') 
     329        self.assertBody('0 images for Sir-not-appearing-in-this-film') 
     330        self.assertStatus('200 OK') 
    331331         
    332332        self.getPage("/redirect/internal2?user_id=parrot") 
    333         self.assertEqual(cherrypy.response.body, '0 images for slug') 
    334         self.assertEqual(cherrypy.response.status, '200 OK') 
     333        self.assertBody('0 images for slug') 
     334        self.assertStatus('200 OK') 
    335335         
    336336        self.getPage("/redirect/internal2?user_id=terrier") 
    337         self.assertEqual(cherrypy.response.body, '0 images for fish') 
    338         self.assertEqual(cherrypy.response.status, '200 OK') 
     337        self.assertBody('0 images for fish') 
     338        self.assertStatus('200 OK') 
    339339     
    340340    def testFlatten(self): 
     
    343343                    "/flatten/as_refyield"]: 
    344344            self.getPage(url) 
    345             self.assertEqual(cherrypy.response.body, 'content') 
     345            self.assertBody('content') 
    346346     
    347347    def testErrorHandling(self): 
    348348        self.getPage("/error/missing") 
    349         self.assert_("NotFound" in cherrypy.response.body
     349        self.assertInBody("NotFound"
    350350         
    351351        helper.webtest.ignored_exceptions.append(ValueError) 
     
    353353            valerr = '\n    raise ValueError\nValueError\n' 
    354354            self.getPage("/error/page_method") 
    355             self.assert_(cherrypy.response.body.endswith(valerr)) 
     355            self.assert_(self.body.endswith(valerr)) 
    356356             
    357357            self.getPage("/error/page_yield") 
    358             self.assert_(cherrypy.response.body.endswith(valerr)) 
     358            self.assert_(self.body.endswith(valerr)) 
    359359             
    360360            if cherrypy._httpserver is None: 
     
    364364                # Because this error is raised after the response body has 
    365365                # started, the status should not change to an error status. 
    366                 self.assertEqual(cherrypy.response.status, "200 OK") 
    367                 self.assertEqual(cherrypy.response.body, "helloUnrecoverable error in the server.") 
     366                self.assertStatus("200 OK") 
     367                self.assertBody("helloUnrecoverable error in the server.") 
    368368        finally: 
    369369            helper.webtest.ignored_exceptions.pop() 
     
    371371    def testHeaderCaseSensitivity(self): 
    372372        self.getPage("/headers/") 
    373         self.assertEqual(cherrypy.response.body, "double header test") 
    374         hnames = [name.title() for name, val in cherrypy.response.headers] 
     373        self.assertBody("double header test") 
     374        hnames = [name.title() for name, val in self.headers] 
    375375        hnames.sort() 
    376376        self.assertEqual(hnames, ['Content-Length', 'Content-Type', 'Date', 'Expires', 
     
    387387                m = "" 
    388388             
    389             self.assertEqual(cherrypy.response.body, m) 
     389            self.assertBody(m) 
    390390         
    391391        # Request a PUT method with a form-urlencoded body 
    392392        self.getPage("/method/parameterized", method="PUT", 
    393393                       body="data=on+top+of+other+things") 
    394         self.assertEqual(cherrypy.response.body, "on top of other things") 
     394        self.assertBody("on top of other things") 
    395395         
    396396        # Request a PUT method with a file body 
     
    400400        self.getPage("/method/request_body", headers=h, method="PUT", 
    401401                       body="one thing on top of another") 
    402         self.assertEqual(cherrypy.response.body, "one thing on top of another") 
     402        self.assertBody("one thing on top of another") 
    403403         
    404404        # Request a disallowed method 
    405405        self.getPage("/method/", method="LINK") 
    406         self.assertEqual(cherrypy.response.status, "405 Method Not Allowed") 
     406        self.assertStatus("405 Method Not Allowed") 
    407407         
    408408        # Request an unknown method 
    409409        self.getPage("/method/", method="SEARCH") 
    410         self.assertEqual(cherrypy.response.status, "501 Not Implemented") 
     410        self.assertStatus("501 Not Implemented") 
    411411     
    412412    def testFavicon(self): 
     
    419419         
    420420        self.getPage("/favicon.ico") 
    421         self.assertEqual(cherrypy.response.body, data) 
     421        self.assertBody(data) 
    422422         
    423423        self.getPage("/redirect/favicon.ico") 
    424         self.assertEqual(cherrypy.response.body, data) 
     424        self.assertBody(data) 
    425425     
    426426    def testCookies(self): 
    427427        self.getPage("/cookies/single?name=First", 
    428428                     [('Cookie', 'First=Dinsdale;')]) 
    429         self.assert_(('Set-Cookie', 'First=Dinsdale;') in cherrypy.response.headers
     429        self.assertHeader('Set-Cookie', 'First=Dinsdale;'
    430430         
    431431        self.getPage("/cookies/multiple?names=First&names=Last", 
    432432                     [('Cookie', 'First=Dinsdale; Last=Piranha;'), 
    433433                      ]) 
    434         self.assert_(('Set-Cookie', 'First=Dinsdale;') in cherrypy.response.headers
    435         self.assert_(('Set-Cookie', 'Last=Piranha;') in cherrypy.response.headers
     434        self.assertHeader('Set-Cookie', 'First=Dinsdale;'
     435        self.assertHeader('Set-Cookie', 'Last=Piranha;'
    436436 
    437437 
  • trunk/cherrypy/test/test_decodingencoding_filter.py

    r467 r471  
    5757    def testDecodingEncodingFilter(self): 
    5858        self.getPage('/?param=%s' % europoundUtf8) 
    59         self.assertEqual(cherrypy.response.body, europoundUtf8) 
     59        self.assertBody(europoundUtf8) 
    6060 
    6161 
  • trunk/cherrypy/test/test_gzip_filter.py

    r467 r471  
    6868         
    6969        self.getPage('/', headers=[("Accept-Encoding", "gzip")]) 
    70         self.assert_(zbuf.getvalue()[:3] in cherrypy.response.body
     70        self.assertInBody(zbuf.getvalue()[:3]
    7171         
    7272        # Test for ticket #147 
     
    7474        try: 
    7575            self.getPage('/noshow', headers=[("Accept-Encoding", "gzip")]) 
    76             self.assert_('Content-Encoding' not in cherrypy.response.headerMap
    77             self.assert_(cherrypy.response.body.endswith("IndexError\n")) 
     76            self.assert_('Content-Encoding' not in dict(self.headers)
     77            self.assert_(self.body.endswith("IndexError\n")) 
    7878        finally: 
    7979            helper.webtest.ignored_exceptions.pop() 
  • trunk/cherrypy/test/test_logdebuginfo_filter.py

    r467 r471  
    5858    def testLogDebugInfoFilter(self): 
    5959        self.getPage('/') 
    60         self.assert_('Build time' in cherrypy.response.body
    61         self.assert_('Page size' in cherrypy.response.body
     60        self.assertInBody('Build time'
     61        self.assertInBody('Page size'
    6262        # not compatible with the sessionFilter 
    63         #self.assert_('Session data size' in cherrypy.response.body
     63        #self.assertInBody('Session data size'
    6464 
    6565 
  • trunk/cherrypy/test/test_objectmapping.py

    r467 r471  
    109109    def testObjectMapping(self): 
    110110        self.getPage('/') 
    111         self.assertEqual(cherrypy.response.body, 'world') 
     111        self.assertBody('world') 
    112112         
    113113        self.getPage("/dir1/myMethod") 
    114         self.assertEqual(cherrypy.response.body, "myMethod from dir1, object Path is:'/dir1/myMethod'") 
     114        self.assertBody("myMethod from dir1, object Path is:'/dir1/myMethod'") 
    115115         
    116116        self.getPage("/this/method/does/not/exist") 
    117         self.assertEqual(cherrypy.response.body, "default:('this', 'method', 'does', 'not', 'exist')") 
     117        self.assertBody("default:('this', 'method', 'does', 'not', 'exist')") 
    118118         
    119119        self.getPage("/extra/too/much") 
    120         self.assertEqual(cherrypy.response.body, "default:('extra', 'too', 'much')") 
     120        self.assertBody("default:('extra', 'too', 'much')") 
    121121         
    122122        self.getPage("/other") 
    123         self.assertEqual(cherrypy.response.body, 'other') 
     123        self.assertBody('other') 
    124124         
    125125        self.getPage("/notExposed") 
    126         self.assertEqual(cherrypy.response.body, "default:('notExposed',)") 
     126        self.assertBody("default:('notExposed',)") 
    127127         
    128128        self.getPage("/dir1/dir2/") 
    129         self.assertEqual(cherrypy.response.body, 'index for dir2, path is:/dir1/dir2/') 
     129        self.assertBody('index for dir2, path is:/dir1/dir2/') 
    130130         
    131131        self.getPage("/dir1/dir2") 
    132         self.assert_(cherrypy.response.status in ('302 Found', '303 See Other')) 
    133         self.assertEqual(cherrypy.response.headerMap['Location'], 
    134                          'http://%s:%s/dir1/dir2/' % (helper.HOST, helper.PORT)) 
     132        self.assert_(self.status in ('302 Found', '303 See Other')) 
     133        self.assertHeader('Location', 'http://%s:%s/dir1/dir2/' 
     134                          % (helper.HOST, helper.PORT)) 
    135135         
    136136        self.getPage("/dir1/dir2/dir3/dir4/index") 
    137         self.assertEqual(cherrypy.response.body, 
    138                          "default for dir1, param is:('dir2', 'dir3', 'dir4', 'index')") 
     137        self.assertBody("default for dir1, param is:('dir2', 'dir3', 'dir4', 'index')") 
    139138         
    140139        self.getPage("/redirect") 
    141         self.assertEqual(cherrypy.response.status, '302 Found') 
    142         self.assertEqual(cherrypy.response.headerMap['Location'], 
    143                          'http://%s:%s/dir1/' % (helper.HOST, helper.PORT)) 
     140        self.assertStatus('302 Found') 
     141        self.assertHeader('Location', 'http://%s:%s/dir1/' 
     142                          % (helper.HOST, helper.PORT)) 
    144143 
    145144 
  • trunk/cherrypy/test/test_session_filter.py

    r470 r471  
    140140    def doSession(self, threaded = False): 
    141141        self.getPage(self.sessionPath) 
    142         self.assertEqual(cherrypy.response.body, '1') 
     142        self.assertBody('1') 
    143143         
    144144        h = [] 
    145145        for k, v in cherrypy.response.headers: 
    146146            if k == 'Set-Cookie': 
    147                 print ">>", v 
    148147                h.append(('Cookie', v)) 
    149148        getPageArgs = (self.sessionPath, h) 
     
    164163                    pass 
    165164                webtest.ignore_all = False 
    166             for k, v in cherrypy.response.headers: 
    167                 if k.lower() == 'set-cookie': 
    168                     print ">", v 
    169165             
    170         self.assertEqual(cherrypy.response.body, str(3)) 
     166        self.assertBody(str(3)) 
    171167     
    172168    def doThreadSafety(self): 
  • trunk/cherrypy/test/test_static_filter.py

    r467 r471  
    5858    def testStaticFilter(self): 
    5959        self.getPage("/static/index.html") 
    60         self.assertEqual(cherrypy.response.headerMap['Content-Type'], 'text/html') 
    61         self.assertEqual(cherrypy.response.body, 'Hello, world\r\n') 
     60        self.assertHeader('Content-Type', 'text/html') 
     61        self.assertBody('Hello, world\r\n') 
    6262         
    6363        self.getPage("/style.css") 
    64         self.assertEqual(cherrypy.response.headerMap['Content-Type'], 'text/css') 
     64        self.assertHeader('Content-Type', 'text/css') 
    6565        # Note: The body should be exactly 'Dummy stylesheet\n', but 
    6666        #   unfortunately some tools such as WinZip sometimes turn \n 
    6767        #   into \r\n on Windows when extracting the CherryPy tarball so 
    6868        #   we just check the content 
    69         self.assert_(cherrypy.response.body.startswith('Dummy stylesheet')) 
     69        self.assert_(self.body.startswith('Dummy stylesheet')) 
    7070 
    7171if __name__ == "__main__": 
  • trunk/cherrypy/test/test_tutorials.py

    r467 r471  
    6060        load_tut_module("tut01_helloworld") 
    6161        self.getPage("/") 
    62         self.assertEqual(cherrypy.response.body, 'Hello world!') 
     62        self.assertBody('Hello world!') 
    6363     
    6464    def test02ExposeMethods(self): 
    6565        load_tut_module("tut02_expose_methods") 
    6666        self.getPage("/showMessage") 
    67         self.assertEqual(cherrypy.response.body, 'Hello world!') 
     67        self.assertBody('Hello world!') 
    6868     
    6969    def test03GetAndPost(self): 
     
    7272        # Try different GET queries 
    7373        self.getPage("/greetUser?name=Bob") 
    74         self.assertEqual(cherrypy.response.body, "Hey Bob, what's up?") 
     74        self.assertBody("Hey Bob, what's up?") 
    7575         
    7676        self.getPage("/greetUser") 
    77         self.assertEqual(cherrypy.response.body, 
    78                          'Please enter your name <a href="./">here</a>.') 
     77        self.assertBody('Please enter your name <a href="./">here</a>.') 
    7978         
    8079        self.getPage("/greetUser?name=") 
    81         self.assertEqual(cherrypy.response.body, 
    82                          'No, really, enter your name <a href="./">here</a>.') 
     80        self.assertBody('No, really, enter your name <a href="./">here</a>.') 
    8381         
    8482        # Try the same with POST 
    8583        self.getPage("/greetUser", method="POST", body="name=Bob") 
    86         self.assertEqual(cherrypy.response.body, "Hey Bob, what's up?") 
     84        self.assertBody("Hey Bob, what's up?") 
    8785         
    8886        self.getPage("/greetUser", method="POST", body="name=") 
    89         self.assertEqual(cherrypy.response.body, 
    90                          'No, really, enter your name <a href="./">here</a>.') 
     87        self.assertBody('No, really, enter your name <a href="./">here</a>.') 
    9188     
    9289    def test04ComplexSite(self): 
     
    10299            <p>[<a href="../">Return to links page</a>]</p>''' 
    103100        self.getPage("/links/extra/") 
    104         self.assertEqual(cherrypy.response.body, msg) 
     101        self.assertBody(msg) 
    105102     
    106103    def test05DerivedObjects(self): 
     
    122119        ''' 
    123120        self.getPage("/another/") 
    124         self.assertEqual(cherrypy.response.body, msg) 
     121        self.assertBody(msg) 
    125122     
    126123    def test06DefaultMethod(self): 
    127124        load_tut_module("tut06_default_method") 
    128125        self.getPage('/hendrik') 
    129         self.assertEqual(cherrypy.response.body, 
    130                          'Hendrik Mans, CherryPy co-developer & crazy German ' 
     126        self.assertBody('Hendrik Mans, CherryPy co-developer & crazy German ' 
    131127                         '(<a href="./">back</a>)') 
    132128    def test07Sessions(self): 
     
    135131         
    136132        self.getPage('/') 
    137         self.assertEqual(cherrypy.response.body, 
    138                          "\n            During your current session, you've viewed this" 
     133        self.assertBody("\n            During your current session, you've viewed this" 
    139134                         "\n            page 1 times! Your life is a patio of fun!" 
    140135                         "\n        ") 
    141136         
    142         self.getPage('/', [('Cookie', dict(cherrypy.response.headers)['Set-Cookie'])]) 
    143         self.assertEqual(cherrypy.response.body, 
    144                          "\n            During your current session, you've viewed this" 
     137        self.getPage('/', [('Cookie', dict(self.headers)['Set-Cookie'])]) 
     138        self.assertBody("\n            During your current session, you've viewed this" 
    145139                         "\n            page 2 times! Your life is a patio of fun!" 
    146140                         "\n        ") 
     
    151145         
    152146        self.getPage('/') 
    153         self.assert_("viewed this page 1 times" in cherrypy.response.body
     147        self.assertInBody("viewed this page 1 times"
    154148         
    155         self.getPage('/', [('Cookie', dict(cherrypy.response.headers)['Set-Cookie'])]) 
    156         self.assert_("viewed this page 2 times" in cherrypy.response.body
     149        self.getPage('/', [('Cookie', dict(self.headers)['Set-Cookie'])]) 
     150        self.assertInBody("viewed this page 2 times"
    157151     
    158152    def test09GeneratorsAndYield(self): 
    159153        load_tut_module("tut09_generators_and_yield") 
    160154        self.getPage('/') 
    161         self.assertEqual(cherrypy.response.body, 
    162                          '<html><body><h2>Generators rule!</h2>' 
     155        self.assertBody('<html><body><h2>Generators rule!</h2>' 
    163156                         '<h3>List of users:</h3>' 
    164157                         'Remi<br/>Carlos<br/>Hendrik<br/>Lorenzo Lamas<br/>' 
     
    178171""" 
    179172        self.getPage('/upload', h, "POST", b) 
    180         self.assertEqual(cherrypy.response.body, ''' 
     173        self.assertBody(''' 
    181174        <html><body> 
    182175            myFile length: 5<br /> 
  • trunk/cherrypy/test/test_virtualhost_filter.py

    r467 r471  
    5353    def testVirtualHostFilter(self): 
    5454        self.getPage("/") 
    55         self.assertEqual(cherrypy.response.body, 'Hello, world') 
     55        self.assertBody('Hello, world') 
    5656 
    5757 
  • trunk/cherrypy/test/webtest.py

    r470 r471  
    153153         
    154154        result = openURL(url, headers, method, body, self.HOST, self.PORT) 
     155        self.status, self.headers, self.body = result 
    155156         
    156157        if ServerError.on: 
    157158            raise ServerError 
    158159        return result 
     160     
     161    def assertStatus(self, status, msg=None): 
     162        """Fail if self.status != status.""" 
     163        if not self.status == status: 
     164            raise self.failureException, \ 
     165                  (msg or 'Status (%s) != %s' % (`self.status`, `status`)) 
     166     
     167    def assertHeader(self, key, value=None, msg=None): 
     168        """Fail if (key, [value]) not in self.headers.""" 
     169        lowkey = key.lower() 
     170        for k, v in self.headers: 
     171            if k.lower() == lowkey: 
     172                if value is None or value == v: 
     173                    return 
     174         
     175        if value is None: 
     176            raise self.failureException, msg or '%s not in headers' % `key` 
     177        else: 
     178            raise self.failureException, \ 
     179                  (msg or '%s:%s not in headers' % (`key`, `value`)) 
     180     
     181    def assertBody(self, value, msg=None): 
     182        """Fail if value != self.body.""" 
     183        if value != self.body: 
     184            if msg is None: 
     185                msg = 'expected body:\n%s\n\nactual body:\n%s' % (`value`, `self.body`) 
     186            raise self.failureException, msg 
     187     
     188    def assertInBody(self, value, msg=None): 
     189        """Fail if value not in self.body.""" 
     190        if value not in self.body: 
     191            raise self.failureException, msg or '%s not in body' % `value` 
     192     
     193    def assertNotInBody(self, value, msg=None): 
     194        """Fail if value in self.body.""" 
     195        if value in self.body: 
     196            raise self.failureException, msg or '%s found in body' % `value` 
     197 
    159198 
    160199 

Hosted by WebFaction

Log in as guest/cpguest to create tickets