test: baseline test suite — 86 tests covering auth, CRUD, settings, chat, terraform, reports, terminal
This commit is contained in:
103
backend/tests/test_genai_config.py
Normal file
103
backend/tests/test_genai_config.py
Normal file
@@ -0,0 +1,103 @@
|
||||
"""
|
||||
Tests for GenAI Config CRUD operations.
|
||||
"""
|
||||
import io
|
||||
import pytest
|
||||
|
||||
# Dummy PEM key for OCI config prerequisite
|
||||
_DUMMY_PEM = b"""-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIBogIBAAJBALRiMLAHudeSA/x3hB2f+2NRkJmcOUNKwNuvTT0GKQFYSNDF0FNv
|
||||
TESTDATAFORTHEMOCKPEMFILEXYZABC0123456789ABCDEF0123456789
|
||||
-----END RSA PRIVATE KEY-----
|
||||
"""
|
||||
|
||||
_state: dict = {}
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
async def oci_config_id(client, admin_headers):
|
||||
"""Create an OCI config that GenAI configs can reference."""
|
||||
r = await client.post(
|
||||
"/api/oci/config",
|
||||
data={
|
||||
"tenancy_name": "GenAI-OCI-Dep",
|
||||
"tenancy_ocid": "ocid1.tenancy.oc1..genaidep",
|
||||
"user_ocid": "ocid1.user.oc1..genaidep",
|
||||
"fingerprint": "11:22:33:44",
|
||||
"region": "us-ashburn-1",
|
||||
"auth_type": "api_key",
|
||||
},
|
||||
files={"private_key": ("key.pem", io.BytesIO(_DUMMY_PEM), "application/x-pem-file")},
|
||||
headers=admin_headers,
|
||||
)
|
||||
assert r.status_code == 200, r.text
|
||||
cid = r.json()["id"]
|
||||
yield cid
|
||||
await client.delete(f"/api/oci/configs/{cid}", headers=admin_headers)
|
||||
|
||||
|
||||
@pytest.mark.anyio
|
||||
async def test_get_models(client, admin_headers):
|
||||
"""GET /api/genai/models — returns models dict and regions list."""
|
||||
r = await client.get("/api/genai/models", headers=admin_headers)
|
||||
assert r.status_code == 200
|
||||
body = r.json()
|
||||
assert "models" in body and isinstance(body["models"], dict)
|
||||
assert "regions" in body and isinstance(body["regions"], list)
|
||||
|
||||
|
||||
@pytest.mark.anyio
|
||||
async def test_create_genai_config(client, admin_headers, oci_config_id):
|
||||
"""POST /api/genai/config — create via JSON body."""
|
||||
r = await client.post(
|
||||
"/api/genai/config",
|
||||
json={
|
||||
"name": "TestGenAI",
|
||||
"oci_config_id": oci_config_id,
|
||||
"model_id": "openai.gpt-4.1",
|
||||
"compartment_id": "ocid1.compartment.oc1..test",
|
||||
"genai_region": "us-ashburn-1",
|
||||
},
|
||||
headers=admin_headers,
|
||||
)
|
||||
assert r.status_code == 200, r.text
|
||||
body = r.json()
|
||||
assert "id" in body
|
||||
_state["gid"] = body["id"]
|
||||
|
||||
|
||||
@pytest.mark.anyio
|
||||
async def test_list_genai_configs(client, admin_headers):
|
||||
"""GET /api/genai/configs — list must include created config."""
|
||||
r = await client.get("/api/genai/configs", headers=admin_headers)
|
||||
assert r.status_code == 200
|
||||
configs = r.json()
|
||||
assert isinstance(configs, list)
|
||||
assert any(c["id"] == _state["gid"] for c in configs)
|
||||
|
||||
|
||||
@pytest.mark.anyio
|
||||
async def test_update_genai_config(client, admin_headers, oci_config_id):
|
||||
"""PUT /api/genai/configs/{gid} — update temperature."""
|
||||
gid = _state["gid"]
|
||||
r = await client.put(
|
||||
f"/api/genai/configs/{gid}",
|
||||
json={
|
||||
"name": "TestGenAI",
|
||||
"oci_config_id": oci_config_id,
|
||||
"model_id": "openai.gpt-4.1",
|
||||
"compartment_id": "ocid1.compartment.oc1..test",
|
||||
"genai_region": "us-ashburn-1",
|
||||
"temperature": 0.5,
|
||||
},
|
||||
headers=admin_headers,
|
||||
)
|
||||
assert r.status_code == 200, r.text
|
||||
|
||||
|
||||
@pytest.mark.anyio
|
||||
async def test_delete_genai_config(client, admin_headers):
|
||||
"""DELETE /api/genai/configs/{gid} — remove config."""
|
||||
gid = _state["gid"]
|
||||
r = await client.delete(f"/api/genai/configs/{gid}", headers=admin_headers)
|
||||
assert r.status_code == 200, r.text
|
||||
Reference in New Issue
Block a user