69 lines
3.1 KiB
Bash
69 lines
3.1 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
setup() {
|
|
APP_ROOT="$(cd "$BATS_TEST_DIRNAME/.." && pwd)"
|
|
}
|
|
|
|
@test "player unit exists" {
|
|
[ -f "$APP_ROOT/systemd/flowercore-signage-player-pi.service" ]
|
|
}
|
|
|
|
@test "player unit uses simple chromium service with restart backoff" {
|
|
unit="$(cat "$APP_ROOT/systemd/flowercore-signage-player-pi.service")"
|
|
[[ "$unit" == *"Type=simple"* ]]
|
|
[[ "$unit" == *"Restart=always"* ]]
|
|
[[ "$unit" == *"RestartSec=10s"* ]]
|
|
[[ "$unit" == *"StartLimitBurst=5"* ]]
|
|
[[ "$unit" == *"StartLimitIntervalSec=300s"* ]]
|
|
}
|
|
|
|
@test "player unit caps chromium memory at two gigabytes" {
|
|
grep -q '^MemoryMax=2G$' "$APP_ROOT/systemd/flowercore-signage-player-pi.service"
|
|
grep -q '^MemoryHigh=1500M$' "$APP_ROOT/systemd/flowercore-signage-player-pi.service"
|
|
}
|
|
|
|
@test "player unit condition-gates startup on identity and p12 certificate" {
|
|
grep -q '^ConditionPathExists=/etc/flowercore/signage-node.json$' "$APP_ROOT/systemd/flowercore-signage-player-pi.service"
|
|
grep -q '^ConditionPathExists=/etc/fc-signage-player/client.p12$' "$APP_ROOT/systemd/flowercore-signage-player-pi.service"
|
|
}
|
|
|
|
@test "player unit runs prelaunch checks before chromium" {
|
|
grep -q '^ExecStartPre=/usr/local/bin/flowercore-signage-prelaunch.sh$' "$APP_ROOT/systemd/flowercore-signage-player-pi.service"
|
|
grep -q '^ExecStart=/usr/local/bin/flowercore-signage-launch.sh$' "$APP_ROOT/systemd/flowercore-signage-player-pi.service"
|
|
}
|
|
|
|
@test "hdmi udev rule routes through the two-second settle service" {
|
|
rule="$(cat "$APP_ROOT/systemd/99-flowercore-signage-hdmi.rules")"
|
|
[[ "$rule" == *'KERNEL=="card?-HDMI-A-?"'* ]]
|
|
[[ "$rule" == *"systemctl start flowercore-signage-player-pi-hdmi.service"* ]]
|
|
[[ "$rule" != *"systemctl restart flowercore-signage-player-pi.service"* ]]
|
|
}
|
|
|
|
@test "hdmi responder settles, declares display, then restarts chromium" {
|
|
responder="$(cat "$APP_ROOT/scripts/flowercore-signage-hdmi-respond.sh")"
|
|
[[ "$responder" == *"sleep 2"* ]]
|
|
[[ "$responder" == *"systemctl start flowercore-signage-detect-display.service"* ]]
|
|
[[ "$responder" == *"systemctl restart flowercore-signage-player-pi.service"* ]]
|
|
}
|
|
|
|
@test "chromium policy json is valid and disables credential prompts" {
|
|
command -v jq >/dev/null || skip "jq not installed"
|
|
jq -e '.AutofillAddressEnabled == false and .AutofillCreditCardEnabled == false and .PasswordManagerEnabled == false' \
|
|
"$APP_ROOT/chromium-policies/flowercore-signage.json" >/dev/null
|
|
}
|
|
|
|
@test "launch script tries embed URL and logs bare-player fallback" {
|
|
launch="$(cat "$APP_ROOT/scripts/flowercore-signage-launch.sh")"
|
|
[[ "$launch" == *'/player/${NODE_ID}/embed?token=${CERT_THUMB}'* ]]
|
|
[[ "$launch" == *"url-divergence.log"* ]]
|
|
[[ "$launch" == *'/player/${NODE_ID}?token=${CERT_THUMB}'* ]]
|
|
}
|
|
|
|
@test "prelaunch script validates required node and cert files" {
|
|
prelaunch="$(cat "$APP_ROOT/scripts/flowercore-signage-prelaunch.sh")"
|
|
[[ "$prelaunch" == *"/etc/flowercore/signage-node.json"* ]]
|
|
[[ "$prelaunch" == *"/etc/fc-signage-player/client.p12"* ]]
|
|
[[ "$prelaunch" == *"/etc/fc-signage-player/client.p12.pass"* ]]
|
|
[[ "$prelaunch" == *"exit 1"* ]]
|
|
}
|