mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-08 15:28:44 +00:00
Merge pull request #367 from PR0M3TH3AN/codex/add-tests-for-export-and-import-functionality
Add CLI export/import tests
This commit is contained in:
91
src/tests/test_cli_export_import.py
Normal file
91
src/tests/test_cli_export_import.py
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
from types import SimpleNamespace
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.append(str(Path(__file__).resolve().parents[1]))
|
||||||
|
|
||||||
|
import main
|
||||||
|
from password_manager.portable_backup import export_backup, import_backup
|
||||||
|
from password_manager.config_manager import ConfigManager
|
||||||
|
from password_manager.backup import BackupManager
|
||||||
|
from helpers import create_vault, TEST_SEED
|
||||||
|
|
||||||
|
|
||||||
|
def _setup_pm(tmp_path: Path):
|
||||||
|
vault, _ = create_vault(tmp_path, TEST_SEED)
|
||||||
|
cfg = ConfigManager(vault, tmp_path)
|
||||||
|
backup = BackupManager(tmp_path, cfg)
|
||||||
|
pm = SimpleNamespace(
|
||||||
|
handle_export_database=lambda p: export_backup(
|
||||||
|
vault, backup, p, parent_seed=TEST_SEED
|
||||||
|
),
|
||||||
|
handle_import_database=lambda p: import_backup(
|
||||||
|
vault, backup, p, parent_seed=TEST_SEED
|
||||||
|
),
|
||||||
|
nostr_client=SimpleNamespace(close_client_pool=lambda: None),
|
||||||
|
)
|
||||||
|
return pm, vault
|
||||||
|
|
||||||
|
|
||||||
|
def test_cli_export_creates_file(monkeypatch, tmp_path):
|
||||||
|
pm, vault = _setup_pm(tmp_path)
|
||||||
|
data = {
|
||||||
|
"schema_version": 3,
|
||||||
|
"entries": {
|
||||||
|
"0": {
|
||||||
|
"label": "example",
|
||||||
|
"type": "password",
|
||||||
|
"notes": "",
|
||||||
|
"custom_fields": [],
|
||||||
|
"origin": "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
vault.save_index(data)
|
||||||
|
|
||||||
|
monkeypatch.setattr(main, "PasswordManager", lambda: pm)
|
||||||
|
monkeypatch.setattr(main, "configure_logging", lambda: None)
|
||||||
|
monkeypatch.setattr(main, "initialize_app", lambda: None)
|
||||||
|
monkeypatch.setattr(main.signal, "signal", lambda *a, **k: None)
|
||||||
|
|
||||||
|
export_path = tmp_path / "out.json"
|
||||||
|
rc = main.main(["export", "--file", str(export_path)])
|
||||||
|
assert rc == 0
|
||||||
|
assert export_path.exists()
|
||||||
|
|
||||||
|
|
||||||
|
def test_cli_import_round_trip(monkeypatch, tmp_path):
|
||||||
|
pm, vault = _setup_pm(tmp_path)
|
||||||
|
original = {
|
||||||
|
"schema_version": 3,
|
||||||
|
"entries": {
|
||||||
|
"0": {
|
||||||
|
"label": "example",
|
||||||
|
"type": "password",
|
||||||
|
"notes": "",
|
||||||
|
"custom_fields": [],
|
||||||
|
"origin": "",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
vault.save_index(original)
|
||||||
|
|
||||||
|
export_path = tmp_path / "out.json"
|
||||||
|
export_backup(
|
||||||
|
vault,
|
||||||
|
BackupManager(tmp_path, ConfigManager(vault, tmp_path)),
|
||||||
|
export_path,
|
||||||
|
parent_seed=TEST_SEED,
|
||||||
|
)
|
||||||
|
|
||||||
|
vault.save_index({"schema_version": 3, "entries": {}})
|
||||||
|
|
||||||
|
monkeypatch.setattr(main, "PasswordManager", lambda: pm)
|
||||||
|
monkeypatch.setattr(main, "configure_logging", lambda: None)
|
||||||
|
monkeypatch.setattr(main, "initialize_app", lambda: None)
|
||||||
|
monkeypatch.setattr(main.signal, "signal", lambda *a, **k: None)
|
||||||
|
|
||||||
|
rc = main.main(["import", "--file", str(export_path)])
|
||||||
|
assert rc == 0
|
||||||
|
assert vault.load_index() == original
|
Reference in New Issue
Block a user