Merge pull request #420 from PR0M3TH3AN/codex/update-cli.py-and-add-unit-tests

Update CLI sync and password generation
This commit is contained in:
thePR0M3TH3AN
2025-07-09 10:34:32 -04:00
committed by GitHub
2 changed files with 45 additions and 2 deletions

View File

@@ -139,7 +139,12 @@ def vault_export(
@nostr_app.command("sync")
def nostr_sync(ctx: typer.Context) -> None:
"""Sync with configured Nostr relays."""
typer.echo(f"Syncing vault for fingerprint: {ctx.obj.get('fingerprint')}")
pm = _get_pm(ctx)
event_id = pm.sync_vault()
if event_id:
typer.echo(event_id)
else:
typer.echo("Error: Failed to sync vault")
@nostr_app.command("get-pubkey")
@@ -172,7 +177,9 @@ def fingerprint_list(ctx: typer.Context) -> None:
@util_app.command("generate-password")
def generate_password(ctx: typer.Context, length: int = 24) -> None:
"""Generate a strong password."""
typer.echo(f"Generate password of length {length} for {ctx.obj.get('fingerprint')}")
pm = _get_pm(ctx)
password = pm.password_generator.generate_password(length)
typer.echo(password)
@api_app.command("start")

View File

@@ -1,6 +1,9 @@
import sys
from types import SimpleNamespace
from pathlib import Path
sys.path.append(str(Path(__file__).resolve().parents[1]))
from typer.testing import CliRunner
from seedpass.cli import app, PasswordManager
@@ -113,3 +116,36 @@ def test_config_get(monkeypatch):
result = runner.invoke(app, ["config", "get", "x"])
assert result.exit_code == 0
assert "1" in result.stdout
def test_nostr_sync(monkeypatch):
called = {}
def sync_vault():
called["called"] = True
return "evt123"
pm = SimpleNamespace(sync_vault=sync_vault, select_fingerprint=lambda fp: None)
monkeypatch.setattr(cli, "PasswordManager", lambda: pm)
result = runner.invoke(app, ["nostr", "sync"])
assert result.exit_code == 0
assert called.get("called") is True
assert "evt123" in result.stdout
def test_generate_password(monkeypatch):
called = {}
def gen_pw(length):
called["length"] = length
return "secretpw"
pm = SimpleNamespace(
password_generator=SimpleNamespace(generate_password=gen_pw),
select_fingerprint=lambda fp: None,
)
monkeypatch.setattr(cli, "PasswordManager", lambda: pm)
result = runner.invoke(app, ["util", "generate-password", "--length", "12"])
assert result.exit_code == 0
assert called.get("length") == 12
assert "secretpw" in result.stdout