mirror of
https://github.com/elder-plinius/OBLITERATUS.git
synced 2026-08-17 16:37:30 +02:00
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
"""Exercise the service boundary over a disposable loopback HTTP endpoint."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import threading
|
|
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
|
|
|
|
import pytest
|
|
|
|
from obliteratus import models_client
|
|
|
|
|
|
pytestmark = pytest.mark.network
|
|
|
|
|
|
def test_bestiary_catalog_http_boundary(monkeypatch):
|
|
catalog = {
|
|
"models": [
|
|
{
|
|
"id": "example/tiny",
|
|
"vendor": "example",
|
|
"open_weight": True,
|
|
"channels": ["huggingface"],
|
|
"capabilities": ["text"],
|
|
}
|
|
]
|
|
}
|
|
body = json.dumps(catalog).encode()
|
|
|
|
class Handler(BaseHTTPRequestHandler):
|
|
def do_GET(self):
|
|
self.send_response(200)
|
|
self.send_header("Content-Type", "application/json")
|
|
self.send_header("Content-Length", str(len(body)))
|
|
self.end_headers()
|
|
self.wfile.write(body)
|
|
|
|
def log_message(self, _format, *_args):
|
|
return
|
|
|
|
server = ThreadingHTTPServer(("127.0.0.1", 0), Handler)
|
|
thread = threading.Thread(target=server.serve_forever, daemon=True)
|
|
thread.start()
|
|
try:
|
|
monkeypatch.setenv(
|
|
"BESTIARY_CATALOG", f"http://127.0.0.1:{server.server_port}/catalog.json"
|
|
)
|
|
assert models_client.model_ids(open_weight=True) == ["example/tiny"]
|
|
finally:
|
|
server.shutdown()
|
|
thread.join(timeout=5)
|
|
server.server_close()
|