notmuch/test/multipart
Jameson Graef Rollins 1d6b49561f tag signed/encrypted during notmuch new
This patch adds the tag "signed" to messages with any multipart/signed
parts, and the tag "encrypted" to messages with any
multipart/encrypted parts.  This only occurs when messages are indexed
during notmuch new, so a database rebuild is required to have old
messages tagged.
2011-05-27 16:22:00 -07:00

328 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.

#!/usr/bin/env 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 signed 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","signed","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_begin_subtest "'notmuch reply' to a multipart message"
output=$(notmuch reply 'id:87liy5ap00.fsf@yoom.home.cworth.org')
test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
Subject: Re: Multipart message
To: Carl Worth <cworth@cworth.org>, cworth@cworth.org
In-Reply-To: <87liy5ap00.fsf@yoom.home.cworth.org>
References: <87liy5ap00.fsf@yoom.home.cworth.org>
On Tue, 05 Jan 2001 15:43:57 -0000, Carl Worth <cworth@cworth.org> wrote:
Non-text part: multipart/signed
Non-text part: multipart/mixed
Non-text part: message/rfc822
Non-text part: text/html
> This is a text attachment.
> And this message is signed.
>
> -Carl
Non-text part: application/pgp-signature"
test_done