import webtest from webob import Request from tests.compat import unittest from webtest.compat import to_bytes def cookie_app(environ, start_response): req = Request(environ) status = "200 OK" body = '
go' headers = [ ('Content-Type', 'text/html'), ('Content-Length', str(len(body))), ] if req.path_info != '/go/': headers.extend([ ('Set-Cookie', 'spam=eggs'), ('Set-Cookie', 'foo="bar;baz"'), ]) start_response(status, headers) return [to_bytes(body)] def cookie_app2(environ, start_response): status = to_bytes("200 OK") body = '' headers = [ ('Content-Type', 'text/html'), ('Content-Length', str(len(body))), ('Set-Cookie', 'spam=eggs'), ('Set-Cookie', 'foo="bar;baz"'), ] start_response(status, headers) return [to_bytes(body)] def cookie_app3(environ, start_response): status = to_bytes("200 OK") body = 'Cookie: %(HTTP_COOKIE)s' % environ headers = [ ('Content-Type', 'text/html'), ('Content-Length', str(len(body))), ] start_response(status, headers) return [to_bytes(body)] class TestCookies(unittest.TestCase): def test_cookies(self): app = webtest.TestApp(cookie_app) self.assertTrue(not app.cookies, 'App should initially contain no cookies') app.get('/') cookies = app.cookies self.assert_(cookies, 'Response should have set cookies') self.assertEqual(cookies['spam'], 'eggs') self.assertEqual(cookies['foo'], 'bar;baz') def test_preserve_cookies(self): app = webtest.TestApp(cookie_app) res = app.get('/') self.assert_(app.cookies) res.click('go') self.assert_(app.cookies) def test_cookies2(self): app = webtest.TestApp(cookie_app) self.assertTrue(not app.cookies, 'App should initially contain no cookies') app.get('/') self.assert_(app.cookies, 'Response should have set cookies') self.assertIn(app.cookies['spam'], 'eggs') self.assertIn(app.cookies['foo'], 'bar;baz') def test_send_cookies(self): app = webtest.TestApp(cookie_app3) self.assertTrue(not app.cookies, 'App should initially contain no cookies') resp = app.get('/', headers=[('Cookie', 'spam=eggs')]) self.assertFalse(bool(app.cookies), 'Response should not have set cookies') resp.mustcontain('Cookie: spam=eggs')