Skip to content

Commit 665d8f5

Browse files
authored
Merge pull request #2826 from brandonpage/master
Cherry-pick "Fix showLoginPage on token revoke." for 13.1.1 patch.
2 parents f6e7a1d + 62b3dc8 commit 665d8f5

2 files changed

Lines changed: 5 additions & 16 deletions

File tree

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
@@ -311,8 +311,6 @@ class ClientManagerMockTest {
311311
}
312312
}
313313
}
314-
val accountSlot = slot<Account>()
315-
val reasonSlot = slot<OAuth2.LogoutReason>()
316314
val broadcastIntentSlot = slot<Intent>()
317315
val mockAccount = mockk<Account>(relaxed = true)
318316
val mockUser = mockk<UserAccount>(relaxed = true) {
@@ -340,11 +338,9 @@ class ClientManagerMockTest {
340338
}
341339
verify(exactly = 1) {
342340
clientManagerSpy.invalidateToken(OLD_ACCESS_TOKEN)
343-
mockSDKManager.logout(capture(accountSlot), any(), any(), capture(reasonSlot))
341+
mockSDKManager.logout(mockAccount, any(), true, OAuth2.LogoutReason.REFRESH_TOKEN_EXPIRED)
344342
mockAppContext.sendBroadcast(capture(broadcastIntentSlot))
345343
}
346-
Assert.assertEquals(mockAccount, accountSlot.captured)
347-
Assert.assertEquals(OAuth2.LogoutReason.REFRESH_TOKEN_EXPIRED, reasonSlot.captured)
348344
Assert.assertEquals(ClientManager.ACCESS_TOKEN_REVOKE_INTENT, broadcastIntentSlot.captured.action)
349345
}
350346

@@ -413,8 +409,6 @@ class ClientManagerMockTest {
413409
}
414410
}
415411
}
416-
val accountSlot = slot<Account>()
417-
val reasonSlot = slot<OAuth2.LogoutReason>()
418412
val broadcastIntentSlot = slot<Intent>()
419413
val user2Token = "user2-token"
420414
val mockAccount = mockk<Account>(relaxed = true)
@@ -429,9 +423,6 @@ class ClientManagerMockTest {
429423
every { refreshToken } returns "user2Refresh"
430424
every { loginServer } returns "https://login.salesforce.com"
431425
}
432-
val mockClientManager = mockk<ClientManager>(relaxed = true) {
433-
every { accounts } returns arrayOf(mockAccount, mockAccount2)
434-
}
435426
// The account that we are not refreshing for is the current account.
436427
every { mockUserAccountManager.currentUser } returns mockUser2
437428
every { mockUserAccountManager.currentAccount } returns mockAccount2
@@ -441,7 +432,7 @@ class ClientManagerMockTest {
441432
every { mockUserAccountManager.updateAccount(mockAccount2, any()) } returns mockk()
442433
// Use the real clientManager instead of a full mock because revokedTokenShouldLogout is private.
443434
val clientManagerSpy = spyk(clientManager)
444-
every { clientManagerSpy.accounts } returns arrayOf(mockAccount)
435+
every { clientManagerSpy.accounts } returns arrayOf(mockAccount, mockAccount2)
445436
val authTokenProvider = ClientManager.AccMgrAuthTokenProvider(
446437
clientManagerSpy,
447438
"https://login.salesforce.com",
@@ -451,7 +442,7 @@ class ClientManagerMockTest {
451442

452443
Assert.assertNull(authTokenProvider.getNewAuthToken())
453444
verify(exactly = 0) {
454-
mockClientManager.invalidateToken(user2Token)
445+
clientManagerSpy.invalidateToken(user2Token)
455446
mockUserAccountManager.updateAccount(any(), any())
456447
mockSDKManager.logout(mockAccount2, any(), any(), any())
457448
mockSDKManager.logout(null, any(), any(), any())
@@ -460,11 +451,9 @@ class ClientManagerMockTest {
460451

461452
verify(exactly = 1) {
462453
clientManagerSpy.invalidateToken(OLD_ACCESS_TOKEN)
463-
mockSDKManager.logout(capture(accountSlot), any(), any(), capture(reasonSlot))
454+
mockSDKManager.logout(mockAccount, any(), false, OAuth2.LogoutReason.REFRESH_TOKEN_EXPIRED)
464455
mockAppContext.sendBroadcast(capture(broadcastIntentSlot))
465456
}
466-
Assert.assertEquals(mockAccount, accountSlot.captured)
467-
Assert.assertEquals(OAuth2.LogoutReason.REFRESH_TOKEN_EXPIRED, reasonSlot.captured)
468457
Assert.assertEquals(ClientManager.ACCESS_TOKEN_REVOKE_INTENT, broadcastIntentSlot.captured.action)
469458
}
470459
}

0 commit comments

Comments
 (0)