notmuch/test/T470-missing-headers.sh
Daniel Kahn Gillmor 4cb789aa09 cli/show: emit new whole-message crypto status output
This allows MUAs that don't want to think about per-mime-part
cryptographic status to have a simple high-level overview of the
message's cryptographic state.

Sensibly structured encrypted and/or signed messages will work fine
with this.  The only requirement for the simplest encryption + signing
is that the message have all of its encryption and signing protection
(the "cryptographic envelope") in a contiguous set of MIME layers at
the very outside of the message itself.

This is because messages with some subparts signed or encrypted, but
with other subparts with no cryptographic protection is very difficult
to reason about, and even harder for the user to make sense of or work
with.

For further characterization of the Cryptographic Envelope and some of
the usability tradeoffs, see here:

   https://dkg.fifthhorseman.net/blog/e-mail-cryptography.html#cryptographic-envelope
2019-05-26 08:20:23 -03:00

166 lines
4.5 KiB
Bash
Executable file
Raw Permalink 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='messages with missing headers'
. $(dirname "$0")/test-lib.sh || exit 1
# Notmuch requires at least one of from, subject, or to or it will
# ignore the file. Generate two messages so that together they cover
# all possible missing headers. We also give one of the messages a
# date to ensure stable result ordering.
cat <<EOF > "${MAIL_DIR}/msg-2"
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:57 +0000
Body
EOF
cat <<EOF > "${MAIL_DIR}/msg-1"
From: Notmuch Test Suite <test_suite@notmuchmail.org>
Body
EOF
NOTMUCH_NEW >/dev/null
test_begin_subtest "Search: text"
output=$(notmuch search '*' | notmuch_search_sanitize)
test_expect_equal "$output" "\
thread:XXX 2001-01-05 [1/1] ; (inbox unread)
thread:XXX 1970-01-01 [1/1] Notmuch Test Suite; (inbox unread)"
test_begin_subtest "Search: json"
output=$(notmuch search --format=json '*' | notmuch_search_sanitize)
test_expect_equal_json "$output" '
[
{
"authors": "",
"date_relative": "2001-01-05",
"matched": 1,
"subject": "",
"tags": [
"inbox",
"unread"
],
"thread": "XXX",
"timestamp": 978709437,
"total": 1,
"query": ["id:notmuch-sha1-7a6e4eac383ef958fcd3ebf2143db71b8ff01161", null]
},
{
"authors": "Notmuch Test Suite",
"date_relative": "1970-01-01",
"matched": 1,
"subject": "",
"tags": [
"inbox",
"unread"
],
"thread": "XXX",
"timestamp": 0,
"total": 1,
"query": ["id:notmuch-sha1-ca55943aff7a72baf2ab21fa74fab3d632401334", null]
}
]'
test_begin_subtest "Show: text"
output=$(notmuch show '*' | notmuch_show_sanitize)
test_expect_equal "$output" "\
message{ id:notmuch-sha1-7a6e4eac383ef958fcd3ebf2143db71b8ff01161 depth:0 match:1 excluded:0 filename:/XXX/mail/msg-2
header{
(2001-01-05) (inbox unread)
Subject: (null)
From: (null)
To: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Fri, 05 Jan 2001 15:43:57 +0000
header}
body{
part{ ID: 1, Content-type: text/plain
Body
part}
body}
message}
message{ id:notmuch-sha1-ca55943aff7a72baf2ab21fa74fab3d632401334 depth:0 match:1 excluded:0 filename:/XXX/mail/msg-1
header{
Notmuch Test Suite <test_suite@notmuchmail.org> (1970-01-01) (inbox unread)
Subject: (null)
From: Notmuch Test Suite <test_suite@notmuchmail.org>
Date: Thu, 01 Jan 1970 00:00:00 +0000
header}
body{
part{ ID: 1, Content-type: text/plain
Body
part}
body}
message}"
test_begin_subtest "Show: json"
output=$(notmuch show --format=json '*' | notmuch_json_show_sanitize)
expected=$(notmuch_json_show_sanitize <<EOF
[
[
[
{
"body": [
{
"content": "Body\n",
"content-type": "text/plain",
"id": 1
}
],
"crypto": {},
"date_relative": "2001-01-05",
"excluded": false,
"filename": ["YYYYY"],
"headers": {
"Date": "Fri, 05 Jan 2001 15:43:57 +0000",
"From": "",
"Subject": "",
"To": "Notmuch Test Suite <test_suite@notmuchmail.org>"
},
"id": "XXXXX",
"match": true,
"tags": [
"inbox",
"unread"
],
"timestamp": 978709437
},
[]
]
],
[
[
{
"body": [
{
"content": "Body\n",
"content-type": "text/plain",
"id": 1
}
],
"crypto": {},
"date_relative": "1970-01-01",
"excluded": false,
"filename": ["YYYYY"],
"headers": {
"Date": "Thu, 01 Jan 1970 00:00:00 +0000",
"From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
"Subject": ""
},
"id": "XXXXX",
"match": true,
"tags": [
"inbox",
"unread"
],
"timestamp": 0
},
[]
]
]
]
EOF
)
test_expect_equal_json "$output" "$expected"
test_done