fix websocket messaging, renamed http functions, start sending message via http
This commit is contained in:
Executable
+78
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
# Send message from user_two to the group, verify user_one receives it
|
||||
source "$(dirname "$0")/config.sh"
|
||||
|
||||
TOKEN1=$(load_state "TOKEN1")
|
||||
TOKEN2=$(load_state "TOKEN2")
|
||||
GROUP_ID=$(load_state "GROUP_ID")
|
||||
|
||||
if [[ -z "$TOKEN1" || -z "$TOKEN2" || -z "$GROUP_ID" ]]; then
|
||||
echo "ERROR: Missing state. Run previous scripts first."
|
||||
echo " TOKEN1=$TOKEN1"
|
||||
echo " TOKEN2=$TOKEN2"
|
||||
echo " GROUP_ID=$GROUP_ID"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MESSAGE="Hello from user_two!"
|
||||
|
||||
echo "=== Sending message from user_two to group $GROUP_ID ==="
|
||||
|
||||
TMPDIR=$(mktemp -d)
|
||||
trap 'rm -rf "$TMPDIR"' EXIT
|
||||
|
||||
echo "[DEBUG] tmpdir: $TMPDIR"
|
||||
echo "[DEBUG] TOKEN1: ${TOKEN1:0:20}..."
|
||||
echo "[DEBUG] TOKEN2: ${TOKEN2:0:20}..."
|
||||
echo "[DEBUG] GROUP_ID: $GROUP_ID"
|
||||
|
||||
# Receiver (user_one): authenticate then wait for messages
|
||||
echo "[DEBUG] starting receiver (user_one)..."
|
||||
{ echo '{"token":"'"$TOKEN1"'"}'; sleep 5; } \
|
||||
| stdbuf -oL websocat ws://localhost:8080/ws > "$TMPDIR/received" 2>"$TMPDIR/recv_err" &
|
||||
RECV_PID=$!
|
||||
echo "[DEBUG] receiver PID: $RECV_PID"
|
||||
sleep 0.5
|
||||
|
||||
# Sender (user_two): authenticate, send message
|
||||
SEND_PAYLOAD='{"subject":'"$GROUP_ID"',"content":"'"$MESSAGE"'"}'
|
||||
echo "[DEBUG] starting sender (user_two)..."
|
||||
echo "[DEBUG] send payload: $SEND_PAYLOAD"
|
||||
{ echo '{"token":"'"$TOKEN2"'"}'; sleep 0.5; echo "$SEND_PAYLOAD"; sleep 0.5; } \
|
||||
| websocat ws://localhost:8080/ws > "$TMPDIR/send_out" 2>"$TMPDIR/send_err" &
|
||||
SEND_PID=$!
|
||||
echo "[DEBUG] sender PID: $SEND_PID"
|
||||
|
||||
echo "[DEBUG] waiting 2s for message delivery..."
|
||||
sleep 2
|
||||
|
||||
echo "[DEBUG] killing connections..."
|
||||
kill $RECV_PID $SEND_PID 2>/dev/null
|
||||
wait $RECV_PID 2>/dev/null
|
||||
RECV_EXIT=$?
|
||||
wait $SEND_PID 2>/dev/null
|
||||
SEND_EXIT=$?
|
||||
echo "[DEBUG] receiver exit: $RECV_EXIT, sender exit: $SEND_EXIT"
|
||||
|
||||
RECV_ERR=$(cat "$TMPDIR/recv_err")
|
||||
SEND_ERR=$(cat "$TMPDIR/send_err")
|
||||
SEND_OUT=$(cat "$TMPDIR/send_out")
|
||||
[[ -n "$RECV_ERR" ]] && echo "[DEBUG] receiver stderr: $RECV_ERR"
|
||||
[[ -n "$SEND_ERR" ]] && echo "[DEBUG] sender stderr: $SEND_ERR"
|
||||
[[ -n "$SEND_OUT" ]] && echo "[DEBUG] sender received: $SEND_OUT"
|
||||
|
||||
RESPONSE=$(cat "$TMPDIR/received")
|
||||
echo "user_one received: $RESPONSE"
|
||||
|
||||
if [[ -z "$RESPONSE" ]]; then
|
||||
echo "[DEBUG] EMPTY response - no data received by user_one"
|
||||
echo "FAIL: message not received"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if echo "$RESPONSE" | grep -q "$MESSAGE"; then
|
||||
echo "PASS"
|
||||
else
|
||||
echo "FAIL: message not received"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user