web/test/unittest_session.py
author Alexandre Fayolle <alexandre.fayolle@logilab.fr>
Fri, 15 Apr 2011 16:05:20 +0200
changeset 7236 b91205ada414
parent 6367 d4c485ec1ca1
child 7817 cb6174065c39
permissions -rw-r--r--
added test case to monitor speed improvements in the repository code. To use it, add a test in a patch, then hack CW to speed it up in another patch, updating the test if needed. By running the test with and without the second patch applied you can easily see the speed improvements

# -*- 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
from cubicweb.web import InvalidSession

class SessionTC(CubicWebTC):

    def test_session_expiration(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.assertEqual(len(sm._sessions), 1)
        self.assertEqual(self.websession.sessionid, self.websession.cnx.sessionid)
        # fake the repo session is expiring
        self.repo.close(sessionid)
        try:
            # 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)
            self.assertRaises(InvalidSession, sm.get_session, req, sessionid)
            self.assertEqual(len(sm._sessions), 0)
        finally:
            # avoid error in tearDown by telling this connection is closed...
            self.cnx._closed = True

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