#!/usr/bin/env bash set -u -o pipefail TEST_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" source "${TEST_ROOT}/tests/testlib.sh" source "${TEST_ROOT}/inc/ha-status.inc" STATUS_FILE="$(mktemp /tmp/tapm-ha-status.XXXXXX)" cleanup_ha_status_test() { [[ "$STATUS_FILE" == /tmp/tapm-ha-status.* ]] && rm -f -- "$STATUS_FILE" } trap cleanup_ha_status_test EXIT printf '%s\n' \ '{"node_status":{"pve1":"online","pve2":"maintenance mode"}}' \ >"$STATUS_FILE" assert_success "maintenance node detected in HA manager state" \ TAPM_HA_NODE_IN_MAINTENANCE pve2 "$STATUS_FILE" assert_failure "active node is not reported as maintenance" \ TAPM_HA_NODE_IN_MAINTENANCE pve1 "$STATUS_FILE" printf '%s\n' \ '{"nodes":[{"node":"pve3","state":"maintenance"}]}' \ >"$STATUS_FILE" assert_success "structured HA node state detected" \ TAPM_HA_NODE_IN_MAINTENANCE pve3 "$STATUS_FILE" printf '%s\n' 'not-json' >"$STATUS_FILE" assert_failure "malformed HA state is rejected" \ TAPM_HA_NODE_IN_MAINTENANCE pve1 "$STATUS_FILE" finish_tests