diff options
author | M Hickford <mirth.hickford@gmail.com> | 2023-06-15 22:19:33 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-06-15 23:26:41 +0300 |
commit | 6c26da8404c8acfed62fa4775b7b591f099bcd33 (patch) | |
tree | 51d12e37952c337bcdb9d652d38745646bb393f7 /t/lib-credential.sh | |
parent | aeb21ce22eec112b37975443a160cb5418c6ec22 (diff) |
credential: erase all matching credentials
`credential reject` sends the erase action to each helper, but the
exact behaviour of erase isn't specified in documentation or tests.
Some helpers (such as credential-store and credential-libsecret) delete
all matching credentials, others (such as credential-cache) delete at
most one matching credential.
Test that helpers erase all matching credentials. This behaviour is
easiest to reason about. Users expect that `echo
"url=https://example.com" | git credential reject` or `echo
"url=https://example.com\nusername=tim" | git credential reject` erase
all matching credentials.
Fix credential-cache.
Signed-off-by: M Hickford <mirth.hickford@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/lib-credential.sh')
-rw-r--r-- | t/lib-credential.sh | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/t/lib-credential.sh b/t/lib-credential.sh index 77baec53b6..032b2d8fcc 100644 --- a/t/lib-credential.sh +++ b/t/lib-credential.sh @@ -46,6 +46,8 @@ helper_test_clean() { reject $1 https example.com user4 reject $1 https example.com user-distinct-pass reject $1 https example.com user-overwrite + reject $1 https example.com user-erase1 + reject $1 https example.com user-erase2 reject $1 http path.tld user reject $1 https timeout.tld user reject $1 https sso.tld @@ -342,6 +344,37 @@ helper_test() { EOF ' + test_expect_success "helper ($HELPER) erases all matching credentials" ' + check approve $HELPER <<-\EOF && + protocol=https + host=example.com + username=user-erase1 + password=pass1 + EOF + check approve $HELPER <<-\EOF && + protocol=https + host=example.com + username=user-erase2 + password=pass1 + EOF + check reject $HELPER <<-\EOF && + protocol=https + host=example.com + EOF + check fill $HELPER <<-\EOF + protocol=https + host=example.com + -- + protocol=https + host=example.com + username=askpass-username + password=askpass-password + -- + askpass: Username for '\''https://example.com'\'': + askpass: Password for '\''https://askpass-username@example.com'\'': + EOF + ' + : ${GIT_TEST_LONG_CRED_BUFFER:=1024} # 23 bytes accounts for "wwwauth[]=basic realm=" plus NUL LONG_VALUE_LEN=$((GIT_TEST_LONG_CRED_BUFFER - 23)) |