Ejemplo n.º 1
0
    def test_25_aliases(self):
        session = Session(self._session_file_path)

        # set store_passwords to true, to avoid password promt during tests
        session.option('store_passwords', True)

        cl = session.connect(self.env.host,
                             dbname=self.env.dbname,
                             user=self.env.user,
                             pwd=self.env.password,
                             protocol=self.env.protocol,
                             port=self.env.port,
                             interactive=False)

        self.assertEqual(len(session.aliases), 0)

        res = session.aliase('cl1', cl)
        self.assertIs(res, cl)

        res = session.aliase('cl2', 1)  # use index
        self.assertIs(res, 1)

        res = session.aliase('cl3', cl.get_url())  # use url
        self.assertEqual(res, cl.get_url())

        with self.assertRaises(ValueError):
            session.aliase('cl4', 'bad url')

        self.assertIn('cl1', session.aliases)
        self.assertIs(session.get_db('cl1'), cl)
        self.assertIs(session['cl1'], cl)
        self.assertIs(session.cl1, cl)

        self.assertIs(session.cl1, session.cl2)
        self.assertIs(session.cl1, session.cl3)
        self.assertIn('cl1', dir(session))

        # Test taht normal attributes in dir
        self.assertIn('aliases', dir(session))

        # save the session
        session.save()
        del session

        # recreate session
        session = Session(self._session_file_path)

        # and test again
        self.assertTrue(bool(session.index))
        self.assertEqual(len(session.aliases), 3)
        self.assertIn('cl1', session.aliases)
        self.assertEqual(session.get_db('cl1'), cl)
        self.assertEqual(session['cl1'], cl)
        self.assertEqual(session.cl1, cl)

        self.assertIs(session.cl1, session.cl2)
        self.assertIs(session.cl1, session.cl3)

        with self.assertRaises(AttributeError):
            session.unexistent_aliase

        self.assertIn('cl1', dir(session))