mirror of
https://gitlab.com/hacklab01/pivilion.git
synced 2026-08-07 00:18:23 +00:00
Harden installation and runtime diagnostics
This commit is contained in:
parent
34b4c4b036
commit
ed0b168ab6
14 changed files with 748 additions and 213 deletions
62
tests/test-common.sh
Executable file
62
tests/test-common.sh
Executable file
|
|
@ -0,0 +1,62 @@
|
|||
#!/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
|
||||
Loading…
Add table
Add a link
Reference in a new issue