Exemplo n.º 1
0
    def test_60_request_patterns(self):
        """HistoriaCoreController: request_patterns(self, reset=True)"""
        obj = controllers.HistoriaCoreController(
            config_location='tests/test_config')

        # Some valid URLs that should pass
        valid_urls = [
            'system/user/login', 'system/user/logout', 'database/1/fetch/1',
            'database/2/update/1'
        ]
        # Some invalid URLs that should fail
        invalid_urls = [
            'total_junk', 'database/JUNK/fetch/123',
            '../../../../directory/file', '..%u2216..%u2216directory/file',
            '..%2F..%2F..%2Fdirectory/file'
        ]

        pat = obj.request_patterns(reset=True)

        for url in valid_urls:
            match = pat.match(url)
            self.assertIsNotNone(match, "Failed to match: {0}".format(url))

        for url in invalid_urls:
            match = pat.match(url)
            self.assertIsNone(match, "Matched: {0}".format(url))
Exemplo n.º 2
0
    def test_00_construct(self):
        """HistoriaCoreController: Test __new__() and __init__()"""

        obj = controllers.HistoriaCoreController(
            config_location='tests/test_config')

        self.assertIsInstance(obj.logger, logging.Logger,
                              "Default logger isn't a logger")
        self.assertIsInstance(
            obj.database, system_db.HistoriaSystemDatabase,
            "Database didn't initalize to None when none provided")
        self.assertIsNone(
            obj.interface,
            "Interface didn't initalize to None when none provided")
        self.assertEqual(obj.active_users, {},
                         "Active users dict isn't just an empty Dictionary")
        self.assertEqual(obj.active_user_databases, {},
                         "Active dabases dict isn't just an empty Dictionary")
Exemplo n.º 3
0
    def test_20_load_user_database(self):
        """HistoriaCoreController: load_database(self, database_name)"""
        # def load_database(self, database_name):

        obj = controllers.HistoriaCoreController(
            config_location='tests/test_config')
        db = obj.create_database(self.testDBName,
                                 self.default_settings,
                                 db_type="user")

        db2 = obj.load_database(self.testDBName)

        self.assertIsInstance(db2, system_db.HistoriaUserDatabase,
                              "Valid database object not returned.")
        self.assertTrue(db2.connected, "New database object not connected.")
        self.assertEqual(
            db2.name, self.testDBName,
            "New Database name doesn't match requested database name.")
Exemplo n.º 4
0
    def test_15_create_user_database(self):
        """HistoriaCoreController: create_database(self, database_name, connection_settings, db_type = "user")"""

        obj = controllers.HistoriaCoreController(
            config_location='tests/test_config')
        sys_db = obj.create_database(self.testDBName,
                                     self.default_settings,
                                     db_type="system")

        self.user_db_name = TestHistoriaCoreController.config['database'][
            "user_database_name_prefix"] + 'userdb'
        obj.database = sys_db
        db = obj.create_database(self.user_db_name,
                                 self.default_settings,
                                 db_type="user")

        self.assertIsInstance(db, user_db.HistoriaUserDatabase)
        self.assertEqual(db.name, self.user_db_name,
                         "Database name isn't the value we provided")
        self.assertTrue(db.connected, "DB not connected after creating itself")

        cur = db.cursor()

        sql = "SHOW DATABASES;"
        cur.execute(sql)
        result = [tbl['Database'] for tbl in cur.fetchall()]
        self.assertIn(db.name, result, "My database doesn't appear to exist")

        sql = "SELECT DATABASE();"
        cur.execute(sql)
        result = cur.fetchall()
        self.assertEqual(db.name, result[0]['DATABASE()'],
                         "Database in use is not me")

        sql = "SHOW TABLES;"
        cur.execute(sql)
        result = cur.fetchall()
        col = "Tables_in_{0}".format(db.name)
        class_names = [n.machine_type for n in db.member_classes]
        self.assertEqual(len(result), len(db.member_classes),
                         "Wrong number of tables in database")
        for tbl in result:
            self.assertIn(tbl[col], class_names,
                          "Table {0} not in my table list.".format(tbl[col]))
Exemplo n.º 5
0
    def test_30_authenticate_user(self):
        """HistoriaCoreController: authenticate_user()"""
        # def authenticate_user(self, user_name, password):
        obj = controllers.HistoriaCoreController(
            config_location='tests/test_config')
        db = obj.create_database(self.testDBName,
                                 self.default_settings,
                                 db_type="system")

        obj.database = db

        name = "Sir Robin of Camelot"
        password = "******"
        email = "*****@*****.**"

        u1 = user.HistoriaUser(db)
        u1.name = name
        u1.password = password
        u1.email = email
        u1.save()

        response = obj.authenticate_user(name, password)
        self.assertIsInstance(response, user.HistoriaUser,
                              "Valid user not returned with valid creds.")
        self.assertEqual(
            u1, response,
            "Returned user isn't the user that created the record.")

        response = obj.authenticate_user(email, password)
        self.assertIsInstance(response, user.HistoriaUser,
                              "Valid user not returned with valid creds.")
        self.assertEqual(
            u1, response,
            "Returned user isn't the user that created the record.")

        response = obj.authenticate_user(email, "I don't know that")
        self.assertFalse(response, "False not returned with invalid creds.")

        response = obj.authenticate_user("Nothing to see here",
                                         "I don't know that")
        self.assertFalse(response, "False not returned with invalid creds.")

        obj.database.disconnect()