Files
seedPass/src/tests/test_nostr_entry.py
2025-07-08 13:59:05 -04:00

51 lines
1.7 KiB
Python

import sys
from pathlib import Path
from tempfile import TemporaryDirectory
from helpers import create_vault, TEST_SEED, TEST_PASSWORD
from nostr.coincurve_keys import Keys
sys.path.append(str(Path(__file__).resolve().parents[1]))
from password_manager.entry_management import EntryManager
from password_manager.backup import BackupManager
from password_manager.vault import Vault
from password_manager.config_manager import ConfigManager
def test_nostr_key_determinism():
with TemporaryDirectory() as tmpdir:
tmp_path = Path(tmpdir)
vault, enc_mgr = create_vault(tmp_path, TEST_SEED, TEST_PASSWORD)
cfg_mgr = ConfigManager(vault, tmp_path)
backup_mgr = BackupManager(tmp_path, cfg_mgr)
entry_mgr = EntryManager(vault, backup_mgr)
idx = entry_mgr.add_nostr_key("main")
entry = entry_mgr.retrieve_entry(idx)
assert entry == {
"type": "nostr",
"kind": "nostr",
"index": idx,
"label": "main",
"notes": "",
"archived": False,
"tags": [],
}
npub1, nsec1 = entry_mgr.get_nostr_key_pair(idx, TEST_SEED)
npub2, nsec2 = entry_mgr.get_nostr_key_pair(idx, TEST_SEED)
assert npub1 == npub2
assert nsec1 == nsec2
assert npub1.startswith("npub")
assert nsec1.startswith("nsec")
priv_hex = Keys.bech32_to_hex(nsec1)
derived = Keys(priv_k=priv_hex)
encoded_npub = Keys.hex_to_bech32(derived.public_key_hex(), "npub")
assert encoded_npub == npub1
data = enc_mgr.load_json_data(entry_mgr.index_file)
assert data["entries"][str(idx)]["label"] == "main"