70 lines
2.6 KiB
Python
70 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
"""Smoke-test local gateway storage uses a machine-local key, not interactive unlock."""
|
|
|
|
import importlib.util
|
|
import pathlib
|
|
import sys
|
|
import tempfile
|
|
|
|
|
|
def load_module():
|
|
script_path = pathlib.Path(__file__).resolve().parents[1] / "resources" / "scripts" / "napseer_mcp_server.py"
|
|
sys.path.insert(0, str(script_path.parent))
|
|
spec = importlib.util.spec_from_file_location("napseer_mcp_server_local_vault_test", script_path)
|
|
module = importlib.util.module_from_spec(spec)
|
|
assert spec and spec.loader
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
def run():
|
|
mod = load_module()
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
state = pathlib.Path(tmp)
|
|
mod.AUTH_DIR = state
|
|
mod.AUTH_PATH = state / "auth.json"
|
|
mod.VAULT_PATH = state / "vault.json"
|
|
mod.LOCAL_VAULT_KEY_PATH = state / "vault.local-key"
|
|
mod.GATEWAY_RELAY_SECRET_PATH = state / "gateway-relay-secret.json"
|
|
mod.GATEWAY_RELAY_STATE_PATH = state / "gateway-relay-state.json"
|
|
mod.CONTAINER_IDENTITY_PATH = state / "container-identity.json"
|
|
mod.TELEMETRY_PATH = state / "telemetry.json"
|
|
|
|
auth = {
|
|
"base_url": "https://api.example.test",
|
|
"project_id": "project-1",
|
|
"token": "token",
|
|
"token_expires_at": "later",
|
|
"ssh_key_path": str(state / "id_ed25519"),
|
|
}
|
|
mod.AUTH = dict(auth)
|
|
mod.BASE_URL = auth["base_url"]
|
|
mod.DEFAULT_PROJECT_ID = auth["project_id"]
|
|
mod.TOKEN = auth["token"]
|
|
mod.TOKEN_EXPIRES_AT = auth["token_expires_at"]
|
|
mod.load_auth = lambda public_override=None, secret_override=None: {
|
|
**auth,
|
|
**(public_override or {}),
|
|
**(secret_override or {}),
|
|
}
|
|
mod.ensure_gateway_worker_capability = lambda refresh=True: {"status": "updated"}
|
|
|
|
result = mod.gateway_setup({"passphrase": "relay-passphrase", "default_command": "bash -l"})
|
|
assert result["status"] == "local_available"
|
|
assert mod.LOCAL_VAULT_KEY_PATH.exists()
|
|
assert mod.GATEWAY_RELAY_SECRET_PATH.exists()
|
|
assert mod.read_vault(mod.LOCAL_VAULT_KEY_PATH.read_text(encoding="utf-8").strip())["secrets"]["gateway_default_command"] == "bash -l"
|
|
|
|
mod.VAULT_SECRETS = {}
|
|
mod.VAULT_KEY = None
|
|
mod.GATEWAY_UNLOCKED = False
|
|
opened = mod.gateway_open_local()
|
|
assert opened["status"] == "local_available"
|
|
assert mod.VAULT_SECRETS["gateway_default_command"] == "bash -l"
|
|
|
|
print("ok: local gateway vault key smoke passed")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
run()
|