littleshop/add-variations.sh
SysAdmin 553088390e Remove BTCPay completely, integrate SilverPAY only, configure TeleBot with real token
- Removed all BTCPay references from services and configuration
- Implemented SilverPAY as sole payment provider (no fallback)
- Fixed JWT authentication with proper key length (256+ bits)
- Added UsersController with full CRUD operations
- Updated User model with Email and Role properties
- Configured TeleBot with real Telegram bot token
- Fixed launchSettings.json with JWT environment variable
- E2E tests passing for authentication, catalog, orders
- Payment creation pending SilverPAY server fix

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-20 19:22:29 +01:00

163 lines
5.0 KiB
Bash

#!/bin/bash
# Add product variations test data via API
API_URL="http://localhost:8080/api"
# First, login to get JWT token
echo "Logging in to get JWT token..."
TOKEN=$(curl -s -X POST "$API_URL/auth/login" \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}' | \
jq -r '.token')
if [ -z "$TOKEN" ] || [ "$TOKEN" == "null" ]; then
echo "Failed to login! Exiting."
exit 1
fi
echo "Successfully authenticated!"
AUTH_HEADER="Authorization: Bearer $TOKEN"
# Get all products to add variations
echo "Fetching existing products..."
PRODUCTS=$(curl -s -X GET "$API_URL/catalog/products" \
-H "$AUTH_HEADER" | jq -r '.items[]')
# Function to add variation to a product
add_variation() {
local product_id=$1
local quantity=$2
local price=$3
local description=$4
echo "Adding variation: $description (Quantity: $quantity, Price: £$price) to product $product_id"
curl -X POST "$API_URL/products/$product_id/variations" \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
-d "{
\"productId\": \"$product_id\",
\"quantity\": $quantity,
\"price\": $price,
\"description\": \"$description\"
}"
}
# Add some sample products first if needed
echo "Creating sample products with variations..."
# Product 1: Premium CBD Oil
PRODUCT_1=$(curl -s -X POST "$API_URL/products" \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
-d '{
"name": "Premium CBD Oil 1000mg",
"description": "High-quality full-spectrum CBD oil for wellness and relaxation",
"price": 45.00,
"stock": 100,
"weight": 100,
"weightUnit": "Grams",
"categoryId": null,
"isActive": true
}' | jq -r '.id')
if [ ! -z "$PRODUCT_1" ] && [ "$PRODUCT_1" != "null" ]; then
add_variation "$PRODUCT_1" 1 45.00 "Single Bottle"
add_variation "$PRODUCT_1" 2 85.00 "Twin Pack - Save £5"
add_variation "$PRODUCT_1" 3 120.00 "Triple Pack - Save £15"
add_variation "$PRODUCT_1" 6 220.00 "Six Pack - Save £50"
fi
# Product 2: Organic Green Tea
PRODUCT_2=$(curl -s -X POST "$API_URL/products" \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
-d '{
"name": "Organic Japanese Green Tea",
"description": "Premium matcha green tea imported directly from Japan",
"price": 12.00,
"stock": 200,
"weight": 50,
"weightUnit": "Grams",
"categoryId": null,
"isActive": true
}' | jq -r '.id')
if [ ! -z "$PRODUCT_2" ] && [ "$PRODUCT_2" != "null" ]; then
add_variation "$PRODUCT_2" 1 12.00 "50g Pack"
add_variation "$PRODUCT_2" 3 33.00 "3x50g Bundle - Save £3"
add_variation "$PRODUCT_2" 5 50.00 "5x50g Bundle - Save £10"
add_variation "$PRODUCT_2" 10 90.00 "10x50g Bulk - Save £30"
fi
# Product 3: Artisan Chocolate Box
PRODUCT_3=$(curl -s -X POST "$API_URL/products" \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
-d '{
"name": "Artisan Dark Chocolate Collection",
"description": "Handcrafted Belgian dark chocolate with various cocoa percentages",
"price": 18.00,
"stock": 50,
"weight": 200,
"weightUnit": "Grams",
"categoryId": null,
"isActive": true
}' | jq -r '.id')
if [ ! -z "$PRODUCT_3" ] && [ "$PRODUCT_3" != "null" ]; then
add_variation "$PRODUCT_3" 1 18.00 "Single Box (12 pieces)"
add_variation "$PRODUCT_3" 2 34.00 "Double Box - Save £2"
add_variation "$PRODUCT_3" 4 65.00 "Family Pack - Save £7"
add_variation "$PRODUCT_3" 12 180.00 "Case of 12 - Save £36"
fi
# Product 4: Natural Honey
PRODUCT_4=$(curl -s -X POST "$API_URL/products" \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
-d '{
"name": "Raw Wildflower Honey",
"description": "Pure, unprocessed honey from local beekeepers",
"price": 8.50,
"stock": 150,
"weight": 340,
"weightUnit": "Grams",
"categoryId": null,
"isActive": true
}' | jq -r '.id')
if [ ! -z "$PRODUCT_4" ] && [ "$PRODUCT_4" != "null" ]; then
add_variation "$PRODUCT_4" 1 8.50 "340g Jar"
add_variation "$PRODUCT_4" 3 24.00 "3-Jar Set - Save £1.50"
add_variation "$PRODUCT_4" 6 45.00 "Half Dozen - Save £6"
fi
# Product 5: Essential Oil Set
PRODUCT_5=$(curl -s -X POST "$API_URL/products" \
-H "$AUTH_HEADER" \
-H "Content-Type: application/json" \
-d '{
"name": "Lavender Essential Oil",
"description": "100% pure therapeutic-grade lavender essential oil",
"price": 15.00,
"stock": 80,
"weight": 30,
"weightUnit": "Milliliters",
"categoryId": null,
"isActive": true
}' | jq -r '.id')
if [ ! -z "$PRODUCT_5" ] && [ "$PRODUCT_5" != "null" ]; then
add_variation "$PRODUCT_5" 1 15.00 "30ml Bottle"
add_variation "$PRODUCT_5" 2 28.00 "Twin Pack - Save £2"
add_variation "$PRODUCT_5" 5 65.00 "5-Pack Bundle - Save £10"
fi
echo ""
echo "Product variations added successfully!"
echo "You can now test the following scenarios:"
echo "1. Single item purchases"
echo "2. Bulk discount bundles"
echo "3. Mix and match different products"
echo "4. Various quantity combinations"