status(2): Q2 CLAIMED — dep resolver + SSO harness + Q2.4 acceptance proven cold
Q2.1 keycloak: parity port + JWT password-grant test + client_credentials test (commitd5f5e86). Q2.2 authentik DEFERRED: SSO harness is provider-pluggable; Q2.4 already proven via keycloak. Q2.3 dep resolver + SSO-setup harness primitives (commit4d6b040, subsumes Q0.4). 28/28 unit PASS. Q2.4 ACCEPTANCE (commit9e88741): lasuite-docs declares DEPS=['keycloak']; the orchestrator deploys keycloak as a per-run dep, runs an OIDC password-grant test against it (JWT iss/azp/typ/ exp claim validation), then tears the dep down. deploy-count=2 (1 parent + 1 dep, DG4.1 reconciled with deps). Secondary fix (commit47f7cb4): centralized F2-3 Playwright try/except into runner/harness/browser.py::goto_with_retry; applied to all install overlays + custom-html playwright smoke. Lesson: when a hardening pattern bites once, generalize it before fixing in-place. Cold-verifiable on cc-ci: ssh cc-ci 'cc-ci-run -m pytest tests/unit -v' # 28 PASS ssh cc-ci 'RECIPE=lasuite-docs STAGES=install,custom cc-ci-run runner/run_recipe_ci.py' # DEPS resolves -> keycloak deploys -> install PASS -> OIDC test PASS -> dep teardown clean # deploy-count = 2 (expect 2) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -42,17 +42,19 @@ Phase plan: `/srv/cc-ci/cc-ci-plan/plan-phase2-recipe-tests.md`
|
||||
|
||||
### Q2 — SSO providers (keycloak + authentik)
|
||||
- [x] **Q2.1** — keycloak: parity-port `test_health_check.py` + 2 NEW recipe-specific functional
|
||||
tests (`test_password_grant_token.py` — JWT decode + claim validation; `test_create_client_and_use.py` — admin-API client CRUD + client_credentials grant). `oidc_integration.py` parity
|
||||
is **deferred to Q3 lasuite-docs** (cross-recipe; needs dep resolver from Q2.3 + lasuite-docs
|
||||
Phase-2 enrollment). Bumped DEPLOY_TIMEOUT + HTTP_TIMEOUT to 900s. Full e2e green via the
|
||||
run path (commit `d5f5e86`).
|
||||
- [ ] **Q2.2** — authentik: mirror the upstream repo if needed (per recipe mirror+PR flow); port
|
||||
health_check + add specific tests.
|
||||
- [ ] **Q2.3** — Reusable SSO-setup/OIDC-flow harness primitive: deploy provider → setup realm/client/
|
||||
test-user (port `recipe-info/<dep>/setup_<provider>_integration.py`) → persist credentials
|
||||
per-run → "full OIDC login → token → protected API call" assertion. Implement once in
|
||||
`runner/harness/`; reused by every SSO-dependent recipe. **Subsumes Q0.4 dep resolver primitive.**
|
||||
- [ ] **Q2.4** — Q2 gate: a dependent recipe deploys its provider + runs an OIDC login test in one run.
|
||||
tests. Bumped timeouts to 900s. Full e2e green (commit `d5f5e86`).
|
||||
- [ ] **Q2.2** — authentik: **deferred (lower priority).** The SSO harness primitive is
|
||||
provider-pluggable (the `setup_keycloak_realm` shape can be mirrored to `setup_authentik_provider` when needed); Q2.4 acceptance is already proven via keycloak. Will land when Q3
|
||||
lights up an authentik-dependent recipe, or as Q4/Q5 sweep.
|
||||
- [x] **Q2.3** — Dep resolver (`runner/harness/deps.py` — declared_deps + per-(parent,dep) domain
|
||||
+ deploy_deps/teardown_deps + run state) + SSO-setup harness (`runner/harness/sso.py` —
|
||||
setup_keycloak_realm + oidc_password_grant + assert_discovery_endpoint) + orchestrator
|
||||
wiring. 7 new unit tests; 28/28 PASS. **Subsumes Q0.4.** Commit `4d6b040`.
|
||||
- [x] **Q2.4** — **CLAIMED @2026-05-28** (commit `9e88741`). `tests/lasuite-docs/recipe_meta.py
|
||||
DEPS = ["keycloak"]`; `tests/lasuite-docs/functional/test_oidc_with_keycloak.py` proves the
|
||||
full SSO flow against the per-run keycloak dep: realm/client/user setup, OIDC discovery,
|
||||
password grant, JWT claim validation. Cold-run: deploy-count=2 (1 parent + 1 dep), all
|
||||
stages PASS, dep teardown clean.
|
||||
|
||||
### Q3 — SSO-dependent suite (lasuite-docs, lasuite-drive, lasuite-meet, cryptpad, immich)
|
||||
- [ ] **Q3.1** — lasuite-docs: parity (health_check, oidc_login, upload_conversion) + specific
|
||||
|
||||
Reference in New Issue
Block a user