#!/usr/bin/env bash set -u -o pipefail TEST_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" test_dir="$(mktemp -d)" trap 'rm -rf "$test_dir"' EXIT TAPM_FLEET_STATE_DIR="${test_dir}/state" TAPM_FLEET_IDENTITY_FILE="${TAPM_FLEET_STATE_DIR}/identity.env" TAPM_BROKER_URL='https://tapm.example.com' source "${TEST_ROOT}/inc/fleet.inc" TAPM_FLEET_ENSURE_IDENTITY if ! TAPM_FLEET_VALID_IDENTITY; then printf 'FAIL: generated fleet identity is invalid\n' >&2 exit 1 fi if stat -c '%a' "$TAPM_FLEET_IDENTITY_FILE" >/dev/null 2>&1; then identity_mode="$(stat -c '%a' "$TAPM_FLEET_IDENTITY_FILE")" else identity_mode="$(stat -f '%Lp' "$TAPM_FLEET_IDENTITY_FILE")" fi if [[ "$identity_mode" != 600 ]]; then printf 'FAIL: fleet identity mode is not 600\n' >&2 exit 1 fi TAPM_FLEET_VERSION='2026.7.26-7' TAPM_FLEET_GIT_COMMIT='0123456789abcdef0123456789abcdef01234567' TAPM_FLEET_PVE_VERSION='pve-manager/9.0.3/abc~1' TAPM_FLEET_OS_VERSION='Debian GNU/Linux 13 (trixie)' TAPM_FLEET_KERNEL_VERSION='6.14.11-2-pve' TAPM_FLEET_ARCHITECTURE='amd64' TAPM_FLEET_CLUSTERED=true registration_json="$( TAPM_FLEET_INCLUDE_CREDENTIAL=1 TAPM_FLEET_JSON installed success )" REGISTRATION_JSON="$registration_json" python3 -c ' import json, os payload = json.loads(os.environ["REGISTRATION_JSON"]) assert payload["installation_id"] assert len(payload["credential"]) == 64 assert payload["proxmenu_version"] == "2026.7.26-7" assert payload["clustered"] is True ' printf '0\n' >"${test_dir}/curl-count" curl() { local count data_path='' previous='' argument='' count="$(cat "${test_dir}/curl-count")" count="$((count + 1))" printf '%s\n' "$count" >"${test_dir}/curl-count" for argument in "$@"; do if [[ "$previous" == '--data-binary' ]]; then data_path="${argument#@}" fi previous="$argument" done if [[ -n "$data_path" ]]; then cp "$data_path" "${test_dir}/curl-body-${count}.json" fi cat >"${test_dir}/curl-config-${count}" return 0 } TAPM_FLEET_REGISTERED=1 TAPM_FLEET_EVENT_SEND run_completed success '' 12 EVENT_BODY="$(cat "${test_dir}/curl-body-1.json")" \ EVENT_CONFIG="$(cat "${test_dir}/curl-config-1")" \ EXPECTED_CREDENTIAL="$TAPM_FLEET_CREDENTIAL" \ python3 -c ' import json, os payload = json.loads(os.environ["EVENT_BODY"]) assert payload["event"] == "run_completed" assert payload["result"] == "success" assert payload["duration_seconds"] == 12 assert "credential" not in payload config = os.environ["EVENT_CONFIG"] assert "Authorization: Bearer " + os.environ["EXPECTED_CREDENTIAL"] in config assert "https://tapm.example.com/api/v1/hosts/events" in config ' if compgen -G "${TMPDIR:-/tmp}/tapm-fleet-event.*" >/dev/null; then printf 'FAIL: fleet event left a temporary payload file\n' >&2 exit 1 fi printf 'PASS: fleet identity and event client\n'