1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
#!/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 'Read secret non-terminal input' '
existing="foo bar baz"
secret=JBSWY3DPEHPK3PXP
uri="otpauth://totp/Example:alice%40google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example"
test_pass_init &&
"$PASS" insert -e passfile <<< "$existing" &&
"$PASS" otp append -s -i Example -a alice@google.com -e passfile <<< "$secret" &&
[[ $("$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
|