mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-10 00:09:04 +00:00
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
from types import SimpleNamespace
|
|
from typer.testing import CliRunner
|
|
|
|
from seedpass.cli import app
|
|
from seedpass.cli import common as cli_common
|
|
|
|
|
|
class DummyService:
|
|
def __init__(self, relays):
|
|
self.relays = relays
|
|
|
|
def get_pubkey(self):
|
|
return "npub"
|
|
|
|
def list_relays(self):
|
|
return self.relays
|
|
|
|
def add_relay(self, url):
|
|
if url in self.relays:
|
|
raise ValueError("exists")
|
|
self.relays.append(url)
|
|
|
|
def remove_relay(self, idx):
|
|
if not 1 <= idx <= len(self.relays):
|
|
raise ValueError("bad")
|
|
if len(self.relays) == 1:
|
|
raise ValueError("min")
|
|
self.relays.pop(idx - 1)
|
|
|
|
|
|
runner = CliRunner()
|
|
|
|
|
|
def test_cli_relay_crud(monkeypatch):
|
|
relays = ["wss://a"]
|
|
|
|
def pm_factory(*a, **k):
|
|
return SimpleNamespace()
|
|
|
|
monkeypatch.setattr(cli_common, "PasswordManager", pm_factory)
|
|
monkeypatch.setattr(cli_common, "NostrService", lambda pm: DummyService(relays))
|
|
|
|
result = runner.invoke(app, ["nostr", "list-relays"])
|
|
assert "1: wss://a" in result.stdout
|
|
|
|
result = runner.invoke(app, ["nostr", "add-relay", "wss://b"])
|
|
assert result.exit_code == 0
|
|
assert "Added" in result.stdout
|
|
assert relays == ["wss://a", "wss://b"]
|
|
|
|
result = runner.invoke(app, ["nostr", "remove-relay", "1"])
|
|
assert result.exit_code == 0
|
|
assert relays == ["wss://b"]
|