004-password_database.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import pathlib
  2. current = pathlib.Path(__file__).parent
  3. root = current.parent
  4. import sys
  5. sys.path.append(str(root))
  6. import assets
  7. import sqlmodel
  8. def drop_database() -> None:
  9. db = pathlib.Path("./004-test.db")
  10. if db.is_file():
  11. db.unlink()
  12. drop_database()
  13. connection = sqlmodel.create_engine("sqlite:///004-test.db")
  14. sqlmodel.SQLModel.metadata.create_all(connection)
  15. user_builder = assets.user_builder()
  16. user_builder.nick = "test"
  17. user_builder.set_password("qwerty")
  18. sample_user = user_builder.result
  19. with assets.user_loader(connection) as loader:
  20. loader.register(sample_user)
  21. secret_builder = assets.secret_builder()
  22. coder = assets.secret_coder(sample_user.key("qwerty").decrypted)
  23. secret_builder.clear()
  24. secret_builder.name = "secret1"
  25. secret_builder.owner = sample_user
  26. secret_builder.domain = "http://secret1"
  27. secret_builder.coded = coder.encrypt("Sample1")
  28. secret_1 = secret_builder.result
  29. secret_builder.clear()
  30. secret_builder.name = "secret2"
  31. secret_builder.owner = sample_user
  32. secret_builder.domain = "https://secret2"
  33. secret_builder.coded = coder.encrypt("SamPle2")
  34. secret_2 = secret_builder.result
  35. print(sample_user)
  36. print(secret_1)
  37. print(secret_2)
  38. print("Inserting into database")
  39. with assets.secret_loader(connection, sample_user) as loader:
  40. loader.append(secret_1)
  41. loader.append(secret_2)
  42. print()
  43. print("Loading secrets by name:")
  44. with assets.secret_loader(connection, sample_user) as loader:
  45. load_1 = loader.load_by_name("secret1")
  46. print("Loaded secret 1 from database:")
  47. print(load_1)
  48. load_2 = loader.load_by_name("secret2")
  49. print("Loaded secret 2 from database:")
  50. print(load_2)
  51. print()
  52. print("Loading secrets by domain:")
  53. with assets.secret_loader(connection, sample_user) as loader:
  54. print("Results for domain \"secret\": ")
  55. for item in loader.search_for_domain("secret"):
  56. print(item)
  57. print("Results for domain \"not_exists\":")
  58. for item in loader.search_for_domain("not_exists"):
  59. print(item)
  60. print()
  61. print("Modify secrets:")
  62. with assets.secret_loader(connection, sample_user) as loader:
  63. loaded = loader.load_by_name("secret1")
  64. print("Before:")
  65. print(loaded)
  66. builder = assets.secret_builder(loaded)
  67. builder.domain = "https://other.com"
  68. builder.coded = coder.encrypt("OTHER SAMPLE")
  69. loader.update(builder.result)
  70. print("After:")
  71. print(loader.load_by_name("secret1"))
  72. print()
  73. print("Delete secrets:")
  74. with assets.secret_loader(connection, sample_user) as loader:
  75. loaded = loader.load_by_name("secret1")
  76. loader.drop(loaded)
  77. print("After:")
  78. print(loader.load_by_name("secret1"))
  79. print()
  80. print("Clear:")
  81. with assets.secret_loader(connection, sample_user) as loader:
  82. print("Before:")
  83. print(loader.load_by_name("secret2"))
  84. loader.clear()
  85. print("After:")
  86. print(loader.load_by_name("secret2"))
  87. drop_database()