mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-17 10:15:27 -04:00
58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
import asyncio
|
|
|
|
import pytest
|
|
from fastapi import HTTPException
|
|
from starlette.requests import Request
|
|
|
|
import routes.cookbook_routes as cookbook_routes
|
|
from routes.cookbook_helpers import ServeRequest
|
|
|
|
|
|
def _route_endpoint(path: str, method: str):
|
|
router = cookbook_routes.setup_cookbook_routes()
|
|
for route in router.routes:
|
|
if route.path == path and method in route.methods:
|
|
return route.endpoint
|
|
raise AssertionError(f"{method} {path} route not found")
|
|
|
|
|
|
def _admin_request() -> Request:
|
|
request = Request(
|
|
{
|
|
"type": "http",
|
|
"method": "POST",
|
|
"path": "/api/model/serve",
|
|
"headers": [],
|
|
"state": {},
|
|
}
|
|
)
|
|
request.state.current_user = "admin"
|
|
return request
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_remote_windows_diffusers_is_rejected_before_runner_launch(monkeypatch):
|
|
monkeypatch.setattr(cookbook_routes, "require_admin", lambda request: None)
|
|
calls = []
|
|
|
|
async def fail_if_shell_runs(*args, **kwargs):
|
|
calls.append((args, kwargs))
|
|
raise AssertionError("remote Windows Diffusers should fail before shell launch")
|
|
|
|
monkeypatch.setattr(asyncio, "create_subprocess_shell", fail_if_shell_runs)
|
|
|
|
endpoint = _route_endpoint("/api/model/serve", "POST")
|
|
req = ServeRequest(
|
|
repo_id="diffusers/example",
|
|
cmd="python scripts/diffusion_server.py --model diffusers/example --port 8100",
|
|
remote_host="winbox",
|
|
platform="windows",
|
|
)
|
|
|
|
with pytest.raises(HTTPException) as exc:
|
|
await endpoint(_admin_request(), req)
|
|
|
|
assert exc.value.status_code == 400
|
|
assert "Remote Windows Diffusers" in str(exc.value.detail)
|
|
assert calls == []
|