Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id B22026DE096A for ; Fri, 8 Jul 2016 03:13:41 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: 0.077 X-Spam-Level: X-Spam-Status: No, score=0.077 tagged_above=-999 required=5 tests=[AWL=0.077] autolearn=disabled Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Nc2CGxPamK2e for ; Fri, 8 Jul 2016 03:13:34 -0700 (PDT) Received: from che.mayfirst.org (che.mayfirst.org [162.247.75.118]) by arlo.cworth.org (Postfix) with ESMTP id 42A2A6DE02B0 for ; Fri, 8 Jul 2016 03:13:10 -0700 (PDT) Received: from fifthhorseman.net (unknown [88.128.80.54]) by che.mayfirst.org (Postfix) with ESMTPSA id 44271F993 for ; Fri, 8 Jul 2016 06:13:09 -0400 (EDT) Received: by fifthhorseman.net (Postfix, from userid 1000) id C583421658; Fri, 8 Jul 2016 11:27:34 +0200 (CEST) From: Daniel Kahn Gillmor To: Notmuch Mail Subject: [PATCH v4 14/16] test indexing cleartext version of delivered messages. Date: Fri, 8 Jul 2016 11:27:25 +0200 Message-Id: <1467970047-8013-15-git-send-email-dkg@fifthhorseman.net> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1467970047-8013-1-git-send-email-dkg@fifthhorseman.net> References: <1467970047-8013-1-git-send-email-dkg@fifthhorseman.net> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jul 2016 10:13:41 -0000 This requires a bit of reorganization: * add_gnupg_home gets moved to test-lib.sh, and * we allow passing --long-arguments to "notmuch new" via emacs_fcc_message --- test/T350-crypto.sh | 15 ------------- test/T357-index-decryption.sh | 49 +++++++++++++++++++++++++++++++++++++++++++ test/test-lib.sh | 26 ++++++++++++++++++++++- 3 files changed, 74 insertions(+), 16 deletions(-) create mode 100755 test/T357-index-decryption.sh diff --git a/test/T350-crypto.sh b/test/T350-crypto.sh index 4bc15bc..50cc526 100755 --- a/test/T350-crypto.sh +++ b/test/T350-crypto.sh @@ -7,21 +7,6 @@ test_description='PGP/MIME signature verification and decryption' . ./test-lib.sh || exit 1 -add_gnupg_home () -{ - local output - [ -d ${GNUPGHOME} ] && return - mkdir -m 0700 "$GNUPGHOME" - $GPG --no-tty --import <$TEST_DIRECTORY/gnupg-secret-key.asc >"$GNUPGHOME"/import.log 2>&1 - test_debug "cat $GNUPGHOME/import.log" - if ($GPG --quick-random --version >/dev/null 2>&1) ; then - echo quick-random >> "$GNUPGHOME"/gpg.conf - elif ($GPG --debug-quick-random --version >/dev/null 2>&1) ; then - echo debug-quick-random >> "$GNUPGHOME"/gpg.conf - fi - echo no-emit-version >> "$GNUPGHOME"/gpg.conf -} - ################################################## add_gnupg_home diff --git a/test/T357-index-decryption.sh b/test/T357-index-decryption.sh new file mode 100755 index 0000000..27d6885 --- /dev/null +++ b/test/T357-index-decryption.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +# TODO: test index-decryption-failed + +test_description='indexing decrypted mail' +. ./test-lib.sh || exit 1 + +################################################## + +add_gnupg_home +# get key fingerprint +FINGERPRINT=$($GPG --no-tty --list-secret-keys --with-colons --fingerprint | grep '^fpr:' | cut -d: -f10) + +# create a test encrypted message +test_expect_success 'emacs delivery of encrypted message' \ +'emacs_fcc_message \ + "test encrypted message for cleartext index 001" \ + "This is a test encrypted message with a wumpus.\n" \ + "(mml-secure-message-encrypt)"' + +test_begin_subtest "search for unindexed cleartext" +output=$(notmuch search wumpus) +expected='' +test_expect_equal \ + "$output" \ + "$expected" + +# create a test encrypted message that is indexed in the clear +test_expect_success 'emacs delivery of encrypted message' \ +'emacs_fcc_message --try-decrypt \ + "test encrypted message for cleartext index 002" \ + "This is a test encrypted message with a wumpus.\n" \ + "(mml-secure-message-encrypt)"' + +test_begin_subtest "emacs delivery of encrypted message, indexed cleartext" +output=$(notmuch search wumpus) +expected='thread:0000000000000002 2000-01-01 [1/1] Notmuch Test Suite; test encrypted message for cleartext index 002 (encrypted inbox)' +test_expect_equal \ + "$output" \ + "$expected" + +# and the same search, but by property ($expected is untouched): +test_begin_subtest "emacs search by property for one message" +output=$(notmuch search has:index-decryption=success) +test_expect_equal \ + "$output" \ + "$expected" + +test_done diff --git a/test/test-lib.sh b/test/test-lib.sh index 5c14d1e..cb12ed9 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -93,6 +93,21 @@ else GPG=gpg fi +add_gnupg_home () +{ + local output + [ -d ${GNUPGHOME} ] && return + mkdir -m 0700 "$GNUPGHOME" + $GPG --no-tty --import <$TEST_DIRECTORY/gnupg-secret-key.asc >"$GNUPGHOME"/import.log 2>&1 + test_debug "cat $GNUPGHOME/import.log" + if ($GPG --quick-random --version >/dev/null 2>&1) ; then + echo quick-random >> "$GNUPGHOME"/gpg.conf + elif ($GPG --debug-quick-random --version >/dev/null 2>&1) ; then + echo debug-quick-random >> "$GNUPGHOME"/gpg.conf + fi + echo no-emit-version >> "$GNUPGHOME"/gpg.conf +} + # Convenience # # A regexp to match 5 and 40 hexdigits @@ -525,8 +540,17 @@ emacs_deliver_message () # Accepts arbitrary extra emacs/elisp functions to modify the message # before sending, which is useful to doing things like attaching files # to the message and encrypting/signing. +# +# If any GNU-style long-arguments (like --quiet or --try-decrypt) are +# at the head of the argument list, they are sent directly to "notmuch +# new" after message delivery emacs_fcc_message () { + local nmn_args='' + while [[ "$1" =~ ^-- ]]; do + nmn_args="$nmn_args $1" + shift + done local subject="$1" local body="$2" shift 2 @@ -545,7 +569,7 @@ emacs_fcc_message () (insert \"${body}\") $@ (notmuch-mua-send-and-exit))" || return 1 - notmuch new >/dev/null + notmuch new $nmn_args >/dev/null } # Generate a corpus of email and add it to the database. -- 2.8.1