#!/bin/bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck source=scripts/init-public-api-base-url.sh . "${SCRIPT_DIR}/init-public-api-base-url.sh" TMP_DIR="$(mktemp -d)" trap 'rm -rf "$TMP_DIR"' EXIT fail() { echo "FAIL: $*" >&2 exit 1 } assert_env_value() { local file="$1" local expected="$2" local actual actual="$(public_url_read_env_value "$file" "CONFIG_PUBLIC_API_BASE_URL")" [ "$actual" = "$expected" ] || fail "expected $expected, got $actual" } write_env() { local file="$1" shift printf '%s\n' "$@" > "$file" } existing="$TMP_DIR/existing.env" write_env "$existing" \ "CONFIG_PUBLIC_API_BASE_URL=https://existing.example.com:8443/api" \ "NUXT_PUBLIC_BASE_APIURL=/api" init_public_api_base_url "$existing" upgrade >/dev/null assert_env_value "$existing" "https://existing.example.com:8443/api" absolute="$TMP_DIR/absolute.env" write_env "$absolute" \ "CONFIG_PUBLIC_API_BASE_URL=" \ "NUXT_PUBLIC_BASE_APIURL=http://10.0.0.8:4100" init_public_api_base_url "$absolute" upgrade >/dev/null assert_env_value "$absolute" "http://10.0.0.8:4100" websocket="$TMP_DIR/websocket.env" write_env "$websocket" \ "CONFIG_PUBLIC_API_BASE_URL=" \ "NUXT_PUBLIC_BASE_APIURL=/api" \ "NUXT_PUBLIC_BASE_SOCKETURL=wss://demo.example.com/socket.io" init_public_api_base_url "$websocket" upgrade >/dev/null assert_env_value "$websocket" "https://demo.example.com/api" security_origin="$TMP_DIR/security-origin.env" write_env "$security_origin" \ "CONFIG_PUBLIC_API_BASE_URL=" \ "NUXT_PUBLIC_BASE_APIURL=/api" \ "NUXT_PUBLIC_BASE_SOCKETURL=" \ "CONFIG_SECURITY_ORIGIN=http://demo.example.com,https://demo.example.com" init_public_api_base_url "$security_origin" upgrade >/dev/null assert_env_value "$security_origin" "http://demo.example.com/api" file_override="$TMP_DIR/file-override.env" write_env "$file_override" \ "CONFIG_PUBLIC_API_BASE_URL=" \ "DEPLOY_PUBLIC_API_BASE_URL=https://proxy.example.com:9443/custom-api" \ "NUXT_PUBLIC_BASE_APIURL=/api" init_public_api_base_url "$file_override" upgrade >/dev/null assert_env_value "$file_override" "https://proxy.example.com:9443/custom-api" explicit_override="$TMP_DIR/explicit-override.env" write_env "$explicit_override" \ "CONFIG_PUBLIC_API_BASE_URL=" \ "NUXT_PUBLIC_BASE_APIURL=/api" init_public_api_base_url "$explicit_override" configure "http://192.168.1.20:4567" >/dev/null assert_env_value "$explicit_override" "http://192.168.1.20:4567" invalid="$TMP_DIR/invalid.env" write_env "$invalid" \ "CONFIG_PUBLIC_API_BASE_URL=ftp://bad.example.com/api" \ "NUXT_PUBLIC_BASE_APIURL=https://good.example.com/api" if init_public_api_base_url "$invalid" upgrade >/dev/null 2>&1; then fail "invalid existing CONFIG_PUBLIC_API_BASE_URL must block startup" fi unresolved="$TMP_DIR/unresolved.env" write_env "$unresolved" \ "CONFIG_PUBLIC_API_BASE_URL=" \ "NUXT_PUBLIC_BASE_APIURL=/api" if init_public_api_base_url "$unresolved" upgrade >/dev/null 2>&1; then fail "unresolved public API URL must block startup" fi echo "Public API base URL shell tests passed"