diff -r 4f4369e63f5e -r 6abd6e3599f4 web/test/unittest_application.py --- a/web/test/unittest_application.py Mon Apr 12 14:41:01 2010 +0200 +++ b/web/test/unittest_application.py Tue Apr 13 12:19:24 2010 +0200 @@ -14,9 +14,10 @@ from logilab.common.testlib import TestCase, unittest_main from logilab.common.decorators import clear_cache +from cubicweb import AuthenticationError from cubicweb.devtools.testlib import CubicWebTC from cubicweb.devtools.fake import FakeRequest -from cubicweb.web import Redirect, AuthenticationError, ExplicitLogin, INTERNAL_FIELD_VALUE +from cubicweb.web import LogOut, Redirect, INTERNAL_FIELD_VALUE from cubicweb.web.views.basecontrollers import ViewController class FakeMapping: @@ -39,10 +40,12 @@ def __init__(self, form=None): self._cw = FakeRequest() self._cw.form = form or {} - self._cursor = self._cw.cursor = MockCursor() + self._cursor = MockCursor() + self._cw.execute = self._cursor.execute def new_cursor(self): - self._cursor = self._cw.cursor = MockCursor() + self._cursor = MockCursor() + self._cw.execute = self._cursor.execute def set_form(self, form): self._cw.form = form @@ -178,7 +181,7 @@ '__errorurl': 'view?vid=edition...' } path, params = self.expect_redirect(lambda x: self.app_publish(x, 'edit'), req) - forminfo = req.get_session_data('view?vid=edition...') + forminfo = req.session.data['view?vid=edition...'] eidmap = forminfo['eidmap'] self.assertEquals(eidmap, {}) values = forminfo['values'] @@ -208,7 +211,7 @@ '__errorurl': 'view?vid=edition...', } path, params = self.expect_redirect(lambda x: self.app_publish(x, 'edit'), req) - forminfo = req.get_session_data('view?vid=edition...') + forminfo = req.session.data['view?vid=edition...'] self.assertEquals(set(forminfo['eidmap']), set('XY')) self.assertEquals(forminfo['eidmap']['X'], None) self.assertIsInstance(forminfo['eidmap']['Y'], int) @@ -237,7 +240,7 @@ '__errorurl': 'view?vid=edition...', } path, params = self.expect_redirect(lambda x: self.app_publish(x, 'edit'), req) - forminfo = req.get_session_data('view?vid=edition...') + forminfo = req.session.data['view?vid=edition...'] self.assertEquals(set(forminfo['eidmap']), set('XY')) self.assertIsInstance(forminfo['eidmap']['X'], int) self.assertIsInstance(forminfo['eidmap']['Y'], int) @@ -299,29 +302,29 @@ # authentication tests #################################################### def test_http_auth_no_anon(self): - req, origcnx = self.init_authentication('http') + req, origsession = self.init_authentication('http') self.assertAuthFailure(req) - self.assertRaises(ExplicitLogin, self.app_publish, req, 'login') + self.assertRaises(AuthenticationError, self.app_publish, req, 'login') self.assertEquals(req.cnx, None) - authstr = base64.encodestring('%s:%s' % (origcnx.login, origcnx.authinfo['password'])) + authstr = base64.encodestring('%s:%s' % (origsession.login, origsession.authinfo['password'])) req._headers['Authorization'] = 'basic %s' % authstr - self.assertAuthSuccess(req, origcnx) - self.assertEquals(req.cnx.authinfo, {'password': origcnx.authinfo['password']}) - self.assertRaises(AuthenticationError, self.app_publish, req, 'logout') + self.assertAuthSuccess(req, origsession) + self.assertEquals(req.session.authinfo, {'password': origsession.authinfo['password']}) + self.assertRaises(LogOut, self.app_publish, req, 'logout') self.assertEquals(len(self.open_sessions), 0) def test_cookie_auth_no_anon(self): - req, origcnx = self.init_authentication('cookie') + req, origsession = self.init_authentication('cookie') self.assertAuthFailure(req) form = self.app_publish(req, 'login') self.failUnless('__login' in form) self.failUnless('__password' in form) self.assertEquals(req.cnx, None) - req.form['__login'] = origcnx.login - req.form['__password'] = origcnx.authinfo['password'] - self.assertAuthSuccess(req, origcnx) - self.assertEquals(req.cnx.authinfo, {'password': origcnx.authinfo['password']}) - self.assertRaises(AuthenticationError, self.app_publish, req, 'logout') + req.form['__login'] = origsession.login + req.form['__password'] = origsession.authinfo['password'] + self.assertAuthSuccess(req, origsession) + self.assertEquals(req.session.authinfo, {'password': origsession.authinfo['password']}) + self.assertRaises(LogOut, self.app_publish, req, 'logout') self.assertEquals(len(self.open_sessions), 0) def test_login_by_email(self): @@ -331,71 +334,72 @@ 'WHERE U login %(login)s', {'address': address, 'login': login}) self.commit() # option allow-email-login not set - req, origcnx = self.init_authentication('cookie') + req, origsession = self.init_authentication('cookie') req.form['__login'] = address - req.form['__password'] = origcnx.authinfo['password'] + req.form['__password'] = origsession.authinfo['password'] self.assertAuthFailure(req) # option allow-email-login set - origcnx.login = address + origsession.login = address self.set_option('allow-email-login', True) req.form['__login'] = address - req.form['__password'] = origcnx.authinfo['password'] - self.assertAuthSuccess(req, origcnx) - self.assertEquals(req.cnx.authinfo, {'password': origcnx.authinfo['password']}) - self.assertRaises(AuthenticationError, self.app_publish, req, 'logout') + req.form['__password'] = origsession.authinfo['password'] + self.assertAuthSuccess(req, origsession) + self.assertEquals(req.session.authinfo, {'password': origsession.authinfo['password']}) + self.assertRaises(LogOut, self.app_publish, req, 'logout') self.assertEquals(len(self.open_sessions), 0) def _reset_cookie(self, req): # preparing the suite of the test # set session id in cookie cookie = Cookie.SimpleCookie() - cookie['__session'] = req.cnx.sessionid + cookie['__session'] = req.session.sessionid req._headers['Cookie'] = cookie['__session'].OutputString() clear_cache(req, 'get_authorization') - # reset cnx as if it was a new incoming request - req.cnx = None + # reset session as if it was a new incoming request + req.session = req.cnx = None def _test_auth_anon(self, req): self.app.connect(req) - acnx = req.cnx + asession = req.session self.assertEquals(len(self.open_sessions), 1) - self.assertEquals(acnx.login, 'anon') - self.assertEquals(acnx.authinfo['password'], 'anon') - self.failUnless(acnx.anonymous_connection) + self.assertEquals(asession.login, 'anon') + self.assertEquals(asession.authinfo['password'], 'anon') + self.failUnless(asession.anonymous_session) self._reset_cookie(req) def _test_anon_auth_fail(self, req): self.assertEquals(len(self.open_sessions), 1) self.app.connect(req) self.assertEquals(req.message, 'authentication failure') - self.assertEquals(req.cnx.anonymous_connection, True) + self.assertEquals(req.session.anonymous_session, True) self.assertEquals(len(self.open_sessions), 1) self._reset_cookie(req) def test_http_auth_anon_allowed(self): - req, origcnx = self.init_authentication('http', 'anon') + req, origsession = self.init_authentication('http', 'anon') self._test_auth_anon(req) authstr = base64.encodestring('toto:pouet') req._headers['Authorization'] = 'basic %s' % authstr self._test_anon_auth_fail(req) - authstr = base64.encodestring('%s:%s' % (origcnx.login, origcnx.authinfo['password'])) + authstr = base64.encodestring('%s:%s' % (origsession.login, origsession.authinfo['password'])) req._headers['Authorization'] = 'basic %s' % authstr - self.assertAuthSuccess(req, origcnx) - self.assertEquals(req.cnx.authinfo, {'password': origcnx.authinfo['password']}) - self.assertRaises(AuthenticationError, self.app_publish, req, 'logout') + self.assertAuthSuccess(req, origsession) + self.assertEquals(req.session.authinfo, {'password': origsession.authinfo['password']}) + self.assertRaises(LogOut, self.app_publish, req, 'logout') self.assertEquals(len(self.open_sessions), 0) def test_cookie_auth_anon_allowed(self): - req, origcnx = self.init_authentication('cookie', 'anon') + req, origsession = self.init_authentication('cookie', 'anon') self._test_auth_anon(req) req.form['__login'] = 'toto' req.form['__password'] = 'pouet' self._test_anon_auth_fail(req) - req.form['__login'] = origcnx.login - req.form['__password'] = origcnx.authinfo['password'] - self.assertAuthSuccess(req, origcnx) - self.assertEquals(req.cnx.authinfo, {'password': origcnx.authinfo['password']}) - self.assertRaises(AuthenticationError, self.app_publish, req, 'logout') + req.form['__login'] = origsession.login + req.form['__password'] = origsession.authinfo['password'] + self.assertAuthSuccess(req, origsession) + self.assertEquals(req.session.authinfo, + {'password': origsession.authinfo['password']}) + self.assertRaises(LogOut, self.app_publish, req, 'logout') self.assertEquals(len(self.open_sessions), 0) def test_non_regr_optional_first_var(self):