58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
import json
|
|
import sys
|
|
from types import ModuleType, SimpleNamespace
|
|
|
|
import pytest
|
|
|
|
from core import version as version_service
|
|
from core.extension import ModelResolverExtension
|
|
|
|
|
|
class _RecordingRoutes:
|
|
def __init__(self):
|
|
self.registered = {}
|
|
|
|
def _decorator(self, method, path):
|
|
def register(handler):
|
|
self.registered[(method, path)] = handler
|
|
return handler
|
|
|
|
return register
|
|
|
|
def get(self, path):
|
|
return self._decorator("GET", path)
|
|
|
|
def post(self, path):
|
|
return self._decorator("POST", path)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_extension_entrypoint_registers_routes_and_serves_version(monkeypatch):
|
|
routes = _RecordingRoutes()
|
|
server_module = ModuleType("server")
|
|
server_module.PromptServer = SimpleNamespace(
|
|
instance=SimpleNamespace(routes=routes)
|
|
)
|
|
monkeypatch.setitem(sys.modules, "server", server_module)
|
|
monkeypatch.setattr(
|
|
version_service,
|
|
"_get_project_version_info",
|
|
lambda: {"version": "1.1.0", "latest_version": "1.1.0"},
|
|
)
|
|
|
|
extension = ModelResolverExtension()
|
|
assert extension.setup_routes() is True
|
|
assert extension.routes_setup is True
|
|
assert ("GET", "/model_resolver/version") in routes.registered
|
|
assert ("POST", "/model_resolver/analyze") in routes.registered
|
|
|
|
response = await routes.registered[("GET", "/model_resolver/version")](
|
|
SimpleNamespace()
|
|
)
|
|
|
|
assert response.status == 200
|
|
assert json.loads(response.text) == {
|
|
"version": "1.1.0",
|
|
"latest_version": "1.1.0",
|
|
}
|