This commit is contained in:
55
tests/test_setup_modes.sh
Normal file
55
tests/test_setup_modes.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
trap 'rm -rf "${TMP_DIR}"' EXIT
|
||||
BIN_DIR="${TMP_DIR}/bin"
|
||||
LOG_FILE="${TMP_DIR}/calls.log"
|
||||
mkdir -p "${BIN_DIR}"
|
||||
|
||||
cat >"${BIN_DIR}/id" <<'EOF'
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
if [[ "${1:-}" == "-u" && "${2:-}" == "couch" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
exec /usr/bin/id "$@"
|
||||
EOF
|
||||
|
||||
cat >"${BIN_DIR}/useradd" <<EOF
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
printf 'useradd %s\n' "\$*" >>"${LOG_FILE}"
|
||||
EOF
|
||||
|
||||
chmod 0755 "${BIN_DIR}/id" "${BIN_DIR}/useradd"
|
||||
|
||||
output="$(
|
||||
PATH="${BIN_DIR}:${PATH}" \
|
||||
bash -c '
|
||||
set -Eeuo pipefail
|
||||
source "'"${REPO_ROOT}"'/setup.sh"
|
||||
MODE="dry-run"
|
||||
COUCH_UID=""
|
||||
ensure_couch_user
|
||||
ensure_runtime_config
|
||||
'
|
||||
)"
|
||||
|
||||
grep -Fq '[dry-run] useradd --create-home --home-dir /home/couch --shell /bin/bash --user-group couch' <<<"${output}"
|
||||
grep -Fq '/run/user/<missing-couch-uid>' <<<"${output}"
|
||||
|
||||
check_output_file="${TMP_DIR}/check.out"
|
||||
set +e
|
||||
PATH="${BIN_DIR}:${PATH}" bash "${REPO_ROOT}/setup.sh" --phase couch --check >"${check_output_file}" 2>&1
|
||||
status=$?
|
||||
set -e
|
||||
|
||||
if [[ "${status}" -eq 0 ]]; then
|
||||
printf 'expected setup --check to fail on missing couch user\n' >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
grep -Fq '[check] FAIL couch user missing' "${check_output_file}"
|
||||
grep -Fq '[check] FAIL /home/couch/.config/couchd/runtime.json missing' "${check_output_file}"
|
||||
Reference in New Issue
Block a user