summaryrefslogtreecommitdiff
path: root/test/tests
diff options
context:
space:
mode:
authorBruce Guenter <bruce@untroubled.org>2016-01-20 09:20:07 -0600
committerBruce Guenter <bruce@untroubled.org>2016-01-20 09:20:07 -0600
commita0d1b330ce00fa22ee469d03f50930f4a65b3243 (patch)
tree762bc86fc8583a43d15079fee1eeae9dd52984ff /test/tests
parenta8261e028286a719b4ff4e81a2ce9e39ce4216ae (diff)
parent97f05128cdc483387e7826c4a9dd9f174910329c (diff)
Merge branch 'bounce'
Diffstat (limited to 'test/tests')
-rw-r--r--test/tests/send53
1 files changed, 44 insertions, 9 deletions
diff --git a/test/tests/send b/test/tests/send
index 7b102b5..2079a26 100644
--- a/test/tests/send
+++ b/test/tests/send
@@ -3,9 +3,10 @@
cat <<EOF >$tmpdir/libexec/nullmailer/dummy
#!/bin/sh
set -e
-read host
+read opts
read code
-echo "\$host" | grep -q '^host='
+echo "\$opts" | grep -q '^host='
+echo "code=\$code (#5.2.1) \$opts"
exit \$code
EOF
chmod +x $tmpdir/libexec/nullmailer/dummy
@@ -17,14 +18,16 @@ start send $PWD/../src/nullmailer-send
make_message() {
msgid=$(date +%s).$$.me
- cat <<EOF >$tmpdir/var/nullmailer/tmp/$msgid
-me@nowhere
-me@nowhere
+ cat <<EOF >$QUEUEDIR/tmp/$msgid
+me@example.com
+me@example.net
Subject: test
Message-Id: <$msgid>
+
+This is just a test.
EOF
- mv -f $tmpdir/var/nullmailer/tmp/$msgid $tmpdir/var/nullmailer/queue/$msgid
+ mv -f $QUEUEDIR/tmp/$msgid $QUEUEDIR/queue/$msgid
}
send_message() {
@@ -32,17 +35,49 @@ send_message() {
make_message
svc -a $tmpdir/service/send
sleep 2
- not test -e $tmpdir/var/nullmailer/queue/$msgid
+ not test -e $QUEUEDIR/queue/$msgid
}
echo 'Testing sending with a succeeding protocol'
send_message 0 2.0.0
+
echo 'Testing sending with a failing protocol'
not send_message 1 5.2.2
+rm -f $QUEUEDIR/queue/$msgid
+
+echo 'Testing handling of a permanent failure'
+send_message 33 5.2.2
+
+echo 'Checking failed message was moved out of the queue'
+test -e $QUEUEDIR/failed/$msgid
+rm -f $QUEUEDIR/failed/$msgid
+
+echo 'Checking for a generated bounce message'
+# It will also bounce, so look at failed messages
+msgid2=$( ls $QUEUEDIR/failed )
+test $( wc -w <<< $msgid2 ) = 1
+fn=$QUEUEDIR/failed/$msgid2
+
+echo 'Checking bounce sender'
+head -n 1 $fn | grep -qx ''
+
+echo 'Checking bounce recipient'
+sed -e '1d;q' $fn | grep -qx 'me@example.com'
+sed -e '1,2d;q' $fn | grep -qx ''
+
+echo 'Checking bounce contents'
+sed -e '1,3d; /^$/q' $fn | grep -qx 'To: <me@example.com>'
+sed -e '1,3d; 1,/^$/d' $fn | grep -qx 'Reporting-MTA: x-local-hostname; f.q.d.n'
+sed -e '1,3d; 1,/^$/d' $fn | grep -qx 'Final-Recipient: rfc822; me@example.net'
+sed -e '1,3d; 1,/^$/d' $fn | grep -qx 'Action: failed'
+sed -e '1,3d; 1,/^$/d' $fn | grep -qx 'Status: 5.2.1'
+sed -e '1,3d; 1,/^$/d' $fn | grep -qx 'Diagnostic-Code: DUMMY; code=33 (#5.2.1) host=127.0.0.1'
+sed -e '1,3d; 1,/^$/d' $fn | grep -qx 'Subject: test'
+sed -e '1,3d; 1,/^$/d' $fn | grep -qx 'This is just a test.'
echo 'Checking log outputs'
log=$tmpdir/service/send-log
-grep -q '^Starting delivery: host: 127.0.0.1 protocol: dummy file:' $log
-grep -qx 'From: <me@nowhere> to: <me@nowhere>' $log
+grep -qx "^Starting delivery: host: 127.0.0.1 protocol: dummy file: $msgid" $log
+grep -qx 'From: <me@example.com> to: <me@example.net>' $log
grep -qx 'Sending failed: Unspecified temporary error' $log
grep -qx "Message-Id: <$msgid>" $log