55 lines
1.9 KiB
Bash
Executable File
55 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
TEMP_DIR="$(mktemp -d)"
|
|
trap 'rm -rf "${TEMP_DIR}"' EXIT
|
|
|
|
fail_test() {
|
|
printf 'FAIL: %s\n' "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
mkdir -p "${TEMP_DIR}/bin" "${TEMP_DIR}/keys"
|
|
touch "${TEMP_DIR}/lanqin.db" "${TEMP_DIR}/reload.log"
|
|
|
|
cat > "${TEMP_DIR}/bin/sqlite3" <<'EOF'
|
|
#!/bin/sh
|
|
printf 'example.com|lanqin|%s\n' "$(cat "${FAKE_PRIVATE_KEY_FILE}")"
|
|
EOF
|
|
cat > "${TEMP_DIR}/bin/id" <<'EOF'
|
|
#!/bin/sh
|
|
exit 1
|
|
EOF
|
|
cat > "${TEMP_DIR}/bin/rspamadm" <<'EOF'
|
|
#!/bin/sh
|
|
printf '%s\n' "$*" >> "${FAKE_RELOAD_LOG}"
|
|
EOF
|
|
cat > "${TEMP_DIR}/bin/pkill" <<'EOF'
|
|
#!/bin/sh
|
|
printf 'unexpected pkill fallback\n' >&2
|
|
exit 1
|
|
EOF
|
|
chmod 0755 "${TEMP_DIR}/bin/sqlite3" "${TEMP_DIR}/bin/id" "${TEMP_DIR}/bin/rspamadm" "${TEMP_DIR}/bin/pkill"
|
|
|
|
export PATH="${TEMP_DIR}/bin:${PATH}"
|
|
export LANQIN_DB_PATH="${TEMP_DIR}/lanqin.db"
|
|
export LANQIN_RSPAMD_DKIM_DIR="${TEMP_DIR}/keys"
|
|
export FAKE_PRIVATE_KEY_FILE="${TEMP_DIR}/private-key.b64"
|
|
export FAKE_RELOAD_LOG="${TEMP_DIR}/reload.log"
|
|
|
|
printf 'first-private-key' | base64 > "${FAKE_PRIVATE_KEY_FILE}"
|
|
sh "${ROOT_DIR}/deploy/rspamd/sync-dkim.sh" --once
|
|
[[ "$(cat "${TEMP_DIR}/keys/example.com.lanqin.key")" == "first-private-key" ]] || fail_test "initial DKIM key was not exported"
|
|
[[ "$(wc -l < "${FAKE_RELOAD_LOG}" | tr -d ' ')" == "1" ]] || fail_test "initial DKIM key did not reload Rspamd"
|
|
|
|
sh "${ROOT_DIR}/deploy/rspamd/sync-dkim.sh" --once
|
|
[[ "$(wc -l < "${FAKE_RELOAD_LOG}" | tr -d ' ')" == "1" ]] || fail_test "unchanged DKIM key reloaded Rspamd"
|
|
|
|
printf 'second-private-key' | base64 > "${FAKE_PRIVATE_KEY_FILE}"
|
|
sh "${ROOT_DIR}/deploy/rspamd/sync-dkim.sh" --once
|
|
[[ "$(cat "${TEMP_DIR}/keys/example.com.lanqin.key")" == "second-private-key" ]] || fail_test "changed DKIM key was not exported"
|
|
[[ "$(wc -l < "${FAKE_RELOAD_LOG}" | tr -d ' ')" == "2" ]] || fail_test "changed DKIM key did not reload Rspamd"
|
|
|
|
printf 'DKIM sync tests passed.\n'
|