From b02a85a3a132e64ee8756d73297aac7e09f74152 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Mon, 7 Jul 2025 19:47:09 -0400 Subject: [PATCH] fix archived list after restore --- src/password_manager/manager.py | 5 ++++- src/tests/test_archive_restore.py | 36 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/password_manager/manager.py b/src/password_manager/manager.py index 917528f..4698272 100644 --- a/src/password_manager/manager.py +++ b/src/password_manager/manager.py @@ -2403,7 +2403,10 @@ class PasswordManager: self.is_dirty = True self.last_update = time.time() pause() - archived = [e for e in archived if e[0] != entry_index] + archived = self.entry_manager.list_entries( + include_archived=True + ) + archived = [e for e in archived if e[4]] if not archived: print(colored("All entries restored.", "green")) pause() diff --git a/src/tests/test_archive_restore.py b/src/tests/test_archive_restore.py index d791077..00225e1 100644 --- a/src/tests/test_archive_restore.py +++ b/src/tests/test_archive_restore.py @@ -111,3 +111,39 @@ def test_view_archived_entries_view_only(monkeypatch, capsys): assert entry_mgr.retrieve_entry(idx)["archived"] is True out = capsys.readouterr().out assert "example.com" in out + + +def test_view_archived_entries_removed_after_restore(monkeypatch, capsys): + with TemporaryDirectory() as tmpdir: + tmp_path = Path(tmpdir) + vault, enc_mgr = create_vault(tmp_path, TEST_SEED, TEST_PASSWORD) + cfg_mgr = ConfigManager(vault, tmp_path) + backup_mgr = BackupManager(tmp_path, cfg_mgr) + entry_mgr = EntryManager(vault, backup_mgr) + + pm = PasswordManager.__new__(PasswordManager) + pm.encryption_mode = EncryptionMode.SEED_ONLY + pm.encryption_manager = enc_mgr + pm.vault = vault + pm.entry_manager = entry_mgr + pm.backup_manager = backup_mgr + pm.parent_seed = TEST_SEED + pm.nostr_client = SimpleNamespace() + pm.fingerprint_dir = tmp_path + pm.is_dirty = False + + idx = entry_mgr.add_entry("example.com", 8) + + monkeypatch.setattr("builtins.input", lambda *_: str(idx)) + pm.handle_archive_entry() + assert entry_mgr.retrieve_entry(idx)["archived"] is True + + inputs = iter([str(idx), "r", "", ""]) + monkeypatch.setattr("builtins.input", lambda *_: next(inputs)) + pm.handle_view_archived_entries() + assert entry_mgr.retrieve_entry(idx)["archived"] is False + + monkeypatch.setattr("builtins.input", lambda *_: "") + pm.handle_view_archived_entries() + out = capsys.readouterr().out + assert "No archived entries found." in out