Kairo-Jinkendo/backend/tests/test_feature_registry.py
Lars 53047b6c16
All checks were successful
Deploy Development / deploy (push) Successful in 38s
Test Suite / pytest-backend (push) Successful in 18s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 18s
Test Suite / playwright-smoke (push) Successful in 24s
AP0.4: Feature-, Prompt- und Config-Registry mit Single-Render und Entitlements-Features.
Migration 005, Registry-Sync, Placeholder-Validation, capability-geschuetzte API, Tests und Abschlussbericht v0.1.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-04 23:29:02 +02:00

49 lines
1.5 KiB
Python

"""Feature registry tests."""
from __future__ import annotations
import feature_registrations # noqa: F401
from auth import AUTH_HEADER
from db import get_connection
from feature_registry import get_registered_features, sync_features_to_db
from tests.factories import provision_user_in_tenant
def test_feature_registration_required_fields():
keys = {f.key for f in get_registered_features()}
assert keys == {
"kairo.feature.registry",
"kairo.config.registry",
"kairo.prompt.registry",
}
def test_feature_sync_idempotent():
assert sync_features_to_db() == 0
assert sync_features_to_db() == 0
conn = get_connection()
try:
with conn.cursor() as cur:
cur.execute("SELECT COUNT(*) FROM features WHERE is_active = TRUE")
assert cur.fetchone()[0] == 3
finally:
conn.close()
def test_features_in_entitlements(client):
user = provision_user_in_tenant(tenant_role="member", portal_role="user")
login = client.post(
"/api/auth/login",
json={"email": user["email"], "password": user["password"]},
)
token = login.json()["token"]
res = client.get("/api/me/entitlements", headers={AUTH_HEADER: token})
features = res.json()["features"]
assert "kairo.prompt.registry" in features
assert features["kairo.prompt.registry"]["enabled"] is True
assert features["kairo.prompt.registry"]["module"] == "prompt"
def test_features_api_requires_auth(client):
assert client.get("/api/features").status_code == 401