web/test/unittest_session.py
author Julien Jehannet <julien.jehannet@logilab.fr>
Thu, 22 Apr 2010 17:04:51 +0200
changeset 5373 24a873060692
parent 5251 b675edd05c19
child 5785 c0661b963ced
permissions -rw-r--r--
[selector] allow inplace operator in selector computation Intended to facilitate overriding of existing selectors chain in view declaration. It make the code shorter and clearer when you've to import long module pathnames

# -*- coding: iso-8859-1 -*-
"""unit tests for cubicweb.web.application

:organization: Logilab
:copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
from cubicweb.devtools.testlib import CubicWebTC

class SessionTC(CubicWebTC):

    def test_auto_reconnection(self):
        sm = self.app.session_handler.session_manager
        # make is if the web session has been opened by the session manager
        sm._sessions[self.cnx.sessionid] = self.websession
        sessionid = self.websession.sessionid
        self.assertEquals(len(sm._sessions), 1)
        self.assertEquals(self.websession.sessionid, self.websession.cnx.sessionid)
        # fake the repo session is expiring
        self.repo.close(sessionid)
        # fake an incoming http query with sessionid in session cookie
        # don't use self.request() which try to call req.set_session
        req = self.requestcls(self.vreg)
        websession = sm.get_session(req, sessionid)
        self.assertEquals(len(sm._sessions), 1)
        self.assertIs(websession, self.websession)
        self.assertEquals(websession.sessionid, sessionid)
        self.assertNotEquals(websession.sessionid, websession.cnx.sessionid)

if __name__ == '__main__':
    from logilab.common.testlib import unittest_main
    unittest_main()