test_step5.shโข4.25 kB
#!/bin/bash
# Test script for Step 5: Basic JWT Infrastructure
echo "๐งช Testing Step 5: Basic JWT Infrastructure"
echo "============================================"
# Function to cleanup background processes
cleanup() {
echo "๐งน Cleaning up..."
if [ ! -z "$SERVER_PID" ]; then
kill $SERVER_PID 2>/dev/null
wait $SERVER_PID 2>/dev/null
fi
exit 0
}
# Set trap to cleanup on script exit
trap cleanup EXIT INT TERM
# Check if public key exists, if not generate one
if [ ! -f "mcp_public_key.pem" ]; then
echo "๐ No public key found, generating key pair..."
uv run python generate_token.py --generate-keys
if [ $? -ne 0 ]; then
echo "โ Failed to generate key pair"
exit 1
fi
fi
# Start the server in background
echo "๐ Starting Step 5 server..."
uv run step5 &
SERVER_PID=$!
# Wait for server to start
echo "โณ Waiting for server to start..."
sleep 3
# Test health endpoint
echo "๐ Testing health endpoint..."
HEALTH_RESPONSE=$(curl -s http://localhost:9000/health)
if [ $? -eq 0 ]; then
echo "โ
Health endpoint test passed!"
echo "๐ Response: $HEALTH_RESPONSE"
# Check if JWT is enabled
if echo "$HEALTH_RESPONSE" | grep -q '"jwt_enabled":true'; then
echo "โ
JWT infrastructure is enabled!"
else
echo "โ ๏ธ JWT infrastructure is not enabled"
fi
else
echo "โ Health endpoint test failed!"
exit 1
fi
# Test JWKS endpoint
echo "๐ Testing JWKS endpoint..."
JWKS_RESPONSE=$(curl -s http://localhost:9000/.well-known/jwks.json)
if [ $? -eq 0 ]; then
echo "โ
JWKS endpoint test passed!"
echo "๐ Response: $JWKS_RESPONSE"
# Check if JWKS contains keys
if echo "$JWKS_RESPONSE" | grep -q '"keys"'; then
echo "โ
JWKS contains public key!"
else
echo "โ JWKS does not contain keys"
exit 1
fi
else
echo "โ JWKS endpoint test failed!"
exit 1
fi
# Test MCP initialize method
echo "๐ Testing MCP initialize method..."
INIT_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "initialize"}')
if [ $? -eq 0 ]; then
echo "โ
MCP initialize test passed!"
echo "๐ Response: $INIT_RESPONSE"
# Check if response contains JWT info
if echo "$INIT_RESPONSE" | grep -q '"jwt_enabled"'; then
echo "โ
Initialize response includes JWT status!"
else
echo "โ Initialize response missing JWT status"
exit 1
fi
else
echo "โ MCP initialize test failed!"
exit 1
fi
# Test list_tools method
echo "๐ Testing list_tools method..."
TOOLS_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}')
if [ $? -eq 0 ]; then
echo "โ
list_tools test passed!"
echo "๐ Response: $TOOLS_RESPONSE"
# Check if response contains tools
if echo "$TOOLS_RESPONSE" | grep -q '"name":"echo"'; then
echo "โ
Echo tool is listed correctly!"
else
echo "โ Echo tool not found in response!"
exit 1
fi
else
echo "โ list_tools test failed!"
exit 1
fi
# Test call_tool method
echo "๐ Testing call_tool method..."
CALL_TOOL_RESPONSE=$(curl -s -X POST http://localhost:9000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "echo", "arguments": {"message": "Hello World", "repeat_count": 3}}}')
if [ $? -eq 0 ]; then
echo "โ
call_tool test passed!"
echo "๐ Response: $CALL_TOOL_RESPONSE"
# Check if response contains the echoed message
if echo "$CALL_TOOL_RESPONSE" | grep -q 'Hello WorldHello WorldHello World'; then
echo "โ
Echo tool works correctly!"
else
echo "โ Echo tool response is incorrect!"
exit 1
fi
else
echo "โ call_tool test failed!"
exit 1
fi
echo ""
echo "๐ Step 5 tests completed successfully!"
echo "โ
JWT infrastructure is in place"
echo "โ
JWKS endpoint is working"
echo "โ
All existing MCP functionality still works"
echo "โ
Ready for next step: JWT token validation"