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

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

Issue 1073633002: Remove PrerenderLocalPredictor, part 2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@prerender-local-predictor-1
Patch Set: fix tests Created 5 years, 8 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
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 // Unit tests for the SafeBrowsing storage system. 5 // Unit tests for the SafeBrowsing storage system.
6 6
7 #include "chrome/browser/safe_browsing/safe_browsing_database.h" 7 #include "chrome/browser/safe_browsing/safe_browsing_database.h"
8 8
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 SafeBrowsingStoreFile* download_store = 281 SafeBrowsingStoreFile* download_store =
282 new SafeBrowsingStoreFile(task_runner_); 282 new SafeBrowsingStoreFile(task_runner_);
283 SafeBrowsingStoreFile* csd_whitelist_store = 283 SafeBrowsingStoreFile* csd_whitelist_store =
284 new SafeBrowsingStoreFile(task_runner_); 284 new SafeBrowsingStoreFile(task_runner_);
285 SafeBrowsingStoreFile* download_whitelist_store = 285 SafeBrowsingStoreFile* download_whitelist_store =
286 new SafeBrowsingStoreFile(task_runner_); 286 new SafeBrowsingStoreFile(task_runner_);
287 SafeBrowsingStoreFile* inclusion_whitelist_store = 287 SafeBrowsingStoreFile* inclusion_whitelist_store =
288 new SafeBrowsingStoreFile(task_runner_); 288 new SafeBrowsingStoreFile(task_runner_);
289 SafeBrowsingStoreFile* extension_blacklist_store = 289 SafeBrowsingStoreFile* extension_blacklist_store =
290 new SafeBrowsingStoreFile(task_runner_); 290 new SafeBrowsingStoreFile(task_runner_);
291 SafeBrowsingStoreFile* side_effect_free_whitelist_store =
292 new SafeBrowsingStoreFile(task_runner_);
293 SafeBrowsingStoreFile* ip_blacklist_store = 291 SafeBrowsingStoreFile* ip_blacklist_store =
294 new SafeBrowsingStoreFile(task_runner_); 292 new SafeBrowsingStoreFile(task_runner_);
295 SafeBrowsingStoreFile* unwanted_software_store = 293 SafeBrowsingStoreFile* unwanted_software_store =
296 new SafeBrowsingStoreFile(task_runner_); 294 new SafeBrowsingStoreFile(task_runner_);
297 database_.reset(new SafeBrowsingDatabaseNew( 295 database_.reset(new SafeBrowsingDatabaseNew(
298 task_runner_, browse_store, download_store, csd_whitelist_store, 296 task_runner_, browse_store, download_store, csd_whitelist_store,
299 download_whitelist_store, inclusion_whitelist_store, 297 download_whitelist_store, inclusion_whitelist_store,
300 extension_blacklist_store, side_effect_free_whitelist_store, 298 extension_blacklist_store, ip_blacklist_store,
301 ip_blacklist_store, unwanted_software_store)); 299 unwanted_software_store));
302 database_->Init(database_filename_); 300 database_->Init(database_filename_);
303 } 301 }
304 302
305 bool ContainsDownloadUrl(const std::vector<GURL>& urls, 303 bool ContainsDownloadUrl(const std::vector<GURL>& urls,
306 std::vector<SBPrefix>* prefix_hits) { 304 std::vector<SBPrefix>* prefix_hits) {
307 std::vector<SBPrefix> prefixes; 305 std::vector<SBPrefix> prefixes;
308 SafeBrowsingDatabase::GetDownloadUrlPrefixes(urls, &prefixes); 306 SafeBrowsingDatabase::GetDownloadUrlPrefixes(urls, &prefixes);
309 return database_->ContainsDownloadUrlPrefixes(prefixes, prefix_hits); 307 return database_->ContainsDownloadUrlPrefixes(prefixes, prefix_hits);
310 } 308 }
311 309
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 chunks.get()); 438 chunks.get());
441 439
442 chunks.clear(); 440 chunks.clear();
443 chunks.push_back(AddChunkFullHashValue(8, 441 chunks.push_back(AddChunkFullHashValue(8,
444 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 442 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
445 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); 443 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
446 database_->InsertChunks(safe_browsing_util::kExtensionBlacklist, 444 database_->InsertChunks(safe_browsing_util::kExtensionBlacklist,
447 chunks.get()); 445 chunks.get());
448 446
449 chunks.clear(); 447 chunks.clear();
450 chunks.push_back(AddChunkFullHashValue(9, "www.sideeffectfree.com")); 448 chunks.push_back(AddChunkHashedIpValue(9, "::ffff:192.168.1.0", 120));
Scott Hess - ex-Googler 2015/04/08 22:32:26 I don't think you need to renumber these. Unless
davidben 2015/04/09 21:54:38 Done. (The index into lists has to change, but I k
451 database_->InsertChunks(safe_browsing_util::kSideEffectFreeWhitelist,
452 chunks.get());
453
454 chunks.clear();
455 chunks.push_back(AddChunkHashedIpValue(10, "::ffff:192.168.1.0", 120));
456 database_->InsertChunks(safe_browsing_util::kIPBlacklist, chunks.get()); 449 database_->InsertChunks(safe_browsing_util::kIPBlacklist, chunks.get());
457 450
458 chunks.clear(); 451 chunks.clear();
459 chunks.push_back(AddChunkPrefixValue(11, "www.unwanted.com/software.html")); 452 chunks.push_back(AddChunkPrefixValue(10, "www.unwanted.com/software.html"));
460 database_->InsertChunks(safe_browsing_util::kUnwantedUrlList, chunks.get()); 453 database_->InsertChunks(safe_browsing_util::kUnwantedUrlList, chunks.get());
461 454
462 database_->UpdateFinished(true); 455 database_->UpdateFinished(true);
463 456
464 GetListsInfo(&lists); 457 GetListsInfo(&lists);
465 ASSERT_EQ(10U, lists.size()); 458 ASSERT_EQ(9U, lists.size());
466 EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name); 459 EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name);
467 EXPECT_EQ("1", lists[0].adds); 460 EXPECT_EQ("1", lists[0].adds);
468 EXPECT_TRUE(lists[0].subs.empty()); 461 EXPECT_TRUE(lists[0].subs.empty());
469 EXPECT_EQ(safe_browsing_util::kPhishingList, lists[1].name); 462 EXPECT_EQ(safe_browsing_util::kPhishingList, lists[1].name);
470 EXPECT_EQ("2", lists[1].adds); 463 EXPECT_EQ("2", lists[1].adds);
471 EXPECT_TRUE(lists[1].subs.empty()); 464 EXPECT_TRUE(lists[1].subs.empty());
472 EXPECT_EQ(safe_browsing_util::kBinUrlList, lists[2].name); 465 EXPECT_EQ(safe_browsing_util::kBinUrlList, lists[2].name);
473 EXPECT_EQ("3", lists[2].adds); 466 EXPECT_EQ("3", lists[2].adds);
474 EXPECT_TRUE(lists[2].subs.empty()); 467 EXPECT_TRUE(lists[2].subs.empty());
475 EXPECT_EQ(safe_browsing_util::kCsdWhiteList, lists[3].name); 468 EXPECT_EQ(safe_browsing_util::kCsdWhiteList, lists[3].name);
476 EXPECT_EQ("5", lists[3].adds); 469 EXPECT_EQ("5", lists[3].adds);
477 EXPECT_TRUE(lists[3].subs.empty()); 470 EXPECT_TRUE(lists[3].subs.empty());
478 EXPECT_EQ(safe_browsing_util::kDownloadWhiteList, lists[4].name); 471 EXPECT_EQ(safe_browsing_util::kDownloadWhiteList, lists[4].name);
479 EXPECT_EQ("6", lists[4].adds); 472 EXPECT_EQ("6", lists[4].adds);
480 EXPECT_TRUE(lists[4].subs.empty()); 473 EXPECT_TRUE(lists[4].subs.empty());
481 EXPECT_EQ(safe_browsing_util::kInclusionWhitelist, lists[5].name); 474 EXPECT_EQ(safe_browsing_util::kInclusionWhitelist, lists[5].name);
482 EXPECT_EQ("7", lists[5].adds); 475 EXPECT_EQ("7", lists[5].adds);
483 EXPECT_TRUE(lists[5].subs.empty()); 476 EXPECT_TRUE(lists[5].subs.empty());
484 EXPECT_EQ(safe_browsing_util::kExtensionBlacklist, lists[6].name); 477 EXPECT_EQ(safe_browsing_util::kExtensionBlacklist, lists[6].name);
485 EXPECT_EQ("8", lists[6].adds); 478 EXPECT_EQ("8", lists[6].adds);
486 EXPECT_TRUE(lists[6].subs.empty()); 479 EXPECT_TRUE(lists[6].subs.empty());
487 EXPECT_EQ(safe_browsing_util::kSideEffectFreeWhitelist, lists[7].name); 480 EXPECT_EQ(safe_browsing_util::kIPBlacklist, lists[7].name);
488 EXPECT_EQ("9", lists[7].adds); 481 EXPECT_EQ("9", lists[7].adds);
489 EXPECT_TRUE(lists[7].subs.empty()); 482 EXPECT_TRUE(lists[7].subs.empty());
490 EXPECT_EQ(safe_browsing_util::kIPBlacklist, lists[8].name); 483 EXPECT_EQ(safe_browsing_util::kUnwantedUrlList, lists[8].name);
491 EXPECT_EQ("10", lists[8].adds); 484 EXPECT_EQ("10", lists[8].adds);
492 EXPECT_TRUE(lists[8].subs.empty()); 485 EXPECT_TRUE(lists[8].subs.empty());
493 EXPECT_EQ(safe_browsing_util::kUnwantedUrlList, lists[9].name);
494 EXPECT_EQ("11", lists[9].adds);
495 EXPECT_TRUE(lists[9].subs.empty());
496 486
497 database_.reset(); 487 database_.reset();
498 } 488 }
499 489
500 // Checks database reading and writing for browse and unwanted PrefixSets. 490 // Checks database reading and writing for browse and unwanted PrefixSets.
501 TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) { 491 TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) {
502 struct TestCase { 492 struct TestCase {
503 using TestListContainsBadUrl = bool (SafeBrowsingDatabase::*)( 493 using TestListContainsBadUrl = bool (SafeBrowsingDatabase::*)(
504 const GURL& url, 494 const GURL& url,
505 std::vector<SBPrefix>* prefix_hits, 495 std::vector<SBPrefix>* prefix_hits,
506 std::vector<SBFullHashResult>* cache_hits); 496 std::vector<SBFullHashResult>* cache_hits);
507 497
508 const char* test_list_name; 498 const char* test_list_name;
509 size_t expected_list_index; 499 size_t expected_list_index;
510 TestListContainsBadUrl test_list_contains_bad_url; 500 TestListContainsBadUrl test_list_contains_bad_url;
511 } const kTestCases[] { 501 } const kTestCases[] {
512 { safe_browsing_util::kMalwareList, 0U, 502 { safe_browsing_util::kMalwareList, 0U,
513 &SafeBrowsingDatabase::ContainsBrowseUrl }, 503 &SafeBrowsingDatabase::ContainsBrowseUrl },
514 { safe_browsing_util::kPhishingList, 1U, 504 { safe_browsing_util::kPhishingList, 1U,
515 &SafeBrowsingDatabase::ContainsBrowseUrl }, 505 &SafeBrowsingDatabase::ContainsBrowseUrl },
516 { safe_browsing_util::kUnwantedUrlList, 9U, 506 { safe_browsing_util::kUnwantedUrlList, 8U,
517 &SafeBrowsingDatabase::ContainsUnwantedSoftwareUrl }, 507 &SafeBrowsingDatabase::ContainsUnwantedSoftwareUrl },
518 }; 508 };
519 509
520 for (const auto& test_case : kTestCases) { 510 for (const auto& test_case : kTestCases) {
521 SCOPED_TRACE(std::string("Tested list at fault => ") + 511 SCOPED_TRACE(std::string("Tested list at fault => ") +
522 test_case.test_list_name); 512 test_case.test_list_name);
523 513
524 std::vector<SBListChunkRanges> lists; 514 std::vector<SBListChunkRanges> lists;
525 ScopedVector<SBChunkData> chunks; 515 ScopedVector<SBChunkData> chunks;
526 516
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 // TODO(shess): Disabled until ScopedLogMessageIgnorer resolved. 1110 // TODO(shess): Disabled until ScopedLogMessageIgnorer resolved.
1121 // http://crbug.com/56448 1111 // http://crbug.com/56448
1122 TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) { 1112 TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) {
1123 // Re-create the database in a captive message loop so that we can 1113 // Re-create the database in a captive message loop so that we can
1124 // influence task-posting. Database specifically needs to the 1114 // influence task-posting. Database specifically needs to the
1125 // file-backed. 1115 // file-backed.
1126 database_.reset(); 1116 database_.reset();
1127 base::MessageLoop loop; 1117 base::MessageLoop loop;
1128 SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(task_runner_); 1118 SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(task_runner_);
1129 database_.reset(new SafeBrowsingDatabaseNew( 1119 database_.reset(new SafeBrowsingDatabaseNew(
1130 task_runner_, store, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)); 1120 task_runner_, store, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
1131 database_->Init(database_filename_); 1121 database_->Init(database_filename_);
1132 1122
1133 // This will cause an empty database to be created. 1123 // This will cause an empty database to be created.
1134 std::vector<SBListChunkRanges> lists; 1124 std::vector<SBListChunkRanges> lists;
1135 ASSERT_TRUE(database_->UpdateStarted(&lists)); 1125 ASSERT_TRUE(database_->UpdateStarted(&lists));
1136 database_->UpdateFinished(true); 1126 database_->UpdateFinished(true);
1137 1127
1138 // Create a sub chunk to insert. 1128 // Create a sub chunk to insert.
1139 ScopedVector<SBChunkData> chunks; 1129 ScopedVector<SBChunkData> chunks;
1140 chunks.push_back(SubChunkPrefixValue(7, 1130 chunks.push_back(SubChunkPrefixValue(7,
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
1295 &SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl, 1285 &SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl,
1296 &SafeBrowsingDatabase::ContainsDownloadWhitelistedString}, 1286 &SafeBrowsingDatabase::ContainsDownloadWhitelistedString},
1297 {safe_browsing_util::kInclusionWhitelist, 1287 {safe_browsing_util::kInclusionWhitelist,
1298 &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl, 1288 &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl,
1299 nullptr}, 1289 nullptr},
1300 }; 1290 };
1301 1291
1302 // If the whitelist is disabled everything should match the whitelist. 1292 // If the whitelist is disabled everything should match the whitelist.
1303 database_.reset(new SafeBrowsingDatabaseNew( 1293 database_.reset(new SafeBrowsingDatabaseNew(
1304 task_runner_, new SafeBrowsingStoreFile(task_runner_), NULL, NULL, NULL, 1294 task_runner_, new SafeBrowsingStoreFile(task_runner_), NULL, NULL, NULL,
1305 NULL, NULL, NULL, NULL, NULL)); 1295 NULL, NULL, NULL, NULL));
1306 database_->Init(database_filename_); 1296 database_->Init(database_filename_);
1307 for (const auto& test_case : kTestCases) { 1297 for (const auto& test_case : kTestCases) {
1308 SCOPED_TRACE(std::string("Tested list at fault => ") + 1298 SCOPED_TRACE(std::string("Tested list at fault => ") +
1309 test_case.test_list_name); 1299 test_case.test_list_name);
1310 1300
1311 EXPECT_TRUE( 1301 EXPECT_TRUE(
1312 (database_.get()->*test_case.test_list_contains_whitelisted_url)( 1302 (database_.get()->*test_case.test_list_contains_whitelisted_url)(
1313 GURL(std::string("http://www.phishing.com/")))); 1303 GURL(std::string("http://www.phishing.com/"))));
1314 if (test_case.TestStrings()) { 1304 if (test_case.TestStrings()) {
1315 EXPECT_TRUE( 1305 EXPECT_TRUE(
(...skipping 927 matching lines...) Expand 10 before | Expand all | Expand 10 after
2243 GURL(std::string("http://") + kExampleCollision), 2233 GURL(std::string("http://") + kExampleCollision),
2244 &prefix_hits, &cache_hits)); 2234 &prefix_hits, &cache_hits));
2245 ASSERT_EQ(1U, prefix_hits.size()); 2235 ASSERT_EQ(1U, prefix_hits.size());
2246 EXPECT_EQ(SBPrefixForString(kExampleCollision), prefix_hits[0]); 2236 EXPECT_EQ(SBPrefixForString(kExampleCollision), prefix_hits[0]);
2247 EXPECT_TRUE(cache_hits.empty()); 2237 EXPECT_TRUE(cache_hits.empty());
2248 2238
2249 // This prefix collides, but no full hash match. 2239 // This prefix collides, but no full hash match.
2250 EXPECT_FALSE(database_->ContainsBrowseUrl( 2240 EXPECT_FALSE(database_->ContainsBrowseUrl(
2251 GURL(std::string("http://") + kExampleFine), &prefix_hits, &cache_hits)); 2241 GURL(std::string("http://") + kExampleFine), &prefix_hits, &cache_hits));
2252 } 2242 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698