E2E parent/child account matrix + persona hydration tooling #782

Closed
opened 2026-07-22 01:44:56 +00:00 by spikerj · 1 comment
Owner

What

Stand up a parent/child E2E account matrix in the live spikersoft realm for testing parent↔child interactions (chat visibility, permission masking, family isolation, approval states), and extend the tooling so tests can select any persona.

Accounts created (prod, via the real register + child-account-approve flow)

  • e2e-parent1, e2e-parent2 — adults (now IsParent); Family A / Family B heads.
  • e2e-child1 (approved, permissive), e2e-child2 (approved, restrictive), e2e-child3 (approved, moderate) — real Keycloak users + child profiles + parent links.
  • e2e-childpending — request submitted, left unapproved (pending-review state).

Note: the register endpoint rejects dots in usernames, so these use hyphens (e2e-parent1), unlike the hand-made e2e.staff / e2e.student.

Credentials

All five usable personas stored in OpenBao secret/ci/angular/e2e as <persona>_username / <persona>_password, alongside the existing staff_* / student_* (merge-patched — existing fields untouched).

Tooling changes (this issue's PRs)

  • spikersoft-angular: hydrate-env-from-bao.mjs gains persona selection — pnpm e2e:secrets -- --identity <name> (or shorthand --child1), keeping --staff / default-student.
  • spikersoft-infrastructure: openbao/provision-angular-secrets.sh now covers all 7 personas via a read-merge (also fixes a latent bug where its kv put blanked any password not re-entered).

Follow-up

e2e-childskew — a child with IsMinor=false + IsChildAccount=true to reproduce the parent-couldn't-see-child asymmetry (GetChildrenQueryHandler filters on IsMinor only). Needs setting an adult birthdate on a child via the normal profile update. Optional.

🤖 Generated with Claude Code

## What Stand up a parent/child E2E account matrix in the live `spikersoft` realm for testing parent↔child interactions (chat visibility, permission masking, family isolation, approval states), and extend the tooling so tests can select any persona. ## Accounts created (prod, via the real register + child-account-approve flow) - `e2e-parent1`, `e2e-parent2` — adults (now `IsParent`); Family A / Family B heads. - `e2e-child1` (approved, permissive), `e2e-child2` (approved, restrictive), `e2e-child3` (approved, moderate) — real Keycloak users + child profiles + parent links. - `e2e-childpending` — request submitted, left **unapproved** (pending-review state). Note: the register endpoint rejects dots in usernames, so these use hyphens (`e2e-parent1`), unlike the hand-made `e2e.staff` / `e2e.student`. ## Credentials All five usable personas stored in OpenBao `secret/ci/angular/e2e` as `<persona>_username` / `<persona>_password`, alongside the existing `staff_*` / `student_*` (merge-patched — existing fields untouched). ## Tooling changes (this issue's PRs) - **spikersoft-angular**: `hydrate-env-from-bao.mjs` gains persona selection — `pnpm e2e:secrets -- --identity <name>` (or shorthand `--child1`), keeping `--staff` / default-student. - **spikersoft-infrastructure**: `openbao/provision-angular-secrets.sh` now covers all 7 personas via a read-merge (also fixes a latent bug where its `kv put` blanked any password not re-entered). ## Follow-up `e2e-childskew` — a child with `IsMinor=false` + `IsChildAccount=true` to reproduce the parent-couldn't-see-child asymmetry (`GetChildrenQueryHandler` filters on `IsMinor` only). Needs setting an adult birthdate on a child via the normal profile update. Optional. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Author
Owner

Done. The parent/child E2E account matrix is live in the spikersoft realm (2 parents + 3 approved children with distinct permission profiles + 1 pending request), all credentials are in OpenBao secret/ci/angular/e2e (verified — 14 fields, existing staff_*/student_* untouched), and the tooling shipped:

  • spikersoft-angular #514 (merged) — pnpm e2e:secrets -- --identity <persona> / shorthand --child1.
  • spikersoft-infrastructure #137 (merged) — provision-angular-secrets.sh covers all 7 personas via a read-merge (also fixed the latent password-blanking bug).

Closing. The optional e2e-childskew account (child with IsMinor=false + IsChildAccount=true to reproduce the GetChildrenQueryHandler IsMinor-only asymmetry) is not built — file a separate issue if it's wanted.

Done. The parent/child E2E account matrix is live in the `spikersoft` realm (2 parents + 3 approved children with distinct permission profiles + 1 pending request), all credentials are in OpenBao `secret/ci/angular/e2e` (verified — 14 fields, existing `staff_*`/`student_*` untouched), and the tooling shipped: - spikersoft-angular **#514** (merged) — `pnpm e2e:secrets -- --identity <persona>` / shorthand `--child1`. - spikersoft-infrastructure **#137** (merged) — `provision-angular-secrets.sh` covers all 7 personas via a read-merge (also fixed the latent password-blanking bug). Closing. The optional `e2e-childskew` account (child with `IsMinor=false` + `IsChildAccount=true` to reproduce the `GetChildrenQueryHandler` `IsMinor`-only asymmetry) is not built — file a separate issue if it's wanted.
Sign in to join this conversation.