mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-10 00:09:04 +00:00
Allow non-interactive unlock
This commit is contained in:
84
src/tests/test_noninteractive_init_unlock.py
Normal file
84
src/tests/test_noninteractive_init_unlock.py
Normal file
@@ -0,0 +1,84 @@
|
||||
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
|
Reference in New Issue
Block a user