Newer
Older
EnvoyControlPlane / test / test_extension_config_operation.sh
#!/bin/bash
# Script to test the ExtensionConfig CRUD API endpoints
SERVER="localhost:8080"
EXT_CONFIG_NAME="test_lua_filter"

# Define the ExtensionConfig YAML
EXT_CONFIG_YAML=$(cat <<EOF
resources:
- "@type": type.googleapis.com/envoy.config.core.v3.TypedExtensionConfig
  name: ${EXT_CONFIG_NAME}
  typed_config:
    "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
    inline_code: |
      function envoy_on_request(request_handle)
        request_handle:headers():add("x-lua-filter", "applied")
        request_handle:logInfo("Lua filter '${EXT_CONFIG_NAME}' applied.")
      end
EOF
)

# --- ESCAPING FOR ADD EXTENSION CONFIG (CASE 1) ---
# Escape double quotes and newlines
ESCAPED_YAML=$(echo "${EXT_CONFIG_YAML}" | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g')
JSON_ADD_PAYLOAD="{\"YAML\": \"${ESCAPED_YAML}\", \"Name\": \"${EXT_CONFIG_NAME}\", \"Upsert\": true}"

# --- PAYLOAD FOR REMOVE EXTENSION CONFIG (CASE 3) ---
JSON_REMOVE_PAYLOAD="{\"name\":\"${EXT_CONFIG_NAME}\"}"


# -----------------------------------------------------------------------------
# Case 1: ADD a ExtensionConfig (Create/Update)
# -----------------------------------------------------------------------------
echo "šŸš€ 1. Attempting to ADD ExtensionConfig: ${EXT_CONFIG_NAME}"
curl -X POST "${SERVER}/add-extensionconfig" \
     -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 ExtensionConfig (Read)
# -----------------------------------------------------------------------------
echo "šŸ“ 2. Attempting to LIST ALL ExtensionConfigs"
curl -X GET "${SERVER}/list-extensionconfigs"

echo -e "\n---"

echo "šŸ”Ž 2. Attempting to GET ExtensionConfig by name: ${EXT_CONFIG_NAME}"
curl -X GET "${SERVER}/get-extensionconfig?name=${EXT_CONFIG_NAME}&format=yaml"

echo -e "\nāœ… LIST/GET requests sent."
echo "---"

# -----------------------------------------------------------------------------
# Case 3: REMOVE the ExtensionConfig (Delete)
# -----------------------------------------------------------------------------
echo "šŸ—‘ļø 3. Attempting to REMOVE ExtensionConfig: ${EXT_CONFIG_NAME}"
curl -X POST "${SERVER}/remove-extensionconfig" \
     -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 ExtensionConfigs after removal to verify cache update"
curl -X GET "${SERVER}/list-extensionconfigs"
echo -e "\n\nScript finished."