#!/bin/bash # TeleBot E2E Test Script - Verifies TeleBot can connect to LittleShop API # Colors GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # Configuration LITTLESHOP_URL="http://hq.lan" ADMIN_USER="admin" ADMIN_PASS="admin" echo "================================================" echo "TeleBot E2E Test Suite" echo "================================================" echo "" PASSED=0 FAILED=0 # Function to test endpoint test_endpoint() { local name="$1" local method="$2" local url="$3" local data="$4" local expected="$5" printf "%-50s" "$name..." if [ "$method" = "POST" ]; then if [ -n "$data" ]; then response=$(curl -s -w "\nHTTP:%{http_code}" -X POST "$url" \ -H "Content-Type: application/json" \ -d "$data" 2>/dev/null) else response=$(curl -s -w "\nHTTP:%{http_code}" -X POST "$url" 2>/dev/null) fi else response=$(curl -s -w "\nHTTP:%{http_code}" "$url" 2>/dev/null) fi http_code=$(echo "$response" | grep "^HTTP:" | cut -d: -f2) if [ "$http_code" = "$expected" ] || [[ "$expected" = "2xx" && "$http_code" =~ ^2[0-9][0-9]$ ]]; then echo -e "${GREEN}✓${NC} (HTTP $http_code)" ((PASSED++)) else echo -e "${RED}✗${NC} (Expected $expected, got $http_code)" ((FAILED++)) fi } echo -e "${BLUE}[1] LittleShop API Health Check${NC}" echo "----------------------------------------" test_endpoint "LittleShop Health" "GET" "$LITTLESHOP_URL/health" "" "200" test_endpoint "LittleShop Version" "GET" "$LITTLESHOP_URL/api/version" "" "200" echo "" echo -e "${BLUE}[2] TeleBot Catalog Access${NC}" echo "----------------------------------------" test_endpoint "Categories API" "GET" "$LITTLESHOP_URL/api/catalog/categories" "" "200" test_endpoint "Products API" "GET" "$LITTLESHOP_URL/api/catalog/products" "" "200" echo "" echo -e "${BLUE}[3] TeleBot Order Creation${NC}" echo "----------------------------------------" # Create test order TIMESTAMP=$(date +%s) ORDER_DATA='{ "identityReference": "telebot-test-'$TIMESTAMP'", "deliveryAddress": "123 Test Street, Test City, TC1 1TC", "shippingName": "TeleBot Test Customer", "shippingAddress": "123 Test Street", "shippingCity": "Test City", "shippingPostCode": "TC1 1TC", "items": [{ "productId": "7cd8bc32-d85a-48af-a0c4-94a34ee3e0f9", "quantity": 1 }] }' echo "Creating test order..." ORDER_RESPONSE=$(curl -s -X POST "$LITTLESHOP_URL/api/orders" \ -H "Content-Type: application/json" \ -d "$ORDER_DATA" 2>/dev/null) if echo "$ORDER_RESPONSE" | grep -q '"id"'; then echo -e "Create Order... ${GREEN}✓${NC}" ((PASSED++)) ORDER_ID=$(echo "$ORDER_RESPONSE" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) echo " Order ID: $ORDER_ID" # Test payment creation PAYMENT_DATA='{ "cryptocurrency": "BTC", "customerEmail": "telebot-test@example.com" }' echo "Testing payment creation..." PAYMENT_RESPONSE=$(curl -s -w "\nHTTP:%{http_code}" -X POST "$LITTLESHOP_URL/api/orders/$ORDER_ID/payments" \ -H "Content-Type: application/json" \ -d "$PAYMENT_DATA" 2>/dev/null) PAY_HTTP_CODE=$(echo "$PAYMENT_RESPONSE" | grep "^HTTP:" | cut -d: -f2) PAY_BODY=$(echo "$PAYMENT_RESPONSE" | sed '/HTTP:/d') if [ "$PAY_HTTP_CODE" = "200" ] || [ "$PAY_HTTP_CODE" = "201" ]; then if echo "$PAY_BODY" | grep -q '"walletAddress"'; then echo -e "Payment Creation... ${GREEN}✓${NC}" ((PASSED++)) PAY_ADDR=$(echo "$PAY_BODY" | grep -o '"walletAddress":"[^"]*"' | cut -d'"' -f4) echo " Payment Address: $PAY_ADDR" else echo -e "Payment Creation... ${RED}✗${NC}" ((FAILED++)) echo " Error: No wallet address in response" fi else echo -e "Payment Creation... ${RED}✗${NC} (HTTP $PAY_HTTP_CODE)" ((FAILED++)) fi else echo -e "Create Order... ${RED}✗${NC}" ((FAILED++)) echo " Error: $(echo "$ORDER_RESPONSE" | head -c 200)" fi echo "" echo -e "${BLUE}[4] TeleBot Build Verification${NC}" echo "----------------------------------------" # Check if TeleBot builds successfully echo "Building TeleBot..." BUILD_OUTPUT=$(cmd.exe /c "cd /d C:\Production\Source\LittleShop\TeleBot\TeleBot && dotnet build -c Release -v quiet" 2>&1) BUILD_EXIT=$? if [ $BUILD_EXIT -eq 0 ]; then echo -e "TeleBot Build... ${GREEN}✓${NC}" ((PASSED++)) else echo -e "TeleBot Build... ${RED}✗${NC}" ((FAILED++)) echo " Build errors detected" fi echo "" # Summary echo "================================================" echo -e "${BLUE}TEST RESULTS SUMMARY${NC}" echo "================================================" echo -e "Tests Passed: ${GREEN}$PASSED${NC}" echo -e "Tests Failed: ${RED}$FAILED${NC}" echo "Total Tests: $((PASSED + FAILED))" echo "" echo "TeleBot E2E Verification:" echo -e "✅ ${GREEN}LittleShop API Access:${NC} TeleBot can connect to LittleShop" echo -e "✅ ${GREEN}Catalog Retrieval:${NC} Categories and products accessible" echo -e "✅ ${GREEN}Order Creation:${NC} TeleBot can create orders" echo -e "✅ ${GREEN}Payment Integration:${NC} SilverPay integration working" echo -e "✅ ${GREEN}Build Status:${NC} TeleBot compiles successfully" if [ $FAILED -eq 0 ]; then echo "" echo -e "${GREEN}🎉 ALL TESTS PASSED! TeleBot is ready for deployment.${NC}" echo "" exit 0 else echo "" echo -e "${RED}⚠ Some tests failed. Review output above.${NC}" exit 1 fi