| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.signin; | 5 package org.chromium.chrome.browser.signin; |
| 6 | 6 |
| 7 import android.accounts.Account; | 7 import android.accounts.Account; |
| 8 import android.support.test.InstrumentationRegistry; |
| 8 import android.support.test.filters.SmallTest; | 9 import android.support.test.filters.SmallTest; |
| 9 import android.test.InstrumentationTestCase; | 10 |
| 11 import org.junit.Assert; |
| 12 import org.junit.Before; |
| 13 import org.junit.Test; |
| 14 import org.junit.runner.RunWith; |
| 10 | 15 |
| 11 import org.chromium.base.test.util.AdvancedMockContext; | 16 import org.chromium.base.test.util.AdvancedMockContext; |
| 12 import org.chromium.base.test.util.DisabledTest; | 17 import org.chromium.base.test.util.DisabledTest; |
| 13 import org.chromium.base.test.util.RetryOnFailure; | 18 import org.chromium.base.test.util.RetryOnFailure; |
| 19 import org.chromium.chrome.test.ChromeJUnit4ClassRunner; |
| 14 import org.chromium.chrome.test.util.browser.signin.MockChangeEventChecker; | 20 import org.chromium.chrome.test.util.browser.signin.MockChangeEventChecker; |
| 15 import org.chromium.components.signin.AccountManagerHelper; | 21 import org.chromium.components.signin.AccountManagerHelper; |
| 16 import org.chromium.components.signin.ChromeSigninController; | 22 import org.chromium.components.signin.ChromeSigninController; |
| 17 import org.chromium.components.signin.test.util.AccountHolder; | 23 import org.chromium.components.signin.test.util.AccountHolder; |
| 18 import org.chromium.components.signin.test.util.MockAccountManager; | 24 import org.chromium.components.signin.test.util.MockAccountManager; |
| 19 | 25 |
| 20 /** | 26 /** |
| 21 * Instrumentation tests for {@link SigninHelper}. | 27 * Instrumentation tests for {@link SigninHelper}. |
| 22 */ | 28 */ |
| 23 public class SigninHelperTest extends InstrumentationTestCase { | 29 @RunWith(ChromeJUnit4ClassRunner.class) |
| 30 public class SigninHelperTest { |
| 24 private MockAccountManager mAccountManager; | 31 private MockAccountManager mAccountManager; |
| 25 private AdvancedMockContext mContext; | 32 private AdvancedMockContext mContext; |
| 26 private MockChangeEventChecker mEventChecker; | 33 private MockChangeEventChecker mEventChecker; |
| 27 | 34 |
| 28 @Override | 35 @Before |
| 29 public void setUp() { | 36 public void setUp() { |
| 30 mContext = new AdvancedMockContext(getInstrumentation().getTargetContext
()); | 37 mContext = new AdvancedMockContext( |
| 38 InstrumentationRegistry.getInstrumentation().getTargetContext())
; |
| 31 mEventChecker = new MockChangeEventChecker(); | 39 mEventChecker = new MockChangeEventChecker(); |
| 32 | 40 |
| 33 // Mock out the account manager on the device. | 41 // Mock out the account manager on the device. |
| 34 mAccountManager = new MockAccountManager(mContext, getInstrumentation().
getContext()); | 42 mAccountManager = new MockAccountManager( |
| 43 mContext, InstrumentationRegistry.getInstrumentation().getContex
t()); |
| 35 AccountManagerHelper.overrideAccountManagerHelperForTests(mContext, mAcc
ountManager); | 44 AccountManagerHelper.overrideAccountManagerHelperForTests(mContext, mAcc
ountManager); |
| 36 } | 45 } |
| 37 | 46 |
| 47 @Test |
| 38 @SmallTest | 48 @SmallTest |
| 39 @RetryOnFailure | 49 @RetryOnFailure |
| 40 public void testAccountsChangedPref() { | 50 public void testAccountsChangedPref() { |
| 41 assertEquals("Should never return true before the pref has ever been set
.", | 51 Assert.assertEquals("Should never return true before the pref has ever b
een set.", false, |
| 42 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 52 SigninHelper.checkAndClearAccountsChangedPref(mContext)); |
| 43 assertEquals("Should never return true before the pref has ever been set
.", | 53 Assert.assertEquals("Should never return true before the pref has ever b
een set.", false, |
| 44 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 54 SigninHelper.checkAndClearAccountsChangedPref(mContext)); |
| 45 | 55 |
| 46 // Mark the pref as set. | 56 // Mark the pref as set. |
| 47 SigninHelper.markAccountsChangedPref(mContext); | 57 SigninHelper.markAccountsChangedPref(mContext); |
| 48 | 58 |
| 49 assertEquals("Should return true first time after marking accounts chang
ed", | 59 Assert.assertEquals("Should return true first time after marking account
s changed", true, |
| 50 true, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 60 SigninHelper.checkAndClearAccountsChangedPref(mContext)); |
| 51 assertEquals("Should only return true first time after marking accounts
changed", | 61 Assert.assertEquals("Should only return true first time after marking ac
counts changed", |
| 52 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 62 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); |
| 53 assertEquals("Should only return true first time after marking accounts
changed", | 63 Assert.assertEquals("Should only return true first time after marking ac
counts changed", |
| 54 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 64 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); |
| 55 | 65 |
| 56 // Mark the pref as set again. | 66 // Mark the pref as set again. |
| 57 SigninHelper.markAccountsChangedPref(mContext); | 67 SigninHelper.markAccountsChangedPref(mContext); |
| 58 | 68 |
| 59 assertEquals("Should return true first time after marking accounts chang
ed", | 69 Assert.assertEquals("Should return true first time after marking account
s changed", true, |
| 60 true, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 70 SigninHelper.checkAndClearAccountsChangedPref(mContext)); |
| 61 assertEquals("Should only return true first time after marking accounts
changed", | 71 Assert.assertEquals("Should only return true first time after marking ac
counts changed", |
| 62 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 72 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); |
| 63 assertEquals("Should only return true first time after marking accounts
changed", | 73 Assert.assertEquals("Should only return true first time after marking ac
counts changed", |
| 64 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 74 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); |
| 65 } | 75 } |
| 66 | 76 |
| 77 @Test |
| 67 @SmallTest | 78 @SmallTest |
| 68 @RetryOnFailure | 79 @RetryOnFailure |
| 69 public void testSimpleAccountRename() { | 80 public void testSimpleAccountRename() { |
| 70 setSignedInAccountName("A"); | 81 setSignedInAccountName("A"); |
| 71 mEventChecker.insertRenameEvent("A", "B"); | 82 mEventChecker.insertRenameEvent("A", "B"); |
| 72 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 83 SigninHelper.updateAccountRenameData(mContext, mEventChecker); |
| 73 assertEquals("B", getNewSignedInAccountName()); | 84 Assert.assertEquals("B", getNewSignedInAccountName()); |
| 74 } | 85 } |
| 75 | 86 |
| 87 @Test |
| 76 @DisabledTest(message = "crbug.com/568623") | 88 @DisabledTest(message = "crbug.com/568623") |
| 77 @SmallTest | 89 @SmallTest |
| 78 public void testNotSignedInAccountRename() { | 90 public void testNotSignedInAccountRename() { |
| 79 setSignedInAccountName("A"); | 91 setSignedInAccountName("A"); |
| 80 mEventChecker.insertRenameEvent("B", "C"); | 92 mEventChecker.insertRenameEvent("B", "C"); |
| 81 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 93 SigninHelper.updateAccountRenameData(mContext, mEventChecker); |
| 82 assertEquals(null, getNewSignedInAccountName()); | 94 Assert.assertEquals(null, getNewSignedInAccountName()); |
| 83 } | 95 } |
| 84 | 96 |
| 97 @Test |
| 85 @SmallTest | 98 @SmallTest |
| 86 public void testSimpleAccountRenameTwice() { | 99 public void testSimpleAccountRenameTwice() { |
| 87 setSignedInAccountName("A"); | 100 setSignedInAccountName("A"); |
| 88 mEventChecker.insertRenameEvent("A", "B"); | 101 mEventChecker.insertRenameEvent("A", "B"); |
| 89 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 102 SigninHelper.updateAccountRenameData(mContext, mEventChecker); |
| 90 assertEquals("B", getNewSignedInAccountName()); | 103 Assert.assertEquals("B", getNewSignedInAccountName()); |
| 91 mEventChecker.insertRenameEvent("B", "C"); | 104 mEventChecker.insertRenameEvent("B", "C"); |
| 92 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 105 SigninHelper.updateAccountRenameData(mContext, mEventChecker); |
| 93 assertEquals("C", getNewSignedInAccountName()); | 106 Assert.assertEquals("C", getNewSignedInAccountName()); |
| 94 } | 107 } |
| 95 | 108 |
| 109 @Test |
| 96 @SmallTest | 110 @SmallTest |
| 97 @RetryOnFailure | 111 @RetryOnFailure |
| 98 public void testNotSignedInAccountRename2() { | 112 public void testNotSignedInAccountRename2() { |
| 99 setSignedInAccountName("A"); | 113 setSignedInAccountName("A"); |
| 100 mEventChecker.insertRenameEvent("B", "C"); | 114 mEventChecker.insertRenameEvent("B", "C"); |
| 101 mEventChecker.insertRenameEvent("C", "D"); | 115 mEventChecker.insertRenameEvent("C", "D"); |
| 102 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 116 SigninHelper.updateAccountRenameData(mContext, mEventChecker); |
| 103 assertEquals(null, getNewSignedInAccountName()); | 117 Assert.assertEquals(null, getNewSignedInAccountName()); |
| 104 } | 118 } |
| 105 | 119 |
| 120 @Test |
| 106 @SmallTest | 121 @SmallTest |
| 107 @RetryOnFailure | 122 @RetryOnFailure |
| 108 public void testChainedAccountRename2() { | 123 public void testChainedAccountRename2() { |
| 109 setSignedInAccountName("A"); | 124 setSignedInAccountName("A"); |
| 110 mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated. | 125 mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated. |
| 111 mEventChecker.insertRenameEvent("A", "B"); | 126 mEventChecker.insertRenameEvent("A", "B"); |
| 112 mEventChecker.insertRenameEvent("Y", "X"); // Unrelated. | 127 mEventChecker.insertRenameEvent("Y", "X"); // Unrelated. |
| 113 mEventChecker.insertRenameEvent("B", "C"); | 128 mEventChecker.insertRenameEvent("B", "C"); |
| 114 mEventChecker.insertRenameEvent("C", "D"); | 129 mEventChecker.insertRenameEvent("C", "D"); |
| 115 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 130 SigninHelper.updateAccountRenameData(mContext, mEventChecker); |
| 116 assertEquals("D", getNewSignedInAccountName()); | 131 Assert.assertEquals("D", getNewSignedInAccountName()); |
| 117 } | 132 } |
| 118 | 133 |
| 134 @Test |
| 119 @SmallTest | 135 @SmallTest |
| 120 @RetryOnFailure | 136 @RetryOnFailure |
| 121 public void testLoopedAccountRename() { | 137 public void testLoopedAccountRename() { |
| 122 setSignedInAccountName("A"); | 138 setSignedInAccountName("A"); |
| 123 mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated. | 139 mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated. |
| 124 mEventChecker.insertRenameEvent("A", "B"); | 140 mEventChecker.insertRenameEvent("A", "B"); |
| 125 mEventChecker.insertRenameEvent("Y", "X"); // Unrelated. | 141 mEventChecker.insertRenameEvent("Y", "X"); // Unrelated. |
| 126 mEventChecker.insertRenameEvent("B", "C"); | 142 mEventChecker.insertRenameEvent("B", "C"); |
| 127 mEventChecker.insertRenameEvent("C", "D"); | 143 mEventChecker.insertRenameEvent("C", "D"); |
| 128 mEventChecker.insertRenameEvent("D", "A"); // Looped. | 144 mEventChecker.insertRenameEvent("D", "A"); // Looped. |
| 129 Account account = AccountManagerHelper.createAccountFromName("D"); | 145 Account account = AccountManagerHelper.createAccountFromName("D"); |
| 130 AccountHolder accountHolder = AccountHolder.builder(account).build(); | 146 AccountHolder accountHolder = AccountHolder.builder(account).build(); |
| 131 mAccountManager.addAccountHolderExplicitly(accountHolder); | 147 mAccountManager.addAccountHolderExplicitly(accountHolder); |
| 132 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 148 SigninHelper.updateAccountRenameData(mContext, mEventChecker); |
| 133 assertEquals("D", getNewSignedInAccountName()); | 149 Assert.assertEquals("D", getNewSignedInAccountName()); |
| 134 } | 150 } |
| 135 | 151 |
| 136 private void setSignedInAccountName(String account) { | 152 private void setSignedInAccountName(String account) { |
| 137 ChromeSigninController.get(mContext).setSignedInAccountName(account); | 153 ChromeSigninController.get(mContext).setSignedInAccountName(account); |
| 138 } | 154 } |
| 139 | 155 |
| 140 private String getSignedInAccountName() { | 156 private String getSignedInAccountName() { |
| 141 return ChromeSigninController.get(mContext).getSignedInAccountName(); | 157 return ChromeSigninController.get(mContext).getSignedInAccountName(); |
| 142 } | 158 } |
| 143 | 159 |
| 144 private String getNewSignedInAccountName() { | 160 private String getNewSignedInAccountName() { |
| 145 return SigninHelper.getNewSignedInAccountName(mContext); | 161 return SigninHelper.getNewSignedInAccountName(mContext); |
| 146 } | 162 } |
| 147 } | 163 } |
| OLD | NEW |