generated from coulomb/repo-seed
Milestone 0 plus the manual-registry spine from Milestone 1
This commit is contained in:
69
tests/test_web_api.py
Normal file
69
tests/test_web_api.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
from repo_registry.web_api.app import Settings, app, get_settings
|
||||
|
||||
|
||||
def test_api_manual_registry_loop(tmp_path):
|
||||
def override_settings():
|
||||
return Settings(database_path=str(tmp_path / "api.sqlite3"))
|
||||
|
||||
app.dependency_overrides[get_settings] = override_settings
|
||||
client = TestClient(app)
|
||||
try:
|
||||
repository_response = client.post(
|
||||
"/repos",
|
||||
json={
|
||||
"name": "MailRouter",
|
||||
"url": "https://example.com/mail-router.git",
|
||||
"description": "Routes incoming customer email",
|
||||
},
|
||||
)
|
||||
assert repository_response.status_code == 201
|
||||
repository_id = repository_response.json()["id"]
|
||||
|
||||
ability_response = client.post(
|
||||
f"/repos/{repository_id}/abilities",
|
||||
json={
|
||||
"name": "Business Email Routing",
|
||||
"description": "Route inbound messages.",
|
||||
},
|
||||
)
|
||||
assert ability_response.status_code == 201
|
||||
ability_id = ability_response.json()["id"]
|
||||
|
||||
capability_response = client.post(
|
||||
f"/repos/{repository_id}/capabilities",
|
||||
json={
|
||||
"ability_id": ability_id,
|
||||
"name": "Classify Incoming Email",
|
||||
"inputs": ["subject", "body"],
|
||||
"outputs": ["intent"],
|
||||
},
|
||||
)
|
||||
assert capability_response.status_code == 201
|
||||
capability_id = capability_response.json()["id"]
|
||||
|
||||
feature_response = client.post(
|
||||
f"/repos/{repository_id}/features",
|
||||
json={
|
||||
"capability_id": capability_id,
|
||||
"name": "POST /api/classify-email",
|
||||
"type": "REST endpoint",
|
||||
"location": "src/routes/classify_email.py",
|
||||
},
|
||||
)
|
||||
assert feature_response.status_code == 201
|
||||
|
||||
map_response = client.get(f"/repos/{repository_id}/ability-map")
|
||||
assert map_response.status_code == 200
|
||||
ability_map = map_response.json()
|
||||
assert ability_map["repository"]["name"] == "MailRouter"
|
||||
assert ability_map["abilities"][0]["capabilities"][0]["name"] == (
|
||||
"Classify Incoming Email"
|
||||
)
|
||||
|
||||
search_response = client.get("/search", params={"q": "email"})
|
||||
assert search_response.status_code == 200
|
||||
assert search_response.json()
|
||||
finally:
|
||||
app.dependency_overrides.clear()
|
||||
Reference in New Issue
Block a user