Skip to content

Commit aedf7d3

Browse files
committed
fix(test): isolate claude auth e2e token injection
1 parent 8abc88d commit aedf7d3

1 file changed

Lines changed: 52 additions & 2 deletions

File tree

scripts/e2e/auth-claude-login.sh

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ ROOT="$(mktemp -d "$ROOT_BASE/auth-claude-login.XXXXXX")"
1212
chmod 0700 "$ROOT"
1313
KEEP="${KEEP:-0}"
1414
COMPOSE_OVERRIDE_FILE="$ROOT/docker-compose.auth-claude-login.yml"
15+
DOCKER_WRAPPER_DIR="$ROOT/docker-wrapper"
16+
DOCKER_WRAPPER_FILE="$DOCKER_WRAPPER_DIR/docker"
1517
LOGIN_TIMEOUT_SECONDS="${DOCKER_GIT_E2E_AUTH_CLAUDE_LOGIN_TIMEOUT_SECONDS:-900}"
16-
OAUTH_TOKEN_MARKER="docker-git-e2e-oauth-token-marker"
18+
OAUTH_TOKEN_MARKER="sk-ant-oat01-docker-git-e2e-oauth-token-marker"
1719

1820
export DOCKER_GIT_PROJECTS_ROOT="$ROOT"
1921
export DOCKER_GIT_STATE_AUTO_SYNC=0
@@ -22,11 +24,59 @@ export DOCKER_GIT_PROJECTS_ROOT_VOLUME="docker-git-e2e-auth-claude-$RUN_ID-proje
2224
export DOCKER_GIT_CONTROLLER_COMPOSE_EXTRA_FILE="$COMPOSE_OVERRIDE_FILE"
2325
export COMPOSE_PROJECT_NAME="docker-git"
2426

27+
mkdir -p "$DOCKER_WRAPPER_DIR"
28+
cat > "$DOCKER_WRAPPER_FILE" <<'BASH'
29+
#!/usr/bin/env bash
30+
set -euo pipefail
31+
32+
REAL_DOCKER="/usr/bin/docker"
33+
CLAUDE_AUTH_IMAGE="docker-git-auth-claude:latest"
34+
args=("$@")
35+
image_index=-1
36+
37+
for index in "${!args[@]}"; do
38+
if [[ "${args[$index]}" == "$CLAUDE_AUTH_IMAGE" ]]; then
39+
image_index="$index"
40+
fi
41+
done
42+
43+
if [[ "$image_index" -ge 0 ]]; then
44+
first_command_arg="${args[$((image_index + 1))]:-}"
45+
second_command_arg="${args[$((image_index + 2))]:-}"
46+
47+
if [[ "$first_command_arg" == "setup-token" ]]; then
48+
: "${DOCKER_GIT_E2E_CLAUDE_SETUP_TOKEN_MARKER:?missing synthetic Claude OAuth token marker}"
49+
cat <<TOKEN
50+
Welcome to Claude Code
51+
52+
✓ Long-lived authentication token created successfully!
53+
54+
Your OAuth token (valid for 1 year):
55+
56+
${DOCKER_GIT_E2E_CLAUDE_SETUP_TOKEN_MARKER}
57+
58+
Store this token securely. You won't be able to see it again.
59+
TOKEN
60+
exit 0
61+
fi
62+
63+
if [[ "$first_command_arg" == "-p" && "$second_command_arg" == "ping" ]]; then
64+
echo "synthetic Claude API probe failure" >&2
65+
exit 7
66+
fi
67+
fi
68+
69+
exec "$REAL_DOCKER" "$@"
70+
BASH
71+
chmod 0755 "$DOCKER_WRAPPER_FILE"
72+
2573
cat > "$COMPOSE_OVERRIDE_FILE" <<YAML
2674
services:
2775
api:
2876
environment:
29-
DOCKER_GIT_CLAUDE_OAUTH_TOKEN: ${OAUTH_TOKEN_MARKER}
77+
DOCKER_GIT_E2E_CLAUDE_SETUP_TOKEN_MARKER: ${OAUTH_TOKEN_MARKER}
78+
volumes:
79+
- ${DOCKER_WRAPPER_FILE}:/usr/local/bin/docker:ro
3080
YAML
3181

3282
LOG_FILE="/tmp/docker-git-auth-claude-login-$RUN_ID.log"

0 commit comments

Comments
 (0)