freezone/src/api/test-mock-api.sh
2025-07-14 15:36:20 +02:00

153 lines
4.5 KiB
Bash
Executable File

#!/bin/bash
# Test script for the mock API server
# Usage: ./test-mock-api.sh
BASE_URL="http://localhost:3000/api/mock"
API_KEY="test-api-key"
echo "🧪 Testing Freezone Mock API Server"
echo "🌐 Base URL: $BASE_URL"
echo "🔑 API Key: $API_KEY"
echo "----------------------------------------"
# Function to make API calls with proper formatting
test_endpoint() {
local method=$1
local endpoint=$2
local description=$3
local data=$4
echo ""
echo "📋 Testing: $description"
echo "🔗 $method $endpoint"
if [ -n "$data" ]; then
echo "📤 Request Body:"
echo "$data" | jq '.' 2>/dev/null || echo "$data"
echo ""
response=$(curl -s -X "$method" \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d "$data" \
"$BASE_URL$endpoint")
else
response=$(curl -s -X "$method" \
-H "X-API-Key: $API_KEY" \
"$BASE_URL$endpoint")
fi
echo "📥 Response:"
echo "$response" | jq '.' 2>/dev/null || echo "$response"
echo "----------------------------------------"
}
# Check if jq is available for JSON formatting
if ! command -v jq &> /dev/null; then
echo "💡 Tip: Install 'jq' for better JSON formatting: brew install jq"
echo ""
fi
# Check if mock server is running
echo "🔍 Checking if mock server is running..."
if ! curl -s "$BASE_URL" > /dev/null; then
echo "❌ Mock server is not running on $BASE_URL"
echo "💡 Start it with: ./start-mock-server.sh"
exit 1
fi
echo "✅ Mock server is running!"
# Test Authentication
test_endpoint "POST" "/auth/api-key" "Generate API Key" '{
"client_id": "reseller_123",
"client_secret": "secret_abc123xyz",
"access_password": "freezone_access_2024"
}'
# Test Digital Residents
test_endpoint "GET" "/digital-residents" "List Digital Residents"
test_endpoint "POST" "/digital-residents" "Create Digital Resident" '{
"reseller_user_id": "reseller_user_456",
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"kyc_provider_id": "kyc_john_doe_789",
"phone": "+1234567890"
}'
test_endpoint "GET" "/digital-residents/fz_resident_abc123" "Get Digital Resident"
# Test Free Zone Companies
test_endpoint "GET" "/free-zone-companies" "List Free Zone Companies"
test_endpoint "POST" "/free-zone-companies" "Create Free Zone Company" '{
"reseller_company_id": "reseller_comp_123",
"name": "Tech Innovations FZC",
"type": "company",
"description": "Technology consulting company",
"registration_number": "FZC-2024-001",
"tax_id": "TAX123456789",
"address": {
"street": "123 Business Bay",
"city": "Dubai",
"state": "Dubai",
"postal_code": "12345",
"country": "AE"
},
"shareholder_resident_ids": ["fz_resident_abc123", "fz_resident_def456"],
"crypto_wallets": [
{
"public_key": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
"chain": "bitcoin",
"label": "Main Bitcoin Wallet"
}
]
}'
test_endpoint "GET" "/free-zone-companies/fz_company_xyz789" "Get Free Zone Company"
# Test Invoices
test_endpoint "GET" "/free-zone-companies/fz_company_xyz789/invoices" "List Company Invoices"
test_endpoint "POST" "/free-zone-companies/fz_company_xyz789/invoices" "Create Invoice" '{
"reseller_invoice_id": "reseller_inv_456",
"invoice_number": "INV-2024-001",
"amount": 1500.00,
"currency": "USD",
"tax_amount": 150.00,
"description": "Consulting services for Q1 2024",
"line_items": [
{
"description": "Strategy consulting",
"quantity": 10,
"unit_price": 150.00,
"amount": 1500.00
}
],
"issue_date": "2024-01-15",
"due_date": "2024-02-15"
}'
test_endpoint "GET" "/free-zone-companies/fz_company_xyz789/invoices/fz_invoice_inv123" "Get Invoice"
# Test Expenses
test_endpoint "GET" "/free-zone-companies/fz_company_xyz789/expenses" "List Company Expenses"
test_endpoint "POST" "/free-zone-companies/fz_company_xyz789/expenses" "Create Expense" '{
"reseller_expense_id": "reseller_exp_456",
"amount": 500.00,
"currency": "USD",
"category": "office_supplies",
"description": "Office equipment purchase",
"vendor": "Office Depot",
"receipt_url": "https://receipts.example.com/receipt123.pdf",
"date": "2024-01-15"
}'
test_endpoint "GET" "/free-zone-companies/fz_company_xyz789/expenses/fz_expense_exp123" "Get Expense"
echo ""
echo "✅ Mock API testing completed!"
echo "💡 All endpoints should return example responses from the OpenAPI specification"
echo "🔧 Mock server provides realistic data for development and testing"