Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(371)

Side by Side Diff: chrome/browser/sync/util/cryptographer_unittest.cc

Issue 8919021: [Sync] Rename ModelEnumSet to ModelTypeSet (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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 #include "chrome/browser/sync/util/cryptographer.h" 5 #include "chrome/browser/sync/util/cryptographer.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
11 #include "chrome/browser/password_manager/encryptor.h" 11 #include "chrome/browser/password_manager/encryptor.h"
12 #include "chrome/browser/sync/protocol/nigori_specifics.pb.h" 12 #include "chrome/browser/sync/protocol/nigori_specifics.pb.h"
13 #include "chrome/browser/sync/protocol/password_specifics.pb.h" 13 #include "chrome/browser/sync/protocol/password_specifics.pb.h"
14 #include "chrome/browser/sync/syncable/model_type_test_util.h" 14 #include "chrome/browser/sync/syncable/model_type_test_util.h"
15 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 namespace browser_sync { 18 namespace browser_sync {
19 19
20 using ::testing::_; 20 using ::testing::_;
21 using ::testing::Mock; 21 using ::testing::Mock;
22 using ::testing::StrictMock; 22 using ::testing::StrictMock;
23 using syncable::ModelEnumSet; 23 using syncable::ModelTypeSet;
24 24
25 namespace { 25 namespace {
26 26
27 class MockObserver : public Cryptographer::Observer { 27 class MockObserver : public Cryptographer::Observer {
28 public: 28 public:
29 MOCK_METHOD2(OnEncryptedTypesChanged, 29 MOCK_METHOD2(OnEncryptedTypesChanged,
30 void(syncable::ModelEnumSet, bool)); 30 void(syncable::ModelTypeSet, bool));
31 }; 31 };
32 32
33 } // namespace 33 } // namespace
34 34
35 TEST(CryptographerTest, EmptyCantDecrypt) { 35 TEST(CryptographerTest, EmptyCantDecrypt) {
36 Cryptographer cryptographer; 36 Cryptographer cryptographer;
37 EXPECT_FALSE(cryptographer.is_ready()); 37 EXPECT_FALSE(cryptographer.is_ready());
38 38
39 sync_pb::EncryptedData encrypted; 39 sync_pb::EncryptedData encrypted;
40 encrypted.set_key_name("foo"); 40 encrypted.set_key_name("foo");
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 Cryptographer cryptographer2; 201 Cryptographer cryptographer2;
202 sync_pb::NigoriSpecifics nigori; 202 sync_pb::NigoriSpecifics nigori;
203 203
204 StrictMock<MockObserver> observer; 204 StrictMock<MockObserver> observer;
205 cryptographer.AddObserver(&observer); 205 cryptographer.AddObserver(&observer);
206 StrictMock<MockObserver> observer2; 206 StrictMock<MockObserver> observer2;
207 cryptographer2.AddObserver(&observer2); 207 cryptographer2.AddObserver(&observer2);
208 208
209 // Just set the sensitive types (shouldn't trigger any 209 // Just set the sensitive types (shouldn't trigger any
210 // notifications). 210 // notifications).
211 ModelEnumSet encrypted_types(Cryptographer::SensitiveTypes()); 211 ModelTypeSet encrypted_types(Cryptographer::SensitiveTypes());
212 cryptographer.MergeEncryptedTypesForTest(encrypted_types); 212 cryptographer.MergeEncryptedTypesForTest(encrypted_types);
213 cryptographer.UpdateNigoriFromEncryptedTypes(&nigori); 213 cryptographer.UpdateNigoriFromEncryptedTypes(&nigori);
214 cryptographer2.UpdateEncryptedTypesFromNigori(nigori); 214 cryptographer2.UpdateEncryptedTypesFromNigori(nigori);
215 EXPECT_TRUE(encrypted_types.Equals(cryptographer.GetEncryptedTypes())); 215 EXPECT_TRUE(encrypted_types.Equals(cryptographer.GetEncryptedTypes()));
216 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes())); 216 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes()));
217 217
218 Mock::VerifyAndClearExpectations(&observer); 218 Mock::VerifyAndClearExpectations(&observer);
219 Mock::VerifyAndClearExpectations(&observer2); 219 Mock::VerifyAndClearExpectations(&observer2);
220 220
221 EXPECT_CALL(observer, 221 EXPECT_CALL(observer,
222 OnEncryptedTypesChanged( 222 OnEncryptedTypesChanged(
223 HasModelTypes(syncable::ModelEnumSet::All()), 223 HasModelTypes(syncable::ModelTypeSet::All()),
224 false)); 224 false));
225 EXPECT_CALL(observer2, 225 EXPECT_CALL(observer2,
226 OnEncryptedTypesChanged( 226 OnEncryptedTypesChanged(
227 HasModelTypes(syncable::ModelEnumSet::All()), 227 HasModelTypes(syncable::ModelTypeSet::All()),
228 false)); 228 false));
229 229
230 // Set all encrypted types 230 // Set all encrypted types
231 encrypted_types = syncable::ModelEnumSet::All(); 231 encrypted_types = syncable::ModelTypeSet::All();
232 cryptographer.MergeEncryptedTypesForTest(encrypted_types); 232 cryptographer.MergeEncryptedTypesForTest(encrypted_types);
233 cryptographer.UpdateNigoriFromEncryptedTypes(&nigori); 233 cryptographer.UpdateNigoriFromEncryptedTypes(&nigori);
234 cryptographer2.UpdateEncryptedTypesFromNigori(nigori); 234 cryptographer2.UpdateEncryptedTypesFromNigori(nigori);
235 EXPECT_TRUE(encrypted_types.Equals(cryptographer.GetEncryptedTypes())); 235 EXPECT_TRUE(encrypted_types.Equals(cryptographer.GetEncryptedTypes()));
236 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes())); 236 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes()));
237 237
238 // Receiving an empty nigori should not reset any encrypted types or trigger 238 // Receiving an empty nigori should not reset any encrypted types or trigger
239 // an observer notification. 239 // an observer notification.
240 Mock::VerifyAndClearExpectations(&observer); 240 Mock::VerifyAndClearExpectations(&observer);
241 nigori = sync_pb::NigoriSpecifics(); 241 nigori = sync_pb::NigoriSpecifics();
242 cryptographer.UpdateEncryptedTypesFromNigori(nigori); 242 cryptographer.UpdateEncryptedTypesFromNigori(nigori);
243 EXPECT_TRUE(encrypted_types.Equals(cryptographer.GetEncryptedTypes())); 243 EXPECT_TRUE(encrypted_types.Equals(cryptographer.GetEncryptedTypes()));
244 } 244 }
245 245
246 TEST(CryptographerTest, EncryptEverythingExplicit) { 246 TEST(CryptographerTest, EncryptEverythingExplicit) {
247 ModelEnumSet real_types = syncable::ModelEnumSet::All(); 247 ModelTypeSet real_types = syncable::ModelTypeSet::All();
248 sync_pb::NigoriSpecifics specifics; 248 sync_pb::NigoriSpecifics specifics;
249 specifics.set_encrypt_everything(true); 249 specifics.set_encrypt_everything(true);
250 250
251 Cryptographer cryptographer; 251 Cryptographer cryptographer;
252 StrictMock<MockObserver> observer; 252 StrictMock<MockObserver> observer;
253 cryptographer.AddObserver(&observer); 253 cryptographer.AddObserver(&observer);
254 254
255 EXPECT_CALL(observer, 255 EXPECT_CALL(observer,
256 OnEncryptedTypesChanged( 256 OnEncryptedTypesChanged(
257 HasModelTypes(syncable::ModelEnumSet::All()), true)); 257 HasModelTypes(syncable::ModelTypeSet::All()), true));
258 258
259 EXPECT_FALSE(cryptographer.encrypt_everything()); 259 EXPECT_FALSE(cryptographer.encrypt_everything());
260 ModelEnumSet encrypted_types = cryptographer.GetEncryptedTypes(); 260 ModelTypeSet encrypted_types = cryptographer.GetEncryptedTypes();
261 for (ModelEnumSet::Iterator iter = real_types.First(); 261 for (ModelTypeSet::Iterator iter = real_types.First();
262 iter.Good(); iter.Inc()) { 262 iter.Good(); iter.Inc()) {
263 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI) 263 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI)
264 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 264 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
265 else 265 else
266 EXPECT_FALSE(encrypted_types.Has(iter.Get())); 266 EXPECT_FALSE(encrypted_types.Has(iter.Get()));
267 } 267 }
268 268
269 cryptographer.UpdateEncryptedTypesFromNigori(specifics); 269 cryptographer.UpdateEncryptedTypesFromNigori(specifics);
270 270
271 EXPECT_TRUE(cryptographer.encrypt_everything()); 271 EXPECT_TRUE(cryptographer.encrypt_everything());
272 encrypted_types = cryptographer.GetEncryptedTypes(); 272 encrypted_types = cryptographer.GetEncryptedTypes();
273 for (ModelEnumSet::Iterator iter = real_types.First(); 273 for (ModelTypeSet::Iterator iter = real_types.First();
274 iter.Good(); iter.Inc()) { 274 iter.Good(); iter.Inc()) {
275 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 275 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
276 } 276 }
277 277
278 // Shouldn't trigger another notification. 278 // Shouldn't trigger another notification.
279 specifics.set_encrypt_everything(true); 279 specifics.set_encrypt_everything(true);
280 280
281 cryptographer.RemoveObserver(&observer); 281 cryptographer.RemoveObserver(&observer);
282 } 282 }
283 283
284 TEST(CryptographerTest, EncryptEverythingImplicit) { 284 TEST(CryptographerTest, EncryptEverythingImplicit) {
285 ModelEnumSet real_types = syncable::ModelEnumSet::All(); 285 ModelTypeSet real_types = syncable::ModelTypeSet::All();
286 sync_pb::NigoriSpecifics specifics; 286 sync_pb::NigoriSpecifics specifics;
287 specifics.set_encrypt_bookmarks(true); // Non-passwords = encrypt everything 287 specifics.set_encrypt_bookmarks(true); // Non-passwords = encrypt everything
288 288
289 Cryptographer cryptographer; 289 Cryptographer cryptographer;
290 StrictMock<MockObserver> observer; 290 StrictMock<MockObserver> observer;
291 cryptographer.AddObserver(&observer); 291 cryptographer.AddObserver(&observer);
292 292
293 EXPECT_CALL(observer, 293 EXPECT_CALL(observer,
294 OnEncryptedTypesChanged( 294 OnEncryptedTypesChanged(
295 HasModelTypes(syncable::ModelEnumSet::All()), true)); 295 HasModelTypes(syncable::ModelTypeSet::All()), true));
296 296
297 EXPECT_FALSE(cryptographer.encrypt_everything()); 297 EXPECT_FALSE(cryptographer.encrypt_everything());
298 ModelEnumSet encrypted_types = cryptographer.GetEncryptedTypes(); 298 ModelTypeSet encrypted_types = cryptographer.GetEncryptedTypes();
299 for (ModelEnumSet::Iterator iter = real_types.First(); 299 for (ModelTypeSet::Iterator iter = real_types.First();
300 iter.Good(); iter.Inc()) { 300 iter.Good(); iter.Inc()) {
301 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI) 301 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI)
302 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 302 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
303 else 303 else
304 EXPECT_FALSE(encrypted_types.Has(iter.Get())); 304 EXPECT_FALSE(encrypted_types.Has(iter.Get()));
305 } 305 }
306 306
307 cryptographer.UpdateEncryptedTypesFromNigori(specifics); 307 cryptographer.UpdateEncryptedTypesFromNigori(specifics);
308 308
309 EXPECT_TRUE(cryptographer.encrypt_everything()); 309 EXPECT_TRUE(cryptographer.encrypt_everything());
310 encrypted_types = cryptographer.GetEncryptedTypes(); 310 encrypted_types = cryptographer.GetEncryptedTypes();
311 for (ModelEnumSet::Iterator iter = real_types.First(); 311 for (ModelTypeSet::Iterator iter = real_types.First();
312 iter.Good(); iter.Inc()) { 312 iter.Good(); iter.Inc()) {
313 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 313 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
314 } 314 }
315 315
316 // Shouldn't trigger another notification. 316 // Shouldn't trigger another notification.
317 specifics.set_encrypt_everything(true); 317 specifics.set_encrypt_everything(true);
318 318
319 cryptographer.RemoveObserver(&observer); 319 cryptographer.RemoveObserver(&observer);
320 } 320 }
321 321
322 TEST(CryptographerTest, UnknownSensitiveTypes) { 322 TEST(CryptographerTest, UnknownSensitiveTypes) {
323 ModelEnumSet real_types = syncable::ModelEnumSet::All(); 323 ModelTypeSet real_types = syncable::ModelTypeSet::All();
324 sync_pb::NigoriSpecifics specifics; 324 sync_pb::NigoriSpecifics specifics;
325 // Explicitly setting encrypt everything should override logic for implicit 325 // Explicitly setting encrypt everything should override logic for implicit
326 // encrypt everything. 326 // encrypt everything.
327 specifics.set_encrypt_everything(false); 327 specifics.set_encrypt_everything(false);
328 specifics.set_encrypt_bookmarks(true); 328 specifics.set_encrypt_bookmarks(true);
329 329
330 Cryptographer cryptographer; 330 Cryptographer cryptographer;
331 StrictMock<MockObserver> observer; 331 StrictMock<MockObserver> observer;
332 cryptographer.AddObserver(&observer); 332 cryptographer.AddObserver(&observer);
333 333
334 syncable::ModelEnumSet expected_encrypted_types = 334 syncable::ModelTypeSet expected_encrypted_types =
335 Cryptographer::SensitiveTypes(); 335 Cryptographer::SensitiveTypes();
336 expected_encrypted_types.Put(syncable::BOOKMARKS); 336 expected_encrypted_types.Put(syncable::BOOKMARKS);
337 337
338 EXPECT_CALL(observer, 338 EXPECT_CALL(observer,
339 OnEncryptedTypesChanged( 339 OnEncryptedTypesChanged(
340 HasModelTypes(expected_encrypted_types), false)); 340 HasModelTypes(expected_encrypted_types), false));
341 341
342 EXPECT_FALSE(cryptographer.encrypt_everything()); 342 EXPECT_FALSE(cryptographer.encrypt_everything());
343 ModelEnumSet encrypted_types = cryptographer.GetEncryptedTypes(); 343 ModelTypeSet encrypted_types = cryptographer.GetEncryptedTypes();
344 for (ModelEnumSet::Iterator iter = real_types.First(); 344 for (ModelTypeSet::Iterator iter = real_types.First();
345 iter.Good(); iter.Inc()) { 345 iter.Good(); iter.Inc()) {
346 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI) 346 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI)
347 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 347 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
348 else 348 else
349 EXPECT_FALSE(encrypted_types.Has(iter.Get())); 349 EXPECT_FALSE(encrypted_types.Has(iter.Get()));
350 } 350 }
351 351
352 cryptographer.UpdateEncryptedTypesFromNigori(specifics); 352 cryptographer.UpdateEncryptedTypesFromNigori(specifics);
353 353
354 EXPECT_FALSE(cryptographer.encrypt_everything()); 354 EXPECT_FALSE(cryptographer.encrypt_everything());
355 encrypted_types = cryptographer.GetEncryptedTypes(); 355 encrypted_types = cryptographer.GetEncryptedTypes();
356 for (ModelEnumSet::Iterator iter = real_types.First(); 356 for (ModelTypeSet::Iterator iter = real_types.First();
357 iter.Good(); iter.Inc()) { 357 iter.Good(); iter.Inc()) {
358 if (iter.Get() == syncable::PASSWORDS || 358 if (iter.Get() == syncable::PASSWORDS ||
359 iter.Get() == syncable::NIGORI || 359 iter.Get() == syncable::NIGORI ||
360 iter.Get() == syncable::BOOKMARKS) 360 iter.Get() == syncable::BOOKMARKS)
361 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 361 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
362 else 362 else
363 EXPECT_FALSE(encrypted_types.Has(iter.Get())); 363 EXPECT_FALSE(encrypted_types.Has(iter.Get()));
364 } 364 }
365 365
366 cryptographer.RemoveObserver(&observer); 366 cryptographer.RemoveObserver(&observer);
367 } 367 }
368 368
369 } // namespace browser_sync 369 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/util/cryptographer.cc ('k') | chrome/browser/ui/webui/sync_setup_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698