#!/bin/bash # Simple Integration Test Script for LittleShop, TeleBot, and SilverPay # Tests production endpoints with better error handling # Configuration LITTLESHOP_URL="https://admin.thebankofdebbie.giize.com" SILVERPAY_URL="https://pay.thebankofdebbie.giize.com" TIMEOUT=10 echo "================================================" echo "Integration Test Suite - Simple Version" echo "================================================" echo "LittleShop: $LITTLESHOP_URL" echo "SilverPay: $SILVERPAY_URL" echo "Timeout: ${TIMEOUT}s per request" echo "================================================" echo "" # Function to test an endpoint test_endpoint() { local name="$1" local url="$2" local method="$3" local data="$4" local headers="$5" echo "Testing: $name" echo " URL: $url" echo " Method: $method" if [ "$method" = "POST" ]; then if [ ! -z "$data" ]; then response=$(curl -s -w "\nHTTP_CODE:%{http_code}" \ --connect-timeout $TIMEOUT \ --max-time $TIMEOUT \ -X POST "$url" \ -H "Content-Type: application/json" \ -d "$data" \ 2>&1) else response=$(curl -s -w "\nHTTP_CODE:%{http_code}" \ --connect-timeout $TIMEOUT \ --max-time $TIMEOUT \ -X POST "$url" \ 2>&1) fi else response=$(curl -s -w "\nHTTP_CODE:%{http_code}" \ --connect-timeout $TIMEOUT \ --max-time $TIMEOUT \ "$url" \ -H "Accept: application/json" \ 2>&1) fi # Extract HTTP code http_code=$(echo "$response" | grep "HTTP_CODE:" | cut -d: -f2) if [ -z "$http_code" ]; then echo " Result: TIMEOUT or CONNECTION ERROR" echo " Error: $(echo "$response" | head -5)" else echo " Result: HTTP $http_code" # Show first 200 chars of body if successful if [[ "$http_code" =~ ^2[0-9][0-9]$ ]]; then body=$(echo "$response" | sed '/HTTP_CODE:/d' | head -c 200) echo " Body preview: $body..." fi fi echo "" } echo "=== TEST 1: LittleShop Admin Login ===" echo "----------------------------------------" # First try a simple GET to see if the site is accessible test_endpoint "LittleShop Home" "$LITTLESHOP_URL" "GET" # Test admin login with form data echo "Testing: Admin Login POST" echo " URL: $LITTLESHOP_URL/Admin/Account/Login" response=$(curl -s -w "\nHTTP_CODE:%{http_code}" \ --connect-timeout $TIMEOUT \ --max-time $TIMEOUT \ -X POST "$LITTLESHOP_URL/Admin/Account/Login" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "Username=admin&Password=admin" \ -c "/tmp/cookies.txt" \ -L \ 2>&1) http_code=$(echo "$response" | grep "HTTP_CODE:" | cut -d: -f2) if [ -z "$http_code" ]; then echo " Result: TIMEOUT or CONNECTION ERROR" else echo " Result: HTTP $http_code (expecting 302 or 200)" fi echo "" echo "=== TEST 2: TeleBot-LittleShop Communication ===" echo "----------------------------------------" test_endpoint "Categories API" "$LITTLESHOP_URL/api/catalog/categories" "GET" test_endpoint "Products API" "$LITTLESHOP_URL/api/catalog/products" "GET" echo "=== TEST 3: SilverPay Operations ===" echo "----------------------------------------" test_endpoint "SilverPay Wallets" "$SILVERPAY_URL/api/wallets" "GET" test_endpoint "SilverPay Orders List" "$SILVERPAY_URL/api/orders" "GET" # Test order creation with JSON payload order_payload='{ "amount": 10.00, "currency": "GBP", "description": "Integration Test Order", "customer_email": "test@integration.com" }' test_endpoint "SilverPay Create Order" "$SILVERPAY_URL/api/orders" "POST" "$order_payload" echo "=== TEST 4: LittleShop-SilverPay Integration ===" echo "----------------------------------------" # Create order in LittleShop littleshop_order='{ "customerIdentity": "test-customer-001", "deliveryAddress": "123 Test Street, Test City, TC1 1TC", "items": [{ "productId": "00000000-0000-0000-0000-000000000001", "quantity": 1 }] }' test_endpoint "LittleShop Create Order" "$LITTLESHOP_URL/api/orders" "POST" "$littleshop_order" echo "================================================" echo "Test Suite Complete" echo "================================================" echo "" echo "Note: Check HTTP status codes above:" echo " - 200/201 = Success" echo " - 302 = Redirect (often success for login)" echo " - 400 = Bad Request" echo " - 401 = Unauthorized" echo " - 404 = Not Found" echo " - 500 = Server Error" echo " - TIMEOUT = Connection issue or slow response"