test(infra): assert the approval wrote the register record to Objecten (refs #149)

verify-domain already drives a full approval; it now also asserts Objecten holds
exactly one RegisterRecord for that registration — matched on its own reference,
because the shared verify stack carries records from earlier runs. The check
covers the three things that can silently go wrong: the record is missing (the
ACL's Objecten hop never ran), duplicated (the upsert is not idempotent), or
carries a field outside the public-safe schema.
This commit is contained in:
not
2026-08-14 09:22:09 +02:00
parent c67ee7d3f5
commit 400bdcafc4
2 changed files with 113 additions and 0 deletions
+25
View File
@@ -142,6 +142,31 @@ still="$(printf '%s' "$resp" | task_for_reg "$reg_id")"
[ -z "$still" ] || { echo "FAIL — Beoordelen task $still still active after completion" >&2; exit 1; }
echo "OK — behandelaar claimed and completed the Beoordelen task; the registratie process finished"
# ── S-19a: the same approval also wrote the canonical register record to Objecten (ADR-0028).
# Assert it for THIS registration (matched on its reference) rather than "some INGESCHREVEN record":
# the shared verify stack carries records from earlier runs. The container-name filters are anchored
# on the compose replica suffix so they don't also match objecten-db / objecttypen-db.
echo ">> asserting the approval wrote the register record to Objecten (S-19a)"
obj="$(docker ps -q --filter 'name=objecten[-_][0-9]+$' | head -1)"
objt="$(docker ps -q --filter 'name=objecttypen[-_][0-9]+$' | head -1)"
[ -n "$obj" ] || { echo "FAIL — no running objecten container" >&2; exit 1; }
[ -n "$objt" ] || { echo "FAIL — no running objecttypen container" >&2; exit 1; }
rr="$(docker create --network "$net" \
-e "OBJECTEN=http://$(ip "$obj"):8000" \
-e "OBJECTEN_TOKEN=${OBJECTEN_TOKEN:-1234567890abcdef1234567890abcdef12345678}" \
-e "OBJECTTYPEN=http://$(ip "$objt"):8000" \
-e "OBJECTTYPEN_TOKEN=${OBJECTTYPEN_TOKEN:-0123456789abcdef0123456789abcdef01234567}" \
-e "REGISTRATION_REFERENCE=$reg_id" \
python:3-slim python /register-record-check.py)"
docker cp "$here/register-record-check.py" "$rr:/register-record-check.py" >/dev/null
rr_rc=0; docker start -a "$rr" || rr_rc=$?
docker rm -f "$rr" >/dev/null
if [ "$rr_rc" -ne 0 ]; then
acl="$(docker ps -q --filter 'name=[-_]acl[-_]' | head -1)"
[ -n "$acl" ] && { echo "--- acl log ---" >&2; docker logs "$acl" 2>&1 | tail -20 >&2; }
exit "$rr_rc"
fi
# ── S-11: withdrawal. A second registration parks at Beoordelen; the citizen withdraws it via the
# domain, which delivers the RegistratieIngetrokken message to the task's execution, tripping the
# BPMN boundary event so the process ends and the Beoordelen task disappears (ADR-0014). ────────────