mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-08 07:18:47 +00:00
79 lines
1.9 KiB
Python
79 lines
1.9 KiB
Python
import os
|
|
import toga
|
|
import types
|
|
|
|
import pytest
|
|
|
|
pytestmark = pytest.mark.desktop
|
|
|
|
from seedpass.core.pubsub import bus
|
|
from seedpass_gui.app import MainWindow, RelayManagerDialog
|
|
|
|
|
|
class DummyNostr:
|
|
def __init__(self):
|
|
self.relays = ["wss://a"]
|
|
|
|
def list_relays(self):
|
|
return list(self.relays)
|
|
|
|
def add_relay(self, url):
|
|
self.relays.append(url)
|
|
|
|
def remove_relay(self, idx):
|
|
self.relays.pop(idx - 1)
|
|
|
|
|
|
class DummyEntries:
|
|
def list_entries(self):
|
|
return []
|
|
|
|
def search_entries(self, q):
|
|
return []
|
|
|
|
|
|
class DummyController:
|
|
def __init__(self):
|
|
self.lock_window = types.SimpleNamespace(show=lambda: None)
|
|
self.main_window = None
|
|
self.vault_service = None
|
|
self.entry_service = None
|
|
self.nostr_service = None
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def set_backend():
|
|
os.environ["TOGA_BACKEND"] = "toga_dummy"
|
|
import asyncio
|
|
|
|
asyncio.set_event_loop(asyncio.new_event_loop())
|
|
|
|
|
|
def test_relay_manager_add_remove():
|
|
toga.App("T", "o")
|
|
ctrl = DummyController()
|
|
nostr = DummyNostr()
|
|
win = MainWindow(ctrl, None, DummyEntries(), nostr)
|
|
dlg = RelayManagerDialog(win, nostr)
|
|
dlg.new_input.value = "wss://b"
|
|
dlg.add_relay(None)
|
|
assert nostr.relays == ["wss://a", "wss://b"]
|
|
dlg.remove_relay(None, index=1)
|
|
assert nostr.relays == ["wss://b"]
|
|
|
|
|
|
def test_status_bar_updates_and_lock():
|
|
toga.App("T2", "o2")
|
|
ctrl = DummyController()
|
|
nostr = DummyNostr()
|
|
ctrl.lock_window = types.SimpleNamespace(show=lambda: setattr(ctrl, "locked", True))
|
|
win = MainWindow(ctrl, None, DummyEntries(), nostr)
|
|
ctrl.main_window = win
|
|
bus.publish("sync_started")
|
|
assert win.status.text == "Syncing..."
|
|
bus.publish("sync_finished")
|
|
assert "Last sync:" in win.status.text
|
|
bus.publish("vault_locked")
|
|
assert getattr(ctrl, "locked", False)
|
|
assert ctrl.main_window is None
|