"""Tests for remote swarmui_set_api_keys.""" from __future__ import annotations import importlib.util import json from pathlib import Path ROOT = Path(__file__).resolve().parents[1] REMOTE = ROOT / "src" / "gpu_rent" / "remote" / "swarmui_set_api_keys.py" def _load(): spec = importlib.util.spec_from_file_location("swarmui_set_api_keys", REMOTE) assert spec and spec.loader mod = importlib.util.module_from_spec(spec) spec.loader.exec_module(mod) return mod def test_set_civitai_key(tmp_path, monkeypatch): mod = _load() keys = tmp_path / "keys.json" keys.write_text(json.dumps({"civitai_api": "tok-123"}), encoding="utf-8") monkeypatch.setattr(mod, "KEYS_PATH", keys) calls = [] def fake_post(path, payload, timeout=15.0): calls.append((path, payload)) if path == "/API/GetNewSession": return {"session_id": "sid-1"} if path == "/API/SetAPIKey": assert payload["session_id"] == "sid-1" assert payload["keyType"] == "civitai_api" assert payload["key"] == "tok-123" return {"success": True} raise AssertionError(path) monkeypatch.setattr(mod, "post", fake_post) monkeypatch.setattr(mod, "wait_session", lambda _d: "sid-1") assert mod.main() == 0 assert not keys.exists() assert any(c[0] == "/API/SetAPIKey" for c in calls) def test_skip_empty_keys(tmp_path, monkeypatch): mod = _load() keys = tmp_path / "keys.json" keys.write_text("{}", encoding="utf-8") monkeypatch.setattr(mod, "KEYS_PATH", keys) assert mod.main() == 0