test: send using FIFOs between parent/child

pull/1/head
Michael Santos 7 years ago
parent ff86eb8f9a
commit e4fcd47b20

@ -22,7 +22,18 @@
grep -q $MESSAGE $TMPDIR/stderr
}
@test "sending/receive message: stdin" {
(sleep 10; echo 'test123 ~!@#$' | xmppipe -o xmppipe-test -r user1 -u $XMPPIPE_TEST_USERNAME -p $XMPPIPE_TEST_PASSWORD) &
xmppipe -o xmppipe-test -s | egrep "^m:groupchat:[^/]+/user1:[^:]+:test123%20~%21@%23%24%0A"
@test "send/receive message: using stdin" {
(sleep 10; echo 'test123: ~!@#$' | xmppipe -o xmppipe-test-1 -r user1 -u "$XMPPIPE_TEST_USERNAME" -p "$XMPPIPE_TEST_PASSWORD") &
xmppipe -o xmppipe-test-1 -s | egrep "^m:groupchat:[^/]+/user1:[^:]+:test123%3A%20~%21@%23%24%0A"
}
@test "send/receive message: using script" {
test/script/send-message.sh \
-o xmppipe-test-2 \
-r user1 \
-t user2 \
-u "$XMPPIPE_TEST_USERNAME" \
-p "$XMPPIPE_TEST_PASSWORD" \
'test123: &(*)_+' &
xmppipe -r user2 -o xmppipe-test-2 -s | egrep "^m:groupchat:[^/]+/user1:[^:]+:test123%3A%20%26%28%2A%29_%2B%0A"
}

@ -0,0 +1,45 @@
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
TMPDIR=$(mktemp -d)
mkdir -p $TMPDIR
mkfifo $TMPDIR/stdin
mkfifo $TMPDIR/stdout
trap atexit 0
atexit() {
rm -rf $TMPDIR
}
wait_presence() {
TO=$1
MESSAGE=$2
while read l; do
IFS=":/"
set -- $l
if [ "$1" = "p" ] && [ "$2" = "available" ] && [ "$4" = "$TO" ]; then
echo "$MESSAGE"
exit 0
fi
done < $TMPDIR/stdout
}
while getopts "o:r:t:u:p:" opt; do
case $opt in
o) MUC="$OPTARG" ;;
r) FROM="$OPTARG" ;;
t) TO="$OPTARG" ;;
u) XMPPIPE_USERNAME="$OPTARG" ;;
p) XMPPIPE_PASSWORD="$OPTARG" ;;
*) exit 1 ;;
esac
done
shift $((OPTIND-1))
wait_presence "$TO" "$@" > $TMPDIR/stdin &
xmppipe -o $MUC -r "$FROM" -u "$XMPPIPE_USERNAME" -p "$XMPPIPE_PASSWORD" < $TMPDIR/stdin > $TMPDIR/stdout
Loading…
Cancel
Save