| 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.test.InstrumentationTestCase; | 8 import android.test.InstrumentationTestCase; |
| 9 import android.test.suitebuilder.annotation.SmallTest; | 9 import android.test.suitebuilder.annotation.SmallTest; |
| 10 | 10 |
| 11 import org.chromium.base.test.util.AdvancedMockContext; | 11 import org.chromium.base.test.util.AdvancedMockContext; |
| 12 import org.chromium.base.test.util.DisabledTest; | 12 import org.chromium.base.test.util.DisabledTest; |
| 13 import org.chromium.chrome.test.util.browser.signin.MockChangeEventChecker; | 13 import org.chromium.chrome.test.util.browser.signin.MockChangeEventChecker; |
| 14 import org.chromium.sync.signin.AccountManagerHelper; | 14 import org.chromium.sync.signin.AccountManagerHelper; |
| 15 import org.chromium.sync.signin.ChromeSigninController; | 15 import org.chromium.sync.signin.ChromeSigninController; |
| 16 import org.chromium.sync.test.util.AccountHolder; | 16 import org.chromium.sync.test.util.AccountHolder; |
| 17 import org.chromium.sync.test.util.MockAccountManager; | 17 import org.chromium.sync.test.util.MockAccountManager; |
| 18 | 18 |
| 19 /** | 19 /** |
| 20 * Instrumentation tests for {@link SigninHelper}. | 20 * Instrumentation tests for {@link SigninHelper}. |
| 21 */ | 21 */ |
| 22 public class SigninHelperTest extends InstrumentationTestCase { | 22 public class SigninHelperTest extends InstrumentationTestCase { |
| 23 private MockAccountManager mAccountManager; | 23 private MockAccountManager mAccountManager; |
| 24 private AdvancedMockContext mContext; | 24 private AdvancedMockContext mContext; |
| 25 private MockChangeEventChecker mEventChecker; | 25 private MockChangeEventChecker mEventChecker; |
| 26 private SigninHelper mSigninHelper; |
| 26 | 27 |
| 27 @Override | 28 @Override |
| 28 public void setUp() { | 29 public void setUp() { |
| 29 mContext = new AdvancedMockContext(getInstrumentation().getTargetContext
()); | 30 mContext = new AdvancedMockContext(getInstrumentation().getTargetContext
()); |
| 30 mEventChecker = new MockChangeEventChecker(); | 31 mEventChecker = new MockChangeEventChecker(); |
| 31 | 32 |
| 32 // Mock out the account manager on the device. | 33 // Mock out the account manager on the device. |
| 33 mAccountManager = new MockAccountManager(mContext, getInstrumentation().
getContext()); | 34 mAccountManager = new MockAccountManager(mContext, getInstrumentation().
getContext()); |
| 34 AccountManagerHelper.overrideAccountManagerHelperForTests(mContext, mAcc
ountManager); | 35 AccountManagerHelper.overrideAccountManagerHelperForTests(mContext, mAcc
ountManager); |
| 36 SigninHelper.initializeForTests(mContext); |
| 37 mSigninHelper = SigninHelper.get(mContext); |
| 35 } | 38 } |
| 36 | 39 |
| 37 @SmallTest | 40 @SmallTest |
| 38 public void testAccountsChangedPref() { | 41 public void testAccountsChangedPref() { |
| 39 assertEquals("Should never return true before the pref has ever been set
.", | 42 assertEquals("Should never return true before the pref has ever been set
.", |
| 40 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 43 false, mSigninHelper.checkAndClearAccountsChangedPref()); |
| 41 assertEquals("Should never return true before the pref has ever been set
.", | 44 assertEquals("Should never return true before the pref has ever been set
.", |
| 42 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 45 false, mSigninHelper.checkAndClearAccountsChangedPref()); |
| 43 | 46 |
| 44 // Mark the pref as set. | 47 // Mark the pref as set. |
| 45 SigninHelper.markAccountsChangedPref(mContext); | 48 mSigninHelper.markAccountsChangedPref(); |
| 46 | 49 |
| 47 assertEquals("Should return true first time after marking accounts chang
ed", | 50 assertEquals("Should return true first time after marking accounts chang
ed", |
| 48 true, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 51 true, mSigninHelper.checkAndClearAccountsChangedPref()); |
| 49 assertEquals("Should only return true first time after marking accounts
changed", | 52 assertEquals("Should only return true first time after marking accounts
changed", |
| 50 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 53 false, mSigninHelper.checkAndClearAccountsChangedPref()); |
| 51 assertEquals("Should only return true first time after marking accounts
changed", | 54 assertEquals("Should only return true first time after marking accounts
changed", |
| 52 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 55 false, mSigninHelper.checkAndClearAccountsChangedPref()); |
| 53 | 56 |
| 54 // Mark the pref as set again. | 57 // Mark the pref as set again. |
| 55 SigninHelper.markAccountsChangedPref(mContext); | 58 mSigninHelper.markAccountsChangedPref(); |
| 56 | 59 |
| 57 assertEquals("Should return true first time after marking accounts chang
ed", | 60 assertEquals("Should return true first time after marking accounts chang
ed", |
| 58 true, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 61 true, mSigninHelper.checkAndClearAccountsChangedPref()); |
| 59 assertEquals("Should only return true first time after marking accounts
changed", | 62 assertEquals("Should only return true first time after marking accounts
changed", |
| 60 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 63 false, mSigninHelper.checkAndClearAccountsChangedPref()); |
| 61 assertEquals("Should only return true first time after marking accounts
changed", | 64 assertEquals("Should only return true first time after marking accounts
changed", |
| 62 false, SigninHelper.checkAndClearAccountsChangedPref(mContext)); | 65 false, mSigninHelper.checkAndClearAccountsChangedPref()); |
| 63 } | 66 } |
| 64 | 67 |
| 65 @SmallTest | 68 @SmallTest |
| 66 public void testSimpleAccountRename() { | 69 public void testSimpleAccountRename() { |
| 67 setSignedInAccountName("A"); | 70 setSignedInAccountName("A"); |
| 68 mEventChecker.insertRenameEvent("A", "B"); | 71 mEventChecker.insertRenameEvent("A", "B"); |
| 69 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 72 mSigninHelper.updateAccountRenameData(mEventChecker); |
| 70 assertEquals("B", getNewSignedInAccountName()); | 73 assertEquals("B", getNewSignedInAccountName()); |
| 71 } | 74 } |
| 72 | 75 |
| 73 @DisabledTest // crbug.com/568623 | 76 @DisabledTest // crbug.com/568623 |
| 74 @SmallTest | 77 @SmallTest |
| 75 public void testNotSignedInAccountRename() { | 78 public void testNotSignedInAccountRename() { |
| 76 setSignedInAccountName("A"); | 79 setSignedInAccountName("A"); |
| 77 mEventChecker.insertRenameEvent("B", "C"); | 80 mEventChecker.insertRenameEvent("B", "C"); |
| 78 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 81 mSigninHelper.updateAccountRenameData(mEventChecker); |
| 79 assertEquals(null, getNewSignedInAccountName()); | 82 assertEquals(null, getNewSignedInAccountName()); |
| 80 } | 83 } |
| 81 | 84 |
| 82 @SmallTest | 85 @SmallTest |
| 83 public void testSimpleAccountRenameTwice() { | 86 public void testSimpleAccountRenameTwice() { |
| 84 setSignedInAccountName("A"); | 87 setSignedInAccountName("A"); |
| 85 mEventChecker.insertRenameEvent("A", "B"); | 88 mEventChecker.insertRenameEvent("A", "B"); |
| 86 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 89 mSigninHelper.updateAccountRenameData(mEventChecker); |
| 87 assertEquals("B", getNewSignedInAccountName()); | 90 assertEquals("B", getNewSignedInAccountName()); |
| 88 mEventChecker.insertRenameEvent("B", "C"); | 91 mEventChecker.insertRenameEvent("B", "C"); |
| 89 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 92 mSigninHelper.updateAccountRenameData(mEventChecker); |
| 90 assertEquals("C", getNewSignedInAccountName()); | 93 assertEquals("C", getNewSignedInAccountName()); |
| 91 } | 94 } |
| 92 | 95 |
| 93 @SmallTest | 96 @SmallTest |
| 94 public void testNotSignedInAccountRename2() { | 97 public void testNotSignedInAccountRename2() { |
| 95 setSignedInAccountName("A"); | 98 setSignedInAccountName("A"); |
| 96 mEventChecker.insertRenameEvent("B", "C"); | 99 mEventChecker.insertRenameEvent("B", "C"); |
| 97 mEventChecker.insertRenameEvent("C", "D"); | 100 mEventChecker.insertRenameEvent("C", "D"); |
| 98 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 101 mSigninHelper.updateAccountRenameData(mEventChecker); |
| 99 assertEquals(null, getNewSignedInAccountName()); | 102 assertEquals(null, getNewSignedInAccountName()); |
| 100 } | 103 } |
| 101 | 104 |
| 102 @SmallTest | 105 @SmallTest |
| 103 public void testChainedAccountRename2() { | 106 public void testChainedAccountRename2() { |
| 104 setSignedInAccountName("A"); | 107 setSignedInAccountName("A"); |
| 105 mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated. | 108 mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated. |
| 106 mEventChecker.insertRenameEvent("A", "B"); | 109 mEventChecker.insertRenameEvent("A", "B"); |
| 107 mEventChecker.insertRenameEvent("Y", "X"); // Unrelated. | 110 mEventChecker.insertRenameEvent("Y", "X"); // Unrelated. |
| 108 mEventChecker.insertRenameEvent("B", "C"); | 111 mEventChecker.insertRenameEvent("B", "C"); |
| 109 mEventChecker.insertRenameEvent("C", "D"); | 112 mEventChecker.insertRenameEvent("C", "D"); |
| 110 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 113 mSigninHelper.updateAccountRenameData(mEventChecker); |
| 111 assertEquals("D", getNewSignedInAccountName()); | 114 assertEquals("D", getNewSignedInAccountName()); |
| 112 } | 115 } |
| 113 | 116 |
| 114 @SmallTest | 117 @SmallTest |
| 115 public void testLoopedAccountRename() { | 118 public void testLoopedAccountRename() { |
| 116 setSignedInAccountName("A"); | 119 setSignedInAccountName("A"); |
| 117 mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated. | 120 mEventChecker.insertRenameEvent("Z", "Y"); // Unrelated. |
| 118 mEventChecker.insertRenameEvent("A", "B"); | 121 mEventChecker.insertRenameEvent("A", "B"); |
| 119 mEventChecker.insertRenameEvent("Y", "X"); // Unrelated. | 122 mEventChecker.insertRenameEvent("Y", "X"); // Unrelated. |
| 120 mEventChecker.insertRenameEvent("B", "C"); | 123 mEventChecker.insertRenameEvent("B", "C"); |
| 121 mEventChecker.insertRenameEvent("C", "D"); | 124 mEventChecker.insertRenameEvent("C", "D"); |
| 122 mEventChecker.insertRenameEvent("D", "A"); // Looped. | 125 mEventChecker.insertRenameEvent("D", "A"); // Looped. |
| 123 Account account = AccountManagerHelper.createAccountFromName("D"); | 126 Account account = AccountManagerHelper.createAccountFromName("D"); |
| 124 AccountHolder accountHolder = AccountHolder.create().account(account).bu
ild(); | 127 AccountHolder accountHolder = AccountHolder.create().account(account).bu
ild(); |
| 125 mAccountManager.addAccountHolderExplicitly(accountHolder); | 128 mAccountManager.addAccountHolderExplicitly(accountHolder); |
| 126 SigninHelper.updateAccountRenameData(mContext, mEventChecker); | 129 mSigninHelper.updateAccountRenameData(mEventChecker); |
| 127 assertEquals("D", getNewSignedInAccountName()); | 130 assertEquals("D", getNewSignedInAccountName()); |
| 128 } | 131 } |
| 129 | 132 |
| 130 private void setSignedInAccountName(String account) { | 133 private void setSignedInAccountName(String account) { |
| 131 ChromeSigninController.get(mContext).setSignedInAccountName(account); | 134 ChromeSigninController.get(mContext).setSignedInAccountName(account); |
| 132 } | 135 } |
| 133 | 136 |
| 134 private String getSignedInAccountName() { | 137 private String getSignedInAccountName() { |
| 135 return ChromeSigninController.get(mContext).getSignedInAccountName(); | 138 return ChromeSigninController.get(mContext).getSignedInAccountName(); |
| 136 } | 139 } |
| 137 | 140 |
| 138 private String getNewSignedInAccountName() { | 141 private String getNewSignedInAccountName() { |
| 139 return SigninHelper.getNewSignedInAccountName(mContext); | 142 return mSigninHelper.getNewSignedInAccountName(); |
| 140 } | 143 } |
| 141 } | 144 } |
| OLD | NEW |