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

script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
test_root="$(mktemp -d)"
trap 'rm -rf "$test_root"' EXIT

mkdir -p "$test_root/module/.terraform"

export TF_MODULE_DIR="$test_root/module"
export STATE_BUCKET="test-state-bucket"
export STATE_KEY="test/aws/terraform.tfstate"
export STATE_REGION="us-west-2"
export AWS_PROFILE="test-profile"
export STATE_USE_LOCKFILE="true"

jq -n \
  --arg bucket "$STATE_BUCKET" \
  --arg key "$STATE_KEY" \
  --arg region "$STATE_REGION" \
  --arg profile "$AWS_PROFILE" \
  '{backend: {type: "s3", config: {
    bucket: $bucket,
    key: $key,
    region: $region,
    profile: $profile,
    use_lockfile: true
  }}}' >"$TF_MODULE_DIR/.terraform/terraform.tfstate"

"$script_dir/terraform-backend-is-current.sh"

if STATE_KEY="test/other/terraform.tfstate" \
  "$script_dir/terraform-backend-is-current.sh"; then
  echo "mismatched backend metadata was accepted" >&2
  exit 1
fi

rm "$TF_MODULE_DIR/.terraform/terraform.tfstate"
if "$script_dir/terraform-backend-is-current.sh"; then
  echo "missing backend metadata was accepted" >&2
  exit 1
fi

echo "Terraform backend metadata checks passed."
