Skip to content

Commit da45b1f

Browse files
authored
Merge pull request #2813 from brandonpage/fix-show-login-on-token-revoke
Fix showLoginPage on token revoke.
2 parents 482f724 + 18336f2 commit da45b1f

File tree

2 files changed

+5
-16
lines changed

2 files changed

+5
-16
lines changed

libs/SalesforceSDK/src/com/salesforce/androidsdk/rest/ClientManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ public String getNewAuthToken() {
433433
if (Looper.myLooper() == null) {
434434
Looper.prepare();
435435
}
436-
boolean showLoginPage = accounts.length > 1;
436+
boolean showLoginPage = accounts.length == 1;
437437
// Note: As of writing (2024) this call will never succeed because revoke API is an
438438
// authenticated endpoint. However, there is no harm in attempting and the debug logs
439439
// produced may help developers better understand the state of their app.

libs/test/SalesforceSDKTest/src/com/salesforce/androidsdk/rest/ClientManagerMockTest.kt

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,6 @@ class ClientManagerMockTest {
307307
}
308308
}
309309
}
310-
val accountSlot = slot<Account>()
311-
val reasonSlot = slot<OAuth2.LogoutReason>()
312310
val broadcastIntentSlot = slot<Intent>()
313311
val mockAccount = mockk<Account>(relaxed = true)
314312
val mockUser = mockk<UserAccount>(relaxed = true) {
@@ -336,11 +334,9 @@ class ClientManagerMockTest {
336334
}
337335
verify(exactly = 1) {
338336
clientManagerSpy.invalidateToken(OLD_ACCESS_TOKEN)
339-
mockSDKManager.logout(capture(accountSlot), any(), any(), capture(reasonSlot))
337+
mockSDKManager.logout(mockAccount, any(), true, OAuth2.LogoutReason.REFRESH_TOKEN_EXPIRED)
340338
mockAppContext.sendBroadcast(capture(broadcastIntentSlot))
341339
}
342-
Assert.assertEquals(mockAccount, accountSlot.captured)
343-
Assert.assertEquals(OAuth2.LogoutReason.REFRESH_TOKEN_EXPIRED, reasonSlot.captured)
344340
Assert.assertEquals(ClientManager.ACCESS_TOKEN_REVOKE_INTENT, broadcastIntentSlot.captured.action)
345341
}
346342

@@ -409,8 +405,6 @@ class ClientManagerMockTest {
409405
}
410406
}
411407
}
412-
val accountSlot = slot<Account>()
413-
val reasonSlot = slot<OAuth2.LogoutReason>()
414408
val broadcastIntentSlot = slot<Intent>()
415409
val user2Token = "user2-token"
416410
val mockAccount = mockk<Account>(relaxed = true)
@@ -425,9 +419,6 @@ class ClientManagerMockTest {
425419
every { refreshToken } returns "user2Refresh"
426420
every { loginServer } returns "https://login.salesforce.com"
427421
}
428-
val mockClientManager = mockk<ClientManager>(relaxed = true) {
429-
every { accounts } returns arrayOf(mockAccount, mockAccount2)
430-
}
431422
// The account that we are not refreshing for is the current account.
432423
every { mockUserAccountManager.currentUser } returns mockUser2
433424
every { mockUserAccountManager.currentAccount } returns mockAccount2
@@ -437,7 +428,7 @@ class ClientManagerMockTest {
437428
every { mockUserAccountManager.updateAccount(mockAccount2, any()) } returns mockk()
438429
// Use the real clientManager instead of a full mock because revokedTokenShouldLogout is private.
439430
val clientManagerSpy = spyk(clientManager)
440-
every { clientManagerSpy.accounts } returns arrayOf(mockAccount)
431+
every { clientManagerSpy.accounts } returns arrayOf(mockAccount, mockAccount2)
441432
val authTokenProvider = ClientManager.AccMgrAuthTokenProvider(
442433
clientManagerSpy,
443434
"https://login.salesforce.com",
@@ -447,7 +438,7 @@ class ClientManagerMockTest {
447438

448439
Assert.assertNull(authTokenProvider.getNewAuthToken())
449440
verify(exactly = 0) {
450-
mockClientManager.invalidateToken(user2Token)
441+
clientManagerSpy.invalidateToken(user2Token)
451442
mockUserAccountManager.updateAccount(any(), any())
452443
mockSDKManager.logout(mockAccount2, any(), any(), any())
453444
mockSDKManager.logout(null, any(), any(), any())
@@ -456,11 +447,9 @@ class ClientManagerMockTest {
456447

457448
verify(exactly = 1) {
458449
clientManagerSpy.invalidateToken(OLD_ACCESS_TOKEN)
459-
mockSDKManager.logout(capture(accountSlot), any(), any(), capture(reasonSlot))
450+
mockSDKManager.logout(mockAccount, any(), false, OAuth2.LogoutReason.REFRESH_TOKEN_EXPIRED)
460451
mockAppContext.sendBroadcast(capture(broadcastIntentSlot))
461452
}
462-
Assert.assertEquals(mockAccount, accountSlot.captured)
463-
Assert.assertEquals(OAuth2.LogoutReason.REFRESH_TOKEN_EXPIRED, reasonSlot.captured)
464453
Assert.assertEquals(ClientManager.ACCESS_TOKEN_REVOKE_INTENT, broadcastIntentSlot.captured.action)
465454
}
466455
}

0 commit comments

Comments
 (0)