#!/usr/bin/env bash
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
tmpdir="$ROOT/deployments/.register-new-region-test.$$"
mkdir -p "$tmpdir"
trap 'rm -rf "$tmpdir"' EXIT

cat >"$tmpdir/deploy-groups.json" <<'JSON'
{
  "dev": {
    "aws": [
      {
        "region": "us-west-2",
        "logical_region": "us-west-2-byoc-0303",
        "clusters": [
          "o11y-dev-us-west-2-byoc-0303"
        ],
        "isByoc": "true",
        "managedByOpsServer": "true"
      }
    ]
  }
}
JSON

DEPLOY_GROUPS_FILE="$tmpdir/deploy-groups.json" \
bash "$ROOT/deployments/register-new-region.sh" \
  aws \
  dev \
  us-east-1 \
  us-east-1 \
  o11y-dev-regional-us-east-1 \
  false \
  true

jq -e '.dev.aws | any(.logical_region == "us-east-1" and .managedByOpsServer == "true" and .isByoc == "false")' "$tmpdir/deploy-groups.json" >/dev/null

DEPLOY_GROUPS_FILE="$tmpdir/deploy-groups.json" \
bash "$ROOT/deployments/register-new-region.sh" \
  aws \
  dev \
  us-west-2 \
  us-west-2-byoc-0303 \
  o11y-dev-us-west-2-byoc-0303 \
  true \
  false

jq -e '
  .dev.aws
  | map(select(.logical_region == "us-west-2-byoc-0303")) as $matches
  | ($matches | length) == 1
    and ($matches[0]
      | .managedByOpsServer == "false"
      and (has("regionalServerManagedByOpsServer") | not)
      and (has("dataplaneManagedByOpsServer") | not)
      and .clusters == ["o11y-dev-us-west-2-byoc-0303"]
    )
' "$tmpdir/deploy-groups.json" >/dev/null

DEPLOY_GROUPS_FILE="$tmpdir/deploy-groups.json" \
bash "$ROOT/deployments/register-new-region.sh" \
  aws \
  dev \
  us-west-1 \
  us-west-1 \
  o11y-dev-regional-us-west-1 \
  false

jq -e '.dev.aws | any(.logical_region == "us-west-1" and .managedByOpsServer == "false")' "$tmpdir/deploy-groups.json" >/dev/null

echo "register-new-region tests passed"
