mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-01 07:04:10 +01:00
4cb789aa09
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
166 lines
4.5 KiB
Bash
Executable file
166 lines
4.5 KiB
Bash
Executable file
#!/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
|