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

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
workflow="$ROOT/.github/workflows/cloud-addon-cd.yaml"

yq -e '.jobs.prepare.outputs | has("OPS_API_BASE_URL")' "$workflow" >/dev/null
grep -Fq 'map(select(.isByoc != \"true\" or .managedByOpsServer == \"true\"))' "$workflow"
yq -e '.jobs."deploy-to-aws".steps[] | select(.id == "parse_group").run | contains("is_byoc=")' "$workflow" >/dev/null
yq -e '.jobs."deploy-to-aws".steps[] | select(.id == "parse_group").run | contains("skip_cluster_access=true")' "$workflow" >/dev/null
yq -e '.jobs."deploy-to-aws".steps[] | select(.name == "install AWS-Cli").if == "steps.parse_group.outputs.cluster != '\'''\'' && steps.parse_group.outputs.region != '\'''\'' && steps.parse_group.outputs.skip_cluster_access != '\''true'\''"' "$workflow" >/dev/null
yq -e '.jobs."deploy-to-aws".steps[] | select(.name == "K8s apply").env.ISBYOC == "${{ steps.parse_group.outputs.is_byoc }}"' "$workflow" >/dev/null
run_script="$(yq -r '.jobs."deploy-to-aws".steps[] | select(.name == "K8s apply").run' "$workflow")"
expected_run=$'bash deploy.sh \\\naws \\\n${{ needs.prepare.outputs.ENV }} \\\n${{ steps.parse_group.outputs.region }} \\\n${{ steps.parse_group.outputs.logical_region }} \\\n${{ steps.parse_group.outputs.is_byoc }}'
[[ "$run_script" == *"$expected_run"* ]]

echo "cloud-addon-cd workflow contract tests passed"
