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

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

Issue 10696087: [Sync] Move ModelType and related classes to 'syncer' namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sort headers, update copyrights Created 8 years, 5 months 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
« no previous file with comments | « sync/util/cryptographer.cc ('k') | sync/util/data_type_histogram.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "sync/util/cryptographer.h" 5 #include "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 "sync/internal_api/public/base/model_type_test_util.h" 11 #include "sync/internal_api/public/base/model_type_test_util.h"
12 #include "sync/protocol/nigori_specifics.pb.h" 12 #include "sync/protocol/nigori_specifics.pb.h"
13 #include "sync/protocol/password_specifics.pb.h" 13 #include "sync/protocol/password_specifics.pb.h"
14 #include "sync/test/fake_encryptor.h" 14 #include "sync/test/fake_encryptor.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 syncer { 18 namespace syncer {
19 19
20 namespace { 20 namespace {
21 21
22 using ::testing::_; 22 using ::testing::_;
23 using ::testing::Mock; 23 using ::testing::Mock;
24 using ::testing::StrictMock; 24 using ::testing::StrictMock;
25 using syncable::ModelTypeSet;
26 25
27 class MockObserver : public Cryptographer::Observer { 26 class MockObserver : public Cryptographer::Observer {
28 public: 27 public:
29 MOCK_METHOD2(OnEncryptedTypesChanged, 28 MOCK_METHOD2(OnEncryptedTypesChanged,
30 void(syncable::ModelTypeSet, bool)); 29 void(syncer::ModelTypeSet, bool));
31 }; 30 };
32 31
33 } // namespace 32 } // namespace
34 33
35 class SyncCryptographerTest : public ::testing::Test { 34 class SyncCryptographerTest : public ::testing::Test {
36 protected: 35 protected:
37 SyncCryptographerTest() : cryptographer_(&encryptor_) {} 36 SyncCryptographerTest() : cryptographer_(&encryptor_) {}
38 37
39 FakeEncryptor encryptor_; 38 FakeEncryptor encryptor_;
40 Cryptographer cryptographer_; 39 Cryptographer cryptographer_;
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 cryptographer_.UpdateNigoriFromEncryptedTypes(&nigori); 237 cryptographer_.UpdateNigoriFromEncryptedTypes(&nigori);
239 cryptographer2.UpdateEncryptedTypesFromNigori(nigori); 238 cryptographer2.UpdateEncryptedTypesFromNigori(nigori);
240 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); 239 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes()));
241 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes())); 240 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes()));
242 241
243 Mock::VerifyAndClearExpectations(&observer); 242 Mock::VerifyAndClearExpectations(&observer);
244 Mock::VerifyAndClearExpectations(&observer2); 243 Mock::VerifyAndClearExpectations(&observer2);
245 244
246 EXPECT_CALL(observer, 245 EXPECT_CALL(observer,
247 OnEncryptedTypesChanged( 246 OnEncryptedTypesChanged(
248 HasModelTypes(syncable::ModelTypeSet::All()), 247 HasModelTypes(syncer::ModelTypeSet::All()),
249 false)); 248 false));
250 EXPECT_CALL(observer2, 249 EXPECT_CALL(observer2,
251 OnEncryptedTypesChanged( 250 OnEncryptedTypesChanged(
252 HasModelTypes(syncable::ModelTypeSet::All()), 251 HasModelTypes(syncer::ModelTypeSet::All()),
253 false)); 252 false));
254 253
255 // Set all encrypted types 254 // Set all encrypted types
256 encrypted_types = syncable::ModelTypeSet::All(); 255 encrypted_types = syncer::ModelTypeSet::All();
257 cryptographer_.MergeEncryptedTypesForTest(encrypted_types); 256 cryptographer_.MergeEncryptedTypesForTest(encrypted_types);
258 cryptographer_.UpdateNigoriFromEncryptedTypes(&nigori); 257 cryptographer_.UpdateNigoriFromEncryptedTypes(&nigori);
259 cryptographer2.UpdateEncryptedTypesFromNigori(nigori); 258 cryptographer2.UpdateEncryptedTypesFromNigori(nigori);
260 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); 259 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes()));
261 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes())); 260 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes()));
262 261
263 // Receiving an empty nigori should not reset any encrypted types or trigger 262 // Receiving an empty nigori should not reset any encrypted types or trigger
264 // an observer notification. 263 // an observer notification.
265 Mock::VerifyAndClearExpectations(&observer); 264 Mock::VerifyAndClearExpectations(&observer);
266 nigori = sync_pb::NigoriSpecifics(); 265 nigori = sync_pb::NigoriSpecifics();
267 cryptographer_.UpdateEncryptedTypesFromNigori(nigori); 266 cryptographer_.UpdateEncryptedTypesFromNigori(nigori);
268 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); 267 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes()));
269 } 268 }
270 269
271 TEST_F(SyncCryptographerTest, EncryptEverythingExplicit) { 270 TEST_F(SyncCryptographerTest, EncryptEverythingExplicit) {
272 ModelTypeSet real_types = syncable::ModelTypeSet::All(); 271 ModelTypeSet real_types = syncer::ModelTypeSet::All();
273 sync_pb::NigoriSpecifics specifics; 272 sync_pb::NigoriSpecifics specifics;
274 specifics.set_encrypt_everything(true); 273 specifics.set_encrypt_everything(true);
275 274
276 StrictMock<MockObserver> observer; 275 StrictMock<MockObserver> observer;
277 cryptographer_.AddObserver(&observer); 276 cryptographer_.AddObserver(&observer);
278 277
279 EXPECT_CALL(observer, 278 EXPECT_CALL(observer,
280 OnEncryptedTypesChanged( 279 OnEncryptedTypesChanged(
281 HasModelTypes(syncable::ModelTypeSet::All()), true)); 280 HasModelTypes(syncer::ModelTypeSet::All()), true));
282 281
283 EXPECT_FALSE(cryptographer_.encrypt_everything()); 282 EXPECT_FALSE(cryptographer_.encrypt_everything());
284 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes(); 283 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes();
285 for (ModelTypeSet::Iterator iter = real_types.First(); 284 for (ModelTypeSet::Iterator iter = real_types.First();
286 iter.Good(); iter.Inc()) { 285 iter.Good(); iter.Inc()) {
287 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI) 286 if (iter.Get() == syncer::PASSWORDS || iter.Get() == syncer::NIGORI)
288 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 287 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
289 else 288 else
290 EXPECT_FALSE(encrypted_types.Has(iter.Get())); 289 EXPECT_FALSE(encrypted_types.Has(iter.Get()));
291 } 290 }
292 291
293 cryptographer_.UpdateEncryptedTypesFromNigori(specifics); 292 cryptographer_.UpdateEncryptedTypesFromNigori(specifics);
294 293
295 EXPECT_TRUE(cryptographer_.encrypt_everything()); 294 EXPECT_TRUE(cryptographer_.encrypt_everything());
296 encrypted_types = cryptographer_.GetEncryptedTypes(); 295 encrypted_types = cryptographer_.GetEncryptedTypes();
297 for (ModelTypeSet::Iterator iter = real_types.First(); 296 for (ModelTypeSet::Iterator iter = real_types.First();
298 iter.Good(); iter.Inc()) { 297 iter.Good(); iter.Inc()) {
299 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 298 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
300 } 299 }
301 300
302 // Shouldn't trigger another notification. 301 // Shouldn't trigger another notification.
303 specifics.set_encrypt_everything(true); 302 specifics.set_encrypt_everything(true);
304 303
305 cryptographer_.RemoveObserver(&observer); 304 cryptographer_.RemoveObserver(&observer);
306 } 305 }
307 306
308 TEST_F(SyncCryptographerTest, EncryptEverythingImplicit) { 307 TEST_F(SyncCryptographerTest, EncryptEverythingImplicit) {
309 ModelTypeSet real_types = syncable::ModelTypeSet::All(); 308 ModelTypeSet real_types = syncer::ModelTypeSet::All();
310 sync_pb::NigoriSpecifics specifics; 309 sync_pb::NigoriSpecifics specifics;
311 specifics.set_encrypt_bookmarks(true); // Non-passwords = encrypt everything 310 specifics.set_encrypt_bookmarks(true); // Non-passwords = encrypt everything
312 311
313 StrictMock<MockObserver> observer; 312 StrictMock<MockObserver> observer;
314 cryptographer_.AddObserver(&observer); 313 cryptographer_.AddObserver(&observer);
315 314
316 EXPECT_CALL(observer, 315 EXPECT_CALL(observer,
317 OnEncryptedTypesChanged( 316 OnEncryptedTypesChanged(
318 HasModelTypes(syncable::ModelTypeSet::All()), true)); 317 HasModelTypes(syncer::ModelTypeSet::All()), true));
319 318
320 EXPECT_FALSE(cryptographer_.encrypt_everything()); 319 EXPECT_FALSE(cryptographer_.encrypt_everything());
321 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes(); 320 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes();
322 for (ModelTypeSet::Iterator iter = real_types.First(); 321 for (ModelTypeSet::Iterator iter = real_types.First();
323 iter.Good(); iter.Inc()) { 322 iter.Good(); iter.Inc()) {
324 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI) 323 if (iter.Get() == syncer::PASSWORDS || iter.Get() == syncer::NIGORI)
325 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 324 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
326 else 325 else
327 EXPECT_FALSE(encrypted_types.Has(iter.Get())); 326 EXPECT_FALSE(encrypted_types.Has(iter.Get()));
328 } 327 }
329 328
330 cryptographer_.UpdateEncryptedTypesFromNigori(specifics); 329 cryptographer_.UpdateEncryptedTypesFromNigori(specifics);
331 330
332 EXPECT_TRUE(cryptographer_.encrypt_everything()); 331 EXPECT_TRUE(cryptographer_.encrypt_everything());
333 encrypted_types = cryptographer_.GetEncryptedTypes(); 332 encrypted_types = cryptographer_.GetEncryptedTypes();
334 for (ModelTypeSet::Iterator iter = real_types.First(); 333 for (ModelTypeSet::Iterator iter = real_types.First();
335 iter.Good(); iter.Inc()) { 334 iter.Good(); iter.Inc()) {
336 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 335 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
337 } 336 }
338 337
339 // Shouldn't trigger another notification. 338 // Shouldn't trigger another notification.
340 specifics.set_encrypt_everything(true); 339 specifics.set_encrypt_everything(true);
341 340
342 cryptographer_.RemoveObserver(&observer); 341 cryptographer_.RemoveObserver(&observer);
343 } 342 }
344 343
345 TEST_F(SyncCryptographerTest, UnknownSensitiveTypes) { 344 TEST_F(SyncCryptographerTest, UnknownSensitiveTypes) {
346 ModelTypeSet real_types = syncable::ModelTypeSet::All(); 345 ModelTypeSet real_types = syncer::ModelTypeSet::All();
347 sync_pb::NigoriSpecifics specifics; 346 sync_pb::NigoriSpecifics specifics;
348 // Explicitly setting encrypt everything should override logic for implicit 347 // Explicitly setting encrypt everything should override logic for implicit
349 // encrypt everything. 348 // encrypt everything.
350 specifics.set_encrypt_everything(false); 349 specifics.set_encrypt_everything(false);
351 specifics.set_encrypt_bookmarks(true); 350 specifics.set_encrypt_bookmarks(true);
352 351
353 StrictMock<MockObserver> observer; 352 StrictMock<MockObserver> observer;
354 cryptographer_.AddObserver(&observer); 353 cryptographer_.AddObserver(&observer);
355 354
356 syncable::ModelTypeSet expected_encrypted_types = 355 syncer::ModelTypeSet expected_encrypted_types =
357 Cryptographer::SensitiveTypes(); 356 Cryptographer::SensitiveTypes();
358 expected_encrypted_types.Put(syncable::BOOKMARKS); 357 expected_encrypted_types.Put(syncer::BOOKMARKS);
359 358
360 EXPECT_CALL(observer, 359 EXPECT_CALL(observer,
361 OnEncryptedTypesChanged( 360 OnEncryptedTypesChanged(
362 HasModelTypes(expected_encrypted_types), false)); 361 HasModelTypes(expected_encrypted_types), false));
363 362
364 EXPECT_FALSE(cryptographer_.encrypt_everything()); 363 EXPECT_FALSE(cryptographer_.encrypt_everything());
365 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes(); 364 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes();
366 for (ModelTypeSet::Iterator iter = real_types.First(); 365 for (ModelTypeSet::Iterator iter = real_types.First();
367 iter.Good(); iter.Inc()) { 366 iter.Good(); iter.Inc()) {
368 if (iter.Get() == syncable::PASSWORDS || iter.Get() == syncable::NIGORI) 367 if (iter.Get() == syncer::PASSWORDS || iter.Get() == syncer::NIGORI)
369 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 368 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
370 else 369 else
371 EXPECT_FALSE(encrypted_types.Has(iter.Get())); 370 EXPECT_FALSE(encrypted_types.Has(iter.Get()));
372 } 371 }
373 372
374 cryptographer_.UpdateEncryptedTypesFromNigori(specifics); 373 cryptographer_.UpdateEncryptedTypesFromNigori(specifics);
375 374
376 EXPECT_FALSE(cryptographer_.encrypt_everything()); 375 EXPECT_FALSE(cryptographer_.encrypt_everything());
377 encrypted_types = cryptographer_.GetEncryptedTypes(); 376 encrypted_types = cryptographer_.GetEncryptedTypes();
378 for (ModelTypeSet::Iterator iter = real_types.First(); 377 for (ModelTypeSet::Iterator iter = real_types.First();
379 iter.Good(); iter.Inc()) { 378 iter.Good(); iter.Inc()) {
380 if (iter.Get() == syncable::PASSWORDS || 379 if (iter.Get() == syncer::PASSWORDS ||
381 iter.Get() == syncable::NIGORI || 380 iter.Get() == syncer::NIGORI ||
382 iter.Get() == syncable::BOOKMARKS) 381 iter.Get() == syncer::BOOKMARKS)
383 EXPECT_TRUE(encrypted_types.Has(iter.Get())); 382 EXPECT_TRUE(encrypted_types.Has(iter.Get()));
384 else 383 else
385 EXPECT_FALSE(encrypted_types.Has(iter.Get())); 384 EXPECT_FALSE(encrypted_types.Has(iter.Get()));
386 } 385 }
387 386
388 cryptographer_.RemoveObserver(&observer); 387 cryptographer_.RemoveObserver(&observer);
389 } 388 }
390 389
391 } // namespace syncer 390 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/util/cryptographer.cc ('k') | sync/util/data_type_histogram.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698