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

: "${TF_MODULE_DIR:?}"

sas_token="$(terraform -chdir="$TF_MODULE_DIR" output -json service_credentials | jq -er '.azure_blob.sas_token')"
storage_account="$(terraform -chdir="$TF_MODULE_DIR" output -json object_storage | jq -er '.account_name')"
sas_token="${sas_token#\?}"
blob_name="smoke/terraform-sas-validation"

cleanup() {
  az storage blob delete \
    --account-name "$storage_account" \
    --container-name cdc \
    --name "$blob_name" \
    --sas-token "$sas_token" \
    --only-show-errors >/dev/null 2>&1 || true
  unset sas_token
}
trap cleanup EXIT

az storage blob upload \
  --account-name "$storage_account" \
  --container-name cdc \
  --name "$blob_name" \
  --file /etc/hostname \
  --overwrite true \
  --sas-token "$sas_token" \
  --only-show-errors >/dev/null

count="$(az storage blob list \
  --account-name "$storage_account" \
  --container-name cdc \
  --prefix "$blob_name" \
  --sas-token "$sas_token" \
  --query 'length(@)' \
  --output tsv \
  --only-show-errors)"
[[ "$count" == 1 ]]

cleanup
trap - EXIT
echo "Azure SAS write/list/delete smoke passed."
