diff options
author | Tad Fisher <tad@simple.com> | 2017-03-20 13:52:25 -0700 |
---|---|---|
committer | Tad Fisher <tad@simple.com> | 2017-03-20 13:52:25 -0700 |
commit | dd7824f431c4cc8b52e01b5b84c7a178229755d2 (patch) | |
tree | 550c79bcaaaf946f0333c13c4a2000667d4c0085 /test | |
parent | b6b23de6f787c3fc244484f613f84ffa6e3cb201 (diff) | |
download | pass-otp-dd7824f431c4cc8b52e01b5b84c7a178229755d2.tar.gz pass-otp-dd7824f431c4cc8b52e01b5b84c7a178229755d2.zip |
Add cmd_otp_append for appending OTP secrets to existing passfiles
Diffstat (limited to 'test')
-rwxr-xr-x | test/append.t | 125 | ||||
-rwxr-xr-x | test/code.t | 24 |
2 files changed, 149 insertions, 0 deletions
diff --git a/test/append.t b/test/append.t new file mode 100755 index 0000000..bba3c60 --- /dev/null +++ b/test/append.t @@ -0,0 +1,125 @@ +#!/usr/bin/env bash + +export test_description="Tests pass otp append commands" + +. ./setup.sh + +test_expect_success 'Reads non-terminal input' ' + existing="foo bar baz" + uri="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Foo" + + test_pass_init && + "$PASS" insert -e passfile <<< "$existing" && + "$PASS" otp append -e passfile <<< "$uri" && + [[ $("$PASS" otp uri passfile) == "$uri" ]] +' + +test_expect_success 'Reads terminal input in noecho mode' ' + existing="foo bar baz" + uri="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example" + + test_pass_init && + "$PASS" insert -e passfile <<< "$existing" && + { expect -d <<EOD + spawn "$PASS" otp append passfile + expect { + "Enter" { + send "$uri\r" + exp_continue + } + "Retype" { + send "$uri\r" + exp_continue + } + eof + } +EOD + } && + [[ $("$PASS" otp uri passfile) == "$uri" ]] +' + +test_expect_success 'Reads terminal input in echo mode' ' + existing="foo bar baz" + uri="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example" + + test_pass_init && + "$PASS" insert -e passfile <<< "$existing" && + { + expect <<EOD + spawn "$PASS" otp append -e passfile + expect { + "Enter" { + send "$uri\r" + exp_continue + } + eof + } +EOD + } && + [[ $("$PASS" otp uri passfile) == "$uri" ]] +' + +test_expect_success 'Prompts before overwriting key URI' ' + existing="foo bar baz" + uri1="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Foo" + uri2="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Bar" + + test_pass_init && + "$PASS" insert -e passfile <<< "$existing" && + "$PASS" otp append -e passfile <<< "$uri1" && + { + expect -d <<EOD + spawn "$PASS" otp append -e passfile + expect { + "Enter" { + send "$uri2\r" + exp_continue + } + "An OTP secret already exists" { + send "n\r" + exp_continue + } + eof + } +EOD + } && + [[ $("$PASS" otp uri passfile) == "$uri1" ]] +' + +test_expect_success 'Force overwrites key URI' ' + existing="foo bar baz" + uri1="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Foo" + uri2="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Bar" + + test_pass_init && + "$PASS" insert -e passfile <<< "$existing" && + "$PASS" otp append -e passfile <<< "$uri1" && + "$PASS" otp append -ef passfile <<< "$uri2" && + [[ $("$PASS" otp uri passfile) == "$uri2" ]] +' + +test_expect_success 'Preserves multiline contents' ' + uri1="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Foo" + uri2="otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Bar" + + read -r -d "" existing <<EOF +foo bar baz +zab rab oof +$uri1 +baz bar foo +EOF + + read -r -d "" expected <<EOF +foo bar baz +zab rab oof +$uri2 +baz bar foo +EOF + + test_pass_init && + "$PASS" insert -mf passfile <<< "$existing" && + "$PASS" otp append -ef passfile <<< "$uri2" && + [[ $("$PASS" show passfile) == "$expected" ]] +' + +test_done diff --git a/test/code.t b/test/code.t index 4faea03..02bd086 100755 --- a/test/code.t +++ b/test/code.t @@ -24,4 +24,28 @@ test_expect_success 'Generates HOTP code and increments counter' ' [[ $("$PASS" otp uri passfile) == "$inc" ]] ' +test_expect_success 'HOTP counter increments and preserves multiline contents' ' + uri="otpauth://hotp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&counter=10&issuer=Example" + inc="otpauth://hotp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&counter=11&issuer=Example" + + read -r -d "" existing <<EOF +foo bar baz +zab rab oof +$uri1 +baz bar foo +EOF + + read -r -d "" expected <<EOF +foo bar baz +zab rab oof +$uri2 +baz bar foo +EOF + + test_pass_init && + "$PASS" insert -mf passfile <<< "$existing" && + "$PASS" otp code passfile && + [[ $("$PASS" show passfile) == "$expected" ]] +' + test_done |