Skip to content

Commit 8d769b9

Browse files
@W-20978376: [Android] Remove supportWelcomeDiscovery flag in dev (CodeCov Testing Finalized)
1 parent 17eb379 commit 8d769b9

File tree

4 files changed

+62
-5
lines changed

4 files changed

+62
-5
lines changed

.github/workflows/pr.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Pull Request
22

33
on:
4-
# Dangerious without Member Check setup!
4+
# Dangerous without Member Check setup!
55
pull_request_target:
66
branches: [dev, master]
77

libs/SalesforceSDK/src/com/salesforce/androidsdk/ui/LoginActivity.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,9 +1594,16 @@ open class LoginActivity : FragmentActivity() {
15941594
private val activity: LoginActivity = this@LoginActivity
15951595
) : Observer<String> {
15961596
override fun onChanged(value: String) {
1597-
// Guard against observing a pending login server already provided by the intent data, such as a Salesforce Welcome Discovery mobile URL.
15981597
val pendingServerUri = value.toUri()
1599-
if ((activity.intent.data?.host == pendingServerUri.host && activity.intent.data?.path == pendingServerUri.path) || activity.intent.getStringExtra(EXTRA_KEY_LOGIN_HOST) == pendingServerUri.host) {
1598+
val intent = activity.intent
1599+
val data = intent.data
1600+
1601+
// Guard against observing a pending login server already provided by the intent data, such as a Salesforce Welcome Discovery mobile URL.
1602+
val dataHostMatches = data?.host == pendingServerUri.host
1603+
val dataPathMatches = data?.path == pendingServerUri.path
1604+
val uriMatches = dataHostMatches && dataPathMatches
1605+
val extraMatches = intent.getStringExtra(EXTRA_KEY_LOGIN_HOST) == pendingServerUri.host
1606+
if (uriMatches || extraMatches) {
16001607
activity.viewModel.previousPendingServer = value
16011608
return
16021609
}

libs/SalesforceSDK/src/com/salesforce/androidsdk/ui/LoginViewModel.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,8 @@ open class LoginViewModel(val bootConfig: BootConfig) : ViewModel() {
574574
if (!sdkManager.isBrowserLoginEnabled && !viewModel.isUsingFrontDoorBridge && value != null) {
575575
val valueUrl = value.toUri()
576576
val loginUrl = viewModel.loginUrl.value?.toUri()
577-
val isNewServer = loginUrl?.host != valueUrl.host || loginUrl?.path != valueUrl.path
577+
578+
val isNewServer = (loginUrl?.host?.equals(valueUrl.host) == false).or(!loginUrl?.path.equals(valueUrl.path))
578579
if (isNewServer) {
579580
scope.launch {
580581
viewModel.loginUrl.value = viewModel.getAuthorizationUrl(value)

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

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import androidx.activity.result.ActivityResultLauncher
3636
import androidx.core.net.toUri
3737
import androidx.lifecycle.MediatorLiveData
3838
import androidx.test.ext.junit.runners.AndroidJUnit4
39-
import com.salesforce.androidsdk.app.SalesforceSDKManager
4039
import com.salesforce.androidsdk.ui.LoginActivity.Companion.ABOUT_BLANK
4140
import com.salesforce.androidsdk.ui.LoginActivity.Companion.EXTRA_KEY_LOGIN_HINT
4241
import com.salesforce.androidsdk.ui.LoginActivity.Companion.EXTRA_KEY_LOGIN_HOST
@@ -221,6 +220,56 @@ class LoginActivityTest {
221220
verify(exactly = 0) { viewModel.applyPendingServer(pendingLoginServer = any()) }
222221
}
223222

223+
@Test
224+
fun loginActivityPendingServerObserver_switchesDefaultOrSalesforceWelcomeDiscoveryLogin_onChangeIntentDataPathOnlyTogglesWelcomeDiscoveryUrlPath() {
225+
226+
val pendingServerWelcomeDiscoveryUrlPath = "https://welcome.example.com/discovery"
227+
val intent = mockk<Intent>(relaxed = true)
228+
every { intent.data } returns "https://welcome.example.com/other".toUri()
229+
val viewModel = mockk<LoginViewModel>(relaxed = true)
230+
val activity = mockk<LoginActivity>(relaxed = true)
231+
every { activity.intent } returns intent
232+
every { activity.viewModel } returns viewModel
233+
every { activity.switchDefaultOrSalesforceWelcomeDiscoveryLogin(any()) } returns true
234+
val observer = activity.PendingServerObserver(activity)
235+
observer.onChanged(pendingServerWelcomeDiscoveryUrlPath)
236+
verify(exactly = 0) { viewModel.applyPendingServer(pendingLoginServer = any()) }
237+
}
238+
239+
@Test
240+
fun loginActivityPendingServerObserver_switchesDefaultOrSalesforceWelcomeDiscoveryLogin_onChangeIntentDataHostOnlyTogglesWelcomeDiscoveryUrlPath() {
241+
242+
val pendingServerWelcomeDiscoveryUrlPath = "https://welcome.example.com/discovery"
243+
val intent = mockk<Intent>(relaxed = true)
244+
every { intent.data } returns "https://other.example.com/discovery".toUri()
245+
val viewModel = mockk<LoginViewModel>(relaxed = true)
246+
val activity = mockk<LoginActivity>(relaxed = true)
247+
every { activity.intent } returns intent
248+
every { activity.viewModel } returns viewModel
249+
every { activity.switchDefaultOrSalesforceWelcomeDiscoveryLogin(any()) } returns true
250+
val observer = activity.PendingServerObserver(activity)
251+
observer.onChanged(pendingServerWelcomeDiscoveryUrlPath)
252+
verify(exactly = 0) { viewModel.applyPendingServer(pendingLoginServer = any()) }
253+
}
254+
255+
@Test
256+
fun loginActivityPendingServerObserver_switchesDefaultOrSalesforceWelcomeDiscoveryLogin_onChangeIntentDataHostPlusLoginHintExtras() {
257+
258+
val pendingServerWelcomeDiscoveryUrlPath = "https://welcome.example.com/discovery"
259+
val intent = mockk<Intent>(relaxed = true)
260+
every { intent.getStringExtra(EXTRA_KEY_LOGIN_HINT) } returns "[email protected]"
261+
every { intent.getStringExtra(EXTRA_KEY_LOGIN_HOST) } returns "welcome.example.com"
262+
every { intent.data } returns "https://welcome.example.com/discovery".toUri()
263+
val viewModel = mockk<LoginViewModel>(relaxed = true)
264+
val activity = mockk<LoginActivity>(relaxed = true)
265+
every { activity.intent } returns intent
266+
every { activity.viewModel } returns viewModel
267+
every { activity.switchDefaultOrSalesforceWelcomeDiscoveryLogin(any()) } returns true
268+
val observer = activity.PendingServerObserver(activity)
269+
observer.onChanged(pendingServerWelcomeDiscoveryUrlPath)
270+
verify(exactly = 0) { viewModel.applyPendingServer(pendingLoginServer = any()) }
271+
}
272+
224273
@Test
225274
fun loginActivity_startsCorrectActivity_onStartDefaultLoginWithHintAndHost() {
226275

0 commit comments

Comments
 (0)