Files
nexarch/scripts/check-route-prefixes_test.sh
2026-09-18 21:32:13 +02:00

30 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
here="$(cd "$(dirname "$0")" && pwd)"
check="$here/check-route-prefixes.sh"
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
mk() { mkdir -p "$tmp/$1/deploy"; printf '%b' "$2" > "$tmp/$1/deploy/routes.tsv"; echo "$tmp/$1"; }
expect_fail() {
if "$check" "$1" >/dev/null 2>"$tmp/err"; then echo "FAIL: $2 nicht erkannt" >&2; exit 1; fi
grep -q "$3" "$tmp/err" || { echo "FAIL: $2: meldung fehlt ($3)" >&2; cat "$tmp/err" >&2; exit 1; }
}
"$check" "$here/.." >/dev/null || { echo "FAIL: repo-register abgelehnt" >&2; exit 1; }
expect_fail "$(mk dup 'dms\t/api/dms/v1\nmail\t/api/dms/v1\n')" "duplikat" "ueberschneiden"
expect_fail "$(mk nested 'dms\t/api/dms\nmail\t/api/dms/mail\n')" "verschachtelt" "ueberschneiden"
expect_fail "$(mk bad 'dms\tapi/dms\n')" "praefix ohne fuehrenden slash" "ungueltiges praefix"
expect_fail "$(mk traversal 'dms\t/api/../x\n')" "punktsegment" "ungueltiges praefix"
expect_fail "$(mk trailing 'dms\t/api/dms/\n')" "slash am ende" "ungueltiges praefix"
drift="$tmp/drift"
mkdir -p "$drift/deploy" "$drift/dms/internal/routeprefix"
printf 'dms\t/api/dms/v1\n' > "$drift/deploy/routes.tsv"
printf 'const DefaultPrefix = "/api/other/v1"\n' > "$drift/dms/internal/routeprefix/routeprefix.go"
expect_fail "$drift" "abweichender code-default" "weicht vom Register"
echo "check-route-prefixes_test ok"