import pathlib current = pathlib.Path(__file__).parent root = current.parent import sys sys.path.append(str(root)) import assets import sqlmodel def drop_database() -> None: db = pathlib.Path("./004-test.db") if db.is_file(): db.unlink() drop_database() connection = sqlmodel.create_engine("sqlite:///004-test.db") sqlmodel.SQLModel.metadata.create_all(connection) user_builder = assets.user_builder() user_builder.nick = "test" user_builder.set_password("qwerty") sample_user = user_builder.result with assets.user_loader(connection) as loader: loader.register(sample_user) secret_builder = assets.secret_builder() coder = assets.secret_coder(sample_user.key("qwerty").decrypted) secret_builder.clear() secret_builder.name = "secret1" secret_builder.owner = sample_user secret_builder.domain = "http://secret1" secret_builder.coded = coder.encrypt("Sample1") secret_1 = secret_builder.result secret_builder.clear() secret_builder.name = "secret2" secret_builder.owner = sample_user secret_builder.domain = "https://secret2" secret_builder.coded = coder.encrypt("SamPle2") secret_2 = secret_builder.result print(sample_user) print(secret_1) print(secret_2) print("Inserting into database") with assets.secret_loader(connection, sample_user) as loader: loader.append(secret_1) loader.append(secret_2) print() print("Loading secrets by name:") with assets.secret_loader(connection, sample_user) as loader: load_1 = loader.load_by_name("secret1") print("Loaded secret 1 from database:") print(load_1) load_2 = loader.load_by_name("secret2") print("Loaded secret 2 from database:") print(load_2) print() print("Loading secrets by domain:") with assets.secret_loader(connection, sample_user) as loader: print("Results for domain \"secret\": ") for item in loader.search_for_domain("secret"): print(item) print("Results for domain \"not_exists\":") for item in loader.search_for_domain("not_exists"): print(item) print() print("Modify secrets:") with assets.secret_loader(connection, sample_user) as loader: loaded = loader.load_by_name("secret1") print("Before:") print(loaded) builder = assets.secret_builder(loaded) builder.domain = "https://other.com" builder.coded = coder.encrypt("OTHER SAMPLE") loader.update(builder.result) print("After:") print(loader.load_by_name("secret1")) print() print("Delete secrets:") with assets.secret_loader(connection, sample_user) as loader: loaded = loader.load_by_name("secret1") loader.drop(loaded) print("After:") print(loader.load_by_name("secret1")) print() print("Clear:") with assets.secret_loader(connection, sample_user) as loader: print("Before:") print(loader.load_by_name("secret2")) loader.clear() print("After:") print(loader.load_by_name("secret2")) drop_database()