pivilion/tests/test-common.sh

62 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT
USER_NAME=$(id -un)
cat > "$TMP/primary.conf" <<EOF
PIVILION_USER=$USER_NAME
PIVILION_MODE=hotspot
EOF
cat > "$TMP/fallback.conf" <<EOF
PIVILION_USER=$USER_NAME
PIVILION_HOME=$HOME
PIVILION_DIR=$TMP/pivilion
PIVILION_WEBROOT=/var/www/html/pivilion
PIVILION_MODE=onion
PIVILION_HOTSPOT_SSID=fixture-portal
EOF
export PIVILION_CONFIG_PATHS="$TMP/primary.conf $TMP/fallback.conf"
export PIVILION_STATE_DIR="$TMP/run"
export PIVILION_STATE_FILE="$TMP/run/status.tsv"
source "$ROOT/usr/local/lib/pivilion/common.sh"
pivilion_load_config
[ "$PIVILION_MODE" = hotspot ]
[ "$PIVILION_HOTSPOT_SSID" = fixture-portal ]
[ "$PIVILION_DIR" = "$TMP/pivilion" ]
install -d "$PIVILION_DIR" "$PIVILION_STATE_DIR"
printf 'onion\n' > "$PIVILION_DIR/mode"
[ "$(pivilion_current_mode)" = onion ]
cat > "$PIVILION_STATE_FILE" <<EOF
desired_mode onion
active_mode hotspot
backend networkmanager
health degraded
failure probe failed
EOF
[ "$(pivilion_state_value active_mode)" = hotspot ]
[ "$(pivilion_state_value health)" = degraded ]
[ "$(pivilion_state_value missing fallback)" = fallback ]
mkdir "$TMP/bin"
cat > "$TMP/bin/nmcli" <<'EOF'
#!/bin/sh
exit 0
EOF
cat > "$TMP/bin/systemctl" <<'EOF'
#!/bin/sh
[ "${MOCK_NM_ACTIVE:-0}" = 1 ]
EOF
chmod +x "$TMP/bin/nmcli" "$TMP/bin/systemctl"
PATH="$TMP/bin:$PATH" MOCK_NM_ACTIVE=1 pivilion_uses_networkmanager
if PATH="$TMP/bin:$PATH" MOCK_NM_ACTIVE=0 pivilion_uses_networkmanager; then exit 1; fi
sed 's/PIVILION_MODE=hotspot/PIVILION_MODE=invalid/' "$TMP/primary.conf" > "$TMP/invalid.conf"
PIVILION_CONFIG_PATHS="$TMP/invalid.conf $TMP/fallback.conf"
export PIVILION_CONFIG_PATHS
if pivilion_load_config >/dev/null 2>&1; then exit 1; fi