@@ -36,6 +36,7 @@ import androidx.lifecycle.Lifecycle.State.STARTED
3636import androidx.test.core.app.ActivityScenario.launch
3737import androidx.test.core.app.ApplicationProvider.getApplicationContext
3838import androidx.test.ext.junit.runners.AndroidJUnit4
39+ import com.salesforce.androidsdk.app.Features
3940import com.salesforce.androidsdk.app.SalesforceSDKManager
4041import com.salesforce.androidsdk.config.LoginServerManager.PRODUCTION_LOGIN_URL
4142import com.salesforce.androidsdk.config.LoginServerManager.WELCOME_LOGIN_URL
@@ -46,6 +47,7 @@ import io.mockk.mockk
4647import io.mockk.verify
4748import org.junit.Assert.assertEquals
4849import org.junit.Assert.assertFalse
50+ import org.junit.Assert.assertNotNull
4951import org.junit.Assert.assertTrue
5052import org.junit.Test
5153import org.junit.runner.RunWith
@@ -375,4 +377,78 @@ class LoginActivityScenarioTest {
375377 assertTrue(activity.switchDefaultOrSalesforceWelcomeDiscoveryLogin(PRODUCTION_LOGIN_URL .toUri()))
376378 }
377379 }
380+
381+ @Test
382+ fun userAgent_hasWelcomeDiscoveryFlag_withWelcomeDiscoveryLoginServer () {
383+ val uri = " https://welcome.salesforce.com/discovery?client_id=aaa&callback_url=bbb&client_version=ccc" .toUri()
384+
385+ launch<LoginActivity >(
386+ Intent (
387+ getApplicationContext(),
388+ LoginActivity ::class .java
389+ ).apply {
390+ data = uri
391+ }).use { activityScenario ->
392+
393+ activityScenario.onActivity { activity ->
394+ val userAgentString = activity.webView.settings.userAgentString
395+ val featureFlags = extractFeatureFlags(userAgentString)
396+ assertTrue(
397+ " WD (Welcome Discovery) should be present in $userAgentString " ,
398+ featureFlags.contains(Features .FEATURE_WELCOME_DISCOVERY_LOGIN )
399+ )
400+ }
401+ }
402+ }
403+
404+ @Test
405+ fun userAgent_hasWelcomeDiscoveryFlag_withLoginHostHint () {
406+ launch<LoginActivity >(
407+ Intent (
408+ getApplicationContext(),
409+ LoginActivity ::class .java
410+ ).apply {
411+ putExtra(EXTRA_KEY_LOGIN_HOST , " mobilesdk.my.salesforce.com" )
412+ }).use { activityScenario ->
413+
414+ activityScenario.onActivity { activity ->
415+ val userAgentString = activity.webView.settings.userAgentString
416+ val featureFlags = extractFeatureFlags(userAgentString)
417+ assertTrue(
418+ " WD (Welcome Discovery) should be present in $userAgentString " ,
419+ featureFlags.contains(Features .FEATURE_WELCOME_DISCOVERY_LOGIN )
420+ )
421+ }
422+ }
423+ }
424+
425+ @Test
426+ fun userAgent_doesNotHaveWelcomeDiscoveryFlag_withMyDomainLoginServer () {
427+ val uri = " https://mobilesdk.my.salesforce.com" .toUri()
428+
429+ launch<LoginActivity >(
430+ Intent (
431+ getApplicationContext(),
432+ LoginActivity ::class .java
433+ ).apply {
434+ data = uri
435+ }).use { activityScenario ->
436+
437+ activityScenario.onActivity { activity ->
438+ val userAgentString = activity.webView.settings.userAgentString
439+ val featureFlags = extractFeatureFlags(userAgentString)
440+ assertFalse(
441+ " WD (Welcome Discovery) should NOT be present in $userAgentString " ,
442+ featureFlags.contains(Features .FEATURE_WELCOME_DISCOVERY_LOGIN )
443+ )
444+ }
445+ }
446+ }
447+
448+ fun extractFeatureFlags (userAgentString : String ): List <String > {
449+ val ftrMatch = Regex (" ftr_([^\\ s]*)" ).find(userAgentString)
450+ assertNotNull(" User agent should contain ftr_ field: $userAgentString " , ftrMatch)
451+ val ftrValue = ftrMatch!! .groupValues[1 ]
452+ return ftrValue.split(" ." )
453+ }
378454}
0 commit comments