This commit is contained in:
159
test_api.sh
Executable file
159
test_api.sh
Executable file
@@ -0,0 +1,159 @@
|
||||
#!/bin/bash
|
||||
# Atlas API Test Script
|
||||
# This script tests the API endpoints
|
||||
|
||||
BASE_URL="${ATLAS_URL:-http://localhost:8080}"
|
||||
API_URL="${BASE_URL}/api/v1"
|
||||
|
||||
echo "=========================================="
|
||||
echo "Atlas API Test Suite"
|
||||
echo "=========================================="
|
||||
echo "Base URL: $BASE_URL"
|
||||
echo "API URL: $API_URL"
|
||||
echo ""
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Test helper function
|
||||
test_endpoint() {
|
||||
local method=$1
|
||||
local endpoint=$2
|
||||
local data=$3
|
||||
local description=$4
|
||||
|
||||
echo -e "${YELLOW}Testing: $description${NC}"
|
||||
echo " $method $endpoint"
|
||||
|
||||
if [ -n "$data" ]; then
|
||||
response=$(curl -s -w "\n%{http_code}" -X "$method" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$data" \
|
||||
"$endpoint")
|
||||
else
|
||||
response=$(curl -s -w "\n%{http_code}" -X "$method" "$endpoint")
|
||||
fi
|
||||
|
||||
http_code=$(echo "$response" | tail -n1)
|
||||
body=$(echo "$response" | sed '$d')
|
||||
|
||||
if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 300 ]; then
|
||||
echo -e " ${GREEN}✓ Success (HTTP $http_code)${NC}"
|
||||
echo "$body" | jq '.' 2>/dev/null || echo "$body"
|
||||
elif [ "$http_code" -ge 400 ] && [ "$http_code" -lt 500 ]; then
|
||||
echo -e " ${YELLOW}⚠ Client Error (HTTP $http_code)${NC}"
|
||||
echo "$body" | jq '.' 2>/dev/null || echo "$body"
|
||||
else
|
||||
echo -e " ${RED}✗ Error (HTTP $http_code)${NC}"
|
||||
echo "$body"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Check if server is running
|
||||
echo "Checking if server is running..."
|
||||
if ! curl -s "$BASE_URL/healthz" > /dev/null; then
|
||||
echo -e "${RED}Error: Server is not running at $BASE_URL${NC}"
|
||||
echo "Start the server with: go run ./cmd/atlas-api/main.go"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}Server is running!${NC}"
|
||||
echo ""
|
||||
|
||||
# Health & Metrics
|
||||
echo "=========================================="
|
||||
echo "1. Health & Metrics"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$BASE_URL/healthz" "" "Health check"
|
||||
test_endpoint "GET" "$BASE_URL/metrics" "" "Prometheus metrics"
|
||||
echo ""
|
||||
|
||||
# Disk Discovery
|
||||
echo "=========================================="
|
||||
echo "2. Disk Discovery"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/disks" "" "List available disks"
|
||||
echo ""
|
||||
|
||||
# ZFS Pools
|
||||
echo "=========================================="
|
||||
echo "3. ZFS Pool Management"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/pools" "" "List ZFS pools"
|
||||
test_endpoint "GET" "$API_URL/pools/testpool" "" "Get pool details (if exists)"
|
||||
echo ""
|
||||
|
||||
# Datasets
|
||||
echo "=========================================="
|
||||
echo "4. Dataset Management"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/datasets" "" "List all datasets"
|
||||
test_endpoint "GET" "$API_URL/datasets?pool=testpool" "" "List datasets in pool"
|
||||
echo ""
|
||||
|
||||
# ZVOLs
|
||||
echo "=========================================="
|
||||
echo "5. ZVOL Management"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/zvols" "" "List all ZVOLs"
|
||||
test_endpoint "GET" "$API_URL/zvols?pool=testpool" "" "List ZVOLs in pool"
|
||||
echo ""
|
||||
|
||||
# Snapshots
|
||||
echo "=========================================="
|
||||
echo "6. Snapshot Management"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/snapshots" "" "List all snapshots"
|
||||
test_endpoint "GET" "$API_URL/snapshots?dataset=testpool/test" "" "List snapshots for dataset"
|
||||
echo ""
|
||||
|
||||
# Snapshot Policies
|
||||
echo "=========================================="
|
||||
echo "7. Snapshot Policies"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/snapshot-policies" "" "List snapshot policies"
|
||||
|
||||
# Create a test policy
|
||||
test_endpoint "POST" "$API_URL/snapshot-policies" \
|
||||
'{"dataset":"testpool/test","frequent":4,"hourly":24,"daily":7,"weekly":4,"monthly":12,"yearly":2,"autosnap":true,"autoprune":true}' \
|
||||
"Create snapshot policy"
|
||||
|
||||
test_endpoint "GET" "$API_URL/snapshot-policies/testpool/test" "" "Get snapshot policy"
|
||||
echo ""
|
||||
|
||||
# Storage Services
|
||||
echo "=========================================="
|
||||
echo "8. Storage Services"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/shares/smb" "" "List SMB shares"
|
||||
test_endpoint "GET" "$API_URL/exports/nfs" "" "List NFS exports"
|
||||
test_endpoint "GET" "$API_URL/iscsi/targets" "" "List iSCSI targets"
|
||||
echo ""
|
||||
|
||||
# Jobs
|
||||
echo "=========================================="
|
||||
echo "9. Job Management"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/jobs" "" "List jobs"
|
||||
echo ""
|
||||
|
||||
# Users & Auth
|
||||
echo "=========================================="
|
||||
echo "10. Authentication & Users"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/users" "" "List users"
|
||||
echo ""
|
||||
|
||||
# Audit Logs
|
||||
echo "=========================================="
|
||||
echo "11. Audit Logs"
|
||||
echo "=========================================="
|
||||
test_endpoint "GET" "$API_URL/audit" "" "List audit logs"
|
||||
echo ""
|
||||
|
||||
echo "=========================================="
|
||||
echo "Test Suite Complete!"
|
||||
echo "=========================================="
|
||||
Reference in New Issue
Block a user