Commit 0e50d769 authored by Alice Wang's avatar Alice Wang Committed by Commit Bot

[Signin][Android] Add signout and wipe data integration tests

This CL added two signout and wipe data integration tests. This is a
refactoring of the current SigninTest.

Bug: 1038326
Change-Id: I50bffddc3fef8819e617d2b925d0b9f8733f7d3a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2027410
Commit-Queue: Alice Wang <aliceywang@chromium.org>
Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Reviewed-by: default avatarTanmoy Mollik <triploblastic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#741387}
parent 439dda01
......@@ -34,11 +34,14 @@ import org.chromium.base.test.util.JniMocker;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
import org.chromium.chrome.browser.profiles.ProfileAccountManagementMetrics;
import org.chromium.chrome.browser.sync.settings.AccountManagementFragment;
import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.chrome.test.ChromeActivityTestRule;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.ActivityUtils;
import org.chromium.chrome.test.util.BookmarkTestUtil;
import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
import org.chromium.components.signin.ChromeSigninController;
import org.chromium.components.signin.GAIAServiceType;
......@@ -70,6 +73,8 @@ public class SigninSignoutIntegrationTest {
private SigninManager mSigninManager;
private BookmarkModel mBookmarkModel;
@Before
public void setUp() {
initMocks(this);
......@@ -96,11 +101,7 @@ public class SigninSignoutIntegrationTest {
SigninActivityLauncher.get().launchActivity(
mActivityTestRule.getActivity(), SigninAccessPoint.SETTINGS);
});
TestThreadUtils.runOnUiThreadBlocking(() -> {
Assert.assertFalse("Account should not be signed in!",
mSigninManager.getIdentityManager().hasPrimaryAccount());
Assert.assertNull(mSigninManager.getIdentityManager().getPrimaryAccountInfo());
});
assertSignedOut();
onView(withId(R.id.positive_button)).perform(click());
verify(mSignInStateObserverMock).onSignedIn();
verify(mSignInStateObserverMock, never()).onSignedOut();
......@@ -118,11 +119,7 @@ public class SigninSignoutIntegrationTest {
mActivityTestRule.startSettingsActivity(AccountManagementFragment.class.getName());
onView(withText(R.string.sign_out_and_turn_off_sync)).perform(click());
onView(withText(R.string.continue_button)).inRoot(isDialog()).perform(click());
TestThreadUtils.runOnUiThreadBlocking(() -> {
Assert.assertFalse("Account should be signed out!",
mSigninManager.getIdentityManager().hasPrimaryAccount());
Assert.assertNull(mSigninManager.getIdentityManager().getPrimaryAccountInfo());
});
assertSignedOut();
verify(mSignInStateObserverMock).onSignedOut();
verify(mSigninUtilsNativeMock)
.logEvent(ProfileAccountManagementMetrics.TOGGLE_SIGNOUT,
......@@ -166,6 +163,49 @@ public class SigninSignoutIntegrationTest {
GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
}
@Test
@LargeTest
public void testSignOutNonManagedAccountWithDataWiped() {
signIn();
addOneTestBookmark();
mActivityTestRule.startSettingsActivity(AccountManagementFragment.class.getName());
onView(withText(R.string.sign_out_and_turn_off_sync)).perform(click());
onView(withId(R.id.remove_local_data)).perform(click());
onView(withText(R.string.continue_button)).inRoot(isDialog()).perform(click());
assertSignedOut();
TestThreadUtils.runOnUiThreadBlocking(() -> {
Assert.assertEquals(0, mBookmarkModel.getChildCount(mBookmarkModel.getDefaultFolder()));
});
}
@Test
@LargeTest
public void testSignOutNonManagedAccountWithoutWipingData() {
signIn();
addOneTestBookmark();
mActivityTestRule.startSettingsActivity(AccountManagementFragment.class.getName());
onView(withText(R.string.sign_out_and_turn_off_sync)).perform(click());
onView(withText(R.string.continue_button)).inRoot(isDialog()).perform(click());
assertSignedOut();
TestThreadUtils.runOnUiThreadBlocking(() -> {
Assert.assertEquals(1, mBookmarkModel.getChildCount(mBookmarkModel.getDefaultFolder()));
});
}
private void addOneTestBookmark() {
Assert.assertNull("This method should be called only once!", mBookmarkModel);
TestThreadUtils.runOnUiThreadBlocking(() -> {
mBookmarkModel = new BookmarkModel(
((TabImpl) mActivityTestRule.getActivity().getActivityTab()).getProfile());
mBookmarkModel.loadFakePartnerBookmarkShimForTesting();
BookmarkTestUtil.waitForBookmarkModelLoaded();
Assert.assertEquals(0, mBookmarkModel.getChildCount(mBookmarkModel.getDefaultFolder()));
mBookmarkModel.addBookmark(
mBookmarkModel.getDefaultFolder(), 0, "Test Bookmark", "http://google.com");
Assert.assertEquals(1, mBookmarkModel.getChildCount(mBookmarkModel.getDefaultFolder()));
});
}
private void signIn() {
Account account = SigninTestUtil.addTestAccount();
TestThreadUtils.runOnUiThreadBlocking(
......@@ -181,4 +221,12 @@ public class SigninSignoutIntegrationTest {
mSigninManager.getIdentityManager().hasPrimaryAccount());
});
}
private void assertSignedOut() {
TestThreadUtils.runOnUiThreadBlocking(() -> {
Assert.assertFalse("Account should be signed out!",
mSigninManager.getIdentityManager().hasPrimaryAccount());
Assert.assertNull(mSigninManager.getIdentityManager().getPrimaryAccountInfo());
});
}
}
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