Skip to content

Commit a3939e0

Browse files
committed
Assert migration errors are logged.
1 parent 78e30c3 commit a3939e0

1 file changed

Lines changed: 36 additions & 4 deletions

File tree

libs/test/SalesforceSDKTest/src/com/salesforce/androidsdk/app/SalesforceSDKUpgradeManagerTest.kt

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@ import com.salesforce.androidsdk.config.LegacyAdminSettingsManager
1515
import com.salesforce.androidsdk.push.PushMessaging
1616
import com.salesforce.androidsdk.push.PushService
1717
import com.salesforce.androidsdk.security.KeyStoreWrapper
18+
import com.salesforce.androidsdk.util.SalesforceSDKLogger
1819
import io.mockk.every
1920
import io.mockk.mockk
2021
import io.mockk.mockkObject
22+
import io.mockk.mockkStatic
2123
import io.mockk.unmockkAll
2224
import io.mockk.verify
2325
import org.junit.After
@@ -207,18 +209,35 @@ class SalesforceSDKUpgradeManagerTest {
207209
mockkObject(SalesforceSDKManager)
208210
val mockSDKManager = mockk<SalesforceSDKManager> {
209211
every { accountType } returns LEGACY_ACCOUNT_TYPE
210-
every { appContext.getSharedPreferences(any(), any()) } returns mockk(relaxed = true)
212+
every { appContext.getSharedPreferences(VERSION_SHARED_PREF, Context.MODE_PRIVATE) } returns mockk {
213+
every { getString(ACC_MGR_KEY, "") } returns "14.0.0"
214+
every { edit() } returns mockk<SharedPreferences.Editor> {
215+
every { putString(any(), any()) } returns this
216+
every { commit() } returns true
217+
}
218+
}
211219
}
212220
every { SalesforceSDKManager.getInstance() } returns mockSDKManager
221+
mockkStatic(SalesforceSDKLogger::class)
222+
every { SalesforceSDKLogger.e(any(), any<String>()) } returns Unit
213223

214224
// Create upgrade manager and upgrade
215225
val upgradeManager = SalesforceSDKUpgradeManager(userMgr)
216226
upgradeManager.writeCurVersion(ACC_MGR_KEY, "14.0.0")
217227
upgradeManager.upgrade()
218228

219229
// Verify that no account operations were attempted (early return)
220-
verify(exactly = 0) { mockSDKManager.clientManager }
221-
verify(exactly = 0) { mockSDKManager.userAccountManager }
230+
verify(exactly = 0) {
231+
mockSDKManager.clientManager
232+
mockSDKManager.userAccountManager
233+
}
234+
verify(exactly = 1) {
235+
SalesforceSDKLogger.e(
236+
"SalesforceSDKUpgradeManager",
237+
"No app specific account type found. To ensure users " +
238+
"can login override the \"account_type\" value in your strings.xml.",
239+
)
240+
}
222241
}
223242

224243
@Test
@@ -328,6 +347,8 @@ class SalesforceSDKUpgradeManagerTest {
328347
every { clientManager.accountManager } returns mockAccountManager
329348
every { userAccountManager } returns mockUserAccountManager
330349
}
350+
mockkStatic(SalesforceSDKLogger::class)
351+
every { SalesforceSDKLogger.e(any(), any<String>()) } returns Unit
331352

332353
// Create upgrade manager and trigger migration
333354
val upgradeManager = SalesforceSDKUpgradeManager(userMgr)
@@ -337,6 +358,10 @@ class SalesforceSDKUpgradeManagerTest {
337358
// Verify account was not removed or recreated when buildUserAccount returns null, but other accounts still succeed.
338359
verify(exactly = 0) { mockAccountManager.removeAccountExplicitly(legacyAccount1) }
339360
verify(exactly = 1) {
361+
SalesforceSDKLogger.e(
362+
"SalesforceSDKUpgradeManager",
363+
"Unable to build UserAccount from account: ${legacyAccount1.name}",
364+
)
340365
mockAccountManager.removeAccountExplicitly(legacyAccount2)
341366
mockUserAccountManager.createAccount(userAccount2)
342367
mockUserAccountManager.createAccount(any())
@@ -357,7 +382,7 @@ class SalesforceSDKUpgradeManagerTest {
357382
}
358383
val mockUserAccountManager = mockk<UserAccountManager> {
359384
// mock corrupted account error
360-
every { buildUserAccount(legacyAccount1) } returns null
385+
every { buildUserAccount(legacyAccount1) } returns userAccount1
361386
every { buildUserAccount(legacyAccount2) } returns userAccount2
362387
every { createAccount(any()) } returns mockk<Bundle>()
363388
}
@@ -376,6 +401,8 @@ class SalesforceSDKUpgradeManagerTest {
376401
every { clientManager.accountManager } returns mockAccountManager
377402
every { userAccountManager } returns mockUserAccountManager
378403
}
404+
mockkStatic(SalesforceSDKLogger::class)
405+
every { SalesforceSDKLogger.e(any(), any<String>(), any<Exception>()) } returns Unit
379406

380407
// Create upgrade manager and trigger migration
381408
val upgradeManager = SalesforceSDKUpgradeManager(userMgr)
@@ -385,6 +412,11 @@ class SalesforceSDKUpgradeManagerTest {
385412
// Verify second account was still processed despite first account failing
386413
verify(exactly = 0) { mockUserAccountManager.createAccount(userAccount1) }
387414
verify(exactly = 1) {
415+
SalesforceSDKLogger.e(
416+
"SalesforceSDKUpgradeManager",
417+
"Failed to migrate account: ${legacyAccount1.name}",
418+
any<RuntimeException>()
419+
)
388420
mockAccountManager.removeAccountExplicitly(legacyAccount2)
389421
mockUserAccountManager.createAccount(userAccount2)
390422
}

0 commit comments

Comments
 (0)