Chromium Code Reviews| Index: chrome/browser/safe_browsing/safe_browsing_database_unittest.cc |
| diff --git a/chrome/browser/safe_browsing/safe_browsing_database_unittest.cc b/chrome/browser/safe_browsing/safe_browsing_database_unittest.cc |
| index f2f920a415f9bcf7cc0d55db7109e2cc24e52d7a..da22104e9307cd0dc5c175184de8fdc9bfccdf55 100644 |
| --- a/chrome/browser/safe_browsing/safe_browsing_database_unittest.cc |
| +++ b/chrome/browser/safe_browsing/safe_browsing_database_unittest.cc |
| @@ -278,6 +278,8 @@ class SafeBrowsingDatabaseTest : public PlatformTest { |
| SafeBrowsingStoreFile* csd_whitelist_store = new SafeBrowsingStoreFile(); |
| SafeBrowsingStoreFile* download_whitelist_store = |
| new SafeBrowsingStoreFile(); |
| + SafeBrowsingStoreFile* inclusion_whitelist_store = |
| + new SafeBrowsingStoreFile(); |
| SafeBrowsingStoreFile* extension_blacklist_store = |
| new SafeBrowsingStoreFile(); |
| SafeBrowsingStoreFile* side_effect_free_whitelist_store = |
| @@ -290,6 +292,7 @@ class SafeBrowsingDatabaseTest : public PlatformTest { |
| download_store, |
| csd_whitelist_store, |
| download_whitelist_store, |
| + inclusion_whitelist_store, |
| extension_blacklist_store, |
| side_effect_free_whitelist_store, |
| ip_blacklist_store, |
| @@ -333,7 +336,7 @@ class SafeBrowsingDatabaseTest : public PlatformTest { |
| }; |
| // Tests retrieving list name information. |
| -TEST_F(SafeBrowsingDatabaseTest, ListNameForBrowse) { |
| +TEST_F(SafeBrowsingDatabaseTest, BrowseListsInfo) { |
| std::vector<SBListChunkRanges> lists; |
| ScopedVector<SBChunkData> chunks; |
| @@ -395,7 +398,7 @@ TEST_F(SafeBrowsingDatabaseTest, ListNameForBrowse) { |
| EXPECT_EQ("200-201", lists[1].subs); |
| } |
| -TEST_F(SafeBrowsingDatabaseTest, ListNameForBrowseAndDownload) { |
| +TEST_F(SafeBrowsingDatabaseTest, ListNames) { |
| ScopedVector<SBChunkData> chunks; |
| std::vector<SBListChunkRanges> lists; |
| @@ -422,6 +425,11 @@ TEST_F(SafeBrowsingDatabaseTest, ListNameForBrowseAndDownload) { |
| database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, chunks.get()); |
| chunks.clear(); |
| + chunks.push_back(AddChunkFullHashValue(7, "www.inclusion.com/")); |
| + database_->InsertChunks(safe_browsing_util::kInclusionWhitelist, |
| + chunks.get()); |
| + |
| + chunks.clear(); |
| chunks.push_back(AddChunkFullHashValue(8, |
| "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" |
| "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); |
| @@ -429,17 +437,22 @@ TEST_F(SafeBrowsingDatabaseTest, ListNameForBrowseAndDownload) { |
| chunks.get()); |
| chunks.clear(); |
| - chunks.push_back(AddChunkHashedIpValue(9, "::ffff:192.168.1.0", 120)); |
| + chunks.push_back(AddChunkFullHashValue(9, "www.sideeffectfree.com")); |
| + database_->InsertChunks(safe_browsing_util::kSideEffectFreeWhitelist, |
| + chunks.get()); |
| + |
| + chunks.clear(); |
| + chunks.push_back(AddChunkHashedIpValue(10, "::ffff:192.168.1.0", 120)); |
| database_->InsertChunks(safe_browsing_util::kIPBlacklist, chunks.get()); |
| chunks.clear(); |
| - chunks.push_back(AddChunkPrefixValue(10, "www.unwanted.com/software.html")); |
| + chunks.push_back(AddChunkPrefixValue(11, "www.unwanted.com/software.html")); |
| database_->InsertChunks(safe_browsing_util::kUnwantedUrlList, chunks.get()); |
| database_->UpdateFinished(true); |
| GetListsInfo(&lists); |
| - ASSERT_EQ(9U, lists.size()); |
| + ASSERT_EQ(10U, lists.size()); |
| EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name); |
| EXPECT_EQ("1", lists[0].adds); |
| EXPECT_TRUE(lists[0].subs.empty()); |
| @@ -455,15 +468,21 @@ TEST_F(SafeBrowsingDatabaseTest, ListNameForBrowseAndDownload) { |
| EXPECT_EQ(safe_browsing_util::kDownloadWhiteList, lists[4].name); |
| EXPECT_EQ("6", lists[4].adds); |
| EXPECT_TRUE(lists[4].subs.empty()); |
| - EXPECT_EQ(safe_browsing_util::kExtensionBlacklist, lists[5].name); |
| - EXPECT_EQ("8", lists[5].adds); |
| + EXPECT_EQ(safe_browsing_util::kInclusionWhitelist, lists[5].name); |
| + EXPECT_EQ("7", lists[5].adds); |
| EXPECT_TRUE(lists[5].subs.empty()); |
| - EXPECT_EQ(safe_browsing_util::kIPBlacklist, lists[7].name); |
| + EXPECT_EQ(safe_browsing_util::kExtensionBlacklist, lists[6].name); |
| + EXPECT_EQ("8", lists[6].adds); |
| + EXPECT_TRUE(lists[6].subs.empty()); |
| + EXPECT_EQ(safe_browsing_util::kSideEffectFreeWhitelist, lists[7].name); |
| EXPECT_EQ("9", lists[7].adds); |
| EXPECT_TRUE(lists[7].subs.empty()); |
| - EXPECT_EQ(safe_browsing_util::kUnwantedUrlList, lists[8].name); |
| + EXPECT_EQ(safe_browsing_util::kIPBlacklist, lists[8].name); |
| EXPECT_EQ("10", lists[8].adds); |
| EXPECT_TRUE(lists[8].subs.empty()); |
| + EXPECT_EQ(safe_browsing_util::kUnwantedUrlList, lists[9].name); |
| + EXPECT_EQ("11", lists[9].adds); |
| + EXPECT_TRUE(lists[9].subs.empty()); |
| database_.reset(); |
| } |
| @@ -484,7 +503,7 @@ TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) { |
| &SafeBrowsingDatabase::ContainsBrowseUrl }, |
| { safe_browsing_util::kPhishingList, 1U, |
| &SafeBrowsingDatabase::ContainsBrowseUrl }, |
| - { safe_browsing_util::kUnwantedUrlList, 8U, |
| + { safe_browsing_util::kUnwantedUrlList, 9U, |
| &SafeBrowsingDatabase::ContainsUnwantedSoftwareUrl }, |
| }; |
| @@ -1098,7 +1117,7 @@ TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) { |
| base::MessageLoop loop; |
| SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(); |
| database_.reset(new SafeBrowsingDatabaseNew(store, NULL, NULL, NULL, NULL, |
| - NULL, NULL, NULL)); |
| + NULL, NULL, NULL, NULL)); |
| database_->Init(database_filename_); |
| // This will cause an empty database to be created. |
| @@ -1241,182 +1260,261 @@ TEST_F(SafeBrowsingDatabaseTest, ContainsDownloadUrl) { |
| // Checks that the whitelists are handled properly. |
| TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
| + struct TestCase { |
| + using TestListContainsWhitelistedUrl = |
| + bool (SafeBrowsingDatabase::*)(const GURL& url); |
| + using TestListContainsWhitelistedString = |
| + bool (SafeBrowsingDatabase::*)(const std::string& str); |
| + |
| + // Returns true if strings should be tested in this test case (i.e. |
| + // |test_list_contains_whitelisted_string| is not null). |
| + bool TestStrings() const { |
| + return test_list_contains_whitelisted_string != nullptr; |
| + } |
| + |
| + const char* test_list_name; |
| + TestListContainsWhitelistedUrl test_list_contains_whitelisted_url; |
| + // Optional test case field, if set the tested whitelist will also be tested |
| + // for strings. |
| + TestListContainsWhitelistedString test_list_contains_whitelisted_string; |
| + } const kTestCases[]{ |
| + {safe_browsing_util::kCsdWhiteList, |
| + &SafeBrowsingDatabase::ContainsCsdWhitelistedUrl, |
| + nullptr}, |
| + {safe_browsing_util::kDownloadWhiteList, |
| + &SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl, |
| + &SafeBrowsingDatabase::ContainsDownloadWhitelistedString}, |
| + {safe_browsing_util::kInclusionWhitelist, |
| + &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl, |
| + nullptr}, |
| + }; |
| + |
| // If the whitelist is disabled everything should match the whitelist. |
| - database_.reset(new SafeBrowsingDatabaseNew(new SafeBrowsingStoreFile(), |
| + database_.reset(new SafeBrowsingDatabaseNew(new SafeBrowsingStoreFile(), NULL, |
| NULL, NULL, NULL, NULL, NULL, |
| NULL, NULL)); |
| database_->Init(database_filename_); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://www.phishing.com/")))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://www.phishing.com/")))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedString("asdf")); |
| + for (const auto& test_case : kTestCases) { |
| + SCOPED_TRACE(std::string("Tested list at fault => ") + |
| + test_case.test_list_name); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://www.phishing.com/")))); |
| + if (test_case.TestStrings()) { |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| + "asdf")); |
| + } |
| + } |
| ResetAndReloadFullDatabase(); |
| - const char kGood1Host[] = "www.good1.com/"; |
| - const char kGood1Url1[] = "www.good1.com/a/b.html"; |
| - const char kGood1Url2[] = "www.good1.com/b/"; |
| - |
| - const char kGood2Url1[] = "www.good2.com/c"; // Should match '/c/bla'. |
| - |
| - // good3.com/a/b/c/d/e/f/g/ should match because it's a whitelist. |
| - const char kGood3Url1[] = "good3.com/"; |
| - |
| - const char kGoodString[] = "good_string"; |
| - |
| - ScopedVector<SBChunkData> csd_chunks; |
| - ScopedVector<SBChunkData> download_chunks; |
| - |
| - // Add two simple chunks to the csd whitelist. |
| - csd_chunks.push_back(AddChunkFullHash2Value(1, kGood1Url1, kGood1Url2)); |
| - csd_chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); |
| - download_chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); |
| - download_chunks.push_back(AddChunkFullHashValue(3, kGoodString)); |
| - download_chunks.push_back(AddChunkFullHashValue(4, kGood3Url1)); |
| - |
| - std::vector<SBListChunkRanges> lists; |
| - ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| - database_->InsertChunks(safe_browsing_util::kCsdWhiteList, csd_chunks.get()); |
| - database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, |
| - download_chunks.get()); |
| - database_->UpdateFinished(true); |
| - |
| - EXPECT_FALSE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://") + kGood1Host))); |
| - |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://") + kGood1Url1))); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://") + kGood1Url1 + "?a=b"))); |
| - |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://") + kGood1Url2))); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://") + kGood1Url2 + "/c.html"))); |
| + // Now test every whitelist one-by-one; intentionally not resetting the |
| + // database in-between to further stress potential inter-dependencies. |
| + for (const auto& test_case : kTestCases) { |
| + SCOPED_TRACE(std::string("Tested list at fault => ") + |
| + test_case.test_list_name); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| + const char kGood1Host[] = "www.good1.com/"; |
| + const char kGood1Url1[] = "www.good1.com/a/b.html"; |
| + const char kGood1Url2[] = "www.good1.com/b/"; |
| + |
| + const char kGood2Url1[] = "www.good2.com/c"; // Should match '/c/bla'. |
| + |
| + // good3.com/a/b/c/d/e/f/g/ should match because it's a whitelist. |
| + const char kGood3Url1[] = "good3.com/"; |
| + |
| + const char kGoodString[] = "good_string"; |
| + |
| + // Nothing should be whitelisted before the database receives the chunks. |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood1Host))); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood1Url1))); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood1Url2))); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood2Url1))); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood3Url1))); |
| + if (test_case.TestStrings()) { |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| + kGoodString)); |
| + } |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://") + kGood2Url1 + "/c"))); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); |
| + ScopedVector<SBChunkData> chunks; |
| - EXPECT_FALSE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://www.google.com/")))); |
| + // 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.
|
| + chunks.push_back(AddChunkFullHash2Value(1, kGood1Url1, kGood1Url2)); |
| + chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); |
| + if (test_case.TestStrings()) |
| + chunks.push_back(AddChunkFullHashValue(3, kGoodString)); |
| + chunks.push_back(AddChunkFullHashValue(4, kGood3Url1)); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://") + kGood2Url1 + "/c"))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); |
| + std::vector<SBListChunkRanges> lists; |
| + ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| + database_->InsertChunks(test_case.test_list_name, chunks.get()); |
| + database_->UpdateFinished(true); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://good3.com/a/b/c/d/e/f/g/")))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://a.b.good3.com/")))); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood1Host))); |
| + |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood1Url1))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood1Url1 + "?a=b"))); |
| + |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood1Url2))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood1Url2 + "/c.html"))); |
| + |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| + |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood2Url1 + "/c"))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); |
| + |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://www.google.com/")))); |
| + |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://") + kGood3Url1 + "a/b/c/d/e/f/g/"))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://a.b.") + kGood3Url1))); |
| + |
| + if (test_case.TestStrings()) { |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| + "asdf")); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| + kGoodString)); |
| + } |
| - EXPECT_FALSE(database_->ContainsDownloadWhitelistedString("asdf")); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedString(kGoodString)); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://www.google.com/")))); |
| - EXPECT_FALSE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://www.google.com/")))); |
| + // The malware kill switch is for the CSD whitelist only. |
| + if (test_case.test_list_name == safe_browsing_util::kCsdWhiteList) { |
| + // The CSD whitelist killswitch is not present. |
| + EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| - // The CSD whitelist killswitch is not present. |
| - EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| + // Test only add the malware IP killswitch |
| + chunks.clear(); |
| + chunks.push_back(AddChunkFullHashValue( |
| + 15, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware")); |
| - // Test only add the malware IP killswitch |
| - csd_chunks.clear(); |
| - csd_chunks.push_back(AddChunkFullHashValue( |
| - 15, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware")); |
| + ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| + database_->InsertChunks(safe_browsing_util::kCsdWhiteList, chunks.get()); |
| + database_->UpdateFinished(true); |
| - ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| - database_->InsertChunks(safe_browsing_util::kCsdWhiteList, csd_chunks.get()); |
| - database_->UpdateFinished(true); |
| + EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); |
| + // The CSD whitelist killswitch is not present. |
| + EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| + } |
| - EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); |
| - // The CSD whitelist killswitch is not present. |
| - EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| + // Test that the generic whitelist kill-switch works as intended. |
| + chunks.clear(); |
| + lists.clear(); |
| + chunks.push_back(AddChunkFullHashValue( |
| + 5, "sb-ssl.google.com/safebrowsing/csd/killswitch")); |
| - // Test that the kill-switch works as intended. |
| - csd_chunks.clear(); |
| - download_chunks.clear(); |
| - lists.clear(); |
| - csd_chunks.push_back(AddChunkFullHashValue( |
| - 5, "sb-ssl.google.com/safebrowsing/csd/killswitch")); |
| - download_chunks.push_back(AddChunkFullHashValue( |
| - 5, "sb-ssl.google.com/safebrowsing/csd/killswitch")); |
| + ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| + database_->InsertChunks(test_case.test_list_name, chunks.get()); |
| + database_->UpdateFinished(true); |
| - ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| - database_->InsertChunks(safe_browsing_util::kCsdWhiteList, csd_chunks.get()); |
| - database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, |
| - download_chunks.get()); |
| - database_->UpdateFinished(true); |
| + // Test CSD whitelist specific methods. |
| + if (test_case.test_list_name == safe_browsing_util::kCsdWhiteList) { |
| + // The CSD whitelist killswitch is present. |
| + EXPECT_TRUE(database_->IsCsdWhitelistKillSwitchOn()); |
| + EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); |
| + } |
| - // The CSD whitelist killswitch is present. |
| - EXPECT_TRUE(database_->IsCsdWhitelistKillSwitchOn()); |
| - EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://www.google.com/")))); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://www.phishing_url.com/")))); |
| - |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://www.google.com/")))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://www.phishing_url.com/")))); |
| - |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedString("asdf")); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedString(kGoodString)); |
| - |
| - // Remove the kill-switch and verify that we can recover. |
| - csd_chunks.clear(); |
| - download_chunks.clear(); |
| - lists.clear(); |
| - csd_chunks.push_back(SubChunkFullHashValue( |
| - 1, "sb-ssl.google.com/safebrowsing/csd/killswitch", 5)); |
| - csd_chunks.push_back(SubChunkFullHashValue( |
| - 10, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware", 15)); |
| - download_chunks.push_back(SubChunkFullHashValue( |
| - 1, "sb-ssl.google.com/safebrowsing/csd/killswitch", 5)); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://www.google.com/")))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://www.phishing_url.com/")))); |
| + |
| + if (test_case.TestStrings()) { |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| + "asdf")); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| + kGoodString)); |
| + } |
| - ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| - database_->InsertChunks(safe_browsing_util::kCsdWhiteList, csd_chunks.get()); |
| - database_->InsertChunks(safe_browsing_util::kDownloadWhiteList, |
| - download_chunks.get()); |
| - database_->UpdateFinished(true); |
| + // Remove the kill-switch and verify that we can recover. |
| + chunks.clear(); |
| + lists.clear(); |
| + chunks.push_back(SubChunkFullHashValue( |
| + 1, "sb-ssl.google.com/safebrowsing/csd/killswitch", 5)); |
| + if (test_case.test_list_name == safe_browsing_util::kCsdWhiteList) { |
| + chunks.push_back(SubChunkFullHashValue( |
| + 10, "sb-ssl.google.com/safebrowsing/csd/killswitch_malware", 15)); |
| + } |
| - EXPECT_FALSE(database_->IsMalwareIPMatchKillSwitchOn()); |
| - EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| - EXPECT_TRUE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); |
| - EXPECT_FALSE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://www.google.com/")))); |
| - EXPECT_FALSE(database_->ContainsCsdWhitelistedUrl( |
| - GURL(std::string("http://www.phishing_url.com/")))); |
| - |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("https://good3.com/")))); |
| - EXPECT_TRUE(database_->ContainsDownloadWhitelistedString(kGoodString)); |
| - EXPECT_FALSE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://www.google.com/")))); |
| - EXPECT_FALSE(database_->ContainsDownloadWhitelistedUrl( |
| - GURL(std::string("http://www.phishing_url.com/")))); |
| - EXPECT_FALSE(database_->ContainsDownloadWhitelistedString("asdf")); |
| + ASSERT_TRUE(database_->UpdateStarted(&lists)); |
| + database_->InsertChunks(test_case.test_list_name, chunks.get()); |
| + database_->UpdateFinished(true); |
| - database_.reset(); |
| + if (test_case.test_list_name == safe_browsing_util::kCsdWhiteList) { |
| + EXPECT_FALSE(database_->IsMalwareIPMatchKillSwitchOn()); |
| + EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
| + } |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("https://") + kGood3Url1))); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://www.google.com/")))); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
| + GURL(std::string("http://www.phishing_url.com/")))); |
| + if (test_case.TestStrings()) { |
| + EXPECT_TRUE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| + kGoodString)); |
| + EXPECT_FALSE( |
| + (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
| + "asdf")); |
| + } |
| + } |
| } |
| // Test to make sure we could insert chunk list that |