# Real-mode dependencies for ZB.MOM.WW.OtOpcUa.Host.IntegrationTests.
#
# The default harness (TwoNodeClusterHarness) uses EF InMemoryDatabase + StubLdapAuthService
# so the suite runs anywhere with zero infrastructure. This compose stack exists for two
# situations the in-memory mode can't cover:
#
#   1. EF behaviors that diverge between provider implementations — index uniqueness,
#      RowVersion concurrency, JSON column round-trips, EF migration application.
#   2. Real LDAP binds against a GLAuth server (./glauth/config.toml) with dev users
#      alice (full access) / bob (read-only) and the cn=serviceaccount bind account.
#
# Activate by setting these env vars before running the suite:
#
#   export OTOPCUA_HARNESS_USE_SQL=1
#   export OTOPCUA_HARNESS_USE_LDAP=1
#   docker compose -f tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests/docker-compose.yml up -d
#   dotnet test tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests --filter "Category!=E2E"
#   docker compose -f tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests/docker-compose.yml down -v
#
# Ports differ from docker-dev/ on purpose so both stacks can run side-by-side:
#   - SQL:  14331 (docker-dev uses 14330)
#   - LDAP: 3894  (docker-dev uses 3893)
#
# DESKTOP-6JL3KKO note: Docker Desktop is not installed here. Run this stack on the shared
# Linux Docker host (10.100.0.35) per docs/v2/dev-environment.md, or in CI on Linux.

name: otopcua-harness

services:

  sql:
    image: mcr.microsoft.com/mssql/server:2022-latest
    environment:
      ACCEPT_EULA: "Y"
      SA_PASSWORD: "OtOpcUa!Harness123"
      MSSQL_PID: Developer
    ports:
      - "14331:1433"
    healthcheck:
      test: ["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'OtOpcUa!Harness123' -No -Q 'SELECT 1' || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 20

  ldap:
    # GLAuth — the same LDAP server the rest of the project uses (docker-dev + the live
    # OPC UA data-plane auth, both against the shared GLAuth on :3893). Replaced the retired
    # bitnami/openldap:2.6 (Bitnami deprecated their free catalog in 2025). Seeded by
    # ./glauth/config.toml with a search-capable serviceaccount + dev users alice/bob.
    # Listens on :3893 in-container; mapped to host :3894 to run beside docker-dev's :3893.
    image: glauth/glauth:latest
    volumes:
      - ./glauth/config.toml:/app/config/config.cfg:ro
    ports:
      - "3894:3893"
