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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_store_unittest.cc

Issue 263833005: Knock out injected safe-browsing prefixes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: adjust knockout test ordering and comments to make more sense. add test that golden file has prefi… Created 6 years, 7 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
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/safe_browsing/safe_browsing_store.h" 5 #include "chrome/browser/safe_browsing/safe_browsing_store.h"
6 6
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 namespace { 9 namespace {
10 10
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 300
301 TEST(SafeBrowsingStoreTest, Y2K38) { 301 TEST(SafeBrowsingStoreTest, Y2K38) {
302 const base::Time now = base::Time::Now(); 302 const base::Time now = base::Time::Now();
303 const base::Time future = now + base::TimeDelta::FromDays(3*365); 303 const base::Time future = now + base::TimeDelta::FromDays(3*365);
304 304
305 // TODO: Fix file format before 2035. 305 // TODO: Fix file format before 2035.
306 EXPECT_GT(static_cast<int32>(future.ToTimeT()), 0) 306 EXPECT_GT(static_cast<int32>(future.ToTimeT()), 0)
307 << " (int32)time_t is running out."; 307 << " (int32)time_t is running out.";
308 } 308 }
309 309
310 // Test that prefixes which were injected from full hashes are being removed.
311 // This was a mistake in earlier versions of the code.
312 TEST(SafeBrowsingStoreTest, KnockoutPrefixVolunteers) {
313 const base::Time kNow = base::Time::Now();
314
315 // Construct some full hashes which share prefix with another.
316 const SBFullHash kHash1mod1 = ModifyHashAfterPrefix(kHash1, 1);
317 const SBFullHash kHash2mod1 = ModifyHashAfterPrefix(kHash2, 1);
318
319 SBAddPrefixes add_prefixes;
320 std::vector<SBAddFullHash> add_hashes;
321 SBSubPrefixes sub_prefixes;
322 std::vector<SBSubFullHash> sub_hashes;
323
324 // Full hashes for an add chunk will have had the prefix injected.
325 add_hashes.push_back(SBAddFullHash(kAddChunk1, kNow, kHash1));
326 add_hashes.push_back(SBAddFullHash(kAddChunk1, kNow, kHash1mod1));
327 add_prefixes.push_back(SBAddPrefix(kAddChunk1, kHash1.prefix));
328
329 // Other full hashes or prefixes are not affected.
330 add_hashes.push_back(SBAddFullHash(kAddChunk1, kNow, kHash3));
331 add_prefixes.push_back(SBAddPrefix(kAddChunk2, kHash4.prefix));
332
333 // Full hashes for a sub chunk will have had the prefix injected.
334 sub_hashes.push_back(SBSubFullHash(kSubChunk1, kAddChunk1, kHash2));
335 sub_hashes.push_back(SBSubFullHash(kSubChunk1, kAddChunk1, kHash2mod1));
336 sub_prefixes.push_back(SBSubPrefix(kSubChunk1, kAddChunk1, kHash2.prefix));
337
338 // Other full hashes or prefixes are not affected.
339 sub_hashes.push_back(SBSubFullHash(kSubChunk1, kAddChunk1, kHash5));
340 sub_prefixes.push_back(SBSubPrefix(kSubChunk2, kAddChunk2, kHash6.prefix));
341
342 const base::hash_set<int32> no_deletions;
343 ProcessHelper(&add_prefixes, &sub_prefixes, &add_hashes, &sub_hashes,
344 no_deletions, no_deletions);
345
346 ASSERT_EQ(1U, add_prefixes.size());
347 EXPECT_EQ(kAddChunk2, add_prefixes[0].chunk_id);
348 EXPECT_EQ(kHash4.prefix, add_prefixes[0].prefix);
349
350 ASSERT_EQ(3U, add_hashes.size());
351 EXPECT_EQ(kAddChunk1, add_hashes[0].chunk_id);
352 EXPECT_TRUE(SBFullHashEqual(kHash1mod1, add_hashes[0].full_hash));
353 EXPECT_EQ(kAddChunk1, add_hashes[1].chunk_id);
354 EXPECT_TRUE(SBFullHashEqual(kHash1, add_hashes[1].full_hash));
355 EXPECT_EQ(kAddChunk1, add_hashes[2].chunk_id);
356 EXPECT_TRUE(SBFullHashEqual(kHash3, add_hashes[2].full_hash));
357
358 ASSERT_EQ(1U, sub_prefixes.size());
359 EXPECT_EQ(kSubChunk2, sub_prefixes[0].chunk_id);
360 EXPECT_EQ(kAddChunk2, sub_prefixes[0].add_chunk_id);
361 EXPECT_EQ(kHash6.prefix, sub_prefixes[0].add_prefix);
362
363 ASSERT_EQ(3U, sub_hashes.size());
364 EXPECT_EQ(kSubChunk1, sub_hashes[0].chunk_id);
365 EXPECT_EQ(kAddChunk1, sub_hashes[0].add_chunk_id);
366 EXPECT_TRUE(SBFullHashEqual(kHash5, sub_hashes[0].full_hash));
367 EXPECT_EQ(kSubChunk1, sub_hashes[1].chunk_id);
368 EXPECT_EQ(kAddChunk1, sub_hashes[1].add_chunk_id);
369 EXPECT_TRUE(SBFullHashEqual(kHash2mod1, sub_hashes[1].full_hash));
370 EXPECT_EQ(kSubChunk1, sub_hashes[2].chunk_id);
371 EXPECT_EQ(kAddChunk1, sub_hashes[2].add_chunk_id);
372 EXPECT_TRUE(SBFullHashEqual(kHash2, sub_hashes[2].full_hash));
373 }
374
310 } // namespace 375 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698