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

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
TMPDIR="$(mktemp -d)"
trap 'rm -rf "$TMPDIR"' EXIT

mkdir -p "$TMPDIR/deployments/cloud-addon" "$TMPDIR/deployments/lib"
cp "$ROOT/deployments/cloud-addon/deploy-with-ops.sh" "$TMPDIR/deployments/cloud-addon/deploy-with-ops.sh"
chmod +x "$TMPDIR/deployments/cloud-addon/deploy-with-ops.sh"

cat >"$TMPDIR/deployments/lib/lib.sh" <<'EOF'
resolve_managed_ops_api_base_url() {
  echo "https://ops.example.test"
}

prepare_bootstrap_ops_api() {
  :
}

resolve_effective_ops_api_base_url() {
  echo "$1"
}

read_chart_version() {
  echo "1.2.3"
}

create_or_update_helmrelease() {
  echo "$2|$3|$4|$5|$6" >>"${TEST_DEPLOY_WITH_OPS_LOG:?TEST_DEPLOY_WITH_OPS_LOG is required}"
}

wait_for_helmrelease_ready() {
  return 0
}
EOF

prepare_values() {
  local vendor="$1"
  local logical_region="$2"
  mkdir -p \
    "$TMPDIR/deployments/cloud-addon/ingress-nginx-write/envs/dev-${vendor}-${logical_region}" \
    "$TMPDIR/deployments/cloud-addon/ingress-nginx-read/envs/dev-${vendor}-${logical_region}"
  printf '{}\n' >"$TMPDIR/deployments/cloud-addon/ingress-nginx-write/envs/dev-${vendor}-${logical_region}/values.yaml"
  printf '{}\n' >"$TMPDIR/deployments/cloud-addon/ingress-nginx-read/envs/dev-${vendor}-${logical_region}/values.yaml"
}

prepare_values azure westus3-byoc-test
export TEST_DEPLOY_WITH_OPS_LOG="$TMPDIR/azure.log"
AUTH0_CLIENT_ID=client AUTH0_CLIENT_SECRET=secret \
  bash "$TMPDIR/deployments/cloud-addon/deploy-with-ops.sh" azure dev westus3 westus3-byoc-test test-cluster

grep -Fxq "ingress-nginx-write|kube-system|ingress-nginx|$TMPDIR/deployments/cloud-addon/ingress-nginx-write/envs/dev-azure-westus3-byoc-test/values.yaml|1.2.3" "$TEST_DEPLOY_WITH_OPS_LOG"
grep -Fxq "ingress-nginx-read|observability|ingress-nginx|$TMPDIR/deployments/cloud-addon/ingress-nginx-read/envs/dev-azure-westus3-byoc-test/values.yaml|1.2.3" "$TEST_DEPLOY_WITH_OPS_LOG"

prepare_values aws us-west-2-byoc-test
export TEST_DEPLOY_WITH_OPS_LOG="$TMPDIR/aws.log"
AUTH0_CLIENT_ID=client AUTH0_CLIENT_SECRET=secret \
  bash "$TMPDIR/deployments/cloud-addon/deploy-with-ops.sh" aws dev us-west-2 us-west-2-byoc-test test-cluster

grep -Fxq "ingress-nginx-write|kube-system|ingress-nginx|$TMPDIR/deployments/cloud-addon/ingress-nginx-write/envs/dev-aws-us-west-2-byoc-test/values.yaml|1.2.3" "$TEST_DEPLOY_WITH_OPS_LOG"
grep -Fxq "ingress-nginx-read|kube-system|ingress-nginx|$TMPDIR/deployments/cloud-addon/ingress-nginx-read/envs/dev-aws-us-west-2-byoc-test/values.yaml|1.2.3" "$TEST_DEPLOY_WITH_OPS_LOG"

echo "cloud-addon deploy-with-ops tests passed"
