mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-19 11:15:24 -04:00
fix(cookbook): harden remote serve host handling (#4345)
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
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 == []
|
||||
Reference in New Issue
Block a user