Files
c-relay/test_nip50_search.sh

97 lines
2.4 KiB
Bash

#!/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 ==="