cecc6c0b41
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
"""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"
|