"""Configuration registry tests.""" from __future__ import annotations import pytest from auth import AUTH_HEADER from config_service import SECRET_VALUE_FORBIDDEN, get_config, list_configs, upsert_config from tests.factories import provision_user_in_tenant def test_global_config_upsert_and_read(): upsert_config( config_key="test.ap0.config", scope="global", value="enabled", value_type="string", description="pytest config", ) item = get_config("test.ap0.config", scope="global") assert item is not None assert item["value"] == "enabled" def test_secret_config_rejects_plaintext(): with pytest.raises(ValueError, match=SECRET_VALUE_FORBIDDEN): upsert_config( config_key="test.secret", scope="global", value="super-secret-token", is_secret=True, ) def test_config_api(client): user = provision_user_in_tenant(portal_role="admin", tenant_role="owner") login = client.post( "/api/auth/login", json={"email": user["email"], "password": user["password"]}, ) token = login.json()["token"] res = client.get("/api/config", headers={AUTH_HEADER: token}) assert res.status_code == 200 keys = {item["config_key"] for item in res.json()} assert "prompt.default_execution_mode" in keys def test_config_post_api(client): user = provision_user_in_tenant(portal_role="admin", tenant_role="owner") login = client.post( "/api/auth/login", json={"email": user["email"], "password": user["password"]}, ) token = login.json()["token"] res = client.post( "/api/config", json={ "config_key": "test.api.config", "scope": "global", "value": True, "value_type": "boolean", "description": "via api", }, headers={AUTH_HEADER: token}, ) assert res.status_code == 200 assert res.json()["config_key"] == "test.api.config"