feat(acl): ACL skeleton — OpenZaak default-fill (refs #5) #45

Merged
eho merged 2 commits from feat/5-acl-open-zaak into main 2026-06-04 07:50:46 +00:00
Owner

Strict-TDD core of S-04 (#5): the ACL's single operation OpenZaak(domainPayload) → zaakUrl.

TDD (red → green):

  • test(acl) — failing unit tests: AclService must default-fill the ZGW fields + clock date; OpenZaakGateway must POST the zaak with a Bearer JWT + default-filled body.
  • feat(acl) — implementations; tests green (2/2).

Design: ADR-0003 (default-fill strategy) — bronorganisatie / verantwoordelijkeOrganisatie / vertrouwelijkheidaanduiding / zaaktype from config, startdatum from an injected clock; mapping lives entirely in the ACL (ADR-0001). Layered Application / Infrastructure / Api (§9). ZGW JWT minted in Infrastructure; CRS headers set.

Build: root register-referentie.slnx (bff + acl); make ci now covers every .NET service. make ci green (lint, build, Acl 2/2 + Bff 1/1, bff smoke).

⚠️ Deferred (so this refs, not closes, #5):

  • Live OpenZaak integration / BDD "a zaak exists in OpenZaak" — blocked on a published zaaktype, which needs roltype/statustype/resultaattype + the Selectielijst API wired (S-01-b deliberately left the zaaktype a concept). That plumbing is its own step.
  • Testcontainers integration test and Stryker mutation baseline — the latter can't be CI-enforced without a runner anyway (see #30).

🤖 Generated with Claude Code

Strict-TDD core of **S-04** (#5): the ACL's single operation `OpenZaak(domainPayload) → zaakUrl`. **TDD (red → green):** - `test(acl)` — failing unit tests: `AclService` must default-fill the ZGW fields + clock date; `OpenZaakGateway` must POST the zaak with a Bearer JWT + default-filled body. - `feat(acl)` — implementations; tests green (2/2). **Design:** ADR-0003 (default-fill strategy) — `bronorganisatie` / `verantwoordelijkeOrganisatie` / `vertrouwelijkheidaanduiding` / `zaaktype` from config, `startdatum` from an injected clock; mapping lives entirely in the ACL (ADR-0001). Layered Application / Infrastructure / Api (§9). ZGW JWT minted in Infrastructure; CRS headers set. **Build:** root `register-referentie.slnx` (bff + acl); `make ci` now covers every .NET service. **`make ci` green** (lint, build, Acl 2/2 + Bff 1/1, bff smoke). ⚠️ **Deferred (so this `refs`, not closes, #5):** - **Live OpenZaak integration / BDD "a zaak exists in OpenZaak"** — blocked on a *published* zaaktype, which needs roltype/statustype/resultaattype + the Selectielijst API wired (S-01-b deliberately left the zaaktype a concept). That plumbing is its own step. - **Testcontainers integration test** and **Stryker mutation baseline** — the latter can't be CI-enforced without a runner anyway (see #30). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
eho added 2 commits 2026-06-04 07:50:34 +00:00
Add the ACL skeleton (Application/Infrastructure/Api per §9) and failing
xUnit tests for the single operation: AclService.OpenZaakAsync must
default-fill bronorganisatie, verantwoordelijkeOrganisatie, startdatum
(clock) and vertrouwelijkheidaanduiding and delegate to the gateway; the
OpenZaakGateway must POST the zaak to OpenZaak with a Bearer JWT and the
default-filled body. Implementations throw NotImplementedException — red.

Also add ADR-0003 (default-fill strategy).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(acl): implement OpenZaak default-fill + ZGW gateway (refs #5)
Some checks failed
CI / lint (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
CI / unit (pull_request) Has been cancelled
CI / compose-smoke (pull_request) Has been cancelled
385708c626
AclService.OpenZaakAsync builds a ZaakRequest from the configured defaults
(bronorganisatie, verantwoordelijkeOrganisatie, vertrouwelijkheidaanduiding,
zaaktype) plus today's date from the clock, and delegates to the gateway.
OpenZaakGateway POSTs the zaak to /zaken/api/v1/zaken with a ZGW Bearer JWT
and the CRS headers, returning the created zaak URL. Tests pass (green).

Add a root register-referentie.slnx (bff + acl) and point `make ci` at it so
the gate covers every .NET service.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
eho merged commit 4b2af5c635 into main 2026-06-04 07:50:46 +00:00
Sign in to join this conversation.