password-store

Simple password manager using gpg and ordinary unix directories
git clone https://git.zx2c4.com/password-store
Log | Files | Refs | README | LICENSE

commit a759d964e40d160d901052ec90e53c5acbe60355
parent 31119bfcd019bf6820450664f2dbbe70340d20d8
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Thu, 24 Apr 2014 03:21:44 +0200

Turns out aliases were a bad idea.

Diffstat:
Msrc/password-store.sh | 45++++++++++++++++++++++-----------------------
Msrc/platform/darwin.sh | 4++--
Msrc/platform/freebsd.sh | 4++--
Mtests/setup.sh | 2--
Mtests/t0001-sanity-checks.sh | 4++--
Mtests/t0010-generate-tests.sh | 6+++---
Mtests/t0020-show-tests.sh | 8++++----
Mtests/t0050-mv-tests.sh | 22+++++++++++-----------
Mtests/t0060-rm-tests.sh | 8++++----
Mtests/t0100-insert-tests.sh | 6+++---
Mtests/t0200-edit-tests.sh | 8++++----
Mtests/t0300-reencryption.sh | 40++++++++++++++++++++--------------------
Mtests/t0400-grep.sh | 14+++++++-------
Mtests/t0500-find.sh | 16++++++++--------
14 files changed, 92 insertions(+), 95 deletions(-)

diff --git a/src/password-store.sh b/src/password-store.sh @@ -10,7 +10,6 @@ GPG_OPTS=( "--quiet" "--yes" "--compress-algo=none" ) GPG="gpg" which gpg2 &>/dev/null && GPG="gpg2" [[ -n $GPG_AGENT_INFO || $GPG == "gpg2" ]] && GPG_OPTS+=( "--batch" "--use-agent" ) -alias gpg="command $GPG" PREFIX="${PASSWORD_STORE_DIR:-$HOME/.password-store}" X_SELECTION="${PASSWORD_STORE_X_SELECTION:-clipboard}" @@ -87,7 +86,7 @@ agent_check() { } reencrypt_path() { local prev_gpg_recipients="" gpg_keys="" current_keys="" index passfile - local groups="$(gpg --list-config --with-colons | grep "^cfg:group:.*")" + local groups="$($GPG --list-config --with-colons | grep "^cfg:group:.*")" while read -r -d "" passfile; do local passfile_dir="${passfile%/*}" passfile_dir="${passfile_dir#$PREFIX}" @@ -104,13 +103,13 @@ reencrypt_path() { IFS=";" eval 'GPG_RECIPIENTS+=( $group )' # http://unix.stackexchange.com/a/92190 unset GPG_RECIPIENTS[$index] done - gpg_keys="$(gpg --list-keys --keyid-format long "${GPG_RECIPIENTS[@]}" | sed -n 's/sub *.*\/\([A-F0-9]\{16\}\) .*/\1/p' | sort -u)" + gpg_keys="$($GPG --list-keys --keyid-format long "${GPG_RECIPIENTS[@]}" | sed -n 's/sub *.*\/\([A-F0-9]\{16\}\) .*/\1/p' | sort -u)" fi - current_keys="$(gpg -v --list-only --keyid-format long "$passfile" 2>&1 | cut -d ' ' -f 5 | sort -u)" + current_keys="$($GPG -v --list-only --keyid-format long "$passfile" 2>&1 | cut -d ' ' -f 5 | sort -u)" if [[ $gpg_keys != "$current_keys" ]]; then echo "$passfile_display: reencrypting to ${gpg_keys//$'\n'/ }" - gpg -d "${GPG_OPTS[@]}" "$passfile" | gpg -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile_temp" "${GPG_OPTS[@]}" && + $GPG -d "${GPG_OPTS[@]}" "$passfile" | $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile_temp" "${GPG_OPTS[@]}" && mv "$passfile_temp" "$passfile" || rm -f "$passfile_temp" fi prev_gpg_recipients="${GPG_RECIPIENTS[*]}" @@ -177,8 +176,8 @@ tmpdir() { fi } -alias getopt="command getopt" -alias shred="command shred -f -z" +GETOPT="getopt" +SHRED="shred -f -z" source "$(dirname "$0")/platform/$(uname | cut -d _ -f 1 | tr '[:upper:]' '[:lower:]').sh" 2>/dev/null # PLATFORM_FUNCTION_FILE @@ -253,7 +252,7 @@ cmd_usage() { cmd_init() { local opts id_path="" - opts="$(getopt -o p: -l path: -n "$PROGRAM" -- "$@")" + opts="$($GETOPT -o p: -l path: -n "$PROGRAM" -- "$@")" local err=$? eval set -- "$opts" while true; do case $1 in @@ -301,7 +300,7 @@ cmd_init() { cmd_show() { local opts clip=0 - opts="$(getopt -o c -l clip -n "$PROGRAM" -- "$@")" + opts="$($GETOPT -o c -l clip -n "$PROGRAM" -- "$@")" local err=$? eval set -- "$opts" while true; do case $1 in @@ -319,9 +318,9 @@ cmd_show() { check_sneaky_paths "$path" if [[ -f $passfile ]]; then if [[ $clip -eq 0 ]]; then - exec gpg -d "${GPG_OPTS[@]}" "$passfile" + exec $GPG -d "${GPG_OPTS[@]}" "$passfile" else - local pass="$(gpg -d "${GPG_OPTS[@]}" "$passfile" | head -n 1)" + local pass="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | head -n 1)" [[ -n $pass ]] || exit 1 clip "$pass" "$path" fi @@ -356,7 +355,7 @@ cmd_grep() { agent_check local search="$1" passfile grepresults while read -r -d "" passfile; do - grepresults="$(gpg -d "${GPG_OPTS[@]}" "$passfile" | grep --color=always "$search")" + grepresults="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | grep --color=always "$search")" [ $? -ne 0 ] && continue passfile="${passfile%.gpg}" passfile="${passfile#$PREFIX/}" @@ -369,7 +368,7 @@ cmd_grep() { cmd_insert() { local opts multiline=0 noecho=1 force=0 - opts="$(getopt -o mef -l multiline,echo,force -n "$PROGRAM" -- "$@")" + opts="$($GETOPT -o mef -l multiline,echo,force -n "$PROGRAM" -- "$@")" local err=$? eval set -- "$opts" while true; do case $1 in @@ -395,7 +394,7 @@ cmd_insert() { if [[ $multiline -eq 1 ]]; then echo "Enter contents of $path and press Ctrl+D when finished:" echo - gpg -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" + $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" elif [[ $noecho -eq 1 ]]; then local password password_again while true; do @@ -404,7 +403,7 @@ cmd_insert() { read -r -p "Retype password for $path: " -s password_again || exit 1 echo if [[ $password == "$password_again" ]]; then - gpg -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" <<<"$password" + $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" <<<"$password" break else echo "Error: the entered passwords do not match." @@ -413,7 +412,7 @@ cmd_insert() { else local password read -r -p "Enter password for $path: " -e password - gpg -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" <<<"$password" + $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" <<<"$password" fi git_add_file "$passfile" "Add given password for $path to store." } @@ -431,18 +430,18 @@ cmd_edit() { local passfile="$PREFIX/$path.gpg" local template="$PROGRAM.XXXXXXXXXXXXX" - trap 'shred "$tmp_file"; rm -rf "$SECURE_TMPDIR" "$tmp_file"' INT TERM EXIT + trap '$SHRED "$tmp_file"; rm -rf "$SECURE_TMPDIR" "$tmp_file"' INT TERM EXIT tmpdir #Defines $SECURE_TMPDIR local tmp_file="$(TMPDIR="$SECURE_TMPDIR" mktemp -t "$template")" local action="Add" if [[ -f $passfile ]]; then - gpg -d -o "$tmp_file" "${GPG_OPTS[@]}" "$passfile" || exit 1 + $GPG -d -o "$tmp_file" "${GPG_OPTS[@]}" "$passfile" || exit 1 action="Edit" fi ${EDITOR:-vi} "$tmp_file" - while ! gpg -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" "$tmp_file"; do + while ! $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" "$tmp_file"; do echo "GPG encryption failed. Retrying." sleep 1 done @@ -451,7 +450,7 @@ cmd_edit() { cmd_generate() { local opts clip=0 force=0 symbols="-y" - opts="$(getopt -o ncf -l no-symbols,clip,force -n "$PROGRAM" -- "$@")" + opts="$($GETOPT -o ncf -l no-symbols,clip,force -n "$PROGRAM" -- "$@")" local err=$? eval set -- "$opts" while true; do case $1 in @@ -480,7 +479,7 @@ cmd_generate() { local pass="$(pwgen -s $symbols $length 1)" [[ -n $pass ]] || exit 1 - gpg -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" <<<"$pass" + $GPG -e "${GPG_RECIPIENT_ARGS[@]}" -o "$passfile" "${GPG_OPTS[@]}" <<<"$pass" git_add_file "$passfile" "Add generated password for $path to store." if [[ $clip -eq 0 ]]; then @@ -493,7 +492,7 @@ cmd_generate() { cmd_delete() { local opts recursive="" force=0 - opts="$(getopt -o rf -l recursive,force -n "$PROGRAM" -- "$@")" + opts="$($GETOPT -o rf -l recursive,force -n "$PROGRAM" -- "$@")" local err=$? eval set -- "$opts" while true; do case $1 in @@ -531,7 +530,7 @@ cmd_copy_move() { local opts move=1 force=0 [[ $1 == "copy" ]] && move=0 shift - opts="$(getopt -o f -l force -n "$PROGRAM" -- "$@")" + opts="$($GETOPT -o f -l force -n "$PROGRAM" -- "$@")" local err=$? eval set -- "$opts" while true; do case $1 in diff --git a/src/platform/darwin.sh b/src/platform/darwin.sh @@ -31,5 +31,5 @@ tmpdir() { mount -t hfs -o noatime -o nobrowse "$ramdisk_dev" "$SECURE_TMPDIR" || exit 1 } -alias getopt="command $(brew --prefix gnu-getopt 2>/dev/null || echo /usr/local)/bin/getopt" -alias shred="command srm -f -z" +GETOPT="$(brew --prefix gnu-getopt 2>/dev/null || echo /usr/local)/bin/getopt" +SHRED="srm -f -z" diff --git a/src/platform/freebsd.sh b/src/platform/freebsd.sh @@ -1,5 +1,5 @@ # Copyright (C) 2012 Jonathan Chu <milki@rescomp.berkeley.edu>. All Rights Reserved. # This file is licensed under the GPLv2+. Please see COPYING for more information. -alias getopt="command /usr/local/bin/getopt" -alias shred="command rm -P -f" +GETOPT="/usr/local/bin/getopt" +SHRED="rm -P -f" diff --git a/tests/setup.sh b/tests/setup.sh @@ -29,14 +29,12 @@ if [[ ! -e $PASS ]]; then echo "Could not find password-store.sh" exit 1 fi -alias pass="command \"$PASS\"" # Note: the assumption is the test key is unencrypted. export GNUPGHOME="$TEST_HOME/gnupg/" chmod 700 "$GNUPGHOME" GPG="gpg" which gpg2 &>/dev/null && GPG="gpg2" -alias gpg="command $GPG" # We don't want to use any running agent. # We want an agent to appear to pass to be running. diff --git a/tests/t0001-sanity-checks.sh b/tests/t0001-sanity-checks.sh @@ -4,11 +4,11 @@ test_description='Sanity checks' . ./setup.sh test_expect_success 'Make sure we can run pass' ' - pass --help | grep "pass: the standard unix password manager" + "$PASS" --help | grep "pass: the standard unix password manager" ' test_expect_success 'Make sure we can initialize our test store' ' - pass init $KEY1 && + "$PASS" init $KEY1 && [[ -e "$PASSWORD_STORE_DIR/.gpg-id" ]] && [[ $(cat "$PASSWORD_STORE_DIR/.gpg-id") == "$KEY1" ]] ' diff --git a/tests/t0010-generate-tests.sh b/tests/t0010-generate-tests.sh @@ -4,9 +4,9 @@ test_description='Test generate' . ./setup.sh test_expect_success 'Test "generate" command' ' - pass init $KEY1 && - pass generate cred 19 && - [[ $(pass show cred | wc -m) -eq 20 ]] + "$PASS" init $KEY1 && + "$PASS" generate cred 19 && + [[ $("$PASS" show cred | wc -m) -eq 20 ]] ' test_done diff --git a/tests/t0020-show-tests.sh b/tests/t0020-show-tests.sh @@ -4,13 +4,13 @@ test_description='Test show' . ./setup.sh test_expect_success 'Test "show" command' ' - pass init $KEY1 && - pass generate cred1 20 && - pass show cred1 + "$PASS" init $KEY1 && + "$PASS" generate cred1 20 && + "$PASS" show cred1 ' test_expect_success 'Test "show" of nonexistant password' ' - test_must_fail pass show cred2 + test_must_fail "$PASS" show cred2 ' test_done diff --git a/tests/t0050-mv-tests.sh b/tests/t0050-mv-tests.sh @@ -6,41 +6,41 @@ test_description='Test mv command' INITIAL_PASSWORD="bla bla bla will we make it!!" test_expect_success 'Basic move command' ' - pass init $KEY1 && - pass git init && - pass insert -e cred1 <<<"$INITIAL_PASSWORD" && - pass mv cred1 cred2 && + "$PASS" init $KEY1 && + "$PASS" git init && + "$PASS" insert -e cred1 <<<"$INITIAL_PASSWORD" && + "$PASS" mv cred1 cred2 && [[ -e $PASSWORD_STORE_DIR/cred2.gpg && ! -e $PASSWORD_STORE_DIR/cred1.gpg ]] ' test_expect_success 'Directory creation' ' - pass mv cred2 directory/ && + "$PASS" mv cred2 directory/ && [[ -d $PASSWORD_STORE_DIR/directory && -e $PASSWORD_STORE_DIR/directory/cred2.gpg ]] ' test_expect_success 'Directory creation with file rename and empty directory removal' ' - pass mv directory/cred2 newdirectory/cred && + "$PASS" mv directory/cred2 newdirectory/cred && [[ -d $PASSWORD_STORE_DIR/newdirectory && -e $PASSWORD_STORE_DIR/newdirectory/cred.gpg && ! -e $PASSWORD_STORE_DIR/directory ]] ' test_expect_success 'Directory rename' ' - pass mv newdirectory anotherdirectory && + "$PASS" mv newdirectory anotherdirectory && [[ -d $PASSWORD_STORE_DIR/anotherdirectory && -e $PASSWORD_STORE_DIR/anotherdirectory/cred.gpg && ! -e $PASSWORD_STORE_DIR/newdirectory ]] ' test_expect_success 'Directory move into new directory' ' - pass mv anotherdirectory newdirectory/ && + "$PASS" mv anotherdirectory newdirectory/ && [[ -d $PASSWORD_STORE_DIR/newdirectory/anotherdirectory && -e $PASSWORD_STORE_DIR/newdirectory/anotherdirectory/cred.gpg && ! -e $PASSWORD_STORE_DIR/anotherdirectory ]] ' test_expect_success 'Multi-directory creation and multi-directory empty removal' ' - pass mv newdirectory/anotherdirectory/cred new1/new2/new3/new4/thecred && - pass mv new1/new2/new3/new4/thecred cred && + "$PASS" mv newdirectory/anotherdirectory/cred new1/new2/new3/new4/thecred && + "$PASS" mv new1/new2/new3/new4/thecred cred && [[ ! -d $PASSWORD_STORE_DIR/newdirectory/anotherdirectory && ! -d $PASSWORD_STORE_DIR/new1/new2/new3/new4 && -e $PASSWORD_STORE_DIR/cred.gpg ]] ' test_expect_success 'Password made it until the end' ' - [[ $(pass show cred) == "$INITIAL_PASSWORD" ]] + [[ $("$PASS" show cred) == "$INITIAL_PASSWORD" ]] ' test_expect_success 'Git is consistent' ' diff --git a/tests/t0060-rm-tests.sh b/tests/t0060-rm-tests.sh @@ -4,14 +4,14 @@ test_description='Test rm' . ./setup.sh test_expect_success 'Test "rm" command' ' - pass init $KEY1 && - pass generate cred1 43 && - echo "y" | pass rm cred1 && + "$PASS" init $KEY1 && + "$PASS" generate cred1 43 && + echo "y" | "$PASS" rm cred1 && [[ ! -e $PASSWORD_STORE_DIR/cred1.gpg ]] ' test_expect_success 'Test "rm" of non-existent password' ' - test_must_fail pass rm does-not-exist + test_must_fail "$PASS" rm does-not-exist ' test_done diff --git a/tests/t0100-insert-tests.sh b/tests/t0100-insert-tests.sh @@ -4,9 +4,9 @@ test_description='Test insert' . ./setup.sh test_expect_success 'Test "insert" command' ' - pass init $KEY1 && - echo "Hello world" | pass insert -e cred1 && - [[ $(pass show cred1) == "Hello world" ]] + "$PASS" init $KEY1 && + echo "Hello world" | "$PASS" insert -e cred1 && + [[ $("$PASS" show cred1) == "Hello world" ]] ' test_done diff --git a/tests/t0200-edit-tests.sh b/tests/t0200-edit-tests.sh @@ -4,12 +4,12 @@ test_description='Test edit' . ./setup.sh test_expect_success 'Test "edit" command' ' - pass init $KEY1 && - pass generate cred1 90 && + "$PASS" init $KEY1 && + "$PASS" generate cred1 90 && export FAKE_EDITOR_PASSWORD="big fat fake password" && export EDITOR="$TEST_HOME/fake-editor-change-password.sh" && - pass edit cred1 && - [[ $(pass show cred1) == "$FAKE_EDITOR_PASSWORD" ]] + "$PASS" edit cred1 && + [[ $("$PASS" show cred1) == "$FAKE_EDITOR_PASSWORD" ]] ' test_done diff --git a/tests/t0300-reencryption.sh b/tests/t0300-reencryption.sh @@ -6,13 +6,13 @@ test_description='Reencryption consistency' INITIAL_PASSWORD="will this password live? a big question indeed..." canonicalize_gpg_keys() { - gpg --list-keys --keyid-format long "$@" | sed -n 's/sub *.*\/\([A-F0-9]\{16\}\) .*/\1/p' | sort -u + $GPG --list-keys --keyid-format long "$@" | sed -n 's/sub *.*\/\([A-F0-9]\{16\}\) .*/\1/p' | sort -u } gpg_keys_from_encrypted_file() { - gpg -v --list-only --keyid-format long "$1" 2>&1 | cut -d ' ' -f 5 | sort -u + $GPG -v --list-only --keyid-format long "$1" 2>&1 | cut -d ' ' -f 5 | sort -u } gpg_keys_from_group() { - local output="$(gpg --list-config --with-colons | sed -n "s/^cfg:group:$1:\\(.*\\)/\\1/p" | head -n 1)" + local output="$($GPG --list-config --with-colons | sed -n "s/^cfg:group:$1:\\(.*\\)/\\1/p" | head -n 1)" local saved_ifs="$IFS" IFS=";" local keys=( $output ) @@ -21,75 +21,75 @@ gpg_keys_from_group() { } test_expect_success 'Setup initial key and git' ' - pass init $KEY1 && pass git init + "$PASS" init $KEY1 && "$PASS" git init ' test_expect_success 'Root key encryption' ' - pass insert -e folder/cred1 <<<"$INITIAL_PASSWORD" && + "$PASS" insert -e folder/cred1 <<<"$INITIAL_PASSWORD" && [[ $(canonicalize_gpg_keys "$KEY1") == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/folder/cred1.gpg")" ]] ' test_expect_success 'Reencryption root single key' ' - pass init $KEY2 && + "$PASS" init $KEY2 && [[ $(canonicalize_gpg_keys "$KEY2") == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/folder/cred1.gpg")" ]] ' test_expect_success 'Reencryption root multiple key' ' - pass init $KEY2 $KEY3 $KEY1 && + "$PASS" init $KEY2 $KEY3 $KEY1 && [[ $(canonicalize_gpg_keys $KEY2 $KEY3 $KEY1) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/folder/cred1.gpg")" ]] ' test_expect_success 'Reencryption root multiple key with string' ' - pass init $KEY2 $KEY3 $KEY1 "pass test key 4" && + "$PASS" init $KEY2 $KEY3 $KEY1 "pass test key 4" && [[ $(canonicalize_gpg_keys $KEY2 $KEY3 $KEY1 $KEY4) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/folder/cred1.gpg")" ]] ' test_expect_success 'Reencryption root group' ' - pass init group1 && + "$PASS" init group1 && [[ $(gpg_keys_from_group group1) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/folder/cred1.gpg")" ]] ' test_expect_success 'Reencryption root group with spaces' ' - pass init "big group" && + "$PASS" init "big group" && [[ $(gpg_keys_from_group "big group") == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/folder/cred1.gpg")" ]] ' test_expect_success 'Reencryption root group with spaces and other keys' ' - pass init "big group" $KEY3 $KEY1 $KEY2 && + "$PASS" init "big group" $KEY3 $KEY1 $KEY2 && [[ $(canonicalize_gpg_keys $KEY3 $KEY1 $KEY2 $(gpg_keys_from_group "big group")) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/folder/cred1.gpg")" ]] ' test_expect_success 'Reencryption root group and other keys' ' - pass init group2 $KEY3 $KEY1 $KEY2 && + "$PASS" init group2 $KEY3 $KEY1 $KEY2 && [[ $(canonicalize_gpg_keys $KEY3 $KEY1 $KEY2 $(gpg_keys_from_group group2)) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/folder/cred1.gpg")" ]] ' test_expect_success 'Reencryption root group to identical individual with no file change' ' oldfile="$SHARNESS_TRASH_DIRECTORY/$RANDOM.$RANDOM.$RANDOM.$RANDOM.$RANDOM" && - pass init group1 && + "$PASS" init group1 && cp "$PASSWORD_STORE_DIR/folder/cred1.gpg" "$oldfile" && - pass init $KEY4 $KEY2 && + "$PASS" init $KEY4 $KEY2 && test_cmp "$PASSWORD_STORE_DIR/folder/cred1.gpg" "$oldfile" ' test_expect_success 'Reencryption subfolder multiple keys, copy' ' - pass init -p anotherfolder $KEY3 $KEY1 && - pass cp folder/cred1 anotherfolder/ && + "$PASS" init -p anotherfolder $KEY3 $KEY1 && + "$PASS" cp folder/cred1 anotherfolder/ && [[ $(canonicalize_gpg_keys $KEY1 $KEY3) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/anotherfolder/cred1.gpg")" ]] ' test_expect_success 'Reencryption subfolder multiple keys, move, deinit' ' - pass init -p anotherfolder2 $KEY3 $KEY4 $KEY2 && - pass mv -f anotherfolder anotherfolder2/ && + "$PASS" init -p anotherfolder2 $KEY3 $KEY4 $KEY2 && + "$PASS" mv -f anotherfolder anotherfolder2/ && [[ $(canonicalize_gpg_keys $KEY1 $KEY3) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/anotherfolder2/anotherfolder/cred1.gpg")" ]] && - pass init -p anotherfolder2/anotherfolder "" && + "$PASS" init -p anotherfolder2/anotherfolder "" && [[ $(canonicalize_gpg_keys $KEY3 $KEY4 $KEY2) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/anotherfolder2/anotherfolder/cred1.gpg")" ]] ' #TODO: test with more varieties of move and copy! test_expect_success 'Password lived through all transformations' ' - [[ $(pass show anotherfolder2/anotherfolder/cred1) == "$INITIAL_PASSWORD" ]] + [[ $("$PASS" show anotherfolder2/anotherfolder/cred1) == "$INITIAL_PASSWORD" ]] ' test_expect_success 'Git picked up all changes throughout' ' diff --git a/tests/t0400-grep.sh b/tests/t0400-grep.sh @@ -4,13 +4,13 @@ test_description='Grep check' . ./setup.sh test_expect_success 'Make sure grep prints normal lines' ' - pass init $KEY1 && - pass insert -e blah1 <<<"hello" && - pass insert -e blah2 <<<"my name is" && - pass insert -e folder/blah3 <<<"I hate computers" && - pass insert -e blah4 <<<"me too!" && - pass insert -e folder/where/blah5 <<<"They are hell" && - results="$(pass grep hell)" && + "$PASS" init $KEY1 && + "$PASS" insert -e blah1 <<<"hello" && + "$PASS" insert -e blah2 <<<"my name is" && + "$PASS" insert -e folder/blah3 <<<"I hate computers" && + "$PASS" insert -e blah4 <<<"me too!" && + "$PASS" insert -e folder/where/blah5 <<<"They are hell" && + results="$("$PASS" grep hell)" && [[ $(wc -l <<<"$results") -eq 4 ]] && grep -q blah5 <<<"$results" && grep -q blah1 <<<"$results" && diff --git a/tests/t0500-find.sh b/tests/t0500-find.sh @@ -4,14 +4,14 @@ test_description='Find check' . ./setup.sh test_expect_success 'Make sure find resolves correct files' ' - pass init $KEY1 && - pass generate Something/neat 19 && - pass generate Anotherthing/okay 38 && - pass generate Fish 12 && - pass generate Fishthings 122 && - pass generate Fishies/stuff 21 && - pass generate Fishies/otherstuff 1234 && - [[ $(pass find fish | sed "s/^[ \`|-]*//g;s/\\x1B\\[[0-9;]*[a-zA-Z]//g" | tr "\\n" -) == "Search Terms: fish-Fish-Fishies-otherstuff-stuff-Fishthings-" ]] + "$PASS" init $KEY1 && + "$PASS" generate Something/neat 19 && + "$PASS" generate Anotherthing/okay 38 && + "$PASS" generate Fish 12 && + "$PASS" generate Fishthings 122 && + "$PASS" generate Fishies/stuff 21 && + "$PASS" generate Fishies/otherstuff 1234 && + [[ $("$PASS" find fish | sed "s/^[ \`|-]*//g;s/\\x1B\\[[0-9;]*[a-zA-Z]//g" | tr "\\n" -) == "Search Terms: fish-Fish-Fishies-otherstuff-stuff-Fishthings-" ]] ' test_done