Example #1
0
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")
Example #2
0
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