class Arango: """ Client to work with ArangoDB """ def __init__(self, database="domain", collection="listings"): """ Class constructor @param database: arango database name @param collection: arango collection name """ self.__client = ArangoClient(hosts=os.getenv("ARANGO_HOST")) sys_db = self.__client.db("_system", username="", password="") if "domain" not in sys_db.databases(): sys_db.create_database(database) print("Creating database") self.db = self.__client.db("domain", username="", password="") if "listings" not in [c["name"] for c in self.db.collections()]: self.db.create_collection(collection) print("Creating listings collection") self.collection = self.db.collection(collection) def __del__(self): """ Class destructor @return: None """ self.__client.close() print("Closing DB Collection")
def test_credentials_database(self): client = ArangoClient(hosts="http://localhost:8529") sys_db = client.db("_system", username="******", password="******") # first try to delete the test database sys_db.delete_database('test', ignore_missing=True) print("create DB") self.assertTrue(create_database(sys_db, dbname='test')) db = client.db("test", username="******", password="******") # test collection creation print("create collections") self.assertTrue(create_collections(db)) # test create user print("add credential") credentialid = "abcd" credentialdict = {"a": ['b'], "c": 1} status, result = add_credential(db, credentialid, credentialdict) self.assertTrue(status) self.assertEqual(credentialid, result["_key"]) print("get credential") status, result = get_credential(db, credentialid) self.assertTrue(status) self.assertEqual(credentialid, result["_key"]) self.assertEqual(credentialdict["a"], result["a"]) print("delete credential") status = delete_credential(db, credentialid) self.assertTrue(status) print("check missing credential") status, result = get_credential(db, credentialid) self.assertFalse(status) # close sessions client.close()
def test_manage_user_database(self): client = ArangoClient(hosts="http://*****:*****@condidi.tib.eu", "password": "******" } print(create_user(db, userdata)) print("check user") status, result = find_user(db, {"email": userdata["email"]}) self.assertTrue(status) for key in userdata: if key != "password": self.assertEqual(userdata[key], result[key]) print("check existing user detection") self.assertFalse(create_user(db, userdata)[0]) print("check correct password") self.assertTrue( check_pass(db, password="******", user_email="*****@*****.**")[0]) print("check wrong password") self.assertFalse( check_pass(db, password="******", user_email="*****@*****.**")[0]) print("check wrong password call") self.assertFalse(check_pass(db, password="******")[0]) print("delete test database") self.assertTrue(sys_db.delete_database('test')) # close sessions client.close()
def test_manage_event_database(self): client = ArangoClient(hosts="http://localhost:8529") sys_db = client.db("_system", username="******", password="******") # first try to delete the test database sys_db.delete_database('test', ignore_missing=True) print("create DB") self.assertTrue(create_database(sys_db, dbname='test')) db = client.db("test", username="******", password="******") # test collection creation print("create collections") self.assertTrue(create_collections(db)) # test create event print("event dict") myevent = Event() eventdict = { "name": "test event", "url": "http://nada", "error": "False", "organiser_userid": 0 } badkeys = myevent.load(eventdict) self.assertEqual(badkeys, ["error"]) self.assertEqual(len(myevent.keys()), len(myevent.allowed_keys)) print("add event") result = create_event(db, myevent) print(result) myevent["name"] = "test event 1" result = create_event(db, myevent) print(result) eventid = result[1]["_key"] print("retrieve 1 event") result = get_event(db, eventid) print(result) print("find events") result = find_events(db, {"organiser_userid": 0}) print(result) print("delete test database") self.assertTrue(sys_db.delete_database('test')) # close sessions client.close()
def test_manage_participants_database(self): client = ArangoClient(hosts="http://localhost:8529") sys_db = client.db("_system", username="******", password="******") # first try to delete the test database sys_db.delete_database('test', ignore_missing=True) print("create DB") self.assertTrue(create_database(sys_db, dbname='test')) db = client.db("test", username="******", password="******") # test collection creation print("create collections") self.assertTrue(create_collections(db)) # test create event #print("event dict") myevent = Event() eventdict = { "name": "test event1", "url": "http://nada", "error": "False", "organiser_userid": 0 } #badkeys = myevent.load(eventdict) #self.assertEqual(badkeys, ["error"]) #self.assertEqual(len(myevent.keys()), len(myevent.allowed_keys)) print("add event") result = create_event(db, myevent) eventid = result[1]["_key"] # list participants, should be empty print("get participants") result = list_participants(db, eventid) print(result) print("add participant") par = Participant() par.load({"name": "Testparticipant"}) print("create a participant") result = create_participant(db, par) parid = result["_key"] print(result) result = get_participant(db, parid) self.assertIsNotNone(result) self.assertEqual(result["_key"], parid) print("list participants") result = list_participants(db, eventid) print(result) print("add to event") result = add_participant_to_event(db, parid, eventid=eventid) print(result) listid = result[1]["_key"] result = add_participant_to_event(db, parid, listid=listid) print(result) print("remove participant") result = remove_participant_from_event(db, parid, eventid=eventid) print(result) result = remove_participant_from_event(db, parid, listid=listid) print(result) result = list_participants(db, eventid) print(result) print("delete test database") self.assertTrue(sys_db.delete_database('test')) # close sessions client.close()