summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/t0300-reencryption.sh81
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/t0300-reencryption.sh b/tests/t0300-reencryption.sh
new file mode 100755
index 0000000..87f445e
--- /dev/null
+++ b/tests/t0300-reencryption.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+test_description='Reencryption consistency'
+. ./setup.sh
+
+INITIAL_PASSWORD="will this password live? a big question indeed..."
+
+test_expect_success 'Init with key1' '
+ pass_init
+'
+
+test_expect_success 'Root key encryption' '
+ $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 &&
+ [[ $(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 &&
+ [[ $(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" &&
+ [[ $(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 &&
+ [[ $(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" &&
+ [[ $(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 &&
+ [[ $(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 &&
+ [[ $(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 &&
+ cp "$PASSWORD_STORE_DIR/folder/cred1.gpg" "$oldfile" &&
+ $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/ &&
+ [[ $(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/ &&
+ [[ $(canonicalize_gpg_keys $KEY1 $KEY3) == "$(gpg_keys_from_encrypted_file "$PASSWORD_STORE_DIR/anotherfolder2/anotherfolder/cred1.gpg")" ]] &&
+ $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" ]]
+'
+
+test_done
+
span title='2021-02-21 17:43:31 +0100'>2021-02-21#25 Check for folder again while lockingRené 'Necoro' Neumann1-0/+8 2021-02-21Strip `srcset` attributeRené 'Necoro' Neumann2-1/+8 2021-02-21Slight restructuringRené 'Necoro' Neumann4-14/+21 2021-02-21Clarify codeRené 'Necoro' Neumann1-5/+5 2021-02-21Update changelogRené 'Necoro' Neumann1-0/+2 2021-02-21#39 Ignore mails marked as deleted when looking for existing mails, as to not...René 'Necoro' Neumann1-0/+1 2021-02-21go mod tidyRené 'Necoro' Neumann1-8/+0 2021-02-18Import 'embed' packageRené 'Necoro' Neumann1-0/+1 2021-02-16Fix goreleaser setup regarding dockerRené 'Necoro' Neumann1-3/+1 2021-02-16Prepare v0.6.0v0.6.0René 'Necoro' Neumann3-3/+8 2021-02-16Fix CRLF endingRené 'Necoro' Neumann1-57/+57 2021-02-16Increment go-version to 1.16René 'Necoro' Neumann3-5/+5 2021-02-16Use go-embed for templates instead of inline strings.René 'Necoro' Neumann6-74/+79 2021-02-16Issue #46: Fix semantics of `n` resultRené 'Necoro' Neumann2-9/+15 2021-02-16Issue #46: Move and rename writer; add commentsRené 'Necoro' Neumann3-12/+21 2021-02-15Issue #46: Improvements; add testsRené 'Necoro' Neumann2-1/+48 2021-02-15Bump github.com/google/uuid from 1.1.4 to 1.2.0dependabot[bot]2-3/+3 2021-02-15Issue #46: Make the resulting email body not to include single \r or \n. This...René 'Necoro' Neumann2-2/+66 2021-01-20Bump github.com/PuerkitoBio/goquery from 1.6.0 to 1.6.1dependabot[bot]2-3/+3 2021-01-09Bump github.com/google/uuid from 1.1.2 to 1.1.4dependabot[bot]2-3/+3 2021-01-09Bump github.com/emersion/go-message from 0.14.0 to 0.14.1 (#42)dependabot[bot]2-3/+3 2020-11-28Bump github.com/emersion/go-message from 0.13.0 to 0.14.0 (#38)dependabot[bot]2-3/+9 2020-11-28Bump github.com/google/go-cmp from 0.5.2 to 0.5.4 (#37)dependabot[bot]2-3/+3 2020-11-23Fix release.ymlv0.5.2René 'Necoro' Neumann1-3/+10 2020-11-23Prepare v0.5.2René 'Necoro' Neumann3-3/+8 2020-11-20Bump github.com/gabriel-vasile/mimetype from 1.1.1 to 1.1.2dependabot[bot]2-3/+3 2020-11-04Clean dependabot.ymlRené 'Necoro' Neumann1-4/+0