Your task
Dispatch based on $ARGUMENTS:
- no argument (default): run unit + integration tests
unit: run unit tests onlyintegration: run unit + integration testse2e: run e2e tests only
Unit Tests
make test
No external dependencies. TEST_KEYCLOAK_URL must NOT be set — integration tests will be skipped automatically.
Integration Tests
Requires a running Keycloak instance on port 8086.
- Check if Keycloak is running:
docker ps --filter name=keycloak-test --format '{{.Names}}' - If not running, start it, then wait until it answers on port 8086:
make start-keycloak until curl -sf http://localhost:8086/realms/master >/dev/null; do sleep 2; done - Run unit + integration tests:
TEST_KEYCLOAK_URL=http://localhost:8086 make test
E2E Tests
Long-running. Requires kind cluster, kuttl, and Docker.
Prerequisites — verify before running:
- kind cluster is running (
make start-kindif not) - CRDs are installed (
make installif not)
make e2e
Interpreting Results
- Coverage report is written to
coverage.out
On Failure
- Isolate failures to a specific package:
go test -v ./pkg/client/keycloakapi/... - After fixing, re-run the full suite to confirm no regressions