#!/bin/bash
# Story: #1333 (Owner-based SharingRule + EnableHierarchySharing toggle)
# AC1:   Owner-based SharingRule can be created via API on Account / Opportunity
#        WITHOUT requiring a Criteria field (was blocked by required-field validation)
#
# PASS:    POST SharingRule with no Criteria + real SharedFromRoleId/ShareWithRoleId
#          returns success (id present)
# FAIL:    POST returns error (e.g., REQUIRED_FIELD_MISSING on Criteria, or INSERT_FAILED)
# BLOCKED: no UserRole records exist on staging to use

# Validates: NX#472 SharingRule.Criteria nullable fix stays in effect

. "$(dirname "$0")/../common/lib.sh"

TOK=$(get_admin_token) || {
  emit_verdict "#1333" "AC1" "BLOCKED" "admin token unavailable"
  exit 0
}

ROLE_RESP=$(api_query "$TOK" "SELECT Id FROM UserRole LIMIT 2")
R1=$(echo "$ROLE_RESP" | python3 -c "import json,sys; rs=json.load(sys.stdin).get('records',[]); print(rs[0]['Id'] if len(rs)>=1 else '')")
R2=$(echo "$ROLE_RESP" | python3 -c "import json,sys; rs=json.load(sys.stdin).get('records',[]); print(rs[1]['Id'] if len(rs)>=2 else '')")

if [ -z "$R1" ] || [ -z "$R2" ]; then
  emit_verdict "#1333" "AC1" "BLOCKED" "need 2 UserRole records on staging; found $R1 / $R2"
  exit 0
fi

TS=$(date +%s)
SR_RESP=$(api_post "$TOK" "/sobjects/SharingRule" "{
  \"Name\":\"qa_r6_owner_sr_${TS}\",
  \"ObjectApiName\":\"Account\",
  \"AccessLevel\":\"Read\",
  \"SharedFromRoleId\":\"$R1\",
  \"ShareWithRoleId\":\"$R2\"
}")
SR_ID=$(echo "$SR_RESP" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d.get('id','') if isinstance(d,dict) else '')" 2>/dev/null)

EV="post_response=$(echo "$SR_RESP" | head -c 200)"

if [ -n "$SR_ID" ]; then
  api_status "$TOK" DELETE "/sobjects/SharingRule/$SR_ID" > /dev/null
  emit_verdict "#1333" "AC1" "PASS" "sr_id=$SR_ID"
else
  emit_verdict "#1333" "AC1" "FAIL" "$EV"
fi
