#!/bin/bash # Test Products API with curl API_URL="http://localhost:5000/api" SESSION_FILE="/tmp/skyart_session.txt" echo "============================================================" echo " PRODUCTS API TEST - Color Variants & Rich Text" echo "============================================================" echo "" # Test 1: Login echo "🔐 Test 1: Login..." LOGIN_RESPONSE=$(curl -s -c "$SESSION_FILE" -X POST "$API_URL/admin/login" \ -H "Content-Type: application/json" \ -d '{"email":"admin@example.com","password":"admin123"}') if echo "$LOGIN_RESPONSE" | grep -q '"success":true'; then echo "✅ Login successful" else echo "❌ Login failed" echo "$LOGIN_RESPONSE" exit 1 fi echo "" # Test 2: Create Product echo "📦 Test 2: Creating product with color variants..." CREATE_RESPONSE=$(curl -s -b "$SESSION_FILE" -X POST "$API_URL/admin/products" \ -H "Content-Type: application/json" \ -d '{ "name": "Test Sunset Canvas Art", "shortdescription": "Beautiful hand-painted sunset artwork", "description": "

This stunning piece captures the beauty of a vibrant sunset.

", "price": 249.99, "stockquantity": 10, "category": "Canvas Art", "sku": "ART-TEST-001", "weight": 2.5, "dimensions": "24x36 inches", "material": "Acrylic on Canvas", "isactive": true, "isfeatured": true, "isbestseller": false, "images": [ { "image_url": "/uploads/test-sunset-main.jpg", "color_variant": "Original", "alt_text": "Sunset Canvas - Main", "display_order": 0, "is_primary": true }, { "image_url": "/uploads/test-sunset-blue.jpg", "color_variant": "Ocean Blue", "alt_text": "Sunset Canvas - Blue", "display_order": 1 }, { "image_url": "/uploads/test-sunset-warm.jpg", "color_variant": "Warm Tones", "alt_text": "Sunset Canvas - Warm", "display_order": 2 } ] }') PRODUCT_ID=$(echo "$CREATE_RESPONSE" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) if [ -n "$PRODUCT_ID" ]; then echo "✅ Product created successfully" echo " Product ID: $PRODUCT_ID" IMAGE_COUNT=$(echo "$CREATE_RESPONSE" | grep -o '"image_url"' | wc -l) echo " Images: $IMAGE_COUNT" else echo "❌ Product creation failed" echo "$CREATE_RESPONSE" | head -50 exit 1 fi echo "" # Test 3: Get Product echo "📖 Test 3: Fetching product details..." GET_RESPONSE=$(curl -s -b "$SESSION_FILE" "$API_URL/admin/products/$PRODUCT_ID") if echo "$GET_RESPONSE" | grep -q '"success":true'; then echo "✅ Product retrieved successfully" echo " Name: $(echo "$GET_RESPONSE" | grep -o '"name":"[^"]*"' | head -1 | cut -d'"' -f4)" echo " Price: $(echo "$GET_RESPONSE" | grep -o '"price":"[^"]*"' | head -1 | cut -d'"' -f4)" echo " Color variants:" echo "$GET_RESPONSE" | grep -o '"color_variant":"[^"]*"' | cut -d'"' -f4 | while read variant; do echo " - $variant" done else echo "❌ Failed to retrieve product" fi echo "" # Test 4: Update Product echo "✏️ Test 4: Updating product..." UPDATE_RESPONSE=$(curl -s -b "$SESSION_FILE" -X PUT "$API_URL/admin/products/$PRODUCT_ID" \ -H "Content-Type: application/json" \ -d '{ "price": 199.99, "stockquantity": 15, "isbestseller": true }') if echo "$UPDATE_RESPONSE" | grep -q '"success":true'; then echo "✅ Product updated successfully" echo " New price: $(echo "$UPDATE_RESPONSE" | grep -o '"price":"[^"]*"' | head -1 | cut -d'"' -f4)" else echo "❌ Product update failed" fi echo "" # Test 5: List Products echo "📋 Test 5: Listing all products..." LIST_RESPONSE=$(curl -s -b "$SESSION_FILE" "$API_URL/admin/products") PRODUCT_COUNT=$(echo "$LIST_RESPONSE" | grep -o '"id"' | wc -l) echo "✅ Found $PRODUCT_COUNT products" echo "" # Test 6: Public API echo "🌐 Test 6: Testing public API..." PUBLIC_RESPONSE=$(curl -s "$API_URL/products/$PRODUCT_ID") if echo "$PUBLIC_RESPONSE" | grep -q '"success":true'; then echo "✅ Public product retrieved" echo " Available color variants:" echo "$PUBLIC_RESPONSE" | grep -o '"color_variant":"[^"]*"' | cut -d'"' -f4 | sort -u | while read variant; do echo " - $variant" done else echo "❌ Failed to retrieve public product" fi echo "" # Test 7: Delete Product echo "🗑️ Test 7: Cleaning up test product..." DELETE_RESPONSE=$(curl -s -b "$SESSION_FILE" -X DELETE "$API_URL/admin/products/$PRODUCT_ID") if echo "$DELETE_RESPONSE" | grep -q '"success":true'; then echo "✅ Test product deleted" else echo "❌ Product deletion failed" fi echo "" # Cleanup rm -f "$SESSION_FILE" echo "============================================================" echo " ALL TESTS COMPLETED SUCCESSFULLY! ✅" echo "============================================================" echo "" echo "Features Verified:" echo " ✅ Product creation with color variants" echo " ✅ Rich text HTML description" echo " ✅ Multiple images per product" echo " ✅ Color variant assignments" echo " ✅ Active/Featured/Bestseller flags" echo " ✅ Product metadata (SKU, weight, dimensions, material)" echo " ✅ Product updates" echo " ✅ Public API access" echo " ✅ Product deletion with cascade" echo ""