#!/bin/sh
#
# Test the basic behavior of post
#

set -e

if test -z "${MH_OBJ_DIR}"; then
    srcdir=`dirname "$0"`/../..
    MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR
fi

. "${srcdir}/test/post/test-post-common.sh"

#
# Basic test - Simple message, single user, single recipient.  Note that
# we test dot-stuffing here as well.
#

cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
From: Mr Nobody <nobody@example.com>
To: Somebody Else <somebody@example.com>
Subject: Test

This is a test
.
EOF

cat > "${testname}.expected" <<EOF
EHLO nosuchhost.example.com
MAIL FROM:<nobody@example.com>
RCPT TO:<somebody@example.com>
DATA
From: Mr Nobody <nobody@example.com>
To: Somebody Else <somebody@example.com>
Subject: Test
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date:

This is a test
..
.
QUIT
EOF

test_post "${testname}.actual" "${testname}.expected"

#
# Make sure a draft without a From: is rejected
#

cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
To: Somebody Else <somebody@example.com>
Subject: Blank Test

This is a blank test
EOF

run_test "send -draft -server 127.0.0.1 -port $localport" \
         "post: message has no From: header
post: See default components files for examples
post: re-format message and try again
send: message not delivered to anyone"

#
# Make sure that empty Nmh-* header lines are ignored, and that post
# warns about non-empty ones.
#
cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
From: Mr Nobody <nobody@example.com>
To: Somebody Else <somebody@example.com>
Nmh-Attachment:
Nmh-Unused: suppress this line
Subject: Test

This is a test
.
EOF

cat > "${testname}.expected" <<EOF
EHLO nosuchhost.example.com
MAIL FROM:<nobody@example.com>
RCPT TO:<somebody@example.com>
DATA
From: Mr Nobody <nobody@example.com>
To: Somebody Else <somebody@example.com>
Subject: Test
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date:

This is a test
..
.
QUIT
EOF

cat > "${testname}.expected_send_output" <<EOF
post: ignoring header line -- Nmh-Unused: suppress this line
EOF

test_post "${testname}.actual" "${testname}.expected" \
          >${testname}.send_output 2>&1

check "${testname}.send_output" "${testname}.expected_send_output"


exit ${failed:-0}
