Commit d701950a authored by Tanmoy Mollik's avatar Tanmoy Mollik Committed by Commit Bot

[Android] Add test for the sync row in main settings page

The sync row should launch signin flow if the user is signed in but
did not give sync consent. This cl adds tests for that behavior.

Bug: 1135686
Change-Id: If90233ca63ab0b9ad69121e2d68ae2c1e5f84c4a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2454129
Commit-Queue: Tanmoy Mollik <triploblastic@chromium.org>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815084}
parent b0b513b8
......@@ -4,6 +4,14 @@
package org.chromium.chrome.browser.settings;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import android.app.Activity;
import android.text.TextUtils;
import android.view.View;
......@@ -49,6 +57,7 @@ import org.chromium.chrome.browser.privacy.settings.PrivacySettings;
import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings;
import org.chromium.chrome.browser.signin.SigninActivityLauncherImpl;
import org.chromium.chrome.browser.sync.SyncTestRule;
import org.chromium.chrome.browser.sync.settings.SignInPreference;
import org.chromium.chrome.browser.sync.settings.SignInPreference.State;
......@@ -63,6 +72,8 @@ import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
import org.chromium.components.browser_ui.site_settings.SiteSettings;
import org.chromium.components.search_engines.TemplateUrl;
import org.chromium.components.search_engines.TemplateUrlService;
import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.metrics.SigninAccessPoint;
import org.chromium.content_public.browser.test.util.CriteriaHelper;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
......@@ -105,6 +116,9 @@ public class MainSettingsFragmentTest {
@Mock
private PasswordCheck mPasswordCheck;
@Mock
private SigninActivityLauncherImpl mMockSigninActivityLauncherImpl;
private @Nullable TemplateUrlService mActualTemplateUrlService;
private MainSettings mMainSettings;
......@@ -113,6 +127,7 @@ public class MainSettingsFragmentTest {
public void setup() {
MockitoAnnotations.initMocks(this);
PasswordCheckFactory.setPasswordCheckForTesting(mPasswordCheck);
SigninActivityLauncherImpl.setLauncherForTest(mMockSigninActivityLauncherImpl);
DeveloperSettings.setIsEnabledForTests(true);
NightModeUtils.setNightModeSupportedForTesting(true);
}
......@@ -286,6 +301,19 @@ public class MainSettingsFragmentTest {
assertSettingsExists("about_chrome", AboutChromeSettings.class);
}
@Test
@SmallTest
@EnableFeatures(ChromeFeatureList.MOBILE_IDENTITY_CONSISTENCY)
public void testSyncRowLaunchesSignInFlowForSignedInAccounts() {
CoreAccountInfo accountInfo = mSyncTestRule.setUpAccountAndSignInForTesting();
launchSettingsActivity();
onView(withText(R.string.sync_category_title)).perform(click());
verify(mMockSigninActivityLauncherImpl)
.launchActivityForPromoDefaultFlow(any(Activity.class),
eq(SigninAccessPoint.SETTINGS), eq(accountInfo.getEmail()));
}
@Test
@SmallTest
@EnableFeatures(ChromeFeatureList.SAFETY_CHECK_ANDROID)
......
......@@ -207,6 +207,16 @@ public class SyncTestRule extends ChromeActivityTestRule<ChromeActivity> {
return account;
}
/**
* Set up a test account and sign in. Does not setup sync.
* @return the test accountInfo that is signed in.
*/
public CoreAccountInfo setUpAccountAndSignInForTesting() {
CoreAccountInfo accountInfo = mAccountManagerTestRule.addTestAccountThenSignin();
enableUKM();
return accountInfo;
}
/**
* Set up a test account, sign in but don't mark sync setup complete.
* @return the test account that is signed in.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment