30 lines
1.2 KiB
Python
30 lines
1.2 KiB
Python
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()
|