test(workflow): diploma routing — acceptance + live foreign→CBGV path (S-13, refs #14)
Gherkin scenarios assert the submit carries the diploma origin (domestic/foreign) into the process. verify-domain now submits a foreign registration and asserts it parks at CBGVAdvies before Beoordelen, completes CBGV, then advances to Beoordelen — exercising both DMN branches through the engine (the domestic DIRECT path is the first registration already parking straight at Beoordelen). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -158,6 +158,49 @@ done
|
||||
[ -n "$gone" ] || { echo "FAIL — Beoordelen task for $reg_id2 still active after withdrawal" >&2; docker logs "$dom" 2>&1 | tail -15 >&2; exit 1; }
|
||||
echo "OK — withdrawal cancelled the Beoordelen task; the registratie process ended (ingetrokken)"
|
||||
|
||||
# ── S-13: diploma-eligibility routing. A registration with a FOREIGN diploma must route through the
|
||||
# extra CBGVAdvies user task before Beoordelen (the DMN businessRuleTask sets route=CBGV_ADVIES and the
|
||||
# gateway branches, ADR-0016). The domestic DIRECT path is already proven by the first registration
|
||||
# above, which parked straight at Beoordelen. ──────────────────────────────────────────────────────
|
||||
cbgv_query='{"processDefinitionKey":"registratie","taskDefinitionKey":"CBGVAdvies","includeProcessVariables":true}'
|
||||
echo ">> submitting a registration with a foreign diploma"
|
||||
locf="$(docker run --rm --network "$net" curlimages/curl:latest \
|
||||
-fsS -D - -o /dev/null -X POST "http://$dom_ip:8080/registrations" \
|
||||
-H 'Content-Type: application/json' -d '{"bsn":"123456782","diplomaOrigin":"Buitenlands"}' \
|
||||
| sed -n 's/\r$//; s/^[Ll]ocation: //p' | head -1)"
|
||||
[ -n "$locf" ] || { echo "FAIL — foreign POST /registrations returned no Location" >&2; exit 1; }
|
||||
reg_idf="${locf##*/}"
|
||||
echo ">> foreign registration $reg_idf"
|
||||
|
||||
echo ">> polling Flowable for its CBGV-advies task (foreign diplomas route here first)"
|
||||
cbgv_task=""
|
||||
for _ in $(seq 1 30); do
|
||||
resp="$(flcurl -X POST "$fl_base/query/tasks" -H 'Content-Type: application/json' -d "$cbgv_query" 2>/dev/null || true)"
|
||||
cbgv_task="$(printf '%s' "$resp" | task_for_reg "$reg_idf")"
|
||||
[ -n "$cbgv_task" ] && break
|
||||
sleep 2
|
||||
done
|
||||
[ -n "$cbgv_task" ] || { echo "FAIL — no CBGVAdvies task appeared for the foreign registration $reg_idf" >&2; docker logs "$dom" 2>&1 | tail -15 >&2; exit 1; }
|
||||
echo ">> CBGVAdvies task $cbgv_task is waiting"
|
||||
|
||||
echo ">> asserting it has NOT reached Beoordelen yet (still awaiting CBGV-advies)"
|
||||
resp="$(flcurl -X POST "$fl_base/query/tasks" -H 'Content-Type: application/json' -d "$query")"
|
||||
early="$(printf '%s' "$resp" | task_for_reg "$reg_idf")"
|
||||
[ -z "$early" ] || { echo "FAIL — foreign registration reached Beoordelen ($early) before CBGV-advies" >&2; exit 1; }
|
||||
|
||||
echo ">> completing the CBGV-advies task"
|
||||
flcurl -X POST "$fl_base/runtime/tasks/$cbgv_task" -H 'Content-Type: application/json' -d '{"action":"complete"}' >/dev/null
|
||||
|
||||
echo ">> asserting it now advances to Beoordelen"
|
||||
onward=""
|
||||
for _ in $(seq 1 15); do
|
||||
resp="$(flcurl -X POST "$fl_base/query/tasks" -H 'Content-Type: application/json' -d "$query" 2>/dev/null || true)"
|
||||
[ -n "$(printf '%s' "$resp" | task_for_reg "$reg_idf")" ] && { onward=1; break; }
|
||||
sleep 2
|
||||
done
|
||||
[ -n "$onward" ] || { echo "FAIL — foreign registration did not reach Beoordelen after CBGV-advies" >&2; exit 1; }
|
||||
echo "OK — foreign diploma routed through CBGV-advies, then on to Beoordelen (DMN + gateway)"
|
||||
|
||||
# ── S-14: escalation. A third registration parks at Beoordelen. We fire its 14-day boundary timer
|
||||
# early via Flowable's management API (the timer job is moved to executable and run), which routes a
|
||||
# parallel token to the BeoordelingEscaleren external task. The domain's escalation worker acquires
|
||||
|
||||
Reference in New Issue
Block a user