- 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>
163 lines
5.0 KiB
Bash
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" |