#!/bin/bash # Test script for NIP-50 search functionality # This script tests the new search field in filter objects echo "=== Testing NIP-50 Search Functionality ===" # Function to send WebSocket message and capture response send_ws_message() { local message="$1" echo "Sending: $message" echo "$message" | websocat ws://127.0.0.1:8888 --text --no-close --one-message 2>/dev/null } # Function to publish an event publish_event() { local content="$1" local kind="${2:-1}" local tags="${3:-[]}" # Create event JSON local event="[\"EVENT\", {\"id\": \"\", \"pubkey\": \"\", \"created_at\": $(date +%s), \"kind\": $kind, \"tags\": $tags, \"content\": \"$content\", \"sig\": \"\"}]" # Send the event send_ws_message "$event" } # Function to search for events search_events() { local search_term="$1" local sub_id="${2:-search_test}" # Create search filter local filter="{\"search\": \"$search_term\"}" local req="[\"REQ\", \"$sub_id\", $filter]" # Send the search request send_ws_message "$req" # Wait a moment for response sleep 0.5 # Send CLOSE to end subscription local close="[\"CLOSE\", \"$sub_id\"]" send_ws_message "$close" } # Function to count events with search count_events() { local search_term="$1" local sub_id="${2:-count_test}" # Create count filter with search local filter="{\"search\": \"$search_term\"}" local count_req="[\"COUNT\", \"$sub_id\", $filter]" # Send the count request send_ws_message "$count_req" } echo "Publishing test events with searchable content..." # Publish some test events with different content publish_event "This is a test message about Bitcoin" publish_event "Another message about Lightning Network" publish_event "Nostr protocol discussion" publish_event "Random content without keywords" publish_event "Bitcoin and Lightning are great technologies" publish_event "Discussion about Nostr and Bitcoin integration" echo "Waiting for events to be stored..." sleep 2 echo "" echo "Testing search functionality..." echo "1. Searching for 'Bitcoin':" search_events "Bitcoin" echo "" echo "2. Searching for 'Nostr':" search_events "Nostr" echo "" echo "3. Searching for 'Lightning':" search_events "Lightning" echo "" echo "4. Testing COUNT with search:" count_events "Bitcoin" echo "" echo "5. Testing COUNT with search for 'Nostr':" count_events "Nostr" echo "" echo "=== NIP-50 Search Test Complete ==="