--- 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):