from pathlib import Path
ROOT=Path(__file__).resolve().parents[1]
def read(x): return (ROOT/x).read_text()
def test_v022_router_middleware_ui_version():
 s=read('app/main.py')
 assert 'v022_router' in s and "version='0." in s and 'TenantRuntimeMiddleware' in s and '/tenant-runtime' in s
 assert (ROOT/'app/static/tenant-runtime.html').exists()
def test_v022_models_and_migration():
 s=read('app/models/entities.py')+read('migrations/022_tenant_runtime_enforcement.sql')
 for token in ['tenant_domains_v022','tenant_runtime_namespaces_v022','tenant_quota_reservations_v022','tenant_runtime_audits_v022']: assert token in s
 for token in ['ENABLE ROW LEVEL SECURITY','FORCE ROW LEVEL SECURITY','current_setting(\'\'app.current_tenant_id\'\', true)','WITH CHECK']: assert token in s
def test_v022_runtime_enforcement_features():
 s=read('app/services/tenant_runtime.py')+read('app/core/tenant_middleware.py')+read('app/api/v022.py')
 for token in ['set_config','resolve_tenant','tenant_redis_key','tenant_object_key','tenant_queue','reserve_quota','idempotency_key','X-Tenant-ID','verification_token']: assert token in s
def test_v022_storage_and_worker_namespaces():
 assert 'upload_for_tenant' in read('app/services/storage.py')
 assert 'tenant_task_options' in read('app/workers/celery_app.py')
def test_v022_docs():
 for f in ['USER_GUIDE_V022.md','ADMIN_GUIDE_V022.md','HOMOLOGATION_V022.md']: assert (ROOT/f).exists()
