#!/usr/bin/env bats setup() { APP_ROOT="$(cd "$BATS_TEST_DIRNAME/.." && pwd)" BOOTSTRAP="$APP_ROOT/scripts/flowercore-signage-bootstrap.sh" RENEW="$APP_ROOT/scripts/flowercore-signage-renew-cert.sh" } @test "bootstrap is idempotent when node is already enrolled" { script="$(cat "$BOOTSTRAP")" [[ "$script" == *'[[ -s "$NODE_JSON" && -s "$CERT_DIR/client.p12" ]]'* ]] [[ "$script" == *"already enrolled"* ]] [[ "$script" == *"exit 0"* ]] } @test "bootstrap generates a stable node uuid and machine id" { script="$(cat "$BOOTSTRAP")" [[ "$script" == *"uuidgen"* ]] [[ "$script" == *"nodeUuid"* ]] [[ "$script" == *"machineId"* ]] [[ "$script" == *"cut -c1-16"* ]] } @test "bootstrap posts to the canonical register endpoint" { grep -q '/api/v1/nodes/register' "$BOOTSTRAP" grep -q '"linux-arm64-pi"' "$BOOTSTRAP" } @test "bootstrap retries registration once for first-call races" { script="$(cat "$BOOTSTRAP")" [[ "$script" == *"for attempt in 1 2"* ]] [[ "$script" == *"register attempt \$attempt returned"* ]] [[ "$script" == *"sleep 5"* ]] } @test "bootstrap supports setup-code approval with manual polling fallback" { script="$(cat "$BOOTSTRAP")" [[ "$script" == *"signage-setup-code"* ]] [[ "$script" == *"approve-via-setup-code"* ]] [[ "$script" == *"+ 1800"* ]] [[ "$script" == *"sleep 15"* ]] } @test "bootstrap generates an ecdsa p256 csr for the signage pi subject" { script="$(cat "$BOOTSTRAP")" [[ "$script" == *"ecparam -genkey -name prime256v1"* ]] [[ "$script" == *'/CN=${NODE_ID}/O=FlowerCore/OU=SignagePlayer-Pi'* ]] } @test "bootstrap writes pkcs12 bundle with restrictive permissions" { script="$(cat "$BOOTSTRAP")" [[ "$script" == *"openssl pkcs12 -export"* ]] [[ "$script" == *"client.p12.pass"* ]] [[ "$script" == *"chmod 0640"* ]] [[ "$script" == *"chmod 0600"* ]] } @test "renewal only calls renew endpoint inside the thirty-day window and swaps atomically" { script="$(cat "$RENEW")" [[ "$script" == *'-checkend $((30*24*3600))'* ]] [[ "$script" == *"/api/v1/nodes/\${NODE_ID}/renew"* ]] [[ "$script" == *"client.key.new"* ]] [[ "$script" == *'mv "$CERT_DIR/client.p12.new" "$CERT_DIR/client.p12"'* ]] }