# 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