mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +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
117 lines
3.6 KiB
Bash
Executable file
117 lines
3.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
test_description="duplicate message ids"
|
|
. $(dirname "$0")/test-lib.sh || exit 1
|
|
|
|
add_message '[id]="duplicate"' '[subject]="message 1" [filename]=copy1'
|
|
add_message '[id]="duplicate"' '[subject]="message 2" [filename]=copy2'
|
|
|
|
add_message '[id]="duplicate"' '[subject]="message 0" [filename]=copy0'
|
|
test_begin_subtest 'search: first indexed subject preserved'
|
|
cat <<EOF > EXPECTED
|
|
thread:XXX 2001-01-05 [1/1(3)] Notmuch Test Suite; message 1 (inbox unread)
|
|
EOF
|
|
notmuch search id:duplicate | notmuch_search_sanitize > OUTPUT
|
|
test_expect_equal_file EXPECTED OUTPUT
|
|
|
|
test_begin_subtest 'First subject preserved in notmuch-show (json)'
|
|
test_subtest_known_broken
|
|
output=$(notmuch show --body=false --format=json id:duplicate | notmuch_json_show_sanitize)
|
|
expected='[[[{
|
|
"id": "XXXXX",
|
|
"match": true,
|
|
"excluded": false,
|
|
"filename": [
|
|
"'"${MAIL_DIR}"/copy0'",
|
|
"'"${MAIL_DIR}"/copy1'",
|
|
"'"${MAIL_DIR}"/copy2'"
|
|
],
|
|
"timestamp": 42,
|
|
"date_relative": "2001-01-05",
|
|
"tags": ["inbox","unread"],
|
|
"headers": {
|
|
"Subject": "message 1",
|
|
"From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
|
|
"To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
|
|
"Date": "GENERATED_DATE"
|
|
}
|
|
},
|
|
[]]]]'
|
|
test_expect_equal_json "$output" "$expected"
|
|
|
|
test_begin_subtest 'Search for second subject'
|
|
cat <<EOF >EXPECTED
|
|
MAIL_DIR/copy0
|
|
MAIL_DIR/copy1
|
|
MAIL_DIR/copy2
|
|
EOF
|
|
notmuch search --output=files subject:'"message 2"' | notmuch_dir_sanitize > OUTPUT
|
|
test_expect_equal_file EXPECTED OUTPUT
|
|
|
|
test_begin_subtest 'Regexp search for second subject'
|
|
# Note that missing field processor support really means the test
|
|
# doesn't make sense, but it happens to pass.
|
|
if [ $NOTMUCH_HAVE_XAPIAN_FIELD_PROCESSOR -eq 1 ]; then
|
|
test_subtest_known_broken
|
|
fi
|
|
cat <<EOF >EXPECTED
|
|
MAIL_DIR/copy0
|
|
MAIL_DIR/copy1
|
|
MAIL_DIR/copy2
|
|
EOF
|
|
notmuch search --output=files 'subject:"/message 2/"' | notmuch_dir_sanitize > OUTPUT
|
|
test_expect_equal_file EXPECTED OUTPUT
|
|
|
|
add_message '[id]="duplicate"' '[body]="sekrit" [filename]=copy3'
|
|
test_begin_subtest 'search for body in duplicate file'
|
|
cat <<EOF >EXPECTED
|
|
MAIL_DIR/copy0
|
|
MAIL_DIR/copy1
|
|
MAIL_DIR/copy2
|
|
MAIL_DIR/copy3
|
|
EOF
|
|
notmuch search --output=files "sekrit" | notmuch_dir_sanitize > OUTPUT
|
|
test_expect_equal_file EXPECTED OUTPUT
|
|
|
|
rm ${MAIL_DIR}/copy3
|
|
test_begin_subtest 'reindex drops terms in duplicate file'
|
|
cp /dev/null EXPECTED
|
|
notmuch reindex '*'
|
|
notmuch search --output=files "sekrit" | notmuch_dir_sanitize > OUTPUT
|
|
test_expect_equal_file EXPECTED OUTPUT
|
|
|
|
test_begin_subtest 'reindex choses subject from first filename'
|
|
cat <<EOF > EXPECTED
|
|
thread:XXX 2001-01-05 [1/1(3)] Notmuch Test Suite; message 0 (inbox unread)
|
|
EOF
|
|
notmuch search id:duplicate | notmuch_search_sanitize > OUTPUT
|
|
test_expect_equal_file EXPECTED OUTPUT
|
|
|
|
rm ${MAIL_DIR}/copy0
|
|
test_begin_subtest 'Deleted first duplicate file does not stop notmuch show from working'
|
|
output=$(notmuch show --body=false --format=json id:duplicate |
|
|
notmuch_json_show_sanitize | sed 's/message [0-9]/A_SUBJECT/')
|
|
expected='[[[{
|
|
"id": "XXXXX",
|
|
"crypto": {},
|
|
"match": true,
|
|
"excluded": false,
|
|
"filename": [
|
|
"'"${MAIL_DIR}"/copy0'",
|
|
"'"${MAIL_DIR}"/copy1'",
|
|
"'"${MAIL_DIR}"/copy2'"
|
|
],
|
|
"timestamp": 42,
|
|
"date_relative": "2001-01-05",
|
|
"tags": ["inbox","unread"],
|
|
"headers": {
|
|
"Subject": "A_SUBJECT",
|
|
"From": "Notmuch Test Suite <test_suite@notmuchmail.org>",
|
|
"To": "Notmuch Test Suite <test_suite@notmuchmail.org>",
|
|
"Date": "GENERATED_DATE"
|
|
}
|
|
},
|
|
[]]]]'
|
|
|
|
test_expect_equal_json "$output" "$expected"
|
|
|
|
test_done
|