class TestStorage(unittest.TestCase): def setUp(self): self.service = Service() self.database = Database() open("test.service", "w+").close() open("test.db", "w+").close() def test_write_read_service(self): self.service.service_name = "Hello" self.service.username = "******" self.service.password = "******" storage.write("test", self.service, "test.service") service2 = Service() storage.read("test", service2, "test.service") self.assertEqual(service2.service_name, self.service.service_name) self.assertEqual(service2.username, self.service.username) self.assertEqual(service2.password, self.service.password) def test_write_read_database(self): self.database.add_service(Service()) self.database.add_service(Service()) self.database.name = "Hey" storage.write("test", self.database, "test.db") database2 = Database() storage.read("test", database2, "test.db") self.assertEqual(database2.name, self.database.name) for i in range(len(self.database.services)): self.assertEqual(database2.services[i].service_name, self.database.services[i].service_name) self.assertEqual(database2.services[i].username, self.database.services[i].username) self.assertEqual(database2.services[i].password, self.database.services[i].password) def tearDown(self): os.remove(os.getcwd() + "/test.service") os.remove(os.getcwd() + "/test.db")
def perform_actions(db: database.Database, password: str): global buff_size cont = True while cont: services_number = len(db.services) choice = get_input_with_choices( "What do you want to do ? quit (q), edit database (e), load new db (l), " "get password (g): ", ['q', 'e', 'l', 'g']) if choice == 'q': clear() sys.exit(0) elif choice == 'e': choice = get_input_with_choices( "Edit service (e), remove service (r), add service (a), change login " "information (l), delete db (d), " "cancel (c): ", ['e', 'r', 'a', 'd', 'c', 'l']) if choice == 'e': if services_number > 0: choices = [str(c) for c in range(1, services_number + 1)] choice = get_input_with_choices( "Which one (1-" + str(services_number) + "): ", choices) data = get_service_data() db.load_service(int(choice) - 1, data) storage.write(password, db, "databases/" + db.name + ".db") display_db(db) else: print("No service available.") buff_size += 1 elif choice == 'r': if services_number > 0: choices = [str(c) for c in range(1, services_number + 1)] choice = get_input_with_choices( "Which one (1-" + str(services_number) + "): ", choices) db.remove_service(int(choice) - 1) storage.write(password, db, "databases/" + db.name + ".db") display_db(db) else: print("No service available.") buff_size += 1 elif choice == 'a': data = get_service_data() serv = service.Service() serv.load(data) db.add_service(serv) storage.write(password, db, "databases/" + db.name + ".db") display_db(db) elif choice == 'd': if query_yes_no("Are you sure you want to delete database \"" + db.name + "\" ?"): storage.delete("databases/" + db.name + ".db") del db cont = False if query_yes_no("Quit ?"): sys.exit(0) elif choice == 'l': choice = get_input_with_choices( "Change name (n), password (p), both (b), cancel (c): ", ['n', 'p', 'b', 'c']) name = None pword = None if choice == 'n': name = get_input("New name: ") elif choice == 'p': pword = get_password("New password: "******"New name: ") pword = get_password("New password: "******"databases/" + db.name + ".db") db.name = name if name is not None else db.name pword = pword if pword is not None else password storage.write(pword, db, "databases/" + db.name + ".db") display_db(db) elif choice == 'l': del db cont = False clear() return True elif choice == 'g': if services_number > 0: choices = [str(c) for c in range(1, services_number + 1)] choice = get_input_with_choices( "Which one (1-" + str(services_number) + "): ", choices) r = tkinter.Tk() r.withdraw() r.clipboard_clear() r.clipboard_append(db.services[int(choice) - 1].password) else: print("No service available.") buff_size += 1 return False