Skip to content

Commit fff720b

Browse files
authored
CLOUDP-352158: Fix logout to delete all config without considering authentication type (#4265)
1 parent 071cde4 commit fff720b

File tree

2 files changed

+25
-44
lines changed

2 files changed

+25
-44
lines changed

internal/cli/auth/logout.go

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -102,35 +102,24 @@ func (opts *logoutOpts) Run(ctx context.Context) error {
102102

103103
switch opts.config.AuthType() {
104104
case config.UserAccount:
105-
if _, err := opts.flow.RevokeToken(ctx, config.RefreshToken(), "refresh_token"); err != nil {
106-
return err
105+
_, err := opts.flow.RevokeToken(ctx, config.RefreshToken(), "refresh_token")
106+
if err != nil {
107+
_, _ = log.Warningf("Warning: unable to revoke user account token: %v, proceeding with logout\n", err)
107108
}
108-
opts.config.SetAccessToken("")
109-
opts.config.SetRefreshToken("")
110109
case config.ServiceAccount:
111110
if err := opts.revokeServiceAccountToken(); err != nil {
112-
// If the service account doesn't exist, log a warning and proceed.
113-
// This happens if the user has already deleted the service account or is pointing to the wrong environment.
114-
// To not block users who have already deleted their account, we proceed with logout.
115-
if !strings.Contains(err.Error(), "The specified service account doesn't exist") {
116-
return err
117-
}
118111
_, _ = log.Warningf("Warning: unable to revoke service account token: %v, proceeding with logout\n", err)
119112
}
120-
opts.config.SetClientID("")
121-
opts.config.SetClientSecret("")
122-
case config.APIKeys:
123-
opts.config.SetPublicAPIKey("")
124-
opts.config.SetPrivateAPIKey("")
125-
case config.NoAuth, "": // Just clear any potential leftover credentials
126-
opts.config.SetPublicAPIKey("")
127-
opts.config.SetPrivateAPIKey("")
128-
opts.config.SetAccessToken("")
129-
opts.config.SetRefreshToken("")
130-
opts.config.SetClientID("")
131-
opts.config.SetClientSecret("")
113+
case config.APIKeys, config.NoAuth, "":
132114
}
133115

116+
// Clean up all the config
117+
opts.config.SetPublicAPIKey("")
118+
opts.config.SetPrivateAPIKey("")
119+
opts.config.SetAccessToken("")
120+
opts.config.SetRefreshToken("")
121+
opts.config.SetClientID("")
122+
opts.config.SetClientSecret("")
134123
opts.config.SetProjectID("")
135124
opts.config.SetOrgID("")
136125

internal/cli/auth/logout_test.go

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func Test_logoutOpts_Run_UserAccount(t *testing.T) {
5454
Return(nil, nil).
5555
Times(1)
5656

57-
mockTokenCleanUp(mockConfig)
57+
mockConfigCleanUp(mockConfig)
5858
mockProjectAndOrgCleanUp(mockConfig)
5959

6060
mockConfig.
@@ -87,7 +87,7 @@ func Test_logoutOpts_Run_APIKeys(t *testing.T) {
8787
Return(config.APIKeys).
8888
Times(1)
8989

90-
mockAPIKeysCleanUp(mockConfig)
90+
mockConfigCleanUp(mockConfig)
9191
mockProjectAndOrgCleanUp(mockConfig)
9292

9393
mockConfig.
@@ -123,7 +123,7 @@ func Test_logoutOpts_Run_ServiceAccount(t *testing.T) {
123123
Return(config.ServiceAccount).
124124
Times(1)
125125

126-
mockServiceAccountCleanUp(mockConfig)
126+
mockConfigCleanUp(mockConfig)
127127
mockProjectAndOrgCleanUp(mockConfig)
128128
mockConfig.
129129
EXPECT().
@@ -163,7 +163,7 @@ func Test_logoutOpts_Run_Keep_UserAccount(t *testing.T) {
163163
Return(nil, nil).
164164
Times(1)
165165

166-
mockTokenCleanUp(mockConfig)
166+
mockConfigCleanUp(mockConfig)
167167
mockProjectAndOrgCleanUp(mockConfig)
168168
mockConfig.
169169
EXPECT().
@@ -197,7 +197,7 @@ func Test_logoutOpts_Run_Keep_APIKeys(t *testing.T) {
197197
Return(config.APIKeys).
198198
Times(1)
199199

200-
mockAPIKeysCleanUp(mockConfig)
200+
mockConfigCleanUp(mockConfig)
201201
mockProjectAndOrgCleanUp(mockConfig)
202202
mockConfig.
203203
EXPECT().
@@ -234,7 +234,7 @@ func Test_logoutOpts_Run_Keep_ServiceAccount(t *testing.T) {
234234
Return(config.ServiceAccount).
235235
Times(1)
236236

237-
mockServiceAccountCleanUp(mockConfig)
237+
mockConfigCleanUp(mockConfig)
238238
mockProjectAndOrgCleanUp(mockConfig)
239239
mockConfig.
240240
EXPECT().
@@ -268,9 +268,7 @@ func Test_logoutOpts_Run_NoAuth(t *testing.T) {
268268
Return(config.NoAuth).
269269
Times(1)
270270

271-
mockAPIKeysCleanUp(mockConfig)
272-
mockTokenCleanUp(mockConfig)
273-
mockServiceAccountCleanUp(mockConfig)
271+
mockConfigCleanUp(mockConfig)
274272
mockProjectAndOrgCleanUp(mockConfig)
275273

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

285-
func mockAPIKeysCleanUp(mockConfig *MockConfigDeleter) {
283+
func mockConfigCleanUp(mockConfig *MockConfigDeleter) {
286284
mockConfig.
287285
EXPECT().
288-
SetPublicAPIKey("").
286+
SetRefreshToken("").
289287
Times(1)
290288
mockConfig.
291289
EXPECT().
292-
SetPrivateAPIKey("").
290+
SetAccessToken("").
293291
Times(1)
294-
}
295-
296-
func mockTokenCleanUp(mockConfig *MockConfigDeleter) {
297292
mockConfig.
298293
EXPECT().
299-
SetRefreshToken("").
294+
SetClientID("").
300295
Times(1)
301296
mockConfig.
302297
EXPECT().
303-
SetAccessToken("").
298+
SetClientSecret("").
304299
Times(1)
305-
}
306-
307-
func mockServiceAccountCleanUp(mockConfig *MockConfigDeleter) {
308300
mockConfig.
309301
EXPECT().
310-
SetClientID("").
302+
SetPublicAPIKey("").
311303
Times(1)
312304
mockConfig.
313305
EXPECT().
314-
SetClientSecret("").
306+
SetPrivateAPIKey("").
315307
Times(1)
316308
}
317309

0 commit comments

Comments
 (0)