managarten/scripts/run-integration-tests.sh
Till JS 774852ba2d feat(cutover): platform services build from ../mana, not from this repo
Part of the 8-Doppel-Cutover (2026-05-08, plan
~/.claude/plans/floating-swinging-flurry.md):

- docker-compose.{macmini,dev,test}.yml: build context for
  mana-{auth,credits,media,llm,notify} switched to ../mana/services/...
  so the Mac Mini stack pulls platform services from the platform repo
  (sibling clone), not from services/ in this monorepo.
- .npmrc + apps/api/{Dockerfile,package.json}: @mana/media-client now
  resolved from Verdaccio (npm.mana.how, ^0.1.0) instead of as a
  workspace COPY from services/mana-media/packages/client. Build-arg
  NPM_TOKEN flows through .npmrc for pnpm install auth. Required
  before services/mana-media/ can be deleted.
- .github/workflows/{ci,cd-macmini,daily-tests}.yml: removed the
  detect-/build-/test-jobs that targeted services/mana-{auth,credits,
  notify,media}/. Those services build out of the platform repo now —
  CI for them belongs in mana/-repo (open). cd-macmini's
  workflow_dispatch can still rebuild any of them on demand;
  auto-detect on path-change is gone for these five.
- scripts/{mac-mini/push-schemas.sh,run-integration-tests.sh}:
  rewritten to look in ../mana/ for the platform services.
- package.json dev:{auth,credits,notify,media}: paths point at
  ../mana/services/... so local dev still works post-cutover.

What this commit does NOT do: delete services/mana-{auth,credits,...}
from this repo. That waits for Phase 7 once the Mac Mini stack has
booted cleanly from the new build paths.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 18:40:08 +02:00

80 lines
2.9 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# Run the auth-flow integration test against a fresh docker-compose.test.yml stack.
#
# Usage:
# ./scripts/run-integration-tests.sh # build, run, tear down
# KEEP_STACK=1 ./scripts/run-integration-tests.sh # leave stack up after run
#
# In CI, just call this. Locally, useful for both quick reruns and the
# "wait what does Mailpit look like" debugging step (set KEEP_STACK=1 then
# open http://127.0.0.1:8026).
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
COMPOSE_FILE="$REPO_ROOT/docker-compose.test.yml"
TEST_DIR="$REPO_ROOT/tests/integration"
# Pick a docker binary that's actually on PATH. macOS layouts vary.
if command -v docker >/dev/null 2>&1; then
DOCKER=docker
elif [ -x /opt/homebrew/bin/docker ]; then
DOCKER=/opt/homebrew/bin/docker
elif [ -x /usr/local/bin/docker ]; then
DOCKER=/usr/local/bin/docker
else
echo "error: docker not found in PATH" >&2
exit 1
fi
cd "$REPO_ROOT"
cleanup() {
if [ "${KEEP_STACK:-0}" = "1" ]; then
echo
echo "==> KEEP_STACK=1, leaving the test stack up."
echo " Mailpit UI: http://127.0.0.1:8026"
echo " mana-auth: http://127.0.0.1:3091"
echo " Postgres: psql postgresql://mana:testpassword@localhost:5443/mana_platform"
echo " Tear down: $DOCKER compose -f $COMPOSE_FILE down -v"
return
fi
echo
echo "==> Tearing down test stack"
$DOCKER compose -f "$COMPOSE_FILE" down -v --remove-orphans >/dev/null 2>&1 || true
}
trap cleanup EXIT
echo "==> Building & starting test stack"
$DOCKER compose -f "$COMPOSE_FILE" up -d --build --wait
# Plattform-`mana-auth` lebt seit dem 2026-05-08-Cutover im Schwester-
# Repo `../mana/`. Schema-Push und SQL-Migrationen kommen von dort.
MANA_PLATFORM_DIR="${MANA_PLATFORM_DIR:-$REPO_ROOT/../mana}"
echo "==> Pushing mana-auth Drizzle schema into test postgres"
( cd "$MANA_PLATFORM_DIR" && DATABASE_URL="postgresql://mana:testpassword@localhost:5443/mana_platform" \
pnpm --filter @mana/auth db:push --force >/dev/null )
echo "==> Applying encryption-vault SQL migrations (002, 003)"
$DOCKER cp "$MANA_PLATFORM_DIR/services/mana-auth/sql/002_encryption_vaults.sql" \
mana-test-postgres:/tmp/002.sql
$DOCKER cp "$MANA_PLATFORM_DIR/services/mana-auth/sql/003_recovery_wrap.sql" \
mana-test-postgres:/tmp/003.sql
$DOCKER exec mana-test-postgres psql -U mana -d mana_platform -f /tmp/002.sql >/dev/null
$DOCKER exec mana-test-postgres psql -U mana -d mana_platform -f /tmp/003.sql >/dev/null
echo "==> Restarting mana-auth so it picks up the freshly-created tables"
# mana-auth's connection pool might have been opened against an empty DB. A
# quick restart guarantees a clean cache + schema view.
$DOCKER compose -f "$COMPOSE_FILE" restart mana-auth >/dev/null
$DOCKER compose -f "$COMPOSE_FILE" up -d --wait mana-auth
echo "==> Running integration tests"
cd "$TEST_DIR"
bun test auth-flow.test.ts auth-failures.test.ts
echo
echo "✅ integration tests passed"