diff --git a/src/seedpass/core/manager.py b/src/seedpass/core/manager.py index 695add4..07dd605 100644 --- a/src/seedpass/core/manager.py +++ b/src/seedpass/core/manager.py @@ -529,6 +529,9 @@ class PasswordManager: print(colored("Invalid choice. Exiting.", "red")) sys.exit(1) + if not fingerprint: + return None + # Set current_fingerprint in FingerprintManager only self.fingerprint_manager.current_fingerprint = fingerprint print( @@ -542,6 +545,8 @@ class PasswordManager: if getattr(self, "config_manager", None) is None: self.initialize_managers() + return fingerprint + except Exception as e: logger.error(f"Error adding new seed profile: {e}", exc_info=True) print(colored(f"Error: Failed to add new seed profile: {e}", "red")) @@ -1000,8 +1005,8 @@ class PasswordManager: logging.error("Invalid BIP-85 seed phrase. Exiting.") print(colored("Error: Invalid BIP-85 seed phrase.", "red")) sys.exit(1) - - return self._finalize_existing_seed(parent_seed, password=password) + fingerprint = self._finalize_existing_seed(parent_seed, password=password) + return fingerprint except KeyboardInterrupt: logging.info("Operation cancelled by user.") self.notify("Operation cancelled by user.", level="WARNING") diff --git a/src/tests/test_add_new_fingerprint_words.py b/src/tests/test_add_new_fingerprint_words.py new file mode 100644 index 0000000..a95d179 --- /dev/null +++ b/src/tests/test_add_new_fingerprint_words.py @@ -0,0 +1,35 @@ +import builtins +from types import SimpleNamespace + +import seedpass.core.manager as manager_module +from helpers import TEST_SEED + + +def test_add_new_fingerprint_word_entry_exits(monkeypatch): + pm = manager_module.PasswordManager.__new__(manager_module.PasswordManager) + pm.fingerprint_manager = SimpleNamespace(current_fingerprint=None) + pm.initialize_managers = lambda: None + + calls = {"count": 0} + original_setup = manager_module.PasswordManager.setup_existing_seed + + def setup_wrapper(self, *a, **k): + calls["count"] += 1 + return original_setup(self, *a, **k) + + monkeypatch.setattr( + manager_module.PasswordManager, "setup_existing_seed", setup_wrapper + ) + monkeypatch.setattr(manager_module, "prompt_seed_words", lambda *a, **k: TEST_SEED) + monkeypatch.setattr( + manager_module.PasswordManager, + "_finalize_existing_seed", + lambda self, seed, password=None: "fp", + ) + monkeypatch.setattr(builtins, "input", lambda *_a, **_k: "2") + + result = pm.add_new_fingerprint() + + assert result == "fp" + assert calls["count"] == 1 + assert pm.fingerprint_manager.current_fingerprint == "fp"