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

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

Issue 1638223003: Add support for a module whitelist (goog-whitemodule-digest256) to the safe browsing db (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix browser test Created 4 years, 10 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 <stddef.h> 9 #include <stddef.h>
10 #include <utility> 10 #include <utility>
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698