| 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 <stddef.h> | 9 #include <stddef.h> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 SafeBrowsingStoreFile* download_whitelist_store = | 273 SafeBrowsingStoreFile* download_whitelist_store = |
| 274 new SafeBrowsingStoreFile(task_runner_); | 274 new SafeBrowsingStoreFile(task_runner_); |
| 275 SafeBrowsingStoreFile* inclusion_whitelist_store = | 275 SafeBrowsingStoreFile* inclusion_whitelist_store = |
| 276 new SafeBrowsingStoreFile(task_runner_); | 276 new SafeBrowsingStoreFile(task_runner_); |
| 277 SafeBrowsingStoreFile* extension_blacklist_store = | 277 SafeBrowsingStoreFile* extension_blacklist_store = |
| 278 new SafeBrowsingStoreFile(task_runner_); | 278 new SafeBrowsingStoreFile(task_runner_); |
| 279 SafeBrowsingStoreFile* ip_blacklist_store = | 279 SafeBrowsingStoreFile* ip_blacklist_store = |
| 280 new SafeBrowsingStoreFile(task_runner_); | 280 new SafeBrowsingStoreFile(task_runner_); |
| 281 SafeBrowsingStoreFile* unwanted_software_store = | 281 SafeBrowsingStoreFile* unwanted_software_store = |
| 282 new SafeBrowsingStoreFile(task_runner_); | 282 new SafeBrowsingStoreFile(task_runner_); |
| 283 SafeBrowsingStoreFile* module_whitelist_store = |
| 284 new SafeBrowsingStoreFile(task_runner_); |
| 283 database_.reset(new SafeBrowsingDatabaseNew( | 285 database_.reset(new SafeBrowsingDatabaseNew( |
| 284 task_runner_, browse_store, download_store, csd_whitelist_store, | 286 task_runner_, browse_store, download_store, csd_whitelist_store, |
| 285 download_whitelist_store, inclusion_whitelist_store, | 287 download_whitelist_store, inclusion_whitelist_store, |
| 286 extension_blacklist_store, ip_blacklist_store, | 288 extension_blacklist_store, ip_blacklist_store, unwanted_software_store, |
| 287 unwanted_software_store)); | 289 module_whitelist_store)); |
| 288 database_->Init(database_filename_); | 290 database_->Init(database_filename_); |
| 289 } | 291 } |
| 290 | 292 |
| 291 bool ContainsDownloadUrl(const std::vector<GURL>& urls, | 293 bool ContainsDownloadUrl(const std::vector<GURL>& urls, |
| 292 std::vector<SBPrefix>* prefix_hits) { | 294 std::vector<SBPrefix>* prefix_hits) { |
| 293 std::vector<SBPrefix> prefixes; | 295 std::vector<SBPrefix> prefixes; |
| 294 SafeBrowsingDatabase::GetDownloadUrlPrefixes(urls, &prefixes); | 296 SafeBrowsingDatabase::GetDownloadUrlPrefixes(urls, &prefixes); |
| 295 return database_->ContainsDownloadUrlPrefixes(prefixes, prefix_hits); | 297 return database_->ContainsDownloadUrlPrefixes(prefixes, prefix_hits); |
| 296 } | 298 } |
| 297 | 299 |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 chunks); | 435 chunks); |
| 434 | 436 |
| 435 chunks.clear(); | 437 chunks.clear(); |
| 436 chunks.push_back(AddChunkHashedIpValue(10, "::ffff:192.168.1.0", 120)); | 438 chunks.push_back(AddChunkHashedIpValue(10, "::ffff:192.168.1.0", 120)); |
| 437 database_->InsertChunks(kIPBlacklist, chunks); | 439 database_->InsertChunks(kIPBlacklist, chunks); |
| 438 | 440 |
| 439 chunks.clear(); | 441 chunks.clear(); |
| 440 chunks.push_back(AddChunkPrefixValue(11, "www.unwanted.com/software.html")); | 442 chunks.push_back(AddChunkPrefixValue(11, "www.unwanted.com/software.html")); |
| 441 database_->InsertChunks(kUnwantedUrlList, chunks); | 443 database_->InsertChunks(kUnwantedUrlList, chunks); |
| 442 | 444 |
| 445 chunks.clear(); |
| 446 chunks.push_back(AddChunkPrefixValue(12, "chrome.dll")); |
| 447 database_->InsertChunks(kModuleWhitelist, chunks); |
| 448 |
| 443 database_->UpdateFinished(true); | 449 database_->UpdateFinished(true); |
| 444 | 450 |
| 445 GetListsInfo(&lists); | 451 GetListsInfo(&lists); |
| 446 ASSERT_EQ(9U, lists.size()); | 452 ASSERT_EQ(10U, lists.size()); |
| 447 EXPECT_EQ(kMalwareList, lists[0].name); | 453 EXPECT_EQ(kMalwareList, lists[0].name); |
| 448 EXPECT_EQ("1", lists[0].adds); | 454 EXPECT_EQ("1", lists[0].adds); |
| 449 EXPECT_TRUE(lists[0].subs.empty()); | 455 EXPECT_TRUE(lists[0].subs.empty()); |
| 450 EXPECT_EQ(kPhishingList, lists[1].name); | 456 EXPECT_EQ(kPhishingList, lists[1].name); |
| 451 EXPECT_EQ("2", lists[1].adds); | 457 EXPECT_EQ("2", lists[1].adds); |
| 452 EXPECT_TRUE(lists[1].subs.empty()); | 458 EXPECT_TRUE(lists[1].subs.empty()); |
| 453 EXPECT_EQ(kBinUrlList, lists[2].name); | 459 EXPECT_EQ(kBinUrlList, lists[2].name); |
| 454 EXPECT_EQ("3", lists[2].adds); | 460 EXPECT_EQ("3", lists[2].adds); |
| 455 EXPECT_TRUE(lists[2].subs.empty()); | 461 EXPECT_TRUE(lists[2].subs.empty()); |
| 456 EXPECT_EQ(kCsdWhiteList, lists[3].name); | 462 EXPECT_EQ(kCsdWhiteList, lists[3].name); |
| 457 EXPECT_EQ("5", lists[3].adds); | 463 EXPECT_EQ("5", lists[3].adds); |
| 458 EXPECT_TRUE(lists[3].subs.empty()); | 464 EXPECT_TRUE(lists[3].subs.empty()); |
| 459 EXPECT_EQ(kDownloadWhiteList, lists[4].name); | 465 EXPECT_EQ(kDownloadWhiteList, lists[4].name); |
| 460 EXPECT_EQ("6", lists[4].adds); | 466 EXPECT_EQ("6", lists[4].adds); |
| 461 EXPECT_TRUE(lists[4].subs.empty()); | 467 EXPECT_TRUE(lists[4].subs.empty()); |
| 462 EXPECT_EQ(kInclusionWhitelist, lists[5].name); | 468 EXPECT_EQ(kInclusionWhitelist, lists[5].name); |
| 463 EXPECT_EQ("7", lists[5].adds); | 469 EXPECT_EQ("7", lists[5].adds); |
| 464 EXPECT_TRUE(lists[5].subs.empty()); | 470 EXPECT_TRUE(lists[5].subs.empty()); |
| 465 EXPECT_EQ(kExtensionBlacklist, lists[6].name); | 471 EXPECT_EQ(kExtensionBlacklist, lists[6].name); |
| 466 EXPECT_EQ("8", lists[6].adds); | 472 EXPECT_EQ("8", lists[6].adds); |
| 467 EXPECT_TRUE(lists[6].subs.empty()); | 473 EXPECT_TRUE(lists[6].subs.empty()); |
| 468 EXPECT_EQ(kIPBlacklist, lists[7].name); | 474 EXPECT_EQ(kIPBlacklist, lists[7].name); |
| 469 EXPECT_EQ("10", lists[7].adds); | 475 EXPECT_EQ("10", lists[7].adds); |
| 470 EXPECT_TRUE(lists[7].subs.empty()); | 476 EXPECT_TRUE(lists[7].subs.empty()); |
| 471 EXPECT_EQ(kUnwantedUrlList, lists[8].name); | 477 EXPECT_EQ(kUnwantedUrlList, lists[8].name); |
| 472 EXPECT_EQ("11", lists[8].adds); | 478 EXPECT_EQ("11", lists[8].adds); |
| 473 EXPECT_TRUE(lists[8].subs.empty()); | 479 EXPECT_TRUE(lists[8].subs.empty()); |
| 480 EXPECT_EQ(kModuleWhitelist, lists[9].name); |
| 481 EXPECT_EQ("12", lists[9].adds); |
| 482 EXPECT_TRUE(lists[9].subs.empty()); |
| 474 | 483 |
| 475 database_.reset(); | 484 database_.reset(); |
| 476 } | 485 } |
| 477 | 486 |
| 478 // Checks database reading and writing for browse and unwanted PrefixSets. | 487 // Checks database reading and writing for browse and unwanted PrefixSets. |
| 479 TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) { | 488 TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) { |
| 480 | 489 |
| 481 struct TestCase { | 490 struct TestCase { |
| 482 using TestListContainsBadUrl = bool (SafeBrowsingDatabase::*)( | 491 using TestListContainsBadUrl = bool (SafeBrowsingDatabase::*)( |
| 483 const GURL& url, | 492 const GURL& url, |
| (...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1146 // TODO(shess): Disabled until ScopedLogMessageIgnorer resolved. | 1155 // TODO(shess): Disabled until ScopedLogMessageIgnorer resolved. |
| 1147 // http://crbug.com/56448 | 1156 // http://crbug.com/56448 |
| 1148 TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) { | 1157 TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) { |
| 1149 // Re-create the database in a captive message loop so that we can | 1158 // Re-create the database in a captive message loop so that we can |
| 1150 // influence task-posting. Database specifically needs to the | 1159 // influence task-posting. Database specifically needs to the |
| 1151 // file-backed. | 1160 // file-backed. |
| 1152 database_.reset(); | 1161 database_.reset(); |
| 1153 base::MessageLoop loop; | 1162 base::MessageLoop loop; |
| 1154 SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(task_runner_); | 1163 SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(task_runner_); |
| 1155 database_.reset(new SafeBrowsingDatabaseNew( | 1164 database_.reset(new SafeBrowsingDatabaseNew( |
| 1156 task_runner_, store, NULL, NULL, NULL, NULL, NULL, NULL, NULL)); | 1165 task_runner_, store, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)); |
| 1157 database_->Init(database_filename_); | 1166 database_->Init(database_filename_); |
| 1158 | 1167 |
| 1159 // This will cause an empty database to be created. | 1168 // This will cause an empty database to be created. |
| 1160 std::vector<SBListChunkRanges> lists; | 1169 std::vector<SBListChunkRanges> lists; |
| 1161 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 1170 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 1162 database_->UpdateFinished(true); | 1171 database_->UpdateFinished(true); |
| 1163 | 1172 |
| 1164 // Create a sub chunk to insert. | 1173 // Create a sub chunk to insert. |
| 1165 std::vector<scoped_ptr<SBChunkData>> chunks; | 1174 std::vector<scoped_ptr<SBChunkData>> chunks; |
| 1166 chunks.push_back(SubChunkPrefixValue(7, | 1175 chunks.push_back(SubChunkPrefixValue(7, |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1295 } | 1304 } |
| 1296 | 1305 |
| 1297 // Checks that the whitelists are handled properly. | 1306 // Checks that the whitelists are handled properly. |
| 1298 TEST_F(SafeBrowsingDatabaseTest, Whitelists) { | 1307 TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
| 1299 struct TestCase { | 1308 struct TestCase { |
| 1300 using TestListContainsWhitelistedUrl = | 1309 using TestListContainsWhitelistedUrl = |
| 1301 bool (SafeBrowsingDatabase::*)(const GURL& url); | 1310 bool (SafeBrowsingDatabase::*)(const GURL& url); |
| 1302 using TestListContainsWhitelistedString = | 1311 using TestListContainsWhitelistedString = |
| 1303 bool (SafeBrowsingDatabase::*)(const std::string& str); | 1312 bool (SafeBrowsingDatabase::*)(const std::string& str); |
| 1304 | 1313 |
| 1314 // Returns true if urls should be tested in this test case (i.e. |
| 1315 // |test_list_contains_whitelisted_url| is not null). |
| 1316 bool TestUrls() const { |
| 1317 return test_list_contains_whitelisted_url != nullptr; |
| 1318 } |
| 1319 |
| 1305 // Returns true if strings should be tested in this test case (i.e. | 1320 // Returns true if strings should be tested in this test case (i.e. |
| 1306 // |test_list_contains_whitelisted_string| is not null). | 1321 // |test_list_contains_whitelisted_string| is not null). |
| 1307 bool TestStrings() const { | 1322 bool TestStrings() const { |
| 1308 return test_list_contains_whitelisted_string != nullptr; | 1323 return test_list_contains_whitelisted_string != nullptr; |
| 1309 } | 1324 } |
| 1310 | 1325 |
| 1311 const char* test_list_name; | 1326 const char* test_list_name; |
| 1312 TestListContainsWhitelistedUrl test_list_contains_whitelisted_url; | 1327 TestListContainsWhitelistedUrl test_list_contains_whitelisted_url; |
| 1313 // Optional test case field, if set the tested whitelist will also be tested | 1328 // Optional test case field, if set the tested whitelist will also be tested |
| 1314 // for strings. | 1329 // for strings. |
| 1315 TestListContainsWhitelistedString test_list_contains_whitelisted_string; | 1330 TestListContainsWhitelistedString test_list_contains_whitelisted_string; |
| 1316 } const kTestCases[]{ | 1331 } const kTestCases[]{ |
| 1317 {kCsdWhiteList, | 1332 {kCsdWhiteList, &SafeBrowsingDatabase::ContainsCsdWhitelistedUrl, |
| 1318 &SafeBrowsingDatabase::ContainsCsdWhitelistedUrl, | |
| 1319 nullptr}, | 1333 nullptr}, |
| 1320 {kDownloadWhiteList, | 1334 {kDownloadWhiteList, |
| 1321 &SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl, | 1335 &SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl, |
| 1322 &SafeBrowsingDatabase::ContainsDownloadWhitelistedString}, | 1336 &SafeBrowsingDatabase::ContainsDownloadWhitelistedString}, |
| 1323 {kInclusionWhitelist, | 1337 {kInclusionWhitelist, |
| 1324 &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl, | 1338 &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl, nullptr}, |
| 1325 nullptr}, | 1339 {kModuleWhitelist, nullptr, |
| 1340 &SafeBrowsingDatabase::ContainsModuleWhitelistedString}, |
| 1326 }; | 1341 }; |
| 1327 | 1342 |
| 1328 // If the whitelist is disabled everything should match the whitelist. | 1343 // If the whitelist is disabled everything should match the whitelist. |
| 1329 database_.reset(new SafeBrowsingDatabaseNew( | 1344 database_.reset(new SafeBrowsingDatabaseNew( |
| 1330 task_runner_, new SafeBrowsingStoreFile(task_runner_), NULL, NULL, NULL, | 1345 task_runner_, new SafeBrowsingStoreFile(task_runner_), NULL, NULL, NULL, |
| 1331 NULL, NULL, NULL, NULL)); | 1346 NULL, NULL, NULL, NULL, NULL)); |
| 1332 database_->Init(database_filename_); | 1347 database_->Init(database_filename_); |
| 1333 for (const auto& test_case : kTestCases) { | 1348 for (const auto& test_case : kTestCases) { |
| 1334 SCOPED_TRACE(std::string("Tested list at fault => ") + | 1349 SCOPED_TRACE(std::string("Tested list at fault => ") + |
| 1335 test_case.test_list_name); | 1350 test_case.test_list_name); |
| 1336 | 1351 |
| 1337 EXPECT_TRUE( | 1352 if (test_case.TestUrls()) { |
| 1338 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1353 EXPECT_TRUE( |
| 1339 GURL(std::string("http://www.phishing.com/")))); | 1354 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1355 GURL(std::string("http://www.phishing.com/")))); |
| 1356 } |
| 1340 if (test_case.TestStrings()) { | 1357 if (test_case.TestStrings()) { |
| 1341 EXPECT_TRUE( | 1358 EXPECT_TRUE( |
| 1342 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | 1359 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1343 "asdf")); | 1360 "asdf")); |
| 1344 } | 1361 } |
| 1345 } | 1362 } |
| 1346 ResetAndReloadFullDatabase(); | 1363 ResetAndReloadFullDatabase(); |
| 1347 | 1364 |
| 1348 // Now test every whitelist one-by-one; intentionally not resetting the | 1365 // Now test every whitelist one-by-one; intentionally not resetting the |
| 1349 // database in-between to further stress potential inter-dependencies. | 1366 // database in-between to further stress potential inter-dependencies. |
| 1350 for (const auto& test_case : kTestCases) { | 1367 for (const auto& test_case : kTestCases) { |
| 1351 SCOPED_TRACE(std::string("Tested list at fault => ") + | 1368 SCOPED_TRACE(std::string("Tested list at fault => ") + |
| 1352 test_case.test_list_name); | 1369 test_case.test_list_name); |
| 1353 | 1370 |
| 1354 const char kGood1Host[] = "www.good1.com/"; | 1371 const char kGood1Host[] = "www.good1.com/"; |
| 1355 const char kGood1Url1[] = "www.good1.com/a/b.html"; | 1372 const char kGood1Url1[] = "www.good1.com/a/b.html"; |
| 1356 const char kGood1Url2[] = "www.good1.com/b/"; | 1373 const char kGood1Url2[] = "www.good1.com/b/"; |
| 1357 | 1374 |
| 1358 const char kGood2Url1[] = "www.good2.com/c"; // Should match '/c/bla'. | 1375 const char kGood2Url1[] = "www.good2.com/c"; // Should match '/c/bla'. |
| 1359 | 1376 |
| 1360 // good3.com/a/b/c/d/e/f/g/ should match because it's a whitelist. | 1377 // good3.com/a/b/c/d/e/f/g/ should match because it's a whitelist. |
| 1361 const char kGood3Url1[] = "good3.com/"; | 1378 const char kGood3Url1[] = "good3.com/"; |
| 1362 | 1379 |
| 1363 const char kGoodString[] = "good_string"; | 1380 const char kGoodString[] = "good_string"; |
| 1364 | 1381 |
| 1365 // Nothing should be whitelisted before the database receives the chunks. | 1382 // Nothing should be whitelisted before the database receives the chunks. |
| 1366 EXPECT_FALSE( | 1383 if (test_case.TestUrls()) { |
| 1367 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1384 EXPECT_FALSE( |
| 1368 GURL(std::string("http://") + kGood1Host))); | 1385 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1369 EXPECT_FALSE( | 1386 GURL(std::string("http://") + kGood1Host))); |
| 1370 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1387 EXPECT_FALSE( |
| 1371 GURL(std::string("http://") + kGood1Url1))); | 1388 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1372 EXPECT_FALSE( | 1389 GURL(std::string("http://") + kGood1Url1))); |
| 1373 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1390 EXPECT_FALSE( |
| 1374 GURL(std::string("http://") + kGood1Url2))); | 1391 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1375 EXPECT_FALSE( | 1392 GURL(std::string("http://") + kGood1Url2))); |
| 1376 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1393 EXPECT_FALSE( |
| 1377 GURL(std::string("http://") + kGood2Url1))); | 1394 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1378 EXPECT_FALSE( | 1395 GURL(std::string("http://") + kGood2Url1))); |
| 1379 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1396 EXPECT_FALSE( |
| 1380 GURL(std::string("http://") + kGood3Url1))); | 1397 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1398 GURL(std::string("http://") + kGood3Url1))); |
| 1399 } |
| 1381 if (test_case.TestStrings()) { | 1400 if (test_case.TestStrings()) { |
| 1382 EXPECT_FALSE( | 1401 if (test_case.test_list_name == kModuleWhitelist) { |
| 1383 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | 1402 // For the module whitelist, everything should be whitelisted before |
| 1384 kGoodString)); | 1403 // the database receives the chunks. |
| 1404 EXPECT_TRUE( |
| 1405 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1406 kGoodString)); |
| 1407 EXPECT_TRUE( |
| 1408 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1409 "asdf")); |
| 1410 } else { |
| 1411 EXPECT_FALSE( |
| 1412 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1413 kGoodString)); |
| 1414 } |
| 1385 } | 1415 } |
| 1386 | 1416 |
| 1387 std::vector<scoped_ptr<SBChunkData>> chunks; | 1417 std::vector<scoped_ptr<SBChunkData>> chunks; |
| 1388 | 1418 |
| 1389 // Add a few test chunks to the whitelist under test. | 1419 // Add a few test chunks to the whitelist under test. |
| 1390 chunks.push_back(AddChunkFullHash2Value(1, kGood1Url1, kGood1Url2)); | 1420 if (test_case.TestUrls()) { |
| 1391 chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); | 1421 chunks.push_back(AddChunkFullHash2Value(1, kGood1Url1, kGood1Url2)); |
| 1422 chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); |
| 1423 chunks.push_back(AddChunkFullHashValue(4, kGood3Url1)); |
| 1424 } |
| 1392 if (test_case.TestStrings()) | 1425 if (test_case.TestStrings()) |
| 1393 chunks.push_back(AddChunkFullHashValue(3, kGoodString)); | 1426 chunks.push_back(AddChunkFullHashValue(3, kGoodString)); |
| 1394 chunks.push_back(AddChunkFullHashValue(4, kGood3Url1)); | |
| 1395 | 1427 |
| 1396 std::vector<SBListChunkRanges> lists; | 1428 std::vector<SBListChunkRanges> lists; |
| 1397 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 1429 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 1398 database_->InsertChunks(test_case.test_list_name, chunks); | 1430 database_->InsertChunks(test_case.test_list_name, chunks); |
| 1399 database_->UpdateFinished(true); | 1431 database_->UpdateFinished(true); |
| 1400 | 1432 |
| 1401 EXPECT_FALSE( | 1433 if (test_case.TestUrls()) { |
| 1402 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1434 EXPECT_FALSE( |
| 1403 GURL(std::string("http://") + kGood1Host))); | 1435 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1436 GURL(std::string("http://") + kGood1Host))); |
| 1404 | 1437 |
| 1405 EXPECT_TRUE( | 1438 EXPECT_TRUE( |
| 1406 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1439 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1407 GURL(std::string("http://") + kGood1Url1))); | 1440 GURL(std::string("http://") + kGood1Url1))); |
| 1408 EXPECT_TRUE( | 1441 EXPECT_TRUE( |
| 1409 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1442 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1410 GURL(std::string("http://") + kGood1Url1 + "?a=b"))); | 1443 GURL(std::string("http://") + kGood1Url1 + "?a=b"))); |
| 1411 | 1444 |
| 1412 EXPECT_TRUE( | 1445 EXPECT_TRUE( |
| 1413 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1446 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1414 GURL(std::string("http://") + kGood1Url2))); | 1447 GURL(std::string("http://") + kGood1Url2))); |
| 1415 EXPECT_TRUE( | 1448 EXPECT_TRUE( |
| 1416 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1449 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1417 GURL(std::string("http://") + kGood1Url2 + "/c.html"))); | 1450 GURL(std::string("http://") + kGood1Url2 + "/c.html"))); |
| 1418 | 1451 |
| 1419 EXPECT_TRUE( | 1452 EXPECT_TRUE( |
| 1420 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1453 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1421 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); | 1454 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| 1422 | 1455 |
| 1423 EXPECT_TRUE( | 1456 EXPECT_TRUE( |
| 1424 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1457 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1425 GURL(std::string("http://") + kGood2Url1 + "/c"))); | 1458 GURL(std::string("http://") + kGood2Url1 + "/c"))); |
| 1426 EXPECT_TRUE( | 1459 EXPECT_TRUE( |
| 1427 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1460 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1428 GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); | 1461 GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); |
| 1429 EXPECT_TRUE( | 1462 EXPECT_TRUE( |
| 1430 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1463 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1431 GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); | 1464 GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); |
| 1432 | 1465 |
| 1433 EXPECT_FALSE( | 1466 EXPECT_FALSE( |
| 1434 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1467 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1435 GURL(std::string("http://www.google.com/")))); | 1468 GURL(std::string("http://www.google.com/")))); |
| 1436 | 1469 |
| 1437 EXPECT_TRUE( | 1470 EXPECT_TRUE( |
| 1438 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1471 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1439 GURL(std::string("http://") + kGood3Url1 + "a/b/c/d/e/f/g/"))); | 1472 GURL(std::string("http://") + kGood3Url1 + "a/b/c/d/e/f/g/"))); |
| 1440 EXPECT_TRUE( | 1473 EXPECT_TRUE( |
| 1441 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1474 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1442 GURL(std::string("http://a.b.") + kGood3Url1))); | 1475 GURL(std::string("http://a.b.") + kGood3Url1))); |
| 1476 } |
| 1443 | 1477 |
| 1444 if (test_case.TestStrings()) { | 1478 if (test_case.TestStrings()) { |
| 1445 EXPECT_FALSE( | 1479 EXPECT_FALSE( |
| 1446 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | 1480 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1447 "asdf")); | 1481 "asdf")); |
| 1448 EXPECT_TRUE( | 1482 EXPECT_TRUE( |
| 1449 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | 1483 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1450 kGoodString)); | 1484 kGoodString)); |
| 1451 } | 1485 } |
| 1452 | 1486 |
| 1453 EXPECT_FALSE( | |
| 1454 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | |
| 1455 GURL(std::string("http://www.google.com/")))); | |
| 1456 | |
| 1457 // The malware kill switch is for the CSD whitelist only. | 1487 // The malware kill switch is for the CSD whitelist only. |
| 1458 if (test_case.test_list_name == kCsdWhiteList) { | 1488 if (test_case.test_list_name == kCsdWhiteList) { |
| 1459 // The CSD whitelist killswitch is not present. | 1489 // The CSD whitelist killswitch is not present. |
| 1460 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); | 1490 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| 1461 | 1491 |
| 1462 // Test only add the malware IP killswitch | 1492 // Test only add the malware IP killswitch |
| 1463 chunks.clear(); | 1493 chunks.clear(); |
| 1464 chunks.push_back(AddChunkFullHashValue( | 1494 chunks.push_back(AddChunkFullHashValue( |
| 1465 15, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware")); | 1495 15, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware")); |
| 1466 | 1496 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1483 database_->InsertChunks(test_case.test_list_name, chunks); | 1513 database_->InsertChunks(test_case.test_list_name, chunks); |
| 1484 database_->UpdateFinished(true); | 1514 database_->UpdateFinished(true); |
| 1485 | 1515 |
| 1486 // Test CSD whitelist specific methods. | 1516 // Test CSD whitelist specific methods. |
| 1487 if (test_case.test_list_name == kCsdWhiteList) { | 1517 if (test_case.test_list_name == kCsdWhiteList) { |
| 1488 // The CSD whitelist killswitch is present. | 1518 // The CSD whitelist killswitch is present. |
| 1489 EXPECT_TRUE(database_->IsCsdWhitelistKillSwitchOn()); | 1519 EXPECT_TRUE(database_->IsCsdWhitelistKillSwitchOn()); |
| 1490 EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); | 1520 EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); |
| 1491 } | 1521 } |
| 1492 | 1522 |
| 1493 EXPECT_TRUE( | 1523 if (test_case.TestUrls()) { |
| 1494 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1524 EXPECT_TRUE( |
| 1495 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); | 1525 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1496 EXPECT_TRUE( | 1526 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| 1497 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1527 EXPECT_TRUE( |
| 1498 GURL(std::string("http://www.google.com/")))); | 1528 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1499 EXPECT_TRUE( | 1529 GURL(std::string("http://www.google.com/")))); |
| 1500 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1530 EXPECT_TRUE( |
| 1501 GURL(std::string("http://www.phishing_url.com/")))); | 1531 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1532 GURL(std::string("http://www.phishing_url.com/")))); |
| 1533 } |
| 1502 | 1534 |
| 1503 if (test_case.TestStrings()) { | 1535 if (test_case.TestStrings()) { |
| 1504 EXPECT_TRUE( | 1536 EXPECT_TRUE( |
| 1505 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | 1537 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1506 "asdf")); | 1538 "asdf")); |
| 1507 EXPECT_TRUE( | 1539 EXPECT_TRUE( |
| 1508 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | 1540 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1509 kGoodString)); | 1541 kGoodString)); |
| 1510 } | 1542 } |
| 1511 | 1543 |
| 1512 // Remove the kill-switch and verify that we can recover. | 1544 // Remove the kill-switch and verify that we can recover. |
| 1513 chunks.clear(); | 1545 chunks.clear(); |
| 1514 lists.clear(); | 1546 lists.clear(); |
| 1515 chunks.push_back(SubChunkFullHashValue( | 1547 chunks.push_back(SubChunkFullHashValue( |
| 1516 1, "sb-ssl.google.com/safebrowsing/csd/killswitch", 5)); | 1548 1, "sb-ssl.google.com/safebrowsing/csd/killswitch", 5)); |
| 1517 if (test_case.test_list_name == kCsdWhiteList) { | 1549 if (test_case.test_list_name == kCsdWhiteList) { |
| 1518 chunks.push_back(SubChunkFullHashValue( | 1550 chunks.push_back(SubChunkFullHashValue( |
| 1519 10, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware", 15)); | 1551 10, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware", 15)); |
| 1520 } | 1552 } |
| 1521 | 1553 |
| 1522 ASSERT_TRUE(database_->UpdateStarted(&lists)); | 1554 ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| 1523 database_->InsertChunks(test_case.test_list_name, chunks); | 1555 database_->InsertChunks(test_case.test_list_name, chunks); |
| 1524 database_->UpdateFinished(true); | 1556 database_->UpdateFinished(true); |
| 1525 | 1557 |
| 1526 if (test_case.test_list_name == kCsdWhiteList) { | 1558 if (test_case.test_list_name == kCsdWhiteList) { |
| 1527 EXPECT_FALSE(database_->IsMalwareIPMatchKillSwitchOn()); | 1559 EXPECT_FALSE(database_->IsMalwareIPMatchKillSwitchOn()); |
| 1528 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); | 1560 EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| 1529 } | 1561 } |
| 1530 EXPECT_TRUE( | 1562 if (test_case.TestUrls()) { |
| 1531 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1563 EXPECT_TRUE( |
| 1532 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); | 1564 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1533 EXPECT_TRUE( | 1565 GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| 1534 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1566 EXPECT_TRUE( |
| 1535 GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); | 1567 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1536 EXPECT_TRUE( | 1568 GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); |
| 1537 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1569 EXPECT_TRUE( |
| 1538 GURL(std::string("https://") + kGood3Url1))); | 1570 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1539 EXPECT_FALSE( | 1571 GURL(std::string("https://") + kGood3Url1))); |
| 1540 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1572 EXPECT_FALSE( |
| 1541 GURL(std::string("http://www.google.com/")))); | 1573 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1542 EXPECT_FALSE( | 1574 GURL(std::string("http://www.google.com/")))); |
| 1543 (database_.get()->*test_case.test_list_contains_whitelisted_url)( | 1575 EXPECT_FALSE( |
| 1544 GURL(std::string("http://www.phishing_url.com/")))); | 1576 (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| 1577 GURL(std::string("http://www.phishing_url.com/")))); |
| 1578 } |
| 1545 if (test_case.TestStrings()) { | 1579 if (test_case.TestStrings()) { |
| 1546 EXPECT_TRUE( | 1580 EXPECT_TRUE( |
| 1547 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | 1581 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1548 kGoodString)); | 1582 kGoodString)); |
| 1549 EXPECT_FALSE( | 1583 EXPECT_FALSE( |
| 1550 (database_.get()->*test_case.test_list_contains_whitelisted_string)( | 1584 (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| 1551 "asdf")); | 1585 "asdf")); |
| 1552 } | 1586 } |
| 1553 } | 1587 } |
| 1554 } | 1588 } |
| (...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2277 ASSERT_EQ(1U, prefix_hits.size()); | 2311 ASSERT_EQ(1U, prefix_hits.size()); |
| 2278 EXPECT_EQ(SBPrefixForString(kExampleCollision), prefix_hits[0]); | 2312 EXPECT_EQ(SBPrefixForString(kExampleCollision), prefix_hits[0]); |
| 2279 EXPECT_TRUE(cache_hits.empty()); | 2313 EXPECT_TRUE(cache_hits.empty()); |
| 2280 | 2314 |
| 2281 // This prefix collides, but no full hash match. | 2315 // This prefix collides, but no full hash match. |
| 2282 EXPECT_FALSE(database_->ContainsBrowseUrl( | 2316 EXPECT_FALSE(database_->ContainsBrowseUrl( |
| 2283 GURL(std::string("http://") + kExampleFine), &prefix_hits, &cache_hits)); | 2317 GURL(std::string("http://") + kExampleFine), &prefix_hits, &cache_hits)); |
| 2284 } | 2318 } |
| 2285 | 2319 |
| 2286 } // namespace safe_browsing | 2320 } // namespace safe_browsing |
| OLD | NEW |