mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-09 07:48:57 +00:00
85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
import importlib
|
|
import bcrypt
|
|
from pathlib import Path
|
|
from tempfile import TemporaryDirectory
|
|
|
|
import constants
|
|
import password_manager.manager as manager_module
|
|
from utils.fingerprint_manager import FingerprintManager
|
|
from password_manager.config_manager import ConfigManager
|
|
from tests.helpers import TEST_SEED, TEST_PASSWORD, create_vault
|
|
|
|
|
|
def test_init_with_password(monkeypatch):
|
|
with TemporaryDirectory() as tmpdir:
|
|
tmp = Path(tmpdir)
|
|
monkeypatch.setattr(Path, "home", lambda: tmp)
|
|
importlib.reload(constants)
|
|
importlib.reload(manager_module)
|
|
|
|
fm = FingerprintManager(constants.APP_DIR)
|
|
fp = fm.add_fingerprint(TEST_SEED)
|
|
dir_path = constants.APP_DIR / fp
|
|
vault, _enc = create_vault(dir_path, TEST_SEED, TEST_PASSWORD)
|
|
cfg = ConfigManager(vault, dir_path)
|
|
cfg.set_password_hash(
|
|
bcrypt.hashpw(TEST_PASSWORD.encode(), bcrypt.gensalt()).decode()
|
|
)
|
|
cfg.set_kdf_iterations(100_000)
|
|
|
|
called = {}
|
|
|
|
def fake_setup(self, path, pw=None, **_):
|
|
called["password"] = pw
|
|
return True
|
|
|
|
monkeypatch.setattr(
|
|
manager_module.PasswordManager, "initialize_bip85", lambda self: None
|
|
)
|
|
monkeypatch.setattr(
|
|
manager_module.PasswordManager, "initialize_managers", lambda self: None
|
|
)
|
|
monkeypatch.setattr(
|
|
manager_module.PasswordManager, "setup_encryption_manager", fake_setup
|
|
)
|
|
|
|
pm = manager_module.PasswordManager(fingerprint=fp, password=TEST_PASSWORD)
|
|
assert called["password"] == TEST_PASSWORD
|
|
|
|
|
|
def test_unlock_with_password(monkeypatch):
|
|
with TemporaryDirectory() as tmpdir:
|
|
tmp = Path(tmpdir)
|
|
monkeypatch.setattr(Path, "home", lambda: tmp)
|
|
importlib.reload(constants)
|
|
importlib.reload(manager_module)
|
|
|
|
fm = FingerprintManager(constants.APP_DIR)
|
|
fp = fm.add_fingerprint(TEST_SEED)
|
|
dir_path = constants.APP_DIR / fp
|
|
vault, _enc = create_vault(dir_path, TEST_SEED, TEST_PASSWORD)
|
|
cfg = ConfigManager(vault, dir_path)
|
|
cfg.set_password_hash(
|
|
bcrypt.hashpw(TEST_PASSWORD.encode(), bcrypt.gensalt()).decode()
|
|
)
|
|
|
|
pm = manager_module.PasswordManager.__new__(manager_module.PasswordManager)
|
|
pm.fingerprint_dir = dir_path
|
|
pm.config_manager = cfg
|
|
pm.locked = True
|
|
called = {}
|
|
|
|
def fake_setup(path, pw=None):
|
|
called["password"] = pw
|
|
|
|
monkeypatch.setattr(
|
|
manager_module.PasswordManager, "initialize_bip85", lambda self: None
|
|
)
|
|
monkeypatch.setattr(
|
|
manager_module.PasswordManager, "initialize_managers", lambda self: None
|
|
)
|
|
pm.setup_encryption_manager = fake_setup
|
|
|
|
pm.unlock_vault(TEST_PASSWORD)
|
|
assert called["password"] == TEST_PASSWORD
|