#!/bin/sh
set -eu

PROJECT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
YAZA_CLI=${YAZA_CLI:-"$PROJECT_ROOT/dist/yaza"}
TEMP_DIR=$(mktemp -d "${TMPDIR:-/tmp}/yaza-logging-smoke.XXXXXX")
trap 'rm -rf "$TEMP_DIR"' EXIT HUP INT TERM

"$YAZA_CLI" build "$PROJECT_ROOT/examples/structured_logging.yz" -o "$TEMP_DIR/structured-logging"
"$TEMP_DIR/structured-logging" >"$TEMP_DIR/stdout" 2>"$TEMP_DIR/stderr"

test ! -s "$TEMP_DIR/stdout"
test "$(wc -l < "$TEMP_DIR/stderr" | tr -d ' ')" = 1
grep -F '"level":"info"' "$TEMP_DIR/stderr" >/dev/null
grep -F '"event":"account_login"' "$TEMP_DIR/stderr" >/dev/null
grep -F '"request_id":"req-7f3a"' "$TEMP_DIR/stderr" >/dev/null
grep -F '"access_token":"[REDACTED]"' "$TEMP_DIR/stderr" >/dev/null
if grep -F 'this-value-must-not-appear-in-logs' "$TEMP_DIR/stderr" >/dev/null; then
    printf '%s\n' 'Sensitive value was written to the structured log.' >&2
    exit 1
fi

if command -v jq >/dev/null 2>&1; then
    jq -e '.timestamp and .level == "info" and .event == "account_login" and .fields.access_token == "[REDACTED]"' "$TEMP_DIR/stderr" >/dev/null
fi

"$YAZA_CLI" test "$PROJECT_ROOT/tests/structured_logging.test.yz"
printf '%s\n' 'Structured logging smoke checks passed.'
