OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/utf_string_conversions.h" | |
6 #include "chrome/browser/sync/engine/model_safe_worker.h" | |
7 #include "chrome/browser/sync/profile_sync_service_harness.h" | |
8 #include "chrome/browser/sync/sessions/session_state.h" | |
9 #include "chrome/test/live_sync/live_sync_test.h" | |
10 #include "chrome/test/live_sync/passwords_helper.h" | |
11 | |
12 using passwords_helper::AddLogin; | |
13 using passwords_helper::AllProfilesContainSamePasswordForms; | |
14 using passwords_helper::AllProfilesContainSamePasswordFormsAsVerifier; | |
15 using passwords_helper::CreateTestPasswordForm; | |
16 using passwords_helper::GetPasswordCount; | |
17 using passwords_helper::GetPasswordStore; | |
18 using passwords_helper::GetVerifierPasswordCount; | |
19 using passwords_helper::GetVerifierPasswordStore; | |
20 using passwords_helper::ProfileContainsSamePasswordFormsAsVerifier; | |
21 using passwords_helper::RemoveLogin; | |
22 using passwords_helper::RemoveLogins; | |
23 using passwords_helper::SetPassphrase; | |
24 using passwords_helper::UpdateLogin; | |
25 | |
26 using webkit_glue::PasswordForm; | |
27 | |
28 static const char* kValidPassphrase = "passphrase!"; | |
29 | |
30 class TwoClientPasswordsSyncTest : public LiveSyncTest { | |
31 public: | |
32 TwoClientPasswordsSyncTest() : LiveSyncTest(TWO_CLIENT) {} | |
33 virtual ~TwoClientPasswordsSyncTest() {} | |
34 | |
35 private: | |
36 DISALLOW_COPY_AND_ASSIGN(TwoClientPasswordsSyncTest); | |
37 }; | |
38 | |
39 // TCM ID - 3732277 | |
40 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
41 #if defined(OS_MACOSX) | |
42 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_Add) { | |
43 #else | |
44 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, Add) { | |
45 #endif | |
46 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
47 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
48 | |
49 PasswordForm form = CreateTestPasswordForm(0); | |
50 AddLogin(GetVerifierPasswordStore(), form); | |
51 ASSERT_EQ(1, GetVerifierPasswordCount()); | |
52 AddLogin(GetPasswordStore(0), form); | |
53 ASSERT_EQ(1, GetPasswordCount(0)); | |
54 | |
55 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
56 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
57 } | |
58 | |
59 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
60 #if defined(OS_MACOSX) | |
61 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_Race) { | |
62 #else | |
63 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, Race) { | |
64 #endif | |
65 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
66 ASSERT_TRUE(AllProfilesContainSamePasswordForms()); | |
67 | |
68 PasswordForm form0 = CreateTestPasswordForm(0); | |
69 AddLogin(GetPasswordStore(0), form0); | |
70 | |
71 PasswordForm form1 = form0; | |
72 form1.password_value = ASCIIToUTF16("password1"); | |
73 AddLogin(GetPasswordStore(1), form1); | |
74 | |
75 ASSERT_TRUE(AwaitQuiescence()); | |
76 ASSERT_TRUE(AllProfilesContainSamePasswordForms()); | |
77 } | |
78 | |
79 // TCM ID - 4577932. | |
80 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
81 #if defined(OS_MACOSX) | |
82 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_DisablePasswords) { | |
83 #else | |
84 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DisablePasswords) { | |
85 #endif | |
86 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
87 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
88 | |
89 ASSERT_TRUE(GetClient(1)->DisableSyncForDatatype(syncable::PASSWORDS)); | |
90 PasswordForm form = CreateTestPasswordForm(0); | |
91 AddLogin(GetVerifierPasswordStore(), form); | |
92 ASSERT_EQ(1, GetVerifierPasswordCount()); | |
93 AddLogin(GetPasswordStore(0), form); | |
94 ASSERT_EQ(1, GetPasswordCount(0)); | |
95 | |
96 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
97 ASSERT_TRUE(ProfileContainsSamePasswordFormsAsVerifier(0)); | |
98 ASSERT_FALSE(ProfileContainsSamePasswordFormsAsVerifier(1)); | |
99 | |
100 ASSERT_TRUE(GetClient(1)->EnableSyncForDatatype(syncable::PASSWORDS)); | |
101 ASSERT_TRUE(AwaitQuiescence()); | |
102 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
103 ASSERT_EQ(1, GetPasswordCount(1)); | |
104 } | |
105 | |
106 // TCM ID - 4649281. | |
107 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
108 #if defined(OS_MACOSX) | |
109 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_DisableSync) { | |
110 #else | |
111 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DisableSync) { | |
112 #endif | |
113 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
114 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
115 | |
116 ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes()); | |
117 PasswordForm form = CreateTestPasswordForm(0); | |
118 AddLogin(GetVerifierPasswordStore(), form); | |
119 ASSERT_EQ(1, GetVerifierPasswordCount()); | |
120 AddLogin(GetPasswordStore(0), form); | |
121 ASSERT_EQ(1, GetPasswordCount(0)); | |
122 | |
123 ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Added a password.")); | |
124 ASSERT_TRUE(ProfileContainsSamePasswordFormsAsVerifier(0)); | |
125 ASSERT_FALSE(ProfileContainsSamePasswordFormsAsVerifier(1)); | |
126 | |
127 ASSERT_TRUE(GetClient(1)->EnableSyncForAllDatatypes()); | |
128 ASSERT_TRUE(AwaitQuiescence()); | |
129 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
130 ASSERT_EQ(1, GetPasswordCount(1)); | |
131 } | |
132 | |
133 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
134 #if defined(OS_MACOSX) | |
135 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_SetPassphrase) { | |
136 #else | |
137 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, SetPassphrase) { | |
138 #endif | |
139 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
140 | |
141 SetPassphrase(0, kValidPassphrase, true); | |
142 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
143 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
144 | |
145 SetPassphrase(1, kValidPassphrase, false); | |
146 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
147 ASSERT_TRUE(GetClient(1)->AwaitSyncCycleCompletion("Set passphrase.")); | |
148 } | |
149 | |
150 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
151 #if defined(OS_MACOSX) | |
152 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, | |
153 DISABLED_SetPassphraseAndAddPassword) { | |
154 #else | |
155 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, | |
156 SetPassphraseAndAddPassword) { | |
157 #endif | |
158 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
159 | |
160 SetPassphrase(0, kValidPassphrase, true); | |
161 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
162 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
163 | |
164 SetPassphrase(1, kValidPassphrase, false); | |
165 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
166 | |
167 PasswordForm form = CreateTestPasswordForm(0); | |
168 AddLogin(GetPasswordStore(0), form); | |
169 ASSERT_EQ(1, GetPasswordCount(0)); | |
170 | |
171 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
172 ASSERT_EQ(1, GetPasswordCount(1)); | |
173 } | |
174 | |
175 // TCM ID - 4603879 | |
176 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
177 #if defined(OS_MACOSX) | |
178 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_Update) { | |
179 #else | |
180 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, Update) { | |
181 #endif | |
182 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
183 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
184 | |
185 PasswordForm form = CreateTestPasswordForm(0); | |
186 AddLogin(GetVerifierPasswordStore(), form); | |
187 AddLogin(GetPasswordStore(0), form); | |
188 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
189 | |
190 form.password_value = ASCIIToUTF16("updated"); | |
191 UpdateLogin(GetVerifierPasswordStore(), form); | |
192 UpdateLogin(GetPasswordStore(1), form); | |
193 ASSERT_TRUE(AwaitQuiescence()); | |
194 | |
195 ASSERT_EQ(1, GetVerifierPasswordCount()); | |
196 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
197 } | |
198 | |
199 // TCM ID - 3719309 | |
200 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
201 #if defined(OS_MACOSX) | |
202 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_Delete) { | |
203 #else | |
204 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, Delete) { | |
205 #endif | |
206 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
207 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
208 | |
209 PasswordForm form0 = CreateTestPasswordForm(0); | |
210 AddLogin(GetVerifierPasswordStore(), form0); | |
211 AddLogin(GetPasswordStore(0), form0); | |
212 PasswordForm form1 = CreateTestPasswordForm(1); | |
213 AddLogin(GetVerifierPasswordStore(), form1); | |
214 AddLogin(GetPasswordStore(0), form1); | |
215 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
216 | |
217 RemoveLogin(GetPasswordStore(1), form0); | |
218 RemoveLogin(GetVerifierPasswordStore(), form0); | |
219 ASSERT_TRUE(AwaitQuiescence()); | |
220 | |
221 ASSERT_EQ(1, GetVerifierPasswordCount()); | |
222 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
223 } | |
224 | |
225 // TCM ID - 7573511 | |
226 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
227 #if defined(OS_MACOSX) | |
228 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_DeleteAll) { | |
229 #else | |
230 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DeleteAll) { | |
231 #endif | |
232 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
233 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
234 | |
235 PasswordForm form0 = CreateTestPasswordForm(0); | |
236 AddLogin(GetVerifierPasswordStore(), form0); | |
237 AddLogin(GetPasswordStore(0), form0); | |
238 PasswordForm form1 = CreateTestPasswordForm(1); | |
239 AddLogin(GetVerifierPasswordStore(), form1); | |
240 AddLogin(GetPasswordStore(0), form1); | |
241 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
242 | |
243 RemoveLogins(GetPasswordStore(1)); | |
244 RemoveLogins(GetVerifierPasswordStore()); | |
245 ASSERT_TRUE(AwaitQuiescence()); | |
246 | |
247 ASSERT_EQ(0, GetVerifierPasswordCount()); | |
248 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
249 } | |
250 | |
251 // TCM ID - 3694311 | |
252 // http://crbug.com/90460 | |
253 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, DISABLED_Merge) { | |
254 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
255 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
256 | |
257 PasswordForm form0 = CreateTestPasswordForm(0); | |
258 AddLogin(GetVerifierPasswordStore(), form0); | |
259 AddLogin(GetPasswordStore(0), form0); | |
260 PasswordForm form1 = CreateTestPasswordForm(1); | |
261 AddLogin(GetVerifierPasswordStore(), form1); | |
262 AddLogin(GetPasswordStore(0), form1); | |
263 AddLogin(GetPasswordStore(1), form1); | |
264 PasswordForm form2 = CreateTestPasswordForm(2); | |
265 AddLogin(GetVerifierPasswordStore(), form2); | |
266 AddLogin(GetPasswordStore(1), form2); | |
267 ASSERT_TRUE(AwaitQuiescence()); | |
268 | |
269 ASSERT_EQ(3, GetVerifierPasswordCount()); | |
270 ASSERT_TRUE(AllProfilesContainSamePasswordFormsAsVerifier()); | |
271 } | |
272 | |
273 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
274 #if defined(OS_MACOSX) | |
275 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, | |
276 DISABLED_SetPassphraseAndThenSetupSync) { | |
277 #else | |
278 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, | |
279 SetPassphraseAndThenSetupSync) { | |
280 #endif | |
281 ASSERT_TRUE(SetupClients()) << "SetupClients() failed."; | |
282 | |
283 ASSERT_TRUE(GetClient(0)->SetupSync()); | |
284 SetPassphrase(0, kValidPassphrase, true); | |
285 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
286 ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Initial sync.")); | |
287 | |
288 ASSERT_FALSE(GetClient(1)->SetupSync()); | |
289 SetPassphrase(1, kValidPassphrase, false); | |
290 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
291 ASSERT_TRUE(GetClient(1)->AwaitSyncCycleCompletion("Initial sync.")); | |
292 | |
293 // Following ensures types are enabled and active (see bug 87572). | |
294 browser_sync::ModelSafeRoutingInfo routes; | |
295 GetClient(0)->service()->GetModelSafeRoutingInfo(&routes); | |
296 ASSERT_EQ(browser_sync::GROUP_PASSWORD, routes[syncable::PASSWORDS]); | |
297 routes.clear(); | |
298 GetClient(1)->service()->GetModelSafeRoutingInfo(&routes); | |
299 ASSERT_EQ(browser_sync::GROUP_PASSWORD, routes[syncable::PASSWORDS]); | |
300 } | |
301 | |
302 // TODO(sync): Enable after MockKeychain is fixed. http://crbug.com/89808. | |
303 #if defined(OS_MACOSX) | |
304 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, | |
305 DISABLED_SetPassphraseTwice) { | |
306 #else | |
307 IN_PROC_BROWSER_TEST_F(TwoClientPasswordsSyncTest, | |
308 SetPassphraseTwice) { | |
309 #endif | |
310 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
311 | |
312 SetPassphrase(0, kValidPassphrase, true); | |
313 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
314 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
315 | |
316 SetPassphrase(1, kValidPassphrase, false); | |
317 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
318 ASSERT_TRUE(GetClient(1)->AwaitSyncCycleCompletion("Set passphrase.")); | |
319 | |
320 SetPassphrase(1, kValidPassphrase, false); | |
321 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
322 ASSERT_TRUE(GetClient(1)->AwaitSyncCycleCompletion("Set passphrase again.")); | |
323 } | |
OLD | NEW |