5 :copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2. |
5 :copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2. |
6 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
6 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr |
7 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses |
7 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses |
8 """ |
8 """ |
9 from cubicweb.devtools.testlib import CubicWebTC |
9 from cubicweb.devtools.testlib import CubicWebTC |
|
10 from cubicweb.web import InvalidSession |
10 |
11 |
11 class SessionTC(CubicWebTC): |
12 class SessionTC(CubicWebTC): |
12 |
13 |
13 def test_auto_reconnection(self): |
14 def test_session_expiration(self): |
14 sm = self.app.session_handler.session_manager |
15 sm = self.app.session_handler.session_manager |
15 # make is if the web session has been opened by the session manager |
16 # make is if the web session has been opened by the session manager |
16 sm._sessions[self.cnx.sessionid] = self.websession |
17 sm._sessions[self.cnx.sessionid] = self.websession |
17 sessionid = self.websession.sessionid |
18 sessionid = self.websession.sessionid |
18 self.assertEquals(len(sm._sessions), 1) |
19 self.assertEquals(len(sm._sessions), 1) |
21 self.repo.close(sessionid) |
22 self.repo.close(sessionid) |
22 try: |
23 try: |
23 # fake an incoming http query with sessionid in session cookie |
24 # fake an incoming http query with sessionid in session cookie |
24 # don't use self.request() which try to call req.set_session |
25 # don't use self.request() which try to call req.set_session |
25 req = self.requestcls(self.vreg) |
26 req = self.requestcls(self.vreg) |
26 websession = sm.get_session(req, sessionid) |
27 self.assertRaises(InvalidSession, sm.get_session, req, sessionid) |
27 self.assertEquals(len(sm._sessions), 1) |
28 self.assertEquals(len(sm._sessions), 0) |
28 self.assertIs(websession, self.websession) |
|
29 self.assertEquals(websession.sessionid, sessionid) |
|
30 self.assertNotEquals(websession.sessionid, websession.cnx.sessionid) |
|
31 finally: |
29 finally: |
32 # avoid error in tearDown by telling this connection is closed... |
30 # avoid error in tearDown by telling this connection is closed... |
33 self.cnx._closed = True |
31 self.cnx._closed = True |
34 |
32 |
35 if __name__ == '__main__': |
33 if __name__ == '__main__': |