network/mantests/07_multiple_databases.sh

123 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
# Test 7: Multiple Databases
# This test creates and uses multiple isolated databases
API_KEY="ak_L1zF6g7Np1dSRyy-zp_cXFfA:default"
GATEWAY_URL="http://localhost:6001"
# Helper function to make curl requests with proper JSON parsing
make_request() {
local method="$1"
local url="$2"
local data="$3"
RESPONSE=$(curl -X "$method" "$url" \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
${data:+-d "$data"} \
-w "\nHTTP_STATUS:%{http_code}" \
-s)
HTTP_STATUS=$(echo "$RESPONSE" | grep "HTTP_STATUS:" | cut -d: -f2)
JSON_RESPONSE=$(echo "$RESPONSE" | sed '/HTTP_STATUS:/d')
echo "$JSON_RESPONSE" | jq '.'
echo "HTTP Status: $HTTP_STATUS"
}
echo "========================================="
echo "Test 7: Multiple Databases"
echo "========================================="
echo ""
# Create users database
echo "Creating 'users_db' with users table..."
make_request "POST" "${GATEWAY_URL}/v1/database/create-table" '{
"database": "users_db",
"schema": "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)"
}'
echo ""
# Insert into users database
echo "Inserting into users_db..."
make_request "POST" "${GATEWAY_URL}/v1/database/exec" '{
"database": "users_db",
"sql": "INSERT INTO users (name) VALUES (?)",
"args": ["User from users_db"]
}'
echo ""
# Create products database
echo "Creating 'products_db' with products table..."
make_request "POST" "${GATEWAY_URL}/v1/database/create-table" '{
"database": "products_db",
"schema": "CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT, price REAL)"
}'
echo ""
# Insert into products database
echo "Inserting into products_db..."
make_request "POST" "${GATEWAY_URL}/v1/database/exec" '{
"database": "products_db",
"sql": "INSERT INTO products (name, price) VALUES (?, ?)",
"args": ["Product from products_db", 99.99]
}'
echo ""
# Create orders database
echo "Creating 'orders_db' with orders table..."
make_request "POST" "${GATEWAY_URL}/v1/database/create-table" '{
"database": "orders_db",
"schema": "CREATE TABLE orders (id INTEGER PRIMARY KEY, order_number TEXT)"
}'
echo ""
# Insert into orders database
echo "Inserting into orders_db..."
make_request "POST" "${GATEWAY_URL}/v1/database/exec" '{
"database": "orders_db",
"sql": "INSERT INTO orders (order_number) VALUES (?)",
"args": ["ORD-001"]
}'
echo ""
echo "========================================="
echo "Verifying Data Isolation"
echo "========================================="
echo ""
# Query each database
echo "Querying users_db..."
make_request "POST" "${GATEWAY_URL}/v1/database/query" '{
"database": "users_db",
"sql": "SELECT * FROM users"
}'
echo ""
echo "Querying products_db..."
make_request "POST" "${GATEWAY_URL}/v1/database/query" '{
"database": "products_db",
"sql": "SELECT * FROM products"
}'
echo ""
echo "Querying orders_db..."
make_request "POST" "${GATEWAY_URL}/v1/database/query" '{
"database": "orders_db",
"sql": "SELECT * FROM orders"
}'
echo ""
echo "========================================="
echo "Test 7 Complete"
echo "Expected: Each database contains only its own data"
echo "========================================="