test: add emacs_fcc_message that does not use smtp-dummy

Most of the tests previously using emacs_deliver_message do not use
the actual transmitted message, so we replace it with a simpler (and
presumably more reliable function) that only saves (and indexes) an
fcc copy of the message.
This commit is contained in:
David Bremner 2013-12-14 22:39:54 +08:00
parent b421f00a05
commit 513a36d105
5 changed files with 37 additions and 11 deletions

View file

@ -28,12 +28,8 @@ add_gnupg_home
# get key fingerprint # get key fingerprint
FINGERPRINT=$(gpg --no-tty --list-secret-keys --with-colons --fingerprint | grep '^fpr:' | cut -d: -f10) FINGERPRINT=$(gpg --no-tty --list-secret-keys --with-colons --fingerprint | grep '^fpr:' | cut -d: -f10)
# for some reason this is needed for emacs_deliver_message to work,
# although I can't figure out why
add_email_corpus
test_expect_success 'emacs delivery of signed message' \ test_expect_success 'emacs delivery of signed message' \
'emacs_deliver_message \ 'emacs_fcc_message \
"test signed message 001" \ "test signed message 001" \
"This is a test signed message." \ "This is a test signed message." \
"(mml-secure-message-sign)"' "(mml-secure-message-sign)"'
@ -143,7 +139,7 @@ cat <<EOF >TESTATTACHMENT
This is a test file. This is a test file.
EOF EOF
test_expect_success 'emacs delivery of encrypted message with attachment' \ test_expect_success 'emacs delivery of encrypted message with attachment' \
'emacs_deliver_message \ 'emacs_fcc_message \
"test encrypted message 001" \ "test encrypted message 001" \
"This is a test encrypted message.\n" \ "This is a test encrypted message.\n" \
"(mml-attach-file \"TESTATTACHMENT\") (mml-secure-message-encrypt)"' "(mml-attach-file \"TESTATTACHMENT\") (mml-secure-message-encrypt)"'
@ -270,7 +266,7 @@ test_expect_equal_json \
mv "${GNUPGHOME}"{.bak,} mv "${GNUPGHOME}"{.bak,}
test_expect_success 'emacs delivery of encrypted + signed message' \ test_expect_success 'emacs delivery of encrypted + signed message' \
'emacs_deliver_message \ 'emacs_fcc_message \
"test encrypted message 002" \ "test encrypted message 002" \
"This is another test encrypted message.\n" \ "This is another test encrypted message.\n" \
"(mml-secure-message-sign-encrypt)"' "(mml-secure-message-sign-encrypt)"'

View file

@ -771,7 +771,7 @@ test_expect_equal_file OUTPUT EXPECTED
test_begin_subtest "Do not call notmuch for non-inlinable application/mpeg parts" test_begin_subtest "Do not call notmuch for non-inlinable application/mpeg parts"
id='message-with-application/mpeg-attachment@notmuchmail.org' id='message-with-application/mpeg-attachment@notmuchmail.org'
emacs_deliver_message \ emacs_fcc_message \
'Message with application/mpeg attachment' \ 'Message with application/mpeg attachment' \
'' \ '' \
"(message-goto-eoh) "(message-goto-eoh)
@ -786,7 +786,7 @@ test_expect_equal $(notmuch_counter_value) 1
test_begin_subtest "Do not call notmuch for non-inlinable audio/mpeg parts" test_begin_subtest "Do not call notmuch for non-inlinable audio/mpeg parts"
id='message-with-audio/mpeg-attachment@notmuchmail.org' id='message-with-audio/mpeg-attachment@notmuchmail.org'
emacs_deliver_message \ emacs_fcc_message \
'Message with audio/mpeg attachment' \ 'Message with audio/mpeg attachment' \
'' \ '' \
"(message-goto-eoh) "(message-goto-eoh)

View file

@ -38,7 +38,7 @@ test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true
test_begin_subtest "Show message: json, inline attachment filename" test_begin_subtest "Show message: json, inline attachment filename"
subject='json-show-inline-attachment-filename' subject='json-show-inline-attachment-filename'
id="json-show-inline-attachment-filename@notmuchmail.org" id="json-show-inline-attachment-filename@notmuchmail.org"
emacs_deliver_message \ emacs_fcc_message \
"$subject" \ "$subject" \
'This is a test message with inline attachment with a filename' \ 'This is a test message with inline attachment with a filename' \
"(mml-attach-file \"$TEST_DIRECTORY/README\" nil nil \"inline\") "(mml-attach-file \"$TEST_DIRECTORY/README\" nil nil \"inline\")

View file

@ -29,7 +29,7 @@ test_expect_equal "$output" "((((:id \"${gen_msg_id}\" :match t :excluded nil :f
test_begin_subtest "Show message: sexp, inline attachment filename" test_begin_subtest "Show message: sexp, inline attachment filename"
subject='sexp-show-inline-attachment-filename' subject='sexp-show-inline-attachment-filename'
id="sexp-show-inline-attachment-filename@notmuchmail.org" id="sexp-show-inline-attachment-filename@notmuchmail.org"
emacs_deliver_message \ emacs_fcc_message \
"$subject" \ "$subject" \
'This is a test message with inline attachment with a filename' \ 'This is a test message with inline attachment with a filename' \
"(mml-attach-file \"$TEST_DIRECTORY/README\" nil nil \"inline\") "(mml-attach-file \"$TEST_DIRECTORY/README\" nil nil \"inline\")

View file

@ -470,6 +470,36 @@ emacs_deliver_message ()
notmuch new >/dev/null notmuch new >/dev/null
} }
# Pretend to deliver a message with emacs. Really save it to a file
# and add it to the database
#
# Uses emacs to generate and deliver a message to the mail store.
# Accepts arbitrary extra emacs/elisp functions to modify the message
# before sending, which is useful to doing things like attaching files
# to the message and encrypting/signing.
emacs_fcc_message ()
{
local subject="$1"
local body="$2"
shift 2
# before we can send a message, we have to prepare the FCC maildir
mkdir -p "$MAIL_DIR"/sent/{cur,new,tmp}
test_emacs \
"(let ((message-send-mail-function (lambda () t))
(mail-host-address \"example.com\"))
(notmuch-mua-mail)
(message-goto-to)
(insert \"test_suite@notmuchmail.org\nDate: 01 Jan 2000 12:00:00 -0000\")
(message-goto-subject)
(insert \"${subject}\")
(message-goto-body)
(insert \"${body}\")
$@
(message-send-and-exit))" || return 1
notmuch new >/dev/null
}
# Generate a corpus of email and add it to the database. # Generate a corpus of email and add it to the database.
# #
# This corpus is fixed, (it happens to be 50 messages from early in # This corpus is fixed, (it happens to be 50 messages from early in