#!/bin/bash
# Script to test the Secret Discovery Service (SDS) API endpoints
SERVER="localhost:8080"
SECRET_NAME="test_server_cert"
SECRET_YAML=$(cat <<EOF
resources:
- "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret
name: test_server_cert
tls_certificate:
certificate_chain:
inline_string: |
# Placeholder for real certificate chain
-----BEGIN CERTIFICATE-----
MjAyNl9uaWNlbGlzdGVuZXJfY2VydGlmaWNhdGVfMg==
-----END CERTIFICATE-----
private_key:
inline_string: |
# Placeholder for real private key
-----BEGIN PRIVATE KEY-----
MjAyNl9zZWNyZXRfa2V5X2ZlYjA2bWMyMQ==
-----END PRIVATE KEY-----
EOF
)
# --- ESCAPING FOR ADD SECRET (CASE 1) ---
ESCAPED_YAML=$(echo "${SECRET_YAML}" | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
ESCAPED_YAML=${ESCAPED_YAML/inline_string: |/inline_string: |2\\n}
ESCAPED_YAML=${ESCAPED_YAML/private_key:\\n inline_string: |/private_key:\\n inline_string: |2\\n}
JSON_ADD_PAYLOAD="{\"YAML\": \"${ESCAPED_YAML}\"}"
# --- PAYLOAD FOR REMOVE SECRET (CASE 3) ---
JSON_REMOVE_PAYLOAD="{\"name\":\"${SECRET_NAME}\"}"
# -----------------------------------------------------------------------------
# Case 1: ADD a Secret
# -----------------------------------------------------------------------------
echo "š 1. Attempting to ADD Secret: ${SECRET_NAME}"
echo "COMMAND: curl -X POST \"${SERVER}/add-secret\" -H \"Content-Type: application/json\" -d '${JSON_ADD_PAYLOAD}'"
curl -X POST "${SERVER}/add-secret" \
-H "Content-Type: application/json" \
-d "${JSON_ADD_PAYLOAD}"
if [ $? -eq 0 ]; then
echo -e "\nā
ADD successful (check server logs for details)."
else
echo -e "\nā ADD FAILED."
fi
echo "---"
# -----------------------------------------------------------------------------
# Case 2: LIST / GET the Secret
# -----------------------------------------------------------------------------
echo "š 2. Attempting to LIST ALL Secrets"
echo "COMMAND: curl -X GET \"${SERVER}/list-secrets\""
curl -X GET "${SERVER}/list-secrets"
echo -e "\n---"
echo "š 2. Attempting to GET Secret by name: ${SECRET_NAME}"
echo "COMMAND: curl -X GET \"${SERVER}/get-secret?name=${SECRET_NAME}&format=yaml\""
curl -X GET "${SERVER}/get-secret?name=${SECRET_NAME}&format=yaml"
echo -e "\nā
LIST/GET requests sent."
echo "---"
# -----------------------------------------------------------------------------
# Case 3: REMOVE the Secret (FIXED: JSON payload for name)
# -----------------------------------------------------------------------------
echo "šļø 3. Attempting to REMOVE Secret: ${SECRET_NAME}"
# Print the corrected command
echo "COMMAND: curl -X POST \"${SERVER}/remove-secret\" -H \"Content-Type: application/json\" -d '${JSON_REMOVE_PAYLOAD}'"
# Execute the corrected command
curl -X POST "${SERVER}/remove-secret" \
-H "Content-Type: application/json" \
-d "${JSON_REMOVE_PAYLOAD}"
if [ $? -eq 0 ]; then
echo -e "\nā
REMOVE successful (check server logs for details)."
else
echo -e "\nā REMOVE FAILED."
fi
echo "---"
# -----------------------------------------------------------------------------
# Optional Verification: LIST after removal
# -----------------------------------------------------------------------------
echo "⨠Optional: LIST ALL Secrets after removal to verify cache update"
echo "COMMAND: curl -X GET \"${SERVER}/list-secrets\""
curl -X GET "${SERVER}/list-secrets"
echo -e "\n\nScript finished."