web/test/unittest_session.py
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Mon, 31 Jan 2011 17:28:51 +0100
branchstable
changeset 6924 b88221afe491
parent 6367 d4c485ec1ca1
child 7817 cb6174065c39
permissions -rw-r--r--
[js utils] backport some generic code from comments cube to handle inline ajax form as you get to add comment to entities. Following stuff has been generalized and backported to ease such things: * lazy_view_holder() method on EntityCtxComponent class, to build place holder where the form will be inserted * ajax_composite_form() function in cw.web.views.ajaxedit, to build the form itself * reload() and reloadCtxComponentsSection() javascript function in cubicweb.ajax.js for the javascript processing side

# -*- 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()