#!/bin/bash # Test script for Hugging Face Space deployment # Usage: ./test_deployment.sh [space-url] # Color codes for output GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Default URL (update with your actual Space URL) SPACE_URL="${1:-https://ocx2025-basicsearch.hf.space}" echo "================================================" echo "Testing Hugging Face Space: $SPACE_URL" echo "================================================" echo "" # Test 1: Health Check echo -e "${YELLOW}Test 1: Health Check${NC}" echo "GET $SPACE_URL/health" RESPONSE=$(curl -s -w "\n%{http_code}" "$SPACE_URL/health") HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | head -n-1) if [ "$HTTP_CODE" = "200" ]; then echo -e "${GREEN}✓ PASSED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" else echo -e "${RED}✗ FAILED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" fi echo "" # Test 2: Service Info echo -e "${YELLOW}Test 2: Service Info${NC}" echo "GET $SPACE_URL/" RESPONSE=$(curl -s -w "\n%{http_code}" "$SPACE_URL/") HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | head -n-1) if [ "$HTTP_CODE" = "200" ]; then echo -e "${GREEN}✓ PASSED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" | jq '.' 2>/dev/null || echo "Response: $BODY" else echo -e "${RED}✗ FAILED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" fi echo "" # Test 3: List Tools echo -e "${YELLOW}Test 3: List Available Tools${NC}" echo "GET $SPACE_URL/tools" RESPONSE=$(curl -s -w "\n%{http_code}" "$SPACE_URL/tools") HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | head -n-1) if [ "$HTTP_CODE" = "200" ]; then echo -e "${GREEN}✓ PASSED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" | jq '.' 2>/dev/null || echo "Response: $BODY" else echo -e "${RED}✗ FAILED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" fi echo "" # Test 4: YouTube Search (requires API key to be set) echo -e "${YELLOW}Test 4: YouTube Video Search${NC}" echo "POST $SPACE_URL/search" RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "$SPACE_URL/search" \ -H "Content-Type: application/json" \ -d '{"query": "Python programming", "max_results": 2}') HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | head -n-1) if [ "$HTTP_CODE" = "200" ]; then echo -e "${GREEN}✓ PASSED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" | jq '.' 2>/dev/null || echo "Response: $BODY" elif [ "$HTTP_CODE" = "500" ] && echo "$BODY" | grep -q "YOUTUBE_API_KEY"; then echo -e "${YELLOW}⚠ API KEY NOT SET${NC} - Status: $HTTP_CODE" echo "Please set YOUTUBE_API_KEY in your Space settings" echo "Response: $BODY" else echo -e "${RED}✗ FAILED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" fi echo "" # Test 5: Error handling - missing query echo -e "${YELLOW}Test 5: Error Handling (Missing Query)${NC}" echo "POST $SPACE_URL/search (with empty query)" RESPONSE=$(curl -s -w "\n%{http_code}" -X POST "$SPACE_URL/search" \ -H "Content-Type: application/json" \ -d '{}') HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | head -n-1) if [ "$HTTP_CODE" = "400" ]; then echo -e "${GREEN}✓ PASSED${NC} - Status: $HTTP_CODE (Expected error)" echo "Response: $BODY" else echo -e "${YELLOW}⚠ UNEXPECTED${NC} - Status: $HTTP_CODE" echo "Response: $BODY" fi echo "" echo "================================================" echo "Testing Complete!" echo "================================================"