Exemplo n.º 1
0
class SessionManagerTest(TestCase):
    def setUp(self):
        self.storage = Middleware.get_middleware_by_uri(
            'mongodb-default-testsession://')
        self.collection = MongoCollection(self.storage._backend)

        self.manager = Session(collection=self.collection)

        self.user = '******'
        self.id_beaker_session = 'cm9vdF8xNTc2MDY1MzY2'
        self.path = [
            "view/da7ac9b9-db1c-4435-a1f2-edb4d6be4db8",
            "view-tab_edd5855b-54f1-4c51-9550-d88c2da60768"
        ]
        self.path_bis = [
            "view/da7ac9b9-db1c-4435-a1f2-edb4d6be4db8",
            "view-tab_edd5855b-54f1-4c51-azerty"
        ]

    def tearDown(self):
        self.collection.remove()

    def test_keep_alive(self):
        self.manager.session_start(self.id_beaker_session, self.user)
        sleep(1)
        got = self.manager.keep_alive(self.id_beaker_session, self.user, True,
                                      self.path)

        session = self.collection.find_one({
            "id_beaker_session": self.id_beaker_session,
            'username': self.user
        })

        self.assertTrue(isinstance(session, dict))
        self.assertEqual(got, session['last_ping'])
        self.assertEqual(self.path, session['last_visible_path'])

        got = self.manager.keep_alive(self.id_beaker_session, self.user, False,
                                      self.path_bis)
        session = self.collection.find_one({
            "id_beaker_session": self.id_beaker_session,
            'username': self.user
        })

        self.assertTrue(isinstance(session, dict))
        self.assertEqual(got, session['last_ping'])
        self.assertEqual(self.path, session['last_visible_path'])

        got = self.manager.keep_alive(self.id_beaker_session, self.user, True,
                                      self.path_bis)
        session = self.collection.find_one({
            "id_beaker_session": self.id_beaker_session,
            'username': self.user
        })
        self.assertTrue(isinstance(session, dict))
        self.assertEqual(got, session['last_ping'])
        self.assertEqual(self.path_bis, session['last_visible_path'])

    def test_session_start(self):
        got = self.manager.session_start(self.id_beaker_session, self.user)

        session = self.collection.find_one({
            "id_beaker_session": self.id_beaker_session,
            'username': self.user
        })

        self.assertTrue(isinstance(session, dict))
        self.assertTrue(self.manager.is_session_active(self.id_beaker_session))
        self.assertEqual(got, session['start'])

    def test_session_start_already_started(self):
        self.test_session_start()

        got = self.manager.session_start(self.id_beaker_session, self.user)

        self.assertTrue(got is None)

    def test_is_session_active(self):
        self.assertFalse(self.manager.is_session_active(
            self.id_beaker_session))
        self.manager.session_start(self.id_beaker_session, self.user)
        self.assertTrue(self.manager.is_session_active(self.id_beaker_session))

    def test_session_tracepath(self):
        self.manager.session_start(self.id_beaker_session, self.user)
        sleep(1)

        got = self.manager.session_tracepath(self.id_beaker_session, self.user,
                                             self.path)

        session = self.collection.find_one({
            "id_beaker_session": self.id_beaker_session,
            'username': self.user
        })

        self.assertTrue(isinstance(session, dict))
        self.assertEqual(got, session['last_ping'])
        self.assertEqual(self.path, session['last_visible_path'])

        got = self.manager.session_tracepath(self.id_beaker_session, self.user,
                                             self.path_bis)
        session = self.collection.find_one({
            "id_beaker_session": self.id_beaker_session,
            'username': self.user
        })

        self.assertTrue(isinstance(session, dict))
        self.assertEqual(got, session['last_ping'])
        self.assertEqual(self.path_bis, session['last_visible_path'])

        got = self.manager.session_tracepath(self.id_beaker_session, self.user,
                                             self.path_bis)
        session = self.collection.find_one({
            "id_beaker_session": self.id_beaker_session,
            'username': self.user
        })
        self.assertTrue(isinstance(session, dict))
        self.assertEqual(got, session['last_ping'])
        self.assertEqual(self.path_bis, session['last_visible_path'])

    def test_sessions_req(self):
        self.manager.session_start(self.id_beaker_session, self.user)
        sleep(1)
        session = self.collection.find_one({
            "id_beaker_session": self.id_beaker_session,
            'username': self.user
        })
        session_req = self.manager.sessions_req(self.id_beaker_session,
                                                {"active": "true"})
        self.assertEqual([session], session_req)

        session_req = self.manager.sessions_req(self.id_beaker_session,
                                                {"active": "false"})
        self.assertEqual([], session_req)

        self.manager.session_start("azerty", "userTest")

        session2 = self.collection.find_one({
            "id_beaker_session": "azerty",
            'username': "******"
        })
        session_req = self.manager.sessions_req(
            self.id_beaker_session, {"usernames[]": [self.user, "userTest"]})
        self.assertEqual([session, session2], session_req)