From dbd0adca6bf5a35d4b7c8c97d66338732974b800 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Tue, 1 Jul 2025 17:59:45 -0400 Subject: [PATCH] Add tests for parent seed backup and filename validation --- src/tests/test_parent_seed_backup.py | 73 ++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/tests/test_parent_seed_backup.py diff --git a/src/tests/test_parent_seed_backup.py b/src/tests/test_parent_seed_backup.py new file mode 100644 index 0000000..6c24184 --- /dev/null +++ b/src/tests/test_parent_seed_backup.py @@ -0,0 +1,73 @@ +import builtins +import sys +from pathlib import Path +from types import SimpleNamespace + +sys.path.append(str(Path(__file__).resolve().parents[1])) + +from password_manager.manager import PasswordManager +from constants import DEFAULT_SEED_BACKUP_FILENAME + + +def _make_pm(tmp_path: Path) -> PasswordManager: + pm = PasswordManager.__new__(PasswordManager) + pm.parent_seed = "seed phrase" + pm.fingerprint_dir = tmp_path + pm.encryption_manager = SimpleNamespace(encrypt_and_save_file=lambda *a, **k: None) + pm.verify_password = lambda pw: True + return pm + + +def test_handle_backup_reveal_parent_seed_confirm(monkeypatch, tmp_path, capsys): + pm = _make_pm(tmp_path) + + monkeypatch.setattr( + "password_manager.manager.prompt_existing_password", lambda *_: "pw" + ) + confirms = iter([True, True]) + monkeypatch.setattr( + "password_manager.manager.confirm_action", lambda *_a, **_k: next(confirms) + ) + saved = [] + + def fake_save(data, path): + saved.append((data, path)) + + pm.encryption_manager = SimpleNamespace(encrypt_and_save_file=fake_save) + monkeypatch.setattr(builtins, "input", lambda *_: "mybackup.enc") + + pm.handle_backup_reveal_parent_seed() + out = capsys.readouterr().out + + assert "seed phrase" in out + assert saved + assert saved[0][1] == tmp_path / "mybackup.enc" + + +def test_handle_backup_reveal_parent_seed_cancel(monkeypatch, tmp_path, capsys): + pm = _make_pm(tmp_path) + + monkeypatch.setattr( + "password_manager.manager.prompt_existing_password", lambda *_: "pw" + ) + monkeypatch.setattr( + "password_manager.manager.confirm_action", lambda *_a, **_k: False + ) + saved = [] + pm.encryption_manager = SimpleNamespace( + encrypt_and_save_file=lambda data, path: saved.append((data, path)) + ) + + pm.handle_backup_reveal_parent_seed() + out = capsys.readouterr().out + + assert "seed phrase" not in out + assert not saved + + +def test_is_valid_filename(tmp_path): + pm = _make_pm(tmp_path) + invalid = ["../bad", "", "bad/name", "bad\\name", "..", "/absolute"] + for name in invalid: + assert not pm.is_valid_filename(name) + assert pm.is_valid_filename("good.enc")