The repository includes an opt-in Docker-backed integration test suite in tests/container_integration.rs.
Recommended entrypoint:
./scripts/run-integration-tests.shRun both library integration tests and the consumer e2e client suite:
./scripts/run-integration-tests.sh --with-e2e-clientRun only the consumer e2e client suite. This still provisions the complete test stack:
./scripts/run-integration-tests.sh --e2e-onlyThe script pulls and reports the selected PostgreSQL, Hubuum, and LDAP images
before starting the stack. Their defaults are immutable multi-platform image
digests. It generates a short-lived test CA and hostname-verified LDAPS
certificate, configures the server with the scoped planet-express provider,
waits for readiness, optionally applies SQL seed data, and tears everything
down in a shell trap unless keep mode is enabled.
Provider coverage discovers the unauthenticated provider list, rejects invalid LDAP credentials, logs in real directory users through both async and blocking clients, verifies synchronized user and group metadata, and exercises settings replace, merge-patch, get, and reset operations as an external user. The fixture configuration lives at tests/container_integration/fixtures/auth-providers.toml.
Mutating integration tests use unique itest-<case>-<ts> resource name prefixes, so they are safe to run with default parallel test threads.
- Default seed file:
tests/container_integration/seed/init.sql - Custom seed file:
./scripts/run-integration-tests.sh --seed path/to/seed.sql - Disable seeding:
./scripts/run-integration-tests.sh --skip-seed
Tests can reuse an externally managed stack when both env vars are set:
HUBUUM_INTEGRATION_BASE_URLHUBUUM_INTEGRATION_ADMIN_PASSWORD
This is what the wrapper script exports internally before running tests.
An external stack must expose the same planet-express provider and fixture users to run the provider-specific tests.
HUBUUM_INTEGRATION_SERVER_IMAGEoverrides the server image. By default the wrapper reads the immutable[package.metadata.hubuum].server-imagevalue fromCargo.toml.HUBUUM_INTEGRATION_DB_IMAGEoverrides the database image. By default the wrapper and the self-provisioning Rust test stack read the immutable PostgreSQL 18 reference fromtests/container_integration/fixtures/postgres/Dockerfile.HUBUUM_INTEGRATION_LDAP_IMAGEoverrides the LDAP fixture image.HUBUUM_INTEGRATION_AUTH_CONFIGoverrides the server auth-provider configuration file.HUBUUM_INTEGRATION_CONTAINER_RUNTIMEforcesdockerorpodman.HUBUUM_INTEGRATION_STACK_TIMEOUT_SECSoverrides startup timeout. The default is300.HUBUUM_INTEGRATION_KEEP_CONTAINERS=1keeps containers running for debugging.HUBUUM_INTEGRATION_SEED_SQLoverrides the default seed SQL file.
Required CI runs integration tests against an immutable server image digest.
For client 0.9.0, that image is Hubuum server v0.0.9 at
sha256:1f12baf882b6d3df5b4b2dbdf26aad0793274e57f86a2c186b8e1e68632db5db.
A scheduled compatibility workflow separately runs against
ghcr.io/hubuum/hubuum-server:main, so upstream movement is visible without
making otherwise unrelated pull requests nondeterministic.
Dependabot checks the PostgreSQL fixture Dockerfile weekly. Review proposed
digest updates for supported linux/amd64 and linux/arm64 manifests and run
the canonical combined integration command before merging them. Intentional
experiments can still select another tag or digest with
HUBUUM_INTEGRATION_DB_IMAGE without changing the repository default.
See the compatibility history for earlier releases and the precise meaning of a declared server target.
If the server image is private in your environment, authenticate first:
docker login ghcr.io