97 lines
2.4 KiB
Bash
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 ===" |