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))
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")
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.")
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]))
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()