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 |