#!/usr/bin/env bash
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0


# The Vault smoke test to verify the Vault version installed

set -e

fail() {
  echo "$1" 1>&2
  exit 1
}

if [[ "${CHECK_BUILD_DATE}" == "false" ]]; then
  expected_build_date=""
else
  cfg_build_date="${BUILD_DATE}"
  if [[ "${cfg_build_date}" == "" ]]; then
    cfg_build_date=$(echo "${VAULT_STATUS}" | jq -Mr .build_date)
  fi
  expected_build_date=", built $cfg_build_date"
fi

vault_expected_version="Vault v${EXPECTED_VERSION} (${VAULT_REVISION})"

case "${VAULT_EDITION}" in
  ce) version_expected="${vault_expected_version}${expected_build_date}";;
  ent) version_expected="${vault_expected_version}${expected_build_date}";;
  ent.hsm) version_expected="${vault_expected_version}${expected_build_date} (cgo)";;
  ent.fips1402) version_expected="${vault_expected_version}${expected_build_date} (cgo)" ;;
  ent.hsm.fips1402) version_expected="${vault_expected_version}${expected_build_date} (cgo)" ;;
  *) fail "(${VAULT_EDITION}) does not match any known Vault editions"
esac

version_expected_nosha=$(echo "$version_expected" | awk '!($3="")' | sed 's/  / /' | sed -e 's/[[:space:]]*$//')

if [[ "${ACTUAL_VERSION}" == "$version_expected_nosha" ]] || [[ "${ACTUAL_VERSION}" == "$version_expected" ]]; then
  echo "Version verification succeeded!"
else
  echo "Version checking enabled: ${CHECK_BUILD_DATE}" 1>&2
  echo "Given build date: ${BUILD_DATE}" 1>&2
  echo "Interpreted build date: ${cfg_build_date}" 1>&2

  fail "expected Version=$version_expected or $version_expected_nosha, got: ${ACTUAL_VERSION}"
fi
