@@ -29,6 +29,7 @@ package com.salesforce.androidsdk.ui
2929import android.content.Intent
3030import android.net.Uri.parse
3131import android.webkit.WebView
32+ import androidx.activity.result.ActivityResultLauncher
3233import androidx.core.net.toUri
3334import androidx.lifecycle.Lifecycle.State.RESUMED
3435import androidx.lifecycle.Lifecycle.State.STARTED
@@ -40,6 +41,9 @@ import com.salesforce.androidsdk.config.LoginServerManager.PRODUCTION_LOGIN_URL
4041import com.salesforce.androidsdk.config.LoginServerManager.WELCOME_LOGIN_URL
4142import com.salesforce.androidsdk.ui.LoginActivity.Companion.EXTRA_KEY_LOGIN_HINT
4243import com.salesforce.androidsdk.ui.LoginActivity.Companion.EXTRA_KEY_LOGIN_HOST
44+ import io.mockk.every
45+ import io.mockk.mockk
46+ import io.mockk.verify
4347import org.junit.Assert.assertEquals
4448import org.junit.Assert.assertFalse
4549import org.junit.Assert.assertTrue
@@ -245,7 +249,7 @@ class LoginActivityScenarioTest {
245249 // region Salesforce Welcome Discovery
246250
247251 @Test
248- fun loginActivity_startsWscDiscovery_onCreateWithSelectedServer () {
252+ fun loginActivity_startBrowserCustomTabAuthorization_launchesActivityResultLauncherWhenIsBrowserLoginEnabled () {
249253
250254 val activityScenario = launch<LoginActivity >(
251255 Intent (
@@ -256,11 +260,72 @@ class LoginActivityScenarioTest {
256260
257261 activityScenario.onActivity { activity ->
258262
259- activity.viewModel.previousPendingLoginServer = PRODUCTION_LOGIN_URL
260- assertTrue(activity.switchDefaultOrSalesforceWelcomeDiscoveryLogin(WELCOME_LOGIN_URL .toUri()))
263+ val sdkManager = mockk<SalesforceSDKManager >()
264+ every { sdkManager.isBrowserLoginEnabled } returns true
265+ val activityResultLauncher = mockk<ActivityResultLauncher <Intent >>()
261266
262- activity.viewModel.previousPendingLoginServer = WELCOME_LOGIN_URL
263- assertTrue(activity.switchDefaultOrSalesforceWelcomeDiscoveryLogin(PRODUCTION_LOGIN_URL .toUri()))
267+ activity.startBrowserCustomTabAuthorization(
268+ authorizationUrl = " _authorization_url_" ,
269+ activityResultLauncher = activityResultLauncher,
270+ isBrowserLoginEnabled = true ,
271+ isUsingFrontDoorBridge = false ,
272+ singleServerCustomTabActivity = false ,
273+ )
274+ verify(exactly = 1 ) { activityResultLauncher.launch(any()) }
275+ }
276+ }
277+
278+ @Test
279+ fun loginActivity_startBrowserCustomTabAuthorization_launchesActivityResultLauncherWhenSingleServerCustomTabActivity () {
280+
281+ val activityScenario = launch<LoginActivity >(
282+ Intent (
283+ getApplicationContext(),
284+ LoginActivity ::class .java
285+ )
286+ )
287+
288+ activityScenario.onActivity { activity ->
289+
290+ val sdkManager = mockk<SalesforceSDKManager >()
291+ every { sdkManager.isBrowserLoginEnabled } returns true
292+ val activityResultLauncher = mockk<ActivityResultLauncher <Intent >>()
293+
294+ activity.startBrowserCustomTabAuthorization(
295+ authorizationUrl = " _authorization_url_" ,
296+ activityResultLauncher = activityResultLauncher,
297+ isBrowserLoginEnabled = false ,
298+ isUsingFrontDoorBridge = false ,
299+ singleServerCustomTabActivity = true ,
300+ )
301+ verify(exactly = 1 ) { activityResultLauncher.launch(any()) }
302+ }
303+ }
304+
305+ @Test
306+ fun loginActivity_startBrowserCustomTabAuthorization_returnsActivityResultLauncherWhenIsUsingFrontDoorBridge () {
307+
308+ val activityScenario = launch<LoginActivity >(
309+ Intent (
310+ getApplicationContext(),
311+ LoginActivity ::class .java
312+ )
313+ )
314+
315+ activityScenario.onActivity { activity ->
316+
317+ val sdkManager = mockk<SalesforceSDKManager >()
318+ every { sdkManager.isBrowserLoginEnabled } returns true
319+ val activityResultLauncher = mockk<ActivityResultLauncher <Intent >>()
320+
321+ activity.startBrowserCustomTabAuthorization(
322+ authorizationUrl = " _authorization_url_" ,
323+ activityResultLauncher = activityResultLauncher,
324+ isBrowserLoginEnabled = true ,
325+ isUsingFrontDoorBridge = true ,
326+ singleServerCustomTabActivity = true ,
327+ )
328+ verify(exactly = 0 ) { activityResultLauncher.launch(any()) }
264329 }
265330 }
266331
@@ -280,4 +345,24 @@ class LoginActivityScenarioTest {
280345 assertTrue(activity.displayWelcomeUnsupportedToastIfNeeded(false ))
281346 }
282347 }
348+
349+ @Test
350+ fun loginActivity_startsWscDiscovery_onCreateWithSelectedServer () {
351+
352+ val activityScenario = launch<LoginActivity >(
353+ Intent (
354+ getApplicationContext(),
355+ LoginActivity ::class .java
356+ )
357+ )
358+
359+ activityScenario.onActivity { activity ->
360+
361+ activity.viewModel.previousPendingLoginServer = PRODUCTION_LOGIN_URL
362+ assertTrue(activity.switchDefaultOrSalesforceWelcomeDiscoveryLogin(WELCOME_LOGIN_URL .toUri()))
363+
364+ activity.viewModel.previousPendingLoginServer = WELCOME_LOGIN_URL
365+ assertTrue(activity.switchDefaultOrSalesforceWelcomeDiscoveryLogin(PRODUCTION_LOGIN_URL .toUri()))
366+ }
367+ }
283368}
0 commit comments