Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 11 additions & 22 deletions internal/cli/auth/logout.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,35 +102,24 @@ func (opts *logoutOpts) Run(ctx context.Context) error {

switch opts.config.AuthType() {
case config.UserAccount:
if _, err := opts.flow.RevokeToken(ctx, config.RefreshToken(), "refresh_token"); err != nil {
return err
_, err := opts.flow.RevokeToken(ctx, config.RefreshToken(), "refresh_token")
if err != nil {
_, _ = log.Warningf("Warning: unable to revoke user account token: %v, proceeding with logout\n", err)
}
opts.config.SetAccessToken("")
opts.config.SetRefreshToken("")
case config.ServiceAccount:
if err := opts.revokeServiceAccountToken(); err != nil {
// If the service account doesn't exist, log a warning and proceed.
// This happens if the user has already deleted the service account or is pointing to the wrong environment.
// To not block users who have already deleted their account, we proceed with logout.
if !strings.Contains(err.Error(), "The specified service account doesn't exist") {
return err
}
_, _ = log.Warningf("Warning: unable to revoke service account token: %v, proceeding with logout\n", err)
}
opts.config.SetClientID("")
opts.config.SetClientSecret("")
case config.APIKeys:
opts.config.SetPublicAPIKey("")
opts.config.SetPrivateAPIKey("")
case config.NoAuth, "": // Just clear any potential leftover credentials
opts.config.SetPublicAPIKey("")
opts.config.SetPrivateAPIKey("")
opts.config.SetAccessToken("")
opts.config.SetRefreshToken("")
opts.config.SetClientID("")
opts.config.SetClientSecret("")
case config.APIKeys, config.NoAuth, "":
}

// Clean up all the config
opts.config.SetPublicAPIKey("")
opts.config.SetPrivateAPIKey("")
opts.config.SetAccessToken("")
opts.config.SetRefreshToken("")
opts.config.SetClientID("")
opts.config.SetClientSecret("")
opts.config.SetProjectID("")
opts.config.SetOrgID("")

Expand Down
36 changes: 14 additions & 22 deletions internal/cli/auth/logout_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func Test_logoutOpts_Run_UserAccount(t *testing.T) {
Return(nil, nil).
Times(1)

mockTokenCleanUp(mockConfig)
mockConfigCleanUp(mockConfig)
mockProjectAndOrgCleanUp(mockConfig)

mockConfig.
Expand Down Expand Up @@ -87,7 +87,7 @@ func Test_logoutOpts_Run_APIKeys(t *testing.T) {
Return(config.APIKeys).
Times(1)

mockAPIKeysCleanUp(mockConfig)
mockConfigCleanUp(mockConfig)
mockProjectAndOrgCleanUp(mockConfig)

mockConfig.
Expand Down Expand Up @@ -123,7 +123,7 @@ func Test_logoutOpts_Run_ServiceAccount(t *testing.T) {
Return(config.ServiceAccount).
Times(1)

mockServiceAccountCleanUp(mockConfig)
mockConfigCleanUp(mockConfig)
mockProjectAndOrgCleanUp(mockConfig)
mockConfig.
EXPECT().
Expand Down Expand Up @@ -163,7 +163,7 @@ func Test_logoutOpts_Run_Keep_UserAccount(t *testing.T) {
Return(nil, nil).
Times(1)

mockTokenCleanUp(mockConfig)
mockConfigCleanUp(mockConfig)
mockProjectAndOrgCleanUp(mockConfig)
mockConfig.
EXPECT().
Expand Down Expand Up @@ -197,7 +197,7 @@ func Test_logoutOpts_Run_Keep_APIKeys(t *testing.T) {
Return(config.APIKeys).
Times(1)

mockAPIKeysCleanUp(mockConfig)
mockConfigCleanUp(mockConfig)
mockProjectAndOrgCleanUp(mockConfig)
mockConfig.
EXPECT().
Expand Down Expand Up @@ -234,7 +234,7 @@ func Test_logoutOpts_Run_Keep_ServiceAccount(t *testing.T) {
Return(config.ServiceAccount).
Times(1)

mockServiceAccountCleanUp(mockConfig)
mockConfigCleanUp(mockConfig)
mockProjectAndOrgCleanUp(mockConfig)
mockConfig.
EXPECT().
Expand Down Expand Up @@ -268,9 +268,7 @@ func Test_logoutOpts_Run_NoAuth(t *testing.T) {
Return(config.NoAuth).
Times(1)

mockAPIKeysCleanUp(mockConfig)
mockTokenCleanUp(mockConfig)
mockServiceAccountCleanUp(mockConfig)
mockConfigCleanUp(mockConfig)
mockProjectAndOrgCleanUp(mockConfig)

mockConfig.
Expand All @@ -282,36 +280,30 @@ func Test_logoutOpts_Run_NoAuth(t *testing.T) {
require.NoError(t, opts.Run(ctx))
}

func mockAPIKeysCleanUp(mockConfig *MockConfigDeleter) {
func mockConfigCleanUp(mockConfig *MockConfigDeleter) {
mockConfig.
EXPECT().
SetPublicAPIKey("").
SetRefreshToken("").
Times(1)
mockConfig.
EXPECT().
SetPrivateAPIKey("").
SetAccessToken("").
Times(1)
}

func mockTokenCleanUp(mockConfig *MockConfigDeleter) {
mockConfig.
EXPECT().
SetRefreshToken("").
SetClientID("").
Times(1)
mockConfig.
EXPECT().
SetAccessToken("").
SetClientSecret("").
Times(1)
}

func mockServiceAccountCleanUp(mockConfig *MockConfigDeleter) {
mockConfig.
EXPECT().
SetClientID("").
SetPublicAPIKey("").
Times(1)
mockConfig.
EXPECT().
SetClientSecret("").
SetPrivateAPIKey("").
Times(1)
}

Expand Down
Loading