Skip to content

Commit 8975f32

Browse files
@W-21933885: [MSDK Android] App Attestation Implementation (Fix TokenMigrationActivityTest By Explicitly Nulling appAttestationClient In Spy)
1 parent f93c9e5 commit 8975f32

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

libs/test/SalesforceSDKTest/src/com/salesforce/androidsdk/ui/TokenMigrationActivityTest.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import com.salesforce.androidsdk.accounts.UserAccountManager
4040
import com.salesforce.androidsdk.analytics.AnalyticsPublishingWorker
4141
import com.salesforce.androidsdk.analytics.logger.SalesforceLogger
4242
import com.salesforce.androidsdk.app.SalesforceSDKManager
43+
import com.salesforce.androidsdk.auth.AppAttestationClient
4344
import com.salesforce.androidsdk.auth.OAuth2.FRONTDOOR_URL_KEY
4445
import com.salesforce.androidsdk.config.OAuthConfig
4546
import com.salesforce.androidsdk.rest.RestClient
@@ -80,6 +81,7 @@ class TokenMigrationActivityTest {
8081
private lateinit var mockUser: UserAccount
8182
private lateinit var mockClientManager: com.salesforce.androidsdk.rest.ClientManager
8283
private lateinit var savedFactory: ViewModelProvider.Factory
84+
private var savedAppAttestationClient: AppAttestationClient? = null
8385

8486
@Before
8587
fun setUp() {
@@ -113,12 +115,17 @@ class TokenMigrationActivityTest {
113115
// Get the REAL SalesforceSDKManager instance and save properties
114116
val realSdkManager = SalesforceSDKManager.getInstance()
115117
savedFactory = realSdkManager.loginViewModelFactory
118+
savedAppAttestationClient = realSdkManager.appAttestationClient
116119

117120
// Mock only the clientManager on the real instance using spyk
118121
val sdkManagerSpy = spyk(realSdkManager)
119122
every { sdkManagerSpy.clientManager } returns mockClientManager
120123
every { mockClientManager.peekRestClient(any<UserAccount>()) } returns mockRestClient
121124

125+
// CRITICAL: Set appAttestationClient to null to prevent blocking network calls
126+
// in LoginViewModel.getAuthorizationUrl() and OAuth2.makeTokenEndpointRequest()
127+
every { sdkManagerSpy.appAttestationClient } returns null
128+
122129
// Replace getInstance() to return our spy instead of completely mocking the object
123130
mockkStatic(SalesforceSDKManager::class)
124131
every { SalesforceSDKManager.getInstance() } returns sdkManagerSpy
@@ -136,10 +143,11 @@ class TokenMigrationActivityTest {
136143

137144
@After
138145
fun tearDown() {
139-
// Restore the loginViewModelFactory on the real instance before unmocking
146+
// Restore the loginViewModelFactory and appAttestationClient on the real instance before unmocking
140147
try {
141148
val realSdkManager = SalesforceSDKManager.getInstance()
142149
realSdkManager.loginViewModelFactory = savedFactory
150+
realSdkManager.appAttestationClient = savedAppAttestationClient
143151
} catch (e: Exception) {
144152
// If getInstance() is still mocked, this will fail - unmockkAll will clean it up
145153
}

0 commit comments

Comments
 (0)