test_database_v1.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. from pwman_tstlib import *
  2. initTest(__file__)
  3. import pathlib
  4. from libpwman.database import *
  5. class Test_Database_v1(TestCase):
  6. """Version 1 database format.
  7. """
  8. def test_read_contents(self):
  9. db = PWManDatabase(filename=pathlib.Path("tests", "test_database_v1.db"),
  10. passphrase="test",
  11. verifyPayloadMac=False)
  12. self.assertEqual(db.getCategoryNames(),
  13. sorted([ "123",
  14. "test2",
  15. "testcat1" ]))
  16. self.assertEqual(db.getEntryTitles("123"),
  17. sorted([ "4711",
  18. "456" ]))
  19. self.assertEqual(db.getEntryTitles("test2"),
  20. sorted([ "test2" ]))
  21. self.assertEqual(db.getEntryTitles("testcat1"),
  22. sorted([ "testtitle1",
  23. "testtitle2",
  24. "test title3",
  25. "test-title3",
  26. "test title4",
  27. "test title 5",
  28. "test title 6" ]))
  29. entry = db.getEntry("testcat1", "testtitle1")
  30. self.assertEqual(entry.user, "uuuuuuuuu")
  31. self.assertEqual(entry.pw, "pppppp")
  32. entryBulk = db.getEntryBulk(entry)
  33. self.assertEqual(entryBulk.data, "bbbbbbbb")
  34. entryAttr = db.getEntryAttr(entry, "AAAA")
  35. self.assertEqual(entryAttr.data, "BBBB")
  36. entryAttr = db.getEntryAttr(entry, "CCCC")
  37. self.assertEqual(entryAttr.data, "DDDDDDD")
  38. entryTotp = db.getEntryTotp(entry)
  39. self.assertEqual(entryTotp.key, "MZXW63YK")
  40. self.assertEqual(entryTotp.digits, 6)
  41. self.assertEqual(entryTotp.hmacHash, "SHA1")
  42. entry = db.getEntry("testcat1", "testtitle2")
  43. self.assertEqual(entry.user, "user")
  44. self.assertEqual(entry.pw, "pw")
  45. entryBulk = db.getEntryBulk(entry)
  46. self.assertIsNone(entryBulk)
  47. entryTotp = db.getEntryTotp(entry)
  48. self.assertEqual(entryTotp.key, "MJQXE4QK")
  49. self.assertEqual(entryTotp.digits, 8)
  50. self.assertEqual(entryTotp.hmacHash, "SHA256")
  51. entry = db.getEntry("testcat1", "test-title3")
  52. self.assertEqual(entry.user, "aa bb")
  53. self.assertEqual(entry.pw, "cc dd")
  54. entryBulk = db.getEntryBulk(entry)
  55. self.assertIsNone(entryBulk)
  56. entry = db.getEntry("testcat1", "test title3")
  57. self.assertEqual(entry.user, "xx yy")
  58. self.assertEqual(entry.pw, "oo pp")
  59. entryBulk = db.getEntryBulk(entry)
  60. self.assertIsNone(entryBulk)
  61. entry = db.getEntry("testcat1", "test title4")
  62. self.assertEqual(entry.user, "4")
  63. self.assertEqual(entry.pw, "44")
  64. entryBulk = db.getEntryBulk(entry)
  65. self.assertIsNone(entryBulk)
  66. entry = db.getEntry("testcat1", "test title 5")
  67. self.assertEqual(entry.user, "5")
  68. self.assertEqual(entry.pw, "55")
  69. entryBulk = db.getEntryBulk(entry)
  70. self.assertIsNone(entryBulk)
  71. entry = db.getEntry("testcat1", "test title 6")
  72. self.assertEqual(entry.user, "6")
  73. self.assertEqual(entry.pw, "66")
  74. entryBulk = db.getEntryBulk(entry)
  75. self.assertIsNone(entryBulk)
  76. entry = db.getEntry("123", "4711")
  77. self.assertEqual(entry.user, "UUU")
  78. self.assertEqual(entry.pw, "password")
  79. entryBulk = db.getEntryBulk(entry)
  80. self.assertIsNone(entryBulk)
  81. entryAttr = db.getEntryAttr(entry, "git")
  82. self.assertEqual(entryAttr.data, "https://git.example.com")
  83. entryAttr = db.getEntryAttr(entry, "www")
  84. self.assertEqual(entryAttr.data, "https://www.example.com")
  85. entry = db.getEntry("123", "456")
  86. self.assertEqual(entry.user, "789")
  87. self.assertEqual(entry.pw, "")
  88. entryBulk = db.getEntryBulk(entry)
  89. self.assertIsNone(entryBulk)
  90. entry = db.getEntry("test2", "test2")
  91. self.assertEqual(entry.user, "TEST!")
  92. self.assertEqual(entry.pw, "TEST!!")
  93. entryBulk = db.getEntryBulk(entry)
  94. self.assertEqual(entryBulk.data, "TEST!!!")
  95. def test_legacy_pbkdf2(self):
  96. # Test legacy PBKDF2 read support.
  97. # Just check if we can open and decrypt it successfully.
  98. db = PWManDatabase(filename=pathlib.Path("tests", "test_database_v1_pbkdf2.db"),
  99. passphrase="test",
  100. verifyPayloadMac=False)
  101. self.assertEqual(db.getCategoryNames(),
  102. sorted([ "123", "test2", "testcat1" ]))