Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 271 } | 271 } |
| 272 | 272 |
| 273 // Reloads the |database_| in a new SafeBrowsingDatabaseNew object with all | 273 // Reloads the |database_| in a new SafeBrowsingDatabaseNew object with all |
| 274 // stores enabled. | 274 // stores enabled. |
| 275 void ResetAndReloadFullDatabase() { | 275 void ResetAndReloadFullDatabase() { |
| 276 SafeBrowsingStoreFile* browse_store = new SafeBrowsingStoreFile(); | 276 SafeBrowsingStoreFile* browse_store = new SafeBrowsingStoreFile(); |
| 277 SafeBrowsingStoreFile* download_store = new SafeBrowsingStoreFile(); | 277 SafeBrowsingStoreFile* download_store = new SafeBrowsingStoreFile(); |
| 278 SafeBrowsingStoreFile* csd_whitelist_store = new SafeBrowsingStoreFile(); | 278 SafeBrowsingStoreFile* csd_whitelist_store = new SafeBrowsingStoreFile(); |
| 279 SafeBrowsingStoreFile* download_whitelist_store = | 279 SafeBrowsingStoreFile* download_whitelist_store = |
| 280 new SafeBrowsingStoreFile(); | 280 new SafeBrowsingStoreFile(); |
| 281 SafeBrowsingStoreFile* inclusion_whitelist_store = | |
| 282 new SafeBrowsingStoreFile(); | |
| 281 SafeBrowsingStoreFile* extension_blacklist_store = | 283 SafeBrowsingStoreFile* extension_blacklist_store = |
| 282 new SafeBrowsingStoreFile(); | 284 new SafeBrowsingStoreFile(); |
| 283 SafeBrowsingStoreFile* side_effect_free_whitelist_store = | 285 SafeBrowsingStoreFile* side_effect_free_whitelist_store = |
| 284 new SafeBrowsingStoreFile(); | 286 new SafeBrowsingStoreFile(); |
| 285 SafeBrowsingStoreFile* ip_blacklist_store = new SafeBrowsingStoreFile(); | 287 SafeBrowsingStoreFile* ip_blacklist_store = new SafeBrowsingStoreFile(); |
| 286 SafeBrowsingStoreFile* unwanted_software_store = | 288 SafeBrowsingStoreFile* unwanted_software_store = |
| 287 new SafeBrowsingStoreFile(); | 289 new SafeBrowsingStoreFile(); |
| 288 database_.reset( | 290 database_.reset( |
| 289 new SafeBrowsingDatabaseNew(browse_store, | 291 new SafeBrowsingDatabaseNew(browse_store, |
| 290 download_store, | 292 download_store, |
| 291 csd_whitelist_store, | 293 csd_whitelist_store, |
| 292 download_whitelist_store, | 294 download_whitelist_store, |
| 295 inclusion_whitelist_store, | |
| 293 extension_blacklist_store, | 296 extension_blacklist_store, |
| 294 side_effect_free_whitelist_store, | 297 side_effect_free_whitelist_store, |
| 295 ip_blacklist_store, | 298 ip_blacklist_store, |
| 296 unwanted_software_store)); | 299 unwanted_software_store)); |
| 297 database_->Init(database_filename_); | 300 database_->Init(database_filename_); |
| 298 } | 301 } |
| 299 | 302 |
| 300 void GetListsInfo(std::vector<SBListChunkRanges>* lists) { | 303 void GetListsInfo(std::vector<SBListChunkRanges>* lists) { |
| 301 lists->clear(); | 304 lists->clear(); |
| 302 ASSERT_TRUE(database_->UpdateStarted(lists)); | 305 ASSERT_TRUE(database_->UpdateStarted(lists)); |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 326 | 329 |
| 327 // Utility function for setting up the database for the caching test. | 330 // Utility function for setting up the database for the caching test. |
| 328 void PopulateDatabaseForCacheTest(); | 331 void PopulateDatabaseForCacheTest(); |
| 329 | 332 |
| 330 scoped_ptr<SafeBrowsingDatabaseNew> database_; | 333 scoped_ptr<SafeBrowsingDatabaseNew> database_; |
| 331 base::FilePath database_filename_; | 334 base::FilePath database_filename_; |
| 332 base::ScopedTempDir temp_dir_; | 335 base::ScopedTempDir temp_dir_; |
| 333 }; | 336 }; |
| 334 | 337 |
| 335 // Tests retrieving list name information. | 338 // Tests retrieving list name information. |
| 336 TEST_F(SafeBrowsingDatabaseTest, ListNameForBrowse) { | 339 TEST_F(SafeBrowsingDatabaseTest, BrowseListsInfo) { |
| 337 std::vector<SBListChunkRanges> lists; | 340 std::vector<SBListChunkRanges> lists; |
| 338 ScopedVector<SBChunkData> chunks; | 341 ScopedVector<SBChunkData> chunks; |
| 339 | 342 |
| 340 chunks.push_back(AddChunkPrefixValue(1, "www.evil.com/malware.html")); | 343 chunks.push_back(AddChunkPrefixValue(1, "www.evil.com/malware.html")); |
| 341 chunks.push_back(AddChunkPrefixValue(2, "www.foo.com/malware.html")); | 344 chunks.push_back(AddChunkPrefixValue(2, "www.foo.com/malware.html")); |
| 342 chunks.push_back(AddChunkPrefixValue(3, "www.whatever.com/malware.html")); | 345 chunks.push_back(AddChunkPrefixValue(3, "www.whatever.com/malware.html")); |
| 343 | 346 |
| 344 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 347 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 345 database_->InsertChunks(safe_browsing_util::kMalwareList, chunks.get()); | 348 database_->InsertChunks(safe_browsing_util::kMalwareList, chunks.get()); |
| 346 database_->UpdateFinished(true); | 349 database_->UpdateFinished(true); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 388 GetListsInfo(&lists); | 391 GetListsInfo(&lists); |
| 389 ASSERT_LE(2U, lists.size()); | 392 ASSERT_LE(2U, lists.size()); |
| 390 EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name); | 393 EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name); |
| 391 EXPECT_EQ("1-3", lists[0].adds); | 394 EXPECT_EQ("1-3", lists[0].adds); |
| 392 EXPECT_EQ("7", lists[0].subs); | 395 EXPECT_EQ("7", lists[0].subs); |
| 393 EXPECT_EQ(safe_browsing_util::kPhishingList, lists[1].name); | 396 EXPECT_EQ(safe_browsing_util::kPhishingList, lists[1].name); |
| 394 EXPECT_EQ("47", lists[1].adds); | 397 EXPECT_EQ("47", lists[1].adds); |
| 395 EXPECT_EQ("200-201", lists[1].subs); | 398 EXPECT_EQ("200-201", lists[1].subs); |
| 396 } | 399 } |
| 397 | 400 |
| 398 TEST_F(SafeBrowsingDatabaseTest, ListNameForBrowseAndDownload) { | 401 TEST_F(SafeBrowsingDatabaseTest, ListNames) { |
| 399 ScopedVector<SBChunkData> chunks; | 402 ScopedVector<SBChunkData> chunks; |
| 400 | 403 |
| 401 std::vector<SBListChunkRanges> lists; | 404 std::vector<SBListChunkRanges> lists; |
| 402 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 405 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 403 | 406 |
| 404 // Insert malware, phish, binurl and bindownload add chunks. | 407 // Insert malware, phish, binurl and bindownload add chunks. |
| 405 chunks.push_back(AddChunkPrefixValue(1, "www.evil.com/malware.html")); | 408 chunks.push_back(AddChunkPrefixValue(1, "www.evil.com/malware.html")); |
| 406 database_->InsertChunks(safe_browsing_util::kMalwareList, chunks.get()); | 409 database_->InsertChunks(safe_browsing_util::kMalwareList, chunks.get()); |
| 407 | 410 |
| 408 chunks.clear(); | 411 chunks.clear(); |
| 409 chunks.push_back(AddChunkPrefixValue(2, "www.foo.com/malware.html")); | 412 chunks.push_back(AddChunkPrefixValue(2, "www.foo.com/malware.html")); |
| 410 database_->InsertChunks(safe_browsing_util::kPhishingList, chunks.get()); | 413 database_->InsertChunks(safe_browsing_util::kPhishingList, chunks.get()); |
| 411 | 414 |
| 412 chunks.clear(); | 415 chunks.clear(); |
| 413 chunks.push_back(AddChunkPrefixValue(3, "www.whatever.com/download.html")); | 416 chunks.push_back(AddChunkPrefixValue(3, "www.whatever.com/download.html")); |
| 414 database_->InsertChunks(safe_browsing_util::kBinUrlList, chunks.get()); | 417 database_->InsertChunks(safe_browsing_util::kBinUrlList, chunks.get()); |
| 415 | 418 |
| 416 chunks.clear(); | 419 chunks.clear(); |
| 417 chunks.push_back(AddChunkFullHashValue(5, "www.forwhitelist.com/a.html")); | 420 chunks.push_back(AddChunkFullHashValue(5, "www.forwhitelist.com/a.html")); |
| 418 database_->InsertChunks(safe_browsing_util::kCsdWhiteList, chunks.get()); | 421 database_->InsertChunks(safe_browsing_util::kCsdWhiteList, chunks.get()); |
| 419 | 422 |
| 420 chunks.clear(); | 423 chunks.clear(); |
| 421 chunks.push_back(AddChunkFullHashValue(6, "www.download.com/")); | 424 chunks.push_back(AddChunkFullHashValue(6, "www.download.com/")); |
| 422 database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, chunks.get()); | 425 database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, chunks.get()); |
| 423 | 426 |
| 424 chunks.clear(); | 427 chunks.clear(); |
| 428 chunks.push_back(AddChunkFullHashValue(7, "www.inclusion.com/")); | |
| 429 database_->InsertChunks(safe_browsing_util::kInclusionWhitelist, | |
| 430 chunks.get()); | |
| 431 | |
| 432 chunks.clear(); | |
| 425 chunks.push_back(AddChunkFullHashValue(8, | 433 chunks.push_back(AddChunkFullHashValue(8, |
| 426 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" | 434 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
| 427 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); | 435 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); |
| 428 database_->InsertChunks(safe_browsing_util::kExtensionBlacklist, | 436 database_->InsertChunks(safe_browsing_util::kExtensionBlacklist, |
| 429 chunks.get()); | 437 chunks.get()); |
| 430 | 438 |
| 431 chunks.clear(); | 439 chunks.clear(); |
| 432 chunks.push_back(AddChunkHashedIpValue(9, "::ffff:192.168.1.0", 120)); | 440 chunks.push_back(AddChunkFullHashValue(9, "www.sideeffectfree.com")); |
| 441 database_->InsertChunks(safe_browsing_util::kSideEffectFreeWhitelist, | |
| 442 chunks.get()); | |
| 443 | |
| 444 chunks.clear(); | |
| 445 chunks.push_back(AddChunkHashedIpValue(10, "::ffff:192.168.1.0", 120)); | |
| 433 database_->InsertChunks(safe_browsing_util::kIPBlacklist, chunks.get()); | 446 database_->InsertChunks(safe_browsing_util::kIPBlacklist, chunks.get()); |
| 434 | 447 |
| 435 chunks.clear(); | 448 chunks.clear(); |
| 436 chunks.push_back(AddChunkPrefixValue(10, "www.unwanted.com/software.html")); | 449 chunks.push_back(AddChunkPrefixValue(11, "www.unwanted.com/software.html")); |
| 437 database_->InsertChunks(safe_browsing_util::kUnwantedUrlList, chunks.get()); | 450 database_->InsertChunks(safe_browsing_util::kUnwantedUrlList, chunks.get()); |
| 438 | 451 |
| 439 database_->UpdateFinished(true); | 452 database_->UpdateFinished(true); |
| 440 | 453 |
| 441 GetListsInfo(&lists); | 454 GetListsInfo(&lists); |
| 442 ASSERT_EQ(9U, lists.size()); | 455 ASSERT_EQ(10U, lists.size()); |
| 443 EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name); | 456 EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name); |
| 444 EXPECT_EQ("1", lists[0].adds); | 457 EXPECT_EQ("1", lists[0].adds); |
| 445 EXPECT_TRUE(lists[0].subs.empty()); | 458 EXPECT_TRUE(lists[0].subs.empty()); |
| 446 EXPECT_EQ(safe_browsing_util::kPhishingList, lists[1].name); | 459 EXPECT_EQ(safe_browsing_util::kPhishingList, lists[1].name); |
| 447 EXPECT_EQ("2", lists[1].adds); | 460 EXPECT_EQ("2", lists[1].adds); |
| 448 EXPECT_TRUE(lists[1].subs.empty()); | 461 EXPECT_TRUE(lists[1].subs.empty()); |
| 449 EXPECT_EQ(safe_browsing_util::kBinUrlList, lists[2].name); | 462 EXPECT_EQ(safe_browsing_util::kBinUrlList, lists[2].name); |
| 450 EXPECT_EQ("3", lists[2].adds); | 463 EXPECT_EQ("3", lists[2].adds); |
| 451 EXPECT_TRUE(lists[2].subs.empty()); | 464 EXPECT_TRUE(lists[2].subs.empty()); |
| 452 EXPECT_EQ(safe_browsing_util::kCsdWhiteList, lists[3].name); | 465 EXPECT_EQ(safe_browsing_util::kCsdWhiteList, lists[3].name); |
| 453 EXPECT_EQ("5", lists[3].adds); | 466 EXPECT_EQ("5", lists[3].adds); |
| 454 EXPECT_TRUE(lists[3].subs.empty()); | 467 EXPECT_TRUE(lists[3].subs.empty()); |
| 455 EXPECT_EQ(safe_browsing_util::kDownloadWhiteList, lists[4].name); | 468 EXPECT_EQ(safe_browsing_util::kDownloadWhiteList, lists[4].name); |
| 456 EXPECT_EQ("6", lists[4].adds); | 469 EXPECT_EQ("6", lists[4].adds); |
| 457 EXPECT_TRUE(lists[4].subs.empty()); | 470 EXPECT_TRUE(lists[4].subs.empty()); |
| 458 EXPECT_EQ(safe_browsing_util::kExtensionBlacklist, lists[5].name); | 471 EXPECT_EQ(safe_browsing_util::kInclusionWhitelist, lists[5].name); |
| 459 EXPECT_EQ("8", lists[5].adds); | 472 EXPECT_EQ("7", lists[5].adds); |
| 460 EXPECT_TRUE(lists[5].subs.empty()); | 473 EXPECT_TRUE(lists[5].subs.empty()); |
| 461 EXPECT_EQ(safe_browsing_util::kIPBlacklist, lists[7].name); | 474 EXPECT_EQ(safe_browsing_util::kExtensionBlacklist, lists[6].name); |
| 475 EXPECT_EQ("8", lists[6].adds); | |
| 476 EXPECT_TRUE(lists[6].subs.empty()); | |
| 477 EXPECT_EQ(safe_browsing_util::kSideEffectFreeWhitelist, lists[7].name); | |
| 462 EXPECT_EQ("9", lists[7].adds); | 478 EXPECT_EQ("9", lists[7].adds); |
| 463 EXPECT_TRUE(lists[7].subs.empty()); | 479 EXPECT_TRUE(lists[7].subs.empty()); |
| 464 EXPECT_EQ(safe_browsing_util::kUnwantedUrlList, lists[8].name); | 480 EXPECT_EQ(safe_browsing_util::kIPBlacklist, lists[8].name); |
| 465 EXPECT_EQ("10", lists[8].adds); | 481 EXPECT_EQ("10", lists[8].adds); |
| 466 EXPECT_TRUE(lists[8].subs.empty()); | 482 EXPECT_TRUE(lists[8].subs.empty()); |
| 483 EXPECT_EQ(safe_browsing_util::kUnwantedUrlList, lists[9].name); | |
| 484 EXPECT_EQ("11", lists[9].adds); | |
| 485 EXPECT_TRUE(lists[9].subs.empty()); | |
| 467 | 486 |
| 468 database_.reset(); | 487 database_.reset(); |
| 469 } | 488 } |
| 470 | 489 |
| 471 // Checks database reading and writing for browse and unwanted PrefixSets. | 490 // Checks database reading and writing for browse and unwanted PrefixSets. |
| 472 TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) { | 491 TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) { |
| 473 struct TestCase { | 492 struct TestCase { |
| 474 using TestListContainsBadUrl = bool (SafeBrowsingDatabase::*)( | 493 using TestListContainsBadUrl = bool (SafeBrowsingDatabase::*)( |
| 475 const GURL& url, | 494 const GURL& url, |
| 476 std::vector<SBPrefix>* prefix_hits, | 495 std::vector<SBPrefix>* prefix_hits, |
| 477 std::vector<SBFullHashResult>* cache_hits); | 496 std::vector<SBFullHashResult>* cache_hits); |
| 478 | 497 |
| 479 const char* test_list_name; | 498 const char* test_list_name; |
| 480 size_t expected_list_index; | 499 size_t expected_list_index; |
| 481 TestListContainsBadUrl test_list_contains_bad_url; | 500 TestListContainsBadUrl test_list_contains_bad_url; |
| 482 } const kTestCases[] { | 501 } const kTestCases[] { |
| 483 { safe_browsing_util::kMalwareList, 0U, | 502 { safe_browsing_util::kMalwareList, 0U, |
| 484 &SafeBrowsingDatabase::ContainsBrowseUrl }, | 503 &SafeBrowsingDatabase::ContainsBrowseUrl }, |
| 485 { safe_browsing_util::kPhishingList, 1U, | 504 { safe_browsing_util::kPhishingList, 1U, |
| 486 &SafeBrowsingDatabase::ContainsBrowseUrl }, | 505 &SafeBrowsingDatabase::ContainsBrowseUrl }, |
| 487 { safe_browsing_util::kUnwantedUrlList, 8U, | 506 { safe_browsing_util::kUnwantedUrlList, 9U, |
| 488 &SafeBrowsingDatabase::ContainsUnwantedSoftwareUrl }, | 507 &SafeBrowsingDatabase::ContainsUnwantedSoftwareUrl }, |
| 489 }; | 508 }; |
| 490 | 509 |
| 491 for (const auto& test_case : kTestCases) { | 510 for (const auto& test_case : kTestCases) { |
| 492 SCOPED_TRACE(std::string("Tested list at fault => ") + | 511 SCOPED_TRACE(std::string("Tested list at fault => ") + |
| 493 test_case.test_list_name); | 512 test_case.test_list_name); |
| 494 | 513 |
| 495 std::vector<SBListChunkRanges> lists; | 514 std::vector<SBListChunkRanges> lists; |
| 496 ScopedVector<SBChunkData> chunks; | 515 ScopedVector<SBChunkData> chunks; |
| 497 | 516 |
| (...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1091 // TODO(shess): Disabled until ScopedLogMessageIgnorer resolved. | 1110 // TODO(shess): Disabled until ScopedLogMessageIgnorer resolved. |
| 1092 // http://crbug.com/56448 | 1111 // http://crbug.com/56448 |
| 1093 TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) { | 1112 TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) { |
| 1094 // 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 |
| 1095 // influence task-posting. Database specifically needs to the | 1114 // influence task-posting. Database specifically needs to the |
| 1096 // file-backed. | 1115 // file-backed. |
| 1097 database_.reset(); | 1116 database_.reset(); |
| 1098 base::MessageLoop loop; | 1117 base::MessageLoop loop; |
| 1099 SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(); | 1118 SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(); |
| 1100 database_.reset(new SafeBrowsingDatabaseNew(store, NULL, NULL, NULL, NULL, | 1119 database_.reset(new SafeBrowsingDatabaseNew(store, NULL, NULL, NULL, NULL, |
| 1101 NULL, NULL, NULL)); | 1120 NULL, NULL, NULL, NULL)); |
| 1102 database_->Init(database_filename_); | 1121 database_->Init(database_filename_); |
| 1103 | 1122 |
| 1104 // This will cause an empty database to be created. | 1123 // This will cause an empty database to be created. |
| 1105 std::vector<SBListChunkRanges> lists; | 1124 std::vector<SBListChunkRanges> lists; |
| 1106 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 1125 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 1107 database_->UpdateFinished(true); | 1126 database_->UpdateFinished(true); |
| 1108 | 1127 |
| 1109 // Create a sub chunk to insert. | 1128 // Create a sub chunk to insert. |
| 1110 ScopedVector<SBChunkData> chunks; | 1129 ScopedVector<SBChunkData> chunks; |
| 1111 chunks.push_back(SubChunkPrefixValue(7, | 1130 chunks.push_back(SubChunkPrefixValue(7, |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1234 urls.push_back(GURL(std::string("https://") + kEvil1Url2)); | 1253 urls.push_back(GURL(std::string("https://") + kEvil1Url2)); |
| 1235 EXPECT_TRUE(database_->ContainsDownloadUrl(urls, &prefix_hits)); | 1254 EXPECT_TRUE(database_->ContainsDownloadUrl(urls, &prefix_hits)); |
| 1236 ASSERT_EQ(2U, prefix_hits.size()); | 1255 ASSERT_EQ(2U, prefix_hits.size()); |
| 1237 EXPECT_EQ(SBPrefixForString(kEvil1Url1), prefix_hits[0]); | 1256 EXPECT_EQ(SBPrefixForString(kEvil1Url1), prefix_hits[0]); |
| 1238 EXPECT_EQ(SBPrefixForString(kEvil1Url2), prefix_hits[1]); | 1257 EXPECT_EQ(SBPrefixForString(kEvil1Url2), prefix_hits[1]); |
| 1239 database_.reset(); | 1258 database_.reset(); |
| 1240 } | 1259 } |
| 1241 | 1260 |
| 1242 // Checks that the whitelists are handled properly. | 1261 // Checks that the whitelists are handled properly. |
| 1243 TEST_F(SafeBrowsingDatabaseTest, Whitelists) { | 1262 TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
| 1263 struct TestCase { | |
| 1264 using TestListContainsWhitelistedUrl = | |
| 1265 bool (SafeBrowsingDatabase::*)(const GURL& url); | |
| 1266 using TestListContainsWhitelistedString = | |
| 1267 bool (SafeBrowsingDatabase::*)(const std::string& str); | |
| 1268 | |
| 1269 // Returns true if strings should be tested in this test case (i.e. | |
| 1270 // |test_list_contains_whitelisted_string| is not null). | |
| 1271 bool TestStrings() const { | |
| 1272 return test_list_contains_whitelisted_string != nullptr; | |
| 1273 } | |
| 1274 | |
| 1275 const char* test_list_name; | |
| 1276 TestListContainsWhitelistedUrl test_list_contains_whitelisted_url; | |
| 1277 // Optional test case field, if set the tested whitelist will also be tested | |
| 1278 // for strings. | |
| 1279 TestListContainsWhitelistedString test_list_contains_whitelisted_string; | |
| 1280 } const kTestCases[]{ | |
| 1281 {safe_browsing_util::kCsdWhiteList, | |
| 1282 &SafeBrowsingDatabase::ContainsCsdWhitelistedUrl, | |
| 1283 nullptr}, | |
| 1284 {safe_browsing_util::kDownloadWhiteList, | |
| 1285 &SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl, | |
| 1286 &SafeBrowsingDatabase::ContainsDownloadWhitelistedString}, | |
| 1287 {safe_browsing_util::kInclusionWhitelist, | |
| 1288 &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl, | |
| 1289 nullptr}, | |
| 1290 }; | |
| 1291 | |
| 1244 // If the whitelist is disabled everything should match the whitelist. | 1292 // If the whitelist is disabled everything should match the whitelist. |
| 1245 database_.reset(new SafeBrowsingDatabaseNew(new SafeBrowsingStoreFile(), | 1293 database_.reset(new SafeBrowsingDatabaseNew(new SafeBrowsingStoreFile(), NULL, |
| 1246 NULL, NULL, NULL, NULL, NULL, | 1294 NULL, NULL, NULL, NULL, NULL, |
| 1247 NULL, NULL)); | 1295 NULL, NULL)); |
| 1248 database_->Init(database_filename_); | 1296 database_->Init(database_filename_); |
| 1249 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1297 for (const auto& test_case : kTestCases) { |
| 1250 GURL(std::string("http://www.phishing.com/")))); | 1298 SCOPED_TRACE(std::string("Tested list at fault => ") + |
| 1251 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1299 test_case.test_list_name); |
| 1252 GURL(std::string("http://www.phishing.com/")))); | 1300 |
| 1253 EXPECT_TRUE(database_->ContainsDownloadWhitelistedString("asdf")); | 1301 EXPECT_TRUE( |
| 1254 | 1302 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1303 GURL(std::string("http://www.phishing.com/")))); | |
| 1304 if (test_case.TestStrings()) { | |
| 1305 EXPECT_TRUE( | |
| 1306 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | |
| 1307 "asdf")); | |
| 1308 } | |
| 1309 } | |
| 1255 ResetAndReloadFullDatabase(); | 1310 ResetAndReloadFullDatabase(); |
| 1256 | 1311 |
| 1257 const char kGood1Host[] = "www.good1.com/"; | 1312 // Now test every whitelist one-by-one; intentionally not resetting the |
| 1258 const char kGood1Url1[] = "www.good1.com/a/b.html"; | 1313 // database in-between to further stress potential inter-dependencies. |
| 1259 const char kGood1Url2[] = "www.good1.com/b/"; | 1314 for (const auto& test_case : kTestCases) { |
| 1260 | 1315 SCOPED_TRACE(std::string("Tested list at fault => ") + |
| 1261 const char kGood2Url1[] = "www.good2.com/c"; // Should match '/c/bla'. | 1316 test_case.test_list_name); |
| 1262 | 1317 |
| 1263 // good3.com/a/b/c/d/e/f/g/ should match because it's a whitelist. | 1318 const char kGood1Host[] = "www.good1.com/"; |
| 1264 const char kGood3Url1[] = "good3.com/"; | 1319 const char kGood1Url1[] = "www.good1.com/a/b.html"; |
| 1265 | 1320 const char kGood1Url2[] = "www.good1.com/b/"; |
| 1266 const char kGoodString[] = "good_string"; | 1321 |
| 1267 | 1322 const char kGood2Url1[] = "www.good2.com/c"; // Should match '/c/bla'. |
| 1268 ScopedVector<SBChunkData> csd_chunks; | 1323 |
| 1269 ScopedVector<SBChunkData> download_chunks; | 1324 // good3.com/a/b/c/d/e/f/g/ should match because it's a whitelist. |
| 1270 | 1325 const char kGood3Url1[] = "good3.com/"; |
| 1271 // Add two simple chunks to the csd whitelist. | 1326 |
| 1272 csd_chunks.push_back(AddChunkFullHash2Value(1, kGood1Url1, kGood1Url2)); | 1327 const char kGoodString[] = "good_string"; |
| 1273 csd_chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); | 1328 |
| 1274 download_chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); | 1329 // Nothing should be whitelisted before the database receives the chunks. |
| 1275 download_chunks.push_back(AddChunkFullHashValue(3, kGoodString)); | 1330 EXPECT_FALSE( |
| 1276 download_chunks.push_back(AddChunkFullHashValue(4, kGood3Url1)); | 1331 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1277 | 1332 GURL(std::string("http://") + kGood1Host))); |
| 1278 std::vector<SBListChunkRanges> lists; | 1333 EXPECT_FALSE( |
| 1279 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 1334 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1280 database_->InsertChunks(safe_browsing_util::kCsdWhiteList, csd_chunks.get()); | 1335 GURL(std::string("http://") + kGood1Url1))); |
| 1281 database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, | 1336 EXPECT_FALSE( |
| 1282 download_chunks.get()); | 1337 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1283 database_->UpdateFinished(true); | 1338 GURL(std::string("http://") + kGood1Url2))); |
| 1284 | 1339 EXPECT_FALSE( |
| 1285 EXPECT_FALSE(database_->ContainsCsdWhitelistedUrl( | 1340 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1286 GURL(std::string("http://") + kGood1Host))); | 1341 GURL(std::string("http://") + kGood2Url1))); |
| 1287 | 1342 EXPECT_FALSE( |
| 1288 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1343 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1289 GURL(std::string("http://") + kGood1Url1))); | 1344 GURL(std::string("http://") + kGood3Url1))); |
| 1290 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1345 if (test_case.TestStrings()) { |
| 1291 GURL(std::string("http://") + kGood1Url1 + "?a=b"))); | 1346 EXPECT_FALSE( |
| 1292 | 1347 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1293 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1348 kGoodString)); |
| 1294 GURL(std::string("http://") + kGood1Url2))); | 1349 } |
| 1295 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1350 |
| 1296 GURL(std::string("http://") + kGood1Url2 + "/c.html"))); | 1351 ScopedVector<SBChunkData> chunks; |
| 1297 | 1352 |
| 1298 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1353 // Add two simple chunks to the csd whitelist. |
|
mattm
2015/01/08 22:07:27
this is more than two chunks :)
gab
2015/01/09 13:51:30
:-), updated comment.
| |
| 1299 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); | 1354 chunks.push_back(AddChunkFullHash2Value(1, kGood1Url1, kGood1Url2)); |
| 1300 | 1355 chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); |
| 1301 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1356 if (test_case.TestStrings()) |
| 1302 GURL(std::string("http://") + kGood2Url1 + "/c"))); | 1357 chunks.push_back(AddChunkFullHashValue(3, kGoodString)); |
| 1303 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1358 chunks.push_back(AddChunkFullHashValue(4, kGood3Url1)); |
| 1304 GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); | 1359 |
| 1305 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1360 std::vector<SBListChunkRanges> lists; |
| 1306 GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); | 1361 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 1307 | 1362 database_->InsertChunks(test_case.test_list_name, chunks.get()); |
| 1308 EXPECT_FALSE(database_->ContainsCsdWhitelistedUrl( | 1363 database_->UpdateFinished(true); |
| 1309 GURL(std::string("http://www.google.com/")))); | 1364 |
| 1310 | 1365 EXPECT_FALSE( |
| 1311 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1366 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1312 GURL(std::string("http://") + kGood2Url1 + "/c"))); | 1367 GURL(std::string("http://") + kGood1Host))); |
| 1313 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1368 |
| 1314 GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); | 1369 EXPECT_TRUE( |
| 1315 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1370 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1316 GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); | 1371 GURL(std::string("http://") + kGood1Url1))); |
| 1317 | 1372 EXPECT_TRUE( |
| 1318 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1373 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1319 GURL(std::string("http://good3.com/a/b/c/d/e/f/g/")))); | 1374 GURL(std::string("http://") + kGood1Url1 + "?a=b"))); |
| 1320 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1375 |
| 1321 GURL(std::string("http://a.b.good3.com/")))); | 1376 EXPECT_TRUE( |
| 1322 | 1377 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1323 EXPECT_FALSE(database_->ContainsDownloadWhitelistedString("asdf")); | 1378 GURL(std::string("http://") + kGood1Url2))); |
| 1324 EXPECT_TRUE(database_->ContainsDownloadWhitelistedString(kGoodString)); | 1379 EXPECT_TRUE( |
| 1325 | 1380 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1326 EXPECT_FALSE(database_->ContainsDownloadWhitelistedUrl( | 1381 GURL(std::string("http://") + kGood1Url2 + "/c.html"))); |
| 1327 GURL(std::string("http://www.google.com/")))); | 1382 |
| 1328 | 1383 EXPECT_TRUE( |
| 1329 // The CSD whitelist killswitch is not present. | 1384 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1330 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); | 1385 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| 1331 | 1386 |
| 1332 // Test only add the malware IP killswitch | 1387 EXPECT_TRUE( |
| 1333 csd_chunks.clear(); | 1388 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1334 csd_chunks.push_back(AddChunkFullHashValue( | 1389 GURL(std::string("http://") + kGood2Url1 + "/c"))); |
| 1335 15, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware")); | 1390 EXPECT_TRUE( |
| 1336 | 1391 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1337 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 1392 GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); |
| 1338 database_->InsertChunks(safe_browsing_util::kCsdWhiteList, csd_chunks.get()); | 1393 EXPECT_TRUE( |
| 1339 database_->UpdateFinished(true); | 1394 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1340 | 1395 GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); |
| 1341 EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); | 1396 |
| 1342 // The CSD whitelist killswitch is not present. | 1397 EXPECT_FALSE( |
| 1343 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); | 1398 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1344 | 1399 GURL(std::string("http://www.google.com/")))); |
| 1345 // Test that the kill-switch works as intended. | 1400 |
| 1346 csd_chunks.clear(); | 1401 EXPECT_TRUE( |
| 1347 download_chunks.clear(); | 1402 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1348 lists.clear(); | 1403 GURL(std::string("http://") + kGood3Url1 + "a/b/c/d/e/f/g/"))); |
| 1349 csd_chunks.push_back(AddChunkFullHashValue( | 1404 EXPECT_TRUE( |
| 1350 5, "sb-ssl.google.com/safebrowsing/csd/killswitch")); | 1405 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1351 download_chunks.push_back(AddChunkFullHashValue( | 1406 GURL(std::string("http://a.b.") + kGood3Url1))); |
| 1352 5, "sb-ssl.google.com/safebrowsing/csd/killswitch")); | 1407 |
| 1353 | 1408 if (test_case.TestStrings()) { |
| 1354 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 1409 EXPECT_FALSE( |
| 1355 database_->InsertChunks(safe_browsing_util::kCsdWhiteList, csd_chunks.get()); | 1410 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1356 database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, | 1411 "asdf")); |
| 1357 download_chunks.get()); | 1412 EXPECT_TRUE( |
| 1358 database_->UpdateFinished(true); | 1413 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1359 | 1414 kGoodString)); |
| 1360 // The CSD whitelist killswitch is present. | 1415 } |
| 1361 EXPECT_TRUE(database_->IsCsdWhitelistKillSwitchOn()); | 1416 |
| 1362 EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); | 1417 EXPECT_FALSE( |
| 1363 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1418 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1364 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); | 1419 GURL(std::string("http://www.google.com/")))); |
| 1365 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1420 |
| 1366 GURL(std::string("http://www.google.com/")))); | 1421 // The malware kill switch is for the CSD whitelist only. |
| 1367 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1422 if (test_case.test_list_name == safe_browsing_util::kCsdWhiteList) { |
| 1368 GURL(std::string("http://www.phishing_url.com/")))); | 1423 // The CSD whitelist killswitch is not present. |
| 1369 | 1424 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| 1370 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1425 |
| 1371 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); | 1426 // Test only add the malware IP killswitch |
| 1372 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1427 chunks.clear(); |
| 1373 GURL(std::string("http://www.google.com/")))); | 1428 chunks.push_back(AddChunkFullHashValue( |
| 1374 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1429 15, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware")); |
| 1375 GURL(std::string("http://www.phishing_url.com/")))); | 1430 |
| 1376 | 1431 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 1377 EXPECT_TRUE(database_->ContainsDownloadWhitelistedString("asdf")); | 1432 database_->InsertChunks(safe_browsing_util::kCsdWhiteList, chunks.get()); |
| 1378 EXPECT_TRUE(database_->ContainsDownloadWhitelistedString(kGoodString)); | 1433 database_->UpdateFinished(true); |
| 1379 | 1434 |
| 1380 // Remove the kill-switch and verify that we can recover. | 1435 EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); |
| 1381 csd_chunks.clear(); | 1436 // The CSD whitelist killswitch is not present. |
| 1382 download_chunks.clear(); | 1437 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| 1383 lists.clear(); | 1438 } |
| 1384 csd_chunks.push_back(SubChunkFullHashValue( | 1439 |
| 1385 1, "sb-ssl.google.com/safebrowsing/csd/killswitch", 5)); | 1440 // Test that the generic whitelist kill-switch works as intended. |
| 1386 csd_chunks.push_back(SubChunkFullHashValue( | 1441 chunks.clear(); |
| 1387 10, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware", 15)); | 1442 lists.clear(); |
| 1388 download_chunks.push_back(SubChunkFullHashValue( | 1443 chunks.push_back(AddChunkFullHashValue( |
| 1389 1, "sb-ssl.google.com/safebrowsing/csd/killswitch", 5)); | 1444 5, "sb-ssl.google.com/safebrowsing/csd/killswitch")); |
| 1390 | 1445 |
| 1391 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 1446 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 1392 database_->InsertChunks(safe_browsing_util::kCsdWhiteList, csd_chunks.get()); | 1447 database_->InsertChunks(test_case.test_list_name, chunks.get()); |
| 1393 database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, | 1448 database_->UpdateFinished(true); |
| 1394 download_chunks.get()); | 1449 |
| 1395 database_->UpdateFinished(true); | 1450 // Test CSD whitelist specific methods. |
| 1396 | 1451 if (test_case.test_list_name == safe_browsing_util::kCsdWhiteList) { |
| 1397 EXPECT_FALSE(database_->IsMalwareIPMatchKillSwitchOn()); | 1452 // The CSD whitelist killswitch is present. |
| 1398 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); | 1453 EXPECT_TRUE(database_->IsCsdWhitelistKillSwitchOn()); |
| 1399 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1454 EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); |
| 1400 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); | 1455 } |
| 1401 EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( | 1456 |
| 1402 GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); | 1457 EXPECT_TRUE( |
| 1403 EXPECT_FALSE(database_->ContainsCsdWhitelistedUrl( | 1458 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1404 GURL(std::string("http://www.google.com/")))); | 1459 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| 1405 EXPECT_FALSE(database_->ContainsCsdWhitelistedUrl( | 1460 EXPECT_TRUE( |
| 1406 GURL(std::string("http://www.phishing_url.com/")))); | 1461 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1407 | 1462 GURL(std::string("http://www.google.com/")))); |
| 1408 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1463 EXPECT_TRUE( |
| 1409 GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); | 1464 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1410 EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( | 1465 GURL(std::string("http://www.phishing_url.com/")))); |
| 1411 GURL(std::string("https://good3.com/")))); | 1466 |
| 1412 EXPECT_TRUE(database_->ContainsDownloadWhitelistedString(kGoodString)); | 1467 if (test_case.TestStrings()) { |
| 1413 EXPECT_FALSE(database_->ContainsDownloadWhitelistedUrl( | 1468 EXPECT_TRUE( |
| 1414 GURL(std::string("http://www.google.com/")))); | 1469 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1415 EXPECT_FALSE(database_->ContainsDownloadWhitelistedUrl( | 1470 "asdf")); |
| 1416 GURL(std::string("http://www.phishing_url.com/")))); | 1471 EXPECT_TRUE( |
| 1417 EXPECT_FALSE(database_->ContainsDownloadWhitelistedString("asdf")); | 1472 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1418 | 1473 kGoodString)); |
| 1419 database_.reset(); | 1474 } |
| 1475 | |
| 1476 // Remove the kill-switch and verify that we can recover. | |
| 1477 chunks.clear(); | |
| 1478 lists.clear(); | |
| 1479 chunks.push_back(SubChunkFullHashValue( | |
| 1480 1, "sb-ssl.google.com/safebrowsing/csd/killswitch", 5)); | |
| 1481 if (test_case.test_list_name == safe_browsing_util::kCsdWhiteList) { | |
| 1482 chunks.push_back(SubChunkFullHashValue( | |
| 1483 10, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware", 15)); | |
| 1484 } | |
| 1485 | |
| 1486 ASSERT_TRUE(database_->UpdateStarted(&lists)); | |
| 1487 database_->InsertChunks(test_case.test_list_name, chunks.get()); | |
| 1488 database_->UpdateFinished(true); | |
| 1489 | |
| 1490 if (test_case.test_list_name == safe_browsing_util::kCsdWhiteList) { | |
| 1491 EXPECT_FALSE(database_->IsMalwareIPMatchKillSwitchOn()); | |
| 1492 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); | |
| 1493 } | |
| 1494 EXPECT_TRUE( | |
| 1495 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | |
| 1496 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); | |
| 1497 EXPECT_TRUE( | |
| 1498 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | |
| 1499 GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); | |
| 1500 EXPECT_TRUE( | |
| 1501 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | |
| 1502 GURL(std::string("https://") + kGood3Url1))); | |
| 1503 EXPECT_FALSE( | |
| 1504 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | |
| 1505 GURL(std::string("http://www.google.com/")))); | |
| 1506 EXPECT_FALSE( | |
| 1507 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | |
| 1508 GURL(std::string("http://www.phishing_url.com/")))); | |
| 1509 if (test_case.TestStrings()) { | |
| 1510 EXPECT_TRUE( | |
| 1511 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | |
| 1512 kGoodString)); | |
| 1513 EXPECT_FALSE( | |
| 1514 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | |
| 1515 "asdf")); | |
| 1516 } | |
| 1517 } | |
| 1420 } | 1518 } |
| 1421 | 1519 |
| 1422 // Test to make sure we could insert chunk list that | 1520 // Test to make sure we could insert chunk list that |
| 1423 // contains entries for the same host. | 1521 // contains entries for the same host. |
| 1424 TEST_F(SafeBrowsingDatabaseTest, SameHostEntriesOkay) { | 1522 TEST_F(SafeBrowsingDatabaseTest, SameHostEntriesOkay) { |
| 1425 ScopedVector<SBChunkData> chunks; | 1523 ScopedVector<SBChunkData> chunks; |
| 1426 | 1524 |
| 1427 // Add a malware add chunk with two entries of the same host. | 1525 // Add a malware add chunk with two entries of the same host. |
| 1428 chunks.push_back(AddChunkPrefix2Value(1, | 1526 chunks.push_back(AddChunkPrefix2Value(1, |
| 1429 "www.evil.com/malware1.html", | 1527 "www.evil.com/malware1.html", |
| (...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2135 GURL(std::string("http://") + kExampleCollision), | 2233 GURL(std::string("http://") + kExampleCollision), |
| 2136 &prefix_hits, &cache_hits)); | 2234 &prefix_hits, &cache_hits)); |
| 2137 ASSERT_EQ(1U, prefix_hits.size()); | 2235 ASSERT_EQ(1U, prefix_hits.size()); |
| 2138 EXPECT_EQ(SBPrefixForString(kExampleCollision), prefix_hits[0]); | 2236 EXPECT_EQ(SBPrefixForString(kExampleCollision), prefix_hits[0]); |
| 2139 EXPECT_TRUE(cache_hits.empty()); | 2237 EXPECT_TRUE(cache_hits.empty()); |
| 2140 | 2238 |
| 2141 // This prefix collides, but no full hash match. | 2239 // This prefix collides, but no full hash match. |
| 2142 EXPECT_FALSE(database_->ContainsBrowseUrl( | 2240 EXPECT_FALSE(database_->ContainsBrowseUrl( |
| 2143 GURL(std::string("http://") + kExampleFine), &prefix_hits, &cache_hits)); | 2241 GURL(std::string("http://") + kExampleFine), &prefix_hits, &cache_hits)); |
| 2144 } | 2242 } |
| OLD | NEW |