Files
Laufzettel/docker-compose.test.yml
T
florian.wilde ae290345b7
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
feat(verzeichnis): LDAP-Abgleich, Zeitplan, CSV-Import und Log (#30)
2026-09-26 00:21:56 +00:00

64 lines
2.8 KiB
YAML

# Dienste fuer die Testsuite. Nicht fuer den Betrieb.
name: laufzettel-test
services:
postgres:
image: postgres:17-alpine
environment:
POSTGRES_USER: laufzettel
POSTGRES_PASSWORD: laufzettel
POSTGRES_DB: laufzettel_test
ports:
- "127.0.0.1:5433:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U laufzettel"]
interval: 5s
timeout: 5s
retries: 10
# Das Verzeichnis fuer den Abgleich (#016). OpenLDAP mit einem AD-aehnlichen
# Schema: sAMAccountName, userPrincipalName, binaeres objectGUID,
# userAccountControl, objectCategory und department bringt OpenLDAP nicht mit,
# sie stehen deshalb in tests/fixtures/ldap/schema/ad-fixture.ldif.
#
# LDAP_TLS ist aus, und das ist eine Einschraenkung mit Ansage: das Zertifikat,
# das osixia sonst selbst erzeugt, laeutet auf den Containernamen, waehrend der
# Test von aussen 127.0.0.1 anspricht -- die Pruefung des Hostnamens schlaege
# fehl. Ein Schalter, der sie abstellt, waere ein Schalter zu viel im
# Produktionscode. Der Container wird deshalb im Klartext angesprochen; die
# TLS-Optionen (ldaps, StartTLS, eigenes CA-Zertifikat, minVersion) sind als
# reine Funktion `tlsOptionenBauen` in tests/verzeichnis.test.ts geprueft.
ldap:
image: osixia/openldap:1.5.0
# Ohne `--copy-service` spielt der Startskript die Bootstrap-Dateien nicht
# ein, wenn sie nur eingehaengt sind.
command: ["--copy-service"]
environment:
LDAP_ORGANISATION: Firma Test
LDAP_DOMAIN: firma.test
LDAP_ADMIN_PASSWORD: ldap-test-geheim
LDAP_TLS: "false"
ports:
- "127.0.0.1:1389:389"
volumes:
# Schema und Daten liegen in getrennten Verzeichnissen, weil osixia die
# Daten-LDIFs mit `sed -i` nach Platzhaltern durchsucht. Eingehaengt wird
# deshalb das Verzeichnis und nicht die Datei: `sed -i` schreibt ueber eine
# Umbenennung, und die scheitert auf einer einzeln eingehaengten Datei --
# das Startskript laeuft mit `bash -e` und der Container waere tot.
- ./tests/fixtures/ldap/schema:/container/service/slapd/assets/config/bootstrap/schema/custom:ro
- ./tests/fixtures/ldap/daten:/container/service/slapd/assets/config/bootstrap/ldif/custom
healthcheck:
# Die Suche laeuft ueber den authentifizierten Bind, weil anonymes Lesen
# abgeschaltet ist. Gesund ist der Dienst erst, wenn die Fixture-Personen
# wirklich da sind -- sonst liest der Test gegen ein leeres Verzeichnis.
test:
[
"CMD-SHELL",
"ldapsearch -x -H ldap://localhost:389 -D cn=admin,dc=firma,dc=test -w ldap-test-geheim -b ou=Benutzer,dc=firma,dc=test -s sub '(sAMAccountName=mhuber)' dn | grep -q 'cn=Maria Huber'",
]
interval: 5s
timeout: 5s
retries: 20