This commit is contained in:
Executable
+69
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||||
FIXTURE=$(mktemp -d)
|
||||
|
||||
cleanup() {
|
||||
rm -rf "$FIXTURE"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
mkdir -p "$FIXTURE/repo/deploy" "$FIXTURE/bin"
|
||||
cp "$ROOT/deploy/install-from-git.sh" "$FIXTURE/repo/deploy/install-from-git.sh"
|
||||
|
||||
cat > "$FIXTURE/bin/sudo" <<'SH'
|
||||
#!/usr/bin/env bash
|
||||
exec "$@"
|
||||
SH
|
||||
|
||||
cat > "$FIXTURE/repo/deploy/install.sh" <<'SH'
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
[ "$KAIDI_RELEASE_API_URL" = 'https://git.example.test/api/v1/repos/TEAM/REPO/releases/latest' ]
|
||||
[ "$KAIDI_RELEASE_PUBLIC_KEY_SHA256" = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' ]
|
||||
if [ "${KAIDI_SETUP_WIZARD:-false}" = true ]; then
|
||||
[ -z "${KAIDI_DB_URL:-}${KAIDI_DB_USERNAME:-}${KAIDI_DB_PASSWORD:-}" ]
|
||||
else
|
||||
[ "$KAIDI_DB_URL" = 'jdbc:mysql://DB_HOST:3306/kaidi_finance' ]
|
||||
[ "$KAIDI_DB_USERNAME" = 'kaidi' ]
|
||||
[ "$KAIDI_DB_PASSWORD" = 'fixture-password' ]
|
||||
fi
|
||||
[ "$(cat "$KAIDI_RELEASE_TOKEN_FILE")" = 'fixture-read-token' ]
|
||||
printf 'fixture-installer: PASS\n'
|
||||
SH
|
||||
|
||||
chmod 0755 "$FIXTURE/bin/sudo" "$FIXTURE/repo/deploy/install.sh" "$FIXTURE/repo/deploy/install-from-git.sh"
|
||||
printf '%s' 'fixture-read-token' > "$FIXTURE/token"
|
||||
chmod 0600 "$FIXTURE/token"
|
||||
installer_sha256=$(sha256sum "$FIXTURE/repo/deploy/install.sh" | awk '{print $1}')
|
||||
|
||||
PATH="$FIXTURE/bin:$PATH" \
|
||||
KAIDI_RELEASE_TOKEN_FILE="$FIXTURE/token" \
|
||||
KAIDI_INSTALLER_SHA256="$installer_sha256" \
|
||||
KAIDI_RELEASE_API_URL=https://git.example.test/api/v1/repos/TEAM/REPO/releases/latest \
|
||||
KAIDI_RELEASE_PUBLIC_KEY_SHA256=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \
|
||||
KAIDI_DB_URL=jdbc:mysql://DB_HOST:3306/kaidi_finance \
|
||||
KAIDI_DB_USERNAME=kaidi \
|
||||
KAIDI_DB_PASSWORD=fixture-password \
|
||||
"$FIXTURE/repo/deploy/install-from-git.sh"
|
||||
|
||||
PATH="$FIXTURE/bin:$PATH" \
|
||||
KAIDI_RELEASE_TOKEN_FILE="$FIXTURE/token" \
|
||||
KAIDI_INSTALLER_SHA256="$installer_sha256" \
|
||||
KAIDI_RELEASE_API_URL=https://git.example.test/api/v1/repos/TEAM/REPO/releases/latest \
|
||||
KAIDI_RELEASE_PUBLIC_KEY_SHA256=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \
|
||||
KAIDI_SETUP_WIZARD=true \
|
||||
"$FIXTURE/repo/deploy/install-from-git.sh"
|
||||
|
||||
if PATH="$FIXTURE/bin:$PATH" \
|
||||
KAIDI_RELEASE_TOKEN_FILE="$FIXTURE/token" \
|
||||
KAIDI_INSTALLER_SHA256=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb \
|
||||
"$FIXTURE/repo/deploy/install-from-git.sh" > "$FIXTURE/hash-mismatch.log" 2>&1; then
|
||||
printf 'Mismatched installer SHA-256 was accepted\n' >&2
|
||||
exit 1
|
||||
fi
|
||||
grep -q 'does not match the trusted SHA-256' "$FIXTURE/hash-mismatch.log"
|
||||
|
||||
printf 'Git checkout installation wrapper fixture passed\n'
|
||||
Reference in New Issue
Block a user