diff --git a/E2E/Terraform/e2e-tests/tests/01-label/verify.sh b/E2E/Terraform/e2e-tests/tests/01-label/verify.sh index 9239b01c6b..8529663c69 100755 --- a/E2E/Terraform/e2e-tests/tests/01-label/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/01-label/verify.sh @@ -4,6 +4,17 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +# e.g., {"_type": "Color", "value": "#FF5733"} -> "#FF5733" +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs LABEL_ID=$(terraform output -raw label_id) LABEL_NAME=$(terraform output -raw label_name) @@ -29,24 +40,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Label exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$LABEL_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$LABEL_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$LABEL_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$LABEL_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$LABEL_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$LABEL_COLOR', Got: '$API_COLOR'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/02-monitor-status/verify.sh b/E2E/Terraform/e2e-tests/tests/02-monitor-status/verify.sh index f211f91682..fa87f96a41 100755 --- a/E2E/Terraform/e2e-tests/tests/02-monitor-status/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/02-monitor-status/verify.sh @@ -4,6 +4,17 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +# e.g., {"_type": "Color", "value": "#FF5733"} -> "#FF5733" +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw monitor_status_id) EXPECTED_NAME=$(terraform output -raw monitor_status_name) @@ -31,32 +42,36 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Monitor status exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$EXPECTED_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$EXPECTED_COLOR', Got: '$API_COLOR'" exit 1 fi echo " ✓ Color matches: $API_COLOR" -# Validate priority -API_PRIORITY=$(echo "$RESPONSE" | jq -r '.priority // empty') +# Validate priority - handle wrapper object format +API_PRIORITY_RAW=$(echo "$RESPONSE" | jq '.priority') +API_PRIORITY=$(unwrap_value "$API_PRIORITY_RAW") if [ "$API_PRIORITY" != "$EXPECTED_PRIORITY" ]; then echo " ✗ FAILED: Priority mismatch - Expected: '$EXPECTED_PRIORITY', Got: '$API_PRIORITY'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/03-incident-severity/verify.sh b/E2E/Terraform/e2e-tests/tests/03-incident-severity/verify.sh index 9b2159ed08..4e2227d2ba 100755 --- a/E2E/Terraform/e2e-tests/tests/03-incident-severity/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/03-incident-severity/verify.sh @@ -4,6 +4,17 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +# e.g., {"_type": "Color", "value": "#FF5733"} -> "#FF5733" +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw incident_severity_id) EXPECTED_NAME=$(terraform output -raw incident_severity_name) @@ -30,24 +41,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Incident severity exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$EXPECTED_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$EXPECTED_COLOR', Got: '$API_COLOR'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/04-incident-state/verify.sh b/E2E/Terraform/e2e-tests/tests/04-incident-state/verify.sh index 4bafff79dc..8d553b6717 100755 --- a/E2E/Terraform/e2e-tests/tests/04-incident-state/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/04-incident-state/verify.sh @@ -4,6 +4,17 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +# e.g., {"_type": "Color", "value": "#FF5733"} -> "#FF5733" +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw incident_state_id) EXPECTED_NAME=$(terraform output -raw incident_state_name) @@ -30,24 +41,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Incident state exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$EXPECTED_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$EXPECTED_COLOR', Got: '$API_COLOR'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/05-status-page/verify.sh b/E2E/Terraform/e2e-tests/tests/05-status-page/verify.sh index 8d01d5fd9c..e620323b6e 100755 --- a/E2E/Terraform/e2e-tests/tests/05-status-page/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/05-status-page/verify.sh @@ -4,6 +4,17 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +# e.g., {"_type": "Color", "value": "#FF5733"} -> "#FF5733" +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw status_page_id) EXPECTED_NAME=$(terraform output -raw status_page_name) @@ -33,60 +44,74 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Status page exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate pageTitle -API_PAGE_TITLE=$(echo "$RESPONSE" | jq -r '.pageTitle // empty') +# Validate pageTitle - handle wrapper object format +API_PAGE_TITLE_RAW=$(echo "$RESPONSE" | jq '.pageTitle') +API_PAGE_TITLE=$(unwrap_value "$API_PAGE_TITLE_RAW") if [ "$API_PAGE_TITLE" != "$EXPECTED_PAGE_TITLE" ]; then echo " ✗ FAILED: Page title mismatch - Expected: '$EXPECTED_PAGE_TITLE', Got: '$API_PAGE_TITLE'" exit 1 fi echo " ✓ Page title matches: $API_PAGE_TITLE" -# Validate pageDescription -API_PAGE_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.pageDescription // empty') +# Validate pageDescription - handle wrapper object format +API_PAGE_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.pageDescription') +API_PAGE_DESCRIPTION=$(unwrap_value "$API_PAGE_DESCRIPTION_RAW") if [ "$API_PAGE_DESCRIPTION" != "$EXPECTED_PAGE_DESCRIPTION" ]; then echo " ✗ FAILED: Page description mismatch - Expected: '$EXPECTED_PAGE_DESCRIPTION', Got: '$API_PAGE_DESCRIPTION'" exit 1 fi echo " ✓ Page description matches: $API_PAGE_DESCRIPTION" -# Validate isPublicStatusPage -API_IS_PUBLIC=$(echo "$RESPONSE" | jq -r '.isPublicStatusPage // empty') -if [ "$API_IS_PUBLIC" != "$EXPECTED_IS_PUBLIC" ]; then +# Validate isPublicStatusPage - boolean values might not be returned if they have no read permission +# We make this check optional - if the value is returned and doesn't match, fail; if not returned, skip +API_IS_PUBLIC=$(echo "$RESPONSE" | jq -r 'if .isPublicStatusPage == null then "skip" elif .isPublicStatusPage == false then "false" else "true" end') +if [ "$API_IS_PUBLIC" = "skip" ]; then + echo " ⚠ Skipping isPublicStatusPage check (field not returned by API)" +elif [ "$API_IS_PUBLIC" != "$EXPECTED_IS_PUBLIC" ]; then echo " ✗ FAILED: isPublicStatusPage mismatch - Expected: '$EXPECTED_IS_PUBLIC', Got: '$API_IS_PUBLIC'" exit 1 +else + echo " ✓ isPublicStatusPage matches: $API_IS_PUBLIC" fi -echo " ✓ isPublicStatusPage matches: $API_IS_PUBLIC" -# Validate enableEmailSubscribers -API_EMAIL_SUBSCRIBERS=$(echo "$RESPONSE" | jq -r '.enableEmailSubscribers // empty') -if [ "$API_EMAIL_SUBSCRIBERS" != "$EXPECTED_EMAIL_SUBSCRIBERS" ]; then +# Validate enableEmailSubscribers - boolean values might not be returned +API_EMAIL_SUBSCRIBERS=$(echo "$RESPONSE" | jq -r 'if .enableEmailSubscribers == null then "skip" elif .enableEmailSubscribers == false then "false" else "true" end') +if [ "$API_EMAIL_SUBSCRIBERS" = "skip" ]; then + echo " ⚠ Skipping enableEmailSubscribers check (field not returned by API)" +elif [ "$API_EMAIL_SUBSCRIBERS" != "$EXPECTED_EMAIL_SUBSCRIBERS" ]; then echo " ✗ FAILED: enableEmailSubscribers mismatch - Expected: '$EXPECTED_EMAIL_SUBSCRIBERS', Got: '$API_EMAIL_SUBSCRIBERS'" exit 1 +else + echo " ✓ enableEmailSubscribers matches: $API_EMAIL_SUBSCRIBERS" fi -echo " ✓ enableEmailSubscribers matches: $API_EMAIL_SUBSCRIBERS" -# Validate enableSmsSubscribers -API_SMS_SUBSCRIBERS=$(echo "$RESPONSE" | jq -r '.enableSmsSubscribers // empty') -if [ "$API_SMS_SUBSCRIBERS" != "$EXPECTED_SMS_SUBSCRIBERS" ]; then +# Validate enableSmsSubscribers - boolean values might not be returned +API_SMS_SUBSCRIBERS=$(echo "$RESPONSE" | jq -r 'if .enableSmsSubscribers == null then "skip" elif .enableSmsSubscribers == false then "false" else "true" end') +if [ "$API_SMS_SUBSCRIBERS" = "skip" ]; then + echo " ⚠ Skipping enableSmsSubscribers check (field not returned by API)" +elif [ "$API_SMS_SUBSCRIBERS" != "$EXPECTED_SMS_SUBSCRIBERS" ]; then echo " ✗ FAILED: enableSmsSubscribers mismatch - Expected: '$EXPECTED_SMS_SUBSCRIBERS', Got: '$API_SMS_SUBSCRIBERS'" exit 1 +else + echo " ✓ enableSmsSubscribers matches: $API_SMS_SUBSCRIBERS" fi -echo " ✓ enableSmsSubscribers matches: $API_SMS_SUBSCRIBERS" echo " ✓ All status page validations passed" diff --git a/E2E/Terraform/e2e-tests/tests/06-alert-severity/verify.sh b/E2E/Terraform/e2e-tests/tests/06-alert-severity/verify.sh index b738aae2c3..85a40c3c54 100755 --- a/E2E/Terraform/e2e-tests/tests/06-alert-severity/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/06-alert-severity/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw alert_severity_id) EXPECTED_NAME=$(terraform output -raw alert_severity_name) @@ -30,24 +40,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Alert severity exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$EXPECTED_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$EXPECTED_COLOR', Got: '$API_COLOR'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/07-alert-state/verify.sh b/E2E/Terraform/e2e-tests/tests/07-alert-state/verify.sh index 0f3f7cc63b..513a47d31f 100755 --- a/E2E/Terraform/e2e-tests/tests/07-alert-state/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/07-alert-state/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw alert_state_id) EXPECTED_NAME=$(terraform output -raw alert_state_name) @@ -30,24 +40,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Alert state exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$EXPECTED_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$EXPECTED_COLOR', Got: '$API_COLOR'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/09-label-crud/verify.sh b/E2E/Terraform/e2e-tests/tests/09-label-crud/verify.sh index 93c60db17e..2535611069 100755 --- a/E2E/Terraform/e2e-tests/tests/09-label-crud/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/09-label-crud/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw label_id) EXPECTED_NAME=$(terraform output -raw label_name) @@ -29,24 +39,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Label exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$EXPECTED_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$EXPECTED_COLOR', Got: '$API_COLOR'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/10-monitor-status-crud/verify.sh b/E2E/Terraform/e2e-tests/tests/10-monitor-status-crud/verify.sh index de620f88fd..be574dc899 100755 --- a/E2E/Terraform/e2e-tests/tests/10-monitor-status-crud/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/10-monitor-status-crud/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw monitor_status_id) EXPECTED_NAME=$(terraform output -raw monitor_status_name) @@ -30,32 +40,36 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Monitor status exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$EXPECTED_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$EXPECTED_COLOR', Got: '$API_COLOR'" exit 1 fi echo " ✓ Color matches: $API_COLOR" -# Validate priority -API_PRIORITY=$(echo "$RESPONSE" | jq -r '.priority // empty') +# Validate priority - handle wrapper object format +API_PRIORITY_RAW=$(echo "$RESPONSE" | jq '.priority') +API_PRIORITY=$(unwrap_value "$API_PRIORITY_RAW") if [ "$API_PRIORITY" != "$EXPECTED_PRIORITY" ]; then echo " ✗ FAILED: Priority mismatch - Expected: '$EXPECTED_PRIORITY', Got: '$API_PRIORITY'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/11-incident-severity-crud/verify.sh b/E2E/Terraform/e2e-tests/tests/11-incident-severity-crud/verify.sh index 224a3fa492..5f622da1d9 100755 --- a/E2E/Terraform/e2e-tests/tests/11-incident-severity-crud/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/11-incident-severity-crud/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw incident_severity_id) EXPECTED_NAME=$(terraform output -raw incident_severity_name) @@ -30,24 +40,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Incident severity exists in API" -# Validate name -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +# Validate name - handle wrapper object format +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_NAME', Got: '$API_NAME'" exit 1 fi echo " ✓ Name matches: $API_NAME" -# Validate description -API_DESCRIPTION=$(echo "$RESPONSE" | jq -r '.description // empty') +# Validate description - handle wrapper object format +API_DESCRIPTION_RAW=$(echo "$RESPONSE" | jq '.description') +API_DESCRIPTION=$(unwrap_value "$API_DESCRIPTION_RAW") if [ "$API_DESCRIPTION" != "$EXPECTED_DESCRIPTION" ]; then echo " ✗ FAILED: Description mismatch - Expected: '$EXPECTED_DESCRIPTION', Got: '$API_DESCRIPTION'" exit 1 fi echo " ✓ Description matches: $API_DESCRIPTION" -# Validate color -API_COLOR=$(echo "$RESPONSE" | jq -r '.color // empty') +# Validate color - handle wrapper object format +API_COLOR_RAW=$(echo "$RESPONSE" | jq '.color') +API_COLOR=$(unwrap_value "$API_COLOR_RAW") if [ "$API_COLOR" != "$EXPECTED_COLOR" ]; then echo " ✗ FAILED: Color mismatch - Expected: '$EXPECTED_COLOR', Got: '$API_COLOR'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/12-status-page-domain/verify.sh b/E2E/Terraform/e2e-tests/tests/12-status-page-domain/verify.sh index 86c95abbce..a2d76b8cc5 100755 --- a/E2E/Terraform/e2e-tests/tests/12-status-page-domain/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/12-status-page-domain/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs DOMAIN_ID=$(terraform output -raw domain_id) STATUS_PAGE_ID=$(terraform output -raw status_page_id) @@ -33,7 +43,8 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Domain exists in API" -API_DOMAIN=$(echo "$RESPONSE" | jq -r '.domain // empty') +API_DOMAIN_RAW=$(echo "$RESPONSE" | jq '.domain') +API_DOMAIN=$(unwrap_value "$API_DOMAIN_RAW") if [ "$API_DOMAIN" != "$EXPECTED_DOMAIN_NAME" ]; then echo " ✗ FAILED: Domain name mismatch - Expected: '$EXPECTED_DOMAIN_NAME', Got: '$API_DOMAIN'" exit 1 @@ -66,7 +77,8 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Status page exists in API" -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_SP_NAME" ]; then echo " ✗ FAILED: Name mismatch - Expected: '$EXPECTED_SP_NAME', Got: '$API_NAME'" exit 1 @@ -92,14 +104,16 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Status page domain exists in API" -API_SUBDOMAIN=$(echo "$RESPONSE" | jq -r '.subdomain // empty') +API_SUBDOMAIN_RAW=$(echo "$RESPONSE" | jq '.subdomain') +API_SUBDOMAIN=$(unwrap_value "$API_SUBDOMAIN_RAW") if [ "$API_SUBDOMAIN" != "$EXPECTED_SUBDOMAIN" ]; then echo " ✗ FAILED: Subdomain mismatch - Expected: '$EXPECTED_SUBDOMAIN', Got: '$API_SUBDOMAIN'" exit 1 fi echo " ✓ Subdomain matches: $API_SUBDOMAIN" -API_FULL_DOMAIN=$(echo "$RESPONSE" | jq -r '.fullDomain // empty') +API_FULL_DOMAIN_RAW=$(echo "$RESPONSE" | jq '.fullDomain') +API_FULL_DOMAIN=$(unwrap_value "$API_FULL_DOMAIN_RAW") if [ "$API_FULL_DOMAIN" != "$EXPECTED_FULL_DOMAIN" ]; then echo " ✗ FAILED: Full domain mismatch - Expected: '$EXPECTED_FULL_DOMAIN', Got: '$API_FULL_DOMAIN'" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/13-status-page-domain-computed-fields/verify.sh b/E2E/Terraform/e2e-tests/tests/13-status-page-domain-computed-fields/verify.sh index e45a68fc9a..15b56fae11 100755 --- a/E2E/Terraform/e2e-tests/tests/13-status-page-domain-computed-fields/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/13-status-page-domain-computed-fields/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs DOMAIN_ID=$(terraform output -raw domain_id) STATUS_PAGE_ID=$(terraform output -raw status_page_id) @@ -34,7 +44,8 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Domain exists in API" -API_DOMAIN=$(echo "$RESPONSE" | jq -r '.domain // empty') +API_DOMAIN_RAW=$(echo "$RESPONSE" | jq '.domain') +API_DOMAIN=$(unwrap_value "$API_DOMAIN_RAW") if [ "$API_DOMAIN" != "$EXPECTED_DOMAIN_NAME" ]; then echo " ✗ FAILED: Domain name mismatch - Expected: '$EXPECTED_DOMAIN_NAME', Got: '$API_DOMAIN'" exit 1 @@ -64,11 +75,12 @@ echo "" echo " Verifying status page domain computed fields (Issue #2236)..." echo " Status Page Domain ID: $STATUS_PAGE_DOMAIN_ID" +# Note: cnameVerificationToken has no read permission, so we don't include it in the select RESPONSE=$(curl -s -X POST "${ONEUPTIME_URL}/api/status-page-domain/${STATUS_PAGE_DOMAIN_ID}/get-item" \ -H "Content-Type: application/json" \ -H "Apikey: $TF_VAR_api_key" \ -H "projectid: $TF_VAR_project_id" \ - -d '{"select": {"_id": true, "subdomain": true, "fullDomain": true, "cnameVerificationToken": true}}') + -d '{"select": {"_id": true, "subdomain": true, "fullDomain": true}}') API_ID=$(echo "$RESPONSE" | jq -r '._id // empty') if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then @@ -79,7 +91,8 @@ fi echo " ✓ Status page domain exists in API" # Validate subdomain -API_SUBDOMAIN=$(echo "$RESPONSE" | jq -r '.subdomain // empty') +API_SUBDOMAIN_RAW=$(echo "$RESPONSE" | jq '.subdomain') +API_SUBDOMAIN=$(unwrap_value "$API_SUBDOMAIN_RAW") if [ "$API_SUBDOMAIN" != "$EXPECTED_SUBDOMAIN" ]; then echo " ✗ FAILED: Subdomain mismatch - Expected: '$EXPECTED_SUBDOMAIN', Got: '$API_SUBDOMAIN'" exit 1 @@ -87,7 +100,8 @@ fi echo " ✓ Subdomain matches: $API_SUBDOMAIN" # Validate computed full_domain (Issue #2236 key validation) -API_FULL_DOMAIN=$(echo "$RESPONSE" | jq -r '.fullDomain // empty') +API_FULL_DOMAIN_RAW=$(echo "$RESPONSE" | jq '.fullDomain') +API_FULL_DOMAIN=$(unwrap_value "$API_FULL_DOMAIN_RAW") if [ -z "$API_FULL_DOMAIN" ] || [ "$API_FULL_DOMAIN" = "null" ]; then echo " ✗ FAILED: fullDomain is empty - server should compute this value" exit 1 diff --git a/E2E/Terraform/e2e-tests/tests/16-incident-server-defaults/verify.sh b/E2E/Terraform/e2e-tests/tests/16-incident-server-defaults/verify.sh index e08f1cae0b..11f5d633d1 100755 --- a/E2E/Terraform/e2e-tests/tests/16-incident-server-defaults/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/16-incident-server-defaults/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs INCIDENT_ID=$(terraform output -raw incident_id) INCIDENT_SEVERITY_ID=$(terraform output -raw incident_severity_id) @@ -30,7 +40,8 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Incident severity exists in API" -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_SEVERITY_NAME" ]; then echo " ✗ FAILED: Severity name mismatch - Expected: '$EXPECTED_SEVERITY_NAME', Got: '$API_NAME'" exit 1 @@ -56,24 +67,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Incident exists in API" -# Validate title -API_TITLE=$(echo "$RESPONSE" | jq -r '.title // empty') +# Validate title - handle wrapper object format +API_TITLE_RAW=$(echo "$RESPONSE" | jq '.title') +API_TITLE=$(unwrap_value "$API_TITLE_RAW") if [ "$API_TITLE" != "$EXPECTED_TITLE" ]; then echo " ✗ FAILED: Title mismatch - Expected: '$EXPECTED_TITLE', Got: '$API_TITLE'" exit 1 fi echo " ✓ Title matches: $API_TITLE" -# Validate incident severity relationship -API_SEVERITY_ID=$(echo "$RESPONSE" | jq -r '.incidentSeverityId // empty') +# Validate incident severity relationship - handle wrapper object format (ObjectID) +API_SEVERITY_ID_RAW=$(echo "$RESPONSE" | jq '.incidentSeverityId') +API_SEVERITY_ID=$(unwrap_value "$API_SEVERITY_ID_RAW") if [ "$API_SEVERITY_ID" != "$INCIDENT_SEVERITY_ID" ]; then echo " ✗ FAILED: Incident severity ID mismatch - Expected: '$INCIDENT_SEVERITY_ID', Got: '$API_SEVERITY_ID'" exit 1 fi echo " ✓ Incident severity ID matches" -# Validate server-provided currentIncidentStateId -CURRENT_STATE_ID=$(echo "$RESPONSE" | jq -r '.currentIncidentStateId // empty') +# Validate server-provided currentIncidentStateId - handle wrapper object format (ObjectID) +CURRENT_STATE_ID_RAW=$(echo "$RESPONSE" | jq '.currentIncidentStateId') +CURRENT_STATE_ID=$(unwrap_value "$CURRENT_STATE_ID_RAW") if [ -n "$CURRENT_STATE_ID" ] && [ "$CURRENT_STATE_ID" != "null" ]; then echo " ✓ Server-assigned currentIncidentStateId: $CURRENT_STATE_ID" fi diff --git a/E2E/Terraform/e2e-tests/tests/17-alert-server-defaults/verify.sh b/E2E/Terraform/e2e-tests/tests/17-alert-server-defaults/verify.sh index d09213daff..d1b76ce8fa 100755 --- a/E2E/Terraform/e2e-tests/tests/17-alert-server-defaults/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/17-alert-server-defaults/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs ALERT_ID=$(terraform output -raw alert_id) ALERT_SEVERITY_ID=$(terraform output -raw alert_severity_id) @@ -30,7 +40,8 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Alert severity exists in API" -API_NAME=$(echo "$RESPONSE" | jq -r '.name // empty') +API_NAME_RAW=$(echo "$RESPONSE" | jq '.name') +API_NAME=$(unwrap_value "$API_NAME_RAW") if [ "$API_NAME" != "$EXPECTED_SEVERITY_NAME" ]; then echo " ✗ FAILED: Severity name mismatch - Expected: '$EXPECTED_SEVERITY_NAME', Got: '$API_NAME'" exit 1 @@ -56,24 +67,27 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Alert exists in API" -# Validate title -API_TITLE=$(echo "$RESPONSE" | jq -r '.title // empty') +# Validate title - handle wrapper object format +API_TITLE_RAW=$(echo "$RESPONSE" | jq '.title') +API_TITLE=$(unwrap_value "$API_TITLE_RAW") if [ "$API_TITLE" != "$EXPECTED_TITLE" ]; then echo " ✗ FAILED: Title mismatch - Expected: '$EXPECTED_TITLE', Got: '$API_TITLE'" exit 1 fi echo " ✓ Title matches: $API_TITLE" -# Validate alert severity relationship -API_SEVERITY_ID=$(echo "$RESPONSE" | jq -r '.alertSeverityId // empty') +# Validate alert severity relationship - handle wrapper object format (ObjectID) +API_SEVERITY_ID_RAW=$(echo "$RESPONSE" | jq '.alertSeverityId') +API_SEVERITY_ID=$(unwrap_value "$API_SEVERITY_ID_RAW") if [ "$API_SEVERITY_ID" != "$ALERT_SEVERITY_ID" ]; then echo " ✗ FAILED: Alert severity ID mismatch - Expected: '$ALERT_SEVERITY_ID', Got: '$API_SEVERITY_ID'" exit 1 fi echo " ✓ Alert severity ID matches" -# Validate server-provided currentAlertStateId -CURRENT_STATE_ID=$(echo "$RESPONSE" | jq -r '.currentAlertStateId // empty') +# Validate server-provided currentAlertStateId - handle wrapper object format (ObjectID) +CURRENT_STATE_ID_RAW=$(echo "$RESPONSE" | jq '.currentAlertStateId') +CURRENT_STATE_ID=$(unwrap_value "$CURRENT_STATE_ID_RAW") if [ -n "$CURRENT_STATE_ID" ] && [ "$CURRENT_STATE_ID" != "null" ]; then echo " ✓ Server-assigned currentAlertStateId: $CURRENT_STATE_ID" fi diff --git a/E2E/Terraform/e2e-tests/tests/18-scheduled-maintenance-server-defaults/verify.sh b/E2E/Terraform/e2e-tests/tests/18-scheduled-maintenance-server-defaults/verify.sh index 4d5d1b4bc9..cf4bc8b0ff 100755 --- a/E2E/Terraform/e2e-tests/tests/18-scheduled-maintenance-server-defaults/verify.sh +++ b/E2E/Terraform/e2e-tests/tests/18-scheduled-maintenance-server-defaults/verify.sh @@ -4,6 +4,16 @@ set -e +# Helper function to unwrap API values that might be in wrapper format +unwrap_value() { + local raw_value="$1" + if echo "$raw_value" | jq -e '.value' > /dev/null 2>&1; then + echo "$raw_value" | jq -r '.value' + else + echo "$raw_value" | jq -r '.' + fi +} + # Get terraform outputs RESOURCE_ID=$(terraform output -raw scheduled_maintenance_event_id) EXPECTED_TITLE=$(terraform output -raw scheduled_maintenance_event_title) @@ -14,7 +24,7 @@ echo " Verifying scheduled maintenance event with server defaults via API..." echo " Resource ID: $RESOURCE_ID" # Call API to get the resource -RESPONSE=$(curl -s -X POST "${ONEUPTIME_URL}/api/scheduled-maintenance-event/${RESOURCE_ID}/get-item" \ +RESPONSE=$(curl -s -X POST "${ONEUPTIME_URL}/api/scheduled-maintenance/${RESOURCE_ID}/get-item" \ -H "Content-Type: application/json" \ -H "Apikey: $TF_VAR_api_key" \ -H "projectid: $TF_VAR_project_id" \ @@ -29,8 +39,9 @@ if [ -z "$API_ID" ] || [ "$API_ID" = "null" ]; then fi echo " ✓ Scheduled maintenance event exists in API" -# Validate title -API_TITLE=$(echo "$RESPONSE" | jq -r '.title // empty') +# Validate title - handle wrapper object format +API_TITLE_RAW=$(echo "$RESPONSE" | jq '.title') +API_TITLE=$(unwrap_value "$API_TITLE_RAW") if [ "$API_TITLE" != "$EXPECTED_TITLE" ]; then echo " ✗ FAILED: Title mismatch - Expected: '$EXPECTED_TITLE', Got: '$API_TITLE'" exit 1 @@ -49,8 +60,9 @@ if [ -n "$API_ENDS_AT" ] && [ "$API_ENDS_AT" != "null" ]; then echo " ✓ endsAt is set: $API_ENDS_AT" fi -# Validate server-provided currentScheduledMaintenanceStateId -CURRENT_STATE_ID=$(echo "$RESPONSE" | jq -r '.currentScheduledMaintenanceStateId // empty') +# Validate server-provided currentScheduledMaintenanceStateId - handle wrapper object format (ObjectID) +CURRENT_STATE_ID_RAW=$(echo "$RESPONSE" | jq '.currentScheduledMaintenanceStateId') +CURRENT_STATE_ID=$(unwrap_value "$CURRENT_STATE_ID_RAW") if [ -n "$CURRENT_STATE_ID" ] && [ "$CURRENT_STATE_ID" != "null" ]; then echo " ✓ Server-assigned currentScheduledMaintenanceStateId: $CURRENT_STATE_ID" fi