test: add real two-container e2e for the multi-site join flow

docker-compose.multisite-e2e.yml boots two full all-in-one instances
(master + spoke, each with bundled slapd) and a client that drives the
actual HTTP API: seeds admins, mints a join key, joins the spoke, and
verifies the spoke persisted its role across restart, adopted the
pre-join catalog, is enforced read-only, and reports WAN health.

Verified passing locally. Existing docker-compose.test.yml/e2e.yml split
ldap+redis+app into separate containers, which doesn't work here --
POST /api/site/export runs slapcat in-process, so master and spoke each
need their own bundled slapd (Dockerfile.openldap), not a shared one.
This commit is contained in:
2026-08-10 16:21:53 -04:00
parent e915a17cbd
commit e5167729a8
3 changed files with 297 additions and 0 deletions
+2
View File
@@ -50,6 +50,8 @@ COPY test/seed-test-user.sh /usr/local/bin/seed-test-user
RUN chmod +x /usr/local/bin/seed-test-user
# End-to-end LDAP tunnel test client (docker-compose.e2e.yml)
COPY test/tunnel_e2e.js ./test/tunnel_e2e.js
# End-to-end multi-site join test client (docker-compose.multisite-e2e.yml)
COPY test/multisite_join_e2e.js ./test/multisite_join_e2e.js
# Default command: seed the test user, then run the test suite
CMD ["sh", "-c", "seed-test-user && npm test"]