Merge pull request #109 from PR0M3TH3AN/codex/test-handle_backup_reveal_parent_seed-and-is_valid_filename

Add tests for seed backup flow and filename validation
This commit is contained in:
thePR0M3TH3AN
2025-07-01 18:01:13 -04:00
committed by GitHub

View File

@@ -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")