@@ -15,9 +15,11 @@ import com.salesforce.androidsdk.config.LegacyAdminSettingsManager
1515import com.salesforce.androidsdk.push.PushMessaging
1616import com.salesforce.androidsdk.push.PushService
1717import com.salesforce.androidsdk.security.KeyStoreWrapper
18+ import com.salesforce.androidsdk.util.SalesforceSDKLogger
1819import io.mockk.every
1920import io.mockk.mockk
2021import io.mockk.mockkObject
22+ import io.mockk.mockkStatic
2123import io.mockk.unmockkAll
2224import io.mockk.verify
2325import 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