spriteforge/tests/test_studio_server.py

30 lines
1.2 KiB
Python
Raw Normal View History

from __future__ import annotations
import json
from threading import Thread
from urllib.request import Request, urlopen
from spriteforge.studio.server import StudioServer
from spriteforge.studio.store import ProjectStore
def test_studio_http_project_and_asset(tmp_path):
store = ProjectStore.create(tmp_path / "art", "test_project", "Test Project")
server = StudioServer(("127.0.0.1", 0), store)
thread = Thread(target=server.serve_forever, daemon=True)
thread.start()
base = f"http://127.0.0.1:{server.server_port}"
try:
with urlopen(base + "/api/project") as response:
assert json.load(response)["id"] == "test_project"
body = json.dumps({"id": "agent", "name": "Agent", "kind": "character",
"target_width": 60, "target_height": 60}).encode()
request = Request(base + "/api/assets", data=body, headers={"Content-Type": "application/json"})
with urlopen(request) as response:
assert json.load(response)["assets"][0]["id"] == "agent"
with urlopen(base + "/") as response:
assert b"SPRITEFORGE // STUDIO" in response.read()
finally:
server.shutdown()
server.server_close()