"""Startup mirrors the registry; the registry webhook re-mirrors it.""" from __future__ import annotations from fastapi.testclient import TestClient from test_propose_vertical import app_with_fake_gitea, tmp_env # noqa: F401 def test_startup_mirrors_registry_into_projects_and_deployment(app_with_fake_gitea): from app import db app, _ = app_with_fake_gitea with TestClient(app): prow = db.conn().execute( "SELECT content_repo, type, initial_state FROM projects WHERE id='default'" ).fetchone() assert prow["content_repo"] == "meta" # from the registry, not META_REPO assert prow["type"] == "document" drow = db.conn().execute("SELECT name FROM deployment WHERE id=1").fetchone() assert drow["name"] # deployment name mirrored from the registry def test_registry_webhook_remirrors(app_with_fake_gitea): import hashlib import hmac import json as _json app, fake = app_with_fake_gitea with TestClient(app) as client: from app import db new_yaml = ( "deployment:\n name: OHM\n tagline: Edited tagline\n" "projects:\n - id: default\n name: OHM\n type: document\n" " content_repo: meta\n visibility: public\n" ) fake.files[("wiggleverse", "registry", "main", "projects.yaml")] = { "content": new_yaml, "sha": "regsha2", } body = _json.dumps({"repository": {"full_name": "wiggleverse/registry"}}).encode() secret = "test-webhook-secret-for-signature-verification" sig = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest() r = client.post( "/api/webhooks/gitea", content=body, headers={"X-Gitea-Event": "push", "X-Gitea-Signature": sig, "Content-Type": "application/json"}, ) assert r.status_code == 200 tagline = db.conn().execute("SELECT tagline FROM deployment WHERE id=1").fetchone()["tagline"] assert tagline == "Edited tagline"