Login sets token in keyring using username

This commit is contained in:
Sam Coe 2023-11-01 11:33:28 +01:00 committed by William Martin
parent d8084f5f6d
commit 2ca8b1ea94
2 changed files with 13 additions and 3 deletions

View file

@ -214,17 +214,24 @@ func TestLoginSecureStorageUsesKeyring(t *testing.T) {
// Given a usable keyring
keyring.MockInit()
authCfg := newTestAuthConfig(t)
host := "github.com"
user := "test-user"
token := "test-token"
// When we login with secure storage
insecureStorageUsed, err := authCfg.Login("github.com", "test-user", "test-token", "", true)
insecureStorageUsed, err := authCfg.Login(host, user, token, "", true)
// Then it returns success, notes that insecure storage was not used, and stores the token in the keyring
require.NoError(t, err)
require.False(t, insecureStorageUsed, "expected to use secure storage")
token, err := keyring.Get(keyringServiceName("github.com"), "")
gotToken, err := keyring.Get(keyringServiceName(host), "")
require.NoError(t, err)
require.Equal(t, "test-token", token)
require.Equal(t, token, gotToken)
gotToken, err = keyring.Get(keyringServiceName(host), user)
require.NoError(t, err)
require.Equal(t, token, gotToken)
}
func TestLoginSecureStorageRemovesOldInsecureConfigToken(t *testing.T) {

View file

@ -251,6 +251,9 @@ func (c *AuthConfig) Login(hostname, username, token, gitProtocol string, secure
var setErr error
if secureStorage {
if setErr = keyring.Set(keyringServiceName(hostname), "", token); setErr == nil {
setErr = keyring.Set(keyringServiceName(hostname), username, token)
}
if setErr == nil {
// Clean up the previous oauth_tokens from the config file.
_ = c.cfg.Remove([]string{hostsKey, hostname, oauthTokenKey})
_ = c.cfg.Remove([]string{hostsKey, hostname, usersKey, username, oauthTokenKey})