Add n8n test mode toggle and edge function improvements

- Add test/production toggle for n8n webhook URLs in IntegrasiTab
- Update create-meet-link function to use database test_mode setting
- Add send-email-v2 edge function for Mailketing API integration
- Update daily-reminders and send-consultation-reminder to use send-email-v2
- Remove deprecated branding field from BrandingTab
- Update domain references from hub.dwindi.com to with.dwindi.com
- Add environment variables for Coolify deployment
- Add comprehensive edge function test script
- Update payment flow redirect to order detail page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
dwindown
2025-12-23 00:24:40 +07:00
parent f1cc2ba3f7
commit dfda71053c
11 changed files with 385 additions and 49 deletions

143
test-edge-functions.sh Executable file
View File

@@ -0,0 +1,143 @@
#!/bin/bash
# Test script for Supabase Edge Functions
# Make sure to set: export SUPABASE_ACCESS_TOKEN=your_service_role_key
# Configuration
SUPABASE_URL="https://lovable.backoffice.biz.id"
SERVICE_ROLE_KEY="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTc2NjAzNzEyMCwiZXhwIjo0OTIxNzEwNzIwLCJyb2xlIjoic2VydmljZV9yb2xlIn0.t6D9VwaukYGq4c_VbW1bkd3ZkKgldpCKRR13nN14XXc"
if [ -z "$SERVICE_ROLE_KEY" ]; then
echo "❌ Error: SUPABASE_ACCESS_TOKEN environment variable not set"
echo "Run: export SUPABASE_ACCESS_TOKEN=your_service_role_key"
exit 1
fi
echo "🚀 Testing Supabase Edge Functions"
echo "=================================="
echo "URL: $SUPABASE_URL"
echo ""
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Function to test API
test_function() {
local func_name=$1
local payload=$2
local expected_status=${3:-200}
echo -e "${YELLOW}Testing: $func_name${NC}"
echo "Payload: $payload"
response=$(curl -s -w "%{http_code}" \
-X POST "$SUPABASE_URL/rest/v1/functions" \
-H "Authorization: Bearer $SERVICE_ROLE_KEY" \
-H "apikey: $SERVICE_ROLE_KEY" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"$func_name\",
\"verify_jwt\": false
}")
# Extract status code (last 3 characters)
status_code="${response: -3}"
# Extract response body (everything except last 3 characters)
response_body="${response%???}"
if [ "$status_code" = "200" ] || [ "$status_code" = "201" ]; then
echo -e "${GREEN}✅ Success: $func_name${NC}"
echo "Response: $response_body"
else
echo -e "${RED}❌ Error: $func_name (Status: $status_code)${NC}"
echo "Response: $response_body"
fi
echo "----------------------------------------"
echo ""
}
# Test function invocation
test_invoke_function() {
local func_name=$1
local payload=$2
echo -e "${YELLOW}Invoking: $func_name${NC}"
response=$(curl -s -w "%{http_code}" \
-X POST "$SUPABASE_URL/functions/v1/$func_name" \
-H "Authorization: Bearer $SERVICE_ROLE_KEY" \
-H "Content-Type: application/json" \
-d "$payload")
# Extract status code (last 3 characters)
status_code="${response: -3}"
# Extract response body (everything except last 3 characters)
response_body="${response%???}"
if [ "$status_code" = "200" ]; then
echo -e "${GREEN}✅ Function executed successfully${NC}"
echo "Response: $response_body"
else
echo -e "${RED}❌ Function invocation failed (Status: $status_code)${NC}"
echo "Response: $response_body"
fi
echo "----------------------------------------"
echo ""
}
# 1. Test creating/updating functions
echo "📋 Testing Function Creation/Update"
echo ""
test_function "send-email-v2"
test_function "create-meet-link"
test_function "send-consultation-reminder"
test_function "daily-reminders"
test_function "pakasir-webhook"
# 2. Test function invocations
echo "🔧 Testing Function Invocations"
echo ""
# Test send-email-v2 (will fail without proper Mailketing token, but should reach the function)
test_invoke_function "send-email-v2" '{
"to": "dwinx.ramz@gmail.com",
"api_token": "b4d1beb302282f411d196146f6806eab",
"from_name": "Test Hub",
"from_email": "with@dwindi.com",
"subject": "Test Email",
"html_body": "<h1>Test Email</h1><p>This is a test from send-email-v2</p>"
}'
# Test create-meet-link (will fail without proper n8n webhook, but should reach the function)
# Note: Will use webhook path based on integration_n8n_test_mode setting
test_invoke_function "create-meet-link" '{
"slot_id": "test-slot-123",
"date": "2025-12-23",
"start_time": "14:00:00",
"end_time": "15:00:00",
"client_name": "Test Client",
"client_email": "dewe.pw@gmail.com",
"topic": "Test Topic",
"notes": "Test notes"
}'
# Test daily-reminders (should work with database queries)
test_invoke_function "daily-reminders" '{}'
echo "✨ Testing Complete!"
echo ""
echo "📝 Notes:"
echo "- send-email-v2: Needs valid Mailketing API token to actually send emails"
echo "- create-meet-link: Needs n8n webhook configured in platform_settings"
echo " - Will use /webhook-test/ if integration_n8n_test_mode is enabled"
echo " - Will use /webhook/ if integration_n8n_test_mode is disabled"
echo "- Functions are deployed and accessible via the functions/v1/ endpoint"
echo ""
echo "🌐 Function URLs:"
echo "- https://lovable.backoffice.biz.id/functions/v1/send-email-v2"
echo "- https://lovable.backoffice.biz.id/functions/v1/create-meet-link"
echo "- https://lovable.backoffice.biz.id/functions/v1/daily-reminders"