notmuch/test/multipart
Jameson Graef Rollins 916c2aa624 test: Expand multipart test to cover part output in all formats.
The example multipart message is made a bit more complicated by adding
a message/rfc822 message, and the all parts are output and tested in
all output formats.
2011-05-24 12:19:18 -07:00

308 lines
12 KiB
Bash
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
test_description="output of multipart message"
. ./test-lib.sh
cat <<EOF > ${MAIL_DIR}/multipart
From: Carl Worth <cworth@cworth.org>
To: cworth@cworth.org
Subject: Multipart message
Date: Tue, 05 Jan 2001 15:43:57 -0000
User-Agent: Notmuch/0.5 (http://notmuchmail.org) Emacs/23.3.1 (i486-pc-linux-gnu)
Message-ID: <87liy5ap00.fsf@yoom.home.cworth.org>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="==-=-=";
micalg=pgp-sha1; protocol="application/pgp-signature"
--==-=-=
Content-Type: multipart/mixed; boundary="=-=-="
--=-=-=
Content-Type: message/rfc822
Content-Disposition: inline
From: Carl Worth <cworth@cworth.org>
To: cworth@cworth.org
Subject: html message
Date: Tue, 05 Jan 2001 15:42:57 -0000
User-Agent: Notmuch/0.5 (http://notmuchmail.org) Emacs/23.3.1 (i486-pc-linux-gnu)
Message-ID: <87liy5ap01.fsf@yoom.home.cworth.org>
MIME-Version: 1.0
Content-Type: text/html
<p>This is an imbeded message, with a single html part.</p>
--=-=-=
Content-Disposition: attachment; filename=attachment
This is a text attachment.
--=-=-=
And this message is signed.
-Carl
--=-=-=--
--==-=-=
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iEYEARECAAYFAk3SA/gACgkQ6JDdNq8qSWj0sACghqVJEQJUs3yV8zbTzhgnSIcD
W6cAmQE4dcYrx/LPLtYLZm1jsGauE5hE
=zkga
-----END PGP SIGNATURE-----
--==-=-=--
EOF
notmuch new > /dev/null
test_begin_subtest "--format=text --part=0, full message"
output=$(notmuch show --format=text --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
" message{ id:87liy5ap00.fsf@yoom.home.cworth.org depth:0 match:1 filename:${MAIL_DIR}/multipart
header{
Carl Worth <cworth@cworth.org> (2001-01-05) (attachment inbox unread)
Subject: Multipart message
From: Carl Worth <cworth@cworth.org>
To: cworth@cworth.org
Date: Tue, 05 Jan 2001 15:43:57 -0000
header}
body{
part{ ID: 1, Content-type: multipart/signed
part{ ID: 2, Content-type: multipart/mixed
part{ ID: 3, Content-type: message/rfc822
part{ ID: 4, Content-type: text/html
Non-text part: text/html
part}
part}
attachment{ ID: 5, Content-type: text/plain
Attachment: attachment (text/plain)
This is a text attachment.
attachment}
part{ ID: 6, Content-type: text/plain
And this message is signed.
-Carl
part}
part}
part{ ID: 7, Content-type: application/pgp-signature
Non-text part: application/pgp-signature
part}
part}
body}
message}"
test_begin_subtest "--format=text --part=1, message body"
output=$(notmuch show --format=text --part=1 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
" part{ ID: 1, Content-type: multipart/signed
part{ ID: 2, Content-type: multipart/mixed
part{ ID: 3, Content-type: message/rfc822
part{ ID: 4, Content-type: text/html
Non-text part: text/html
part}
part}
attachment{ ID: 5, Content-type: text/plain
Attachment: attachment (text/plain)
This is a text attachment.
attachment}
part{ ID: 6, Content-type: text/plain
And this message is signed.
-Carl
part}
part}
part{ ID: 7, Content-type: application/pgp-signature
Non-text part: application/pgp-signature
part}
part}"
test_begin_subtest "--format=text --part=2, multipart/mixed"
output=$(notmuch show --format=text --part=2 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
" part{ ID: 2, Content-type: multipart/mixed
part{ ID: 3, Content-type: message/rfc822
part{ ID: 4, Content-type: text/html
Non-text part: text/html
part}
part}
attachment{ ID: 5, Content-type: text/plain
Attachment: attachment (text/plain)
This is a text attachment.
attachment}
part{ ID: 6, Content-type: text/plain
And this message is signed.
-Carl
part}
part}"
test_begin_subtest "--format=text --part=3, rfc822 multipart"
output=$(notmuch show --format=text --part=3 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
" part{ ID: 3, Content-type: message/rfc822
part{ ID: 4, Content-type: text/html
Non-text part: text/html
part}
part}"
test_begin_subtest "--format=text --part=4, html part"
output=$(notmuch show --format=text --part=4 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
" part{ ID: 4, Content-type: text/html
Non-text part: text/html
part}"
test_begin_subtest "--format=text --part=5, inline attachement"
output=$(notmuch show --format=text --part=5 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
" attachment{ ID: 5, Content-type: text/plain
Attachment: attachment (text/plain)
This is a text attachment.
attachment}"
test_begin_subtest "--format=text --part=6, plain text part"
output=$(notmuch show --format=text --part=6 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
" part{ ID: 6, Content-type: text/plain
And this message is signed.
-Carl
part}"
test_begin_subtest "--format=text --part=7, pgp signature (unverified)"
output=$(notmuch show --format=text --part=7 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
" part{ ID: 7, Content-type: application/pgp-signature
Non-text part: application/pgp-signature
part}"
test_expect_success \
"--format=text --part=8, no part, expect error" \
"notmuch show --format=text --part=8 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
test_begin_subtest "--format=json --part=0, full message"
output=$(notmuch show --format=json --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'{"id": "87liy5ap00.fsf@yoom.home.cworth.org", "match": true, "filename": "'"${MAIL_DIR}/multipart"'", "timestamp": 978709437, "date_relative": "2001-01-05", "tags": ["attachment","inbox","unread"], "headers": {"Subject": "Multipart message", "From": "Carl Worth <cworth@cworth.org>", "To": "cworth@cworth.org", "Cc": "", "Bcc": "", "Date": "Tue, 05 Jan 2001 15:43:57 -0000"}, "body": [{"id": 1, "content-type": "multipart/signed", "content": [{"id": 2, "content-type": "multipart/mixed", "content": [{"id": 3, "content-type": "message/rfc822", "content": [{"id": 4, "content-type": "text/html"}]}, {"id": 5, "content-type": "text/plain", "filename": "attachment", "content": "This is a text attachment.\n"}, {"id": 6, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}]}, {"id": 7, "content-type": "application/pgp-signature"}]}]}'
test_begin_subtest "--format=json --part=1, message body"
output=$(notmuch show --format=json --part=1 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'{"id": 1, "content-type": "multipart/signed", "content": [{"id": 2, "content-type": "multipart/mixed", "content": [{"id": 3, "content-type": "message/rfc822", "content": [{"id": 4, "content-type": "text/html"}]}, {"id": 5, "content-type": "text/plain", "filename": "attachment", "content": "This is a text attachment.\n"}, {"id": 6, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}]}, {"id": 7, "content-type": "application/pgp-signature"}]}'
test_begin_subtest "--format=json --part=2, multipart/mixed"
output=$(notmuch show --format=json --part=2 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'{"id": 2, "content-type": "multipart/mixed", "content": [{"id": 3, "content-type": "message/rfc822", "content": [{"id": 4, "content-type": "text/html"}]}, {"id": 5, "content-type": "text/plain", "filename": "attachment", "content": "This is a text attachment.\n"}, {"id": 6, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}]}'
test_begin_subtest "--format=json --part=3, rfc822 multipart"
output=$(notmuch show --format=json --part=3 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'{"id": 3, "content-type": "message/rfc822", "content": [{"id": 4, "content-type": "text/html"}]}'
test_begin_subtest "--format=json --part=4, html part"
output=$(notmuch show --format=json --part=4 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'{"id": 4, "content-type": "text/html"}'
test_begin_subtest "--format=json --part=5, inline attachment"
output=$(notmuch show --format=json --part=5 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'{"id": 5, "content-type": "text/plain", "filename": "attachment", "content": "This is a text attachment.\n"}'
test_begin_subtest "--format=json --part=6, plain text part"
output=$(notmuch show --format=json --part=6 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'{"id": 6, "content-type": "text/plain", "content": "And this message is signed.\n\n-Carl\n"}'
test_begin_subtest "--format=json --part=7, pgp signature (unverified)"
output=$(notmuch show --format=json --part=7 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'{"id": 7, "content-type": "application/pgp-signature"}'
test_expect_success \
"--format=json --part=8, no part, expect error" \
"notmuch show --format=json --part=8 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
test_begin_subtest "--format=raw"
output=$(notmuch show --format=raw 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" "$(cat "${MAIL_DIR}"/multipart)"
test_begin_subtest "--format=raw --part=0, full message"
output=$(notmuch show --format=raw --part=0 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" "$(cat "${MAIL_DIR}"/multipart)"
test_begin_subtest "--format=raw --part=1, message body"
output=$(notmuch show --format=raw --part=1 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'<p>This is an imbeded message, with a single html part.</p>
This is a text attachment.
And this message is signed.
-Carl
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iEYEARECAAYFAk3SA/gACgkQ6JDdNq8qSWj0sACghqVJEQJUs3yV8zbTzhgnSIcD
W6cAmQE4dcYrx/LPLtYLZm1jsGauE5hE
=zkga
-----END PGP SIGNATURE-----'
test_begin_subtest "--format=raw --part=2, multipart/mixed"
output=$(notmuch show --format=raw --part=2 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'<p>This is an imbeded message, with a single html part.</p>
This is a text attachment.
And this message is signed.
-Carl'
test_begin_subtest "--format=raw --part=3, rfc822 multipart"
output=$(notmuch show --format=raw --part=3 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'<p>This is an imbeded message, with a single html part.</p>'
test_begin_subtest "--format=raw --part=4, html part"
output=$(notmuch show --format=raw --part=4 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'<p>This is an imbeded message, with a single html part.</p>'
test_begin_subtest "--format=raw --part=5, inline attachment"
output=$(notmuch show --format=raw --part=5 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'This is a text attachment.'
test_begin_subtest "--format=raw --part=6, plain text part"
output=$(notmuch show --format=raw --part=6 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'And this message is signed.
-Carl'
test_begin_subtest "--format=raw --part=7, pgp signature (unverified)"
output=$(notmuch show --format=raw --part=7 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" \
'-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iEYEARECAAYFAk3SA/gACgkQ6JDdNq8qSWj0sACghqVJEQJUs3yV8zbTzhgnSIcD
W6cAmQE4dcYrx/LPLtYLZm1jsGauE5hE
=zkga
-----END PGP SIGNATURE-----'
test_expect_success \
"--format=raw --part=8, no part, expect error" \
"notmuch show --format=raw --part=8 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
test_begin_subtest "--format=mbox"
output=$(notmuch show --format=mbox 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" "$(printf "From cworth@cworth.org Fri Jan 5 15:43:57 2001\n"; cat "${MAIL_DIR}"/multipart)"
test_expect_success \
"--format=mbox --part=1, incompatible, expect error" \
"! notmuch show --format=mbox --part=1 'id:87liy5ap00.fsf@yoom.home.cworth.org'"
test_done