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

Unified Diff: components/safe_browsing_db/v4_local_database_manager_unittest.cc

Issue 2890293004: Add the ability to check the CSD Whitelist asynchronously, for PhishGuard. (Closed)
Patch Set: Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: components/safe_browsing_db/v4_local_database_manager_unittest.cc
diff --git a/components/safe_browsing_db/v4_local_database_manager_unittest.cc b/components/safe_browsing_db/v4_local_database_manager_unittest.cc
index 34cb4ac58871df20b2c77da5b3781a504867ff23..5f3359f3027e8eb43dd3f9db54a9066f1d9aad5e 100644
--- a/components/safe_browsing_db/v4_local_database_manager_unittest.cc
+++ b/components/safe_browsing_db/v4_local_database_manager_unittest.cc
@@ -426,6 +426,80 @@ TEST_F(V4LocalDatabaseManagerTest, TestCheckBrowseUrlWithFakeDbReturnsMatch) {
WaitForTasksOnTaskRunner();
}
+TEST_F(V4LocalDatabaseManagerTest, TestCheckCsdWhitelistWithPrefixMatch) {
+ WaitForTasksOnTaskRunner();
+ net::TestURLFetcherFactory factory;
+
+ std::string url_white_no_scheme("example.com/white/");
+ FullHash white_full_hash(crypto::SHA256HashString(url_white_no_scheme));
+ const HashPrefix white_hash_prefix(white_full_hash.substr(0, 5));
+ StoreAndHashPrefixes store_and_hash_prefixes;
+ store_and_hash_prefixes.emplace_back(GetUrlMalwareId(), white_hash_prefix);
+ ReplaceV4Database(store_and_hash_prefixes, true /* stores_available */);
+
+ const GURL url_check("https://" + url_white_no_scheme);
+ EXPECT_EQ(AsyncMatch::ASYNC, v4_local_database_manager_->CheckCsdWhitelistUrl(
vakh (use Gerrit instead) 2017/05/24 16:01:17 Either I am reading this incorrectly, or there's a
Nathan Parker 2017/05/31 23:40:11 Huh! Ah -- found a missing check in the fake GetS
+ url_check, nullptr));
+
+ // Wait for PerformFullHashCheck to complete.
+ WaitForTasksOnTaskRunner();
+ // TODO(nparker): Verify full-hash-check fired?
vakh (use Gerrit instead) 2017/05/24 16:01:17 For the TODO, you could use the TestClient to veri
Nathan Parker 2017/05/31 23:40:11 Good idea -- this also check that the callback is
+}
+
+TEST_F(V4LocalDatabaseManagerTest, TestCheckCsdWhitelistWithFullMatch) {
+ WaitForTasksOnTaskRunner();
+ net::TestURLFetcherFactory factory;
+
+ std::string url_white_no_scheme("example.com/white/");
+ FullHash white_full_hash(crypto::SHA256HashString(url_white_no_scheme));
+ StoreAndHashPrefixes store_and_hash_prefixes;
+ store_and_hash_prefixes.emplace_back(GetUrlMalwareId(), white_full_hash);
+ ReplaceV4Database(store_and_hash_prefixes, true /* stores_available */);
+
+ const GURL url_check("https://" + url_white_no_scheme);
+ EXPECT_EQ(AsyncMatch::MATCH, v4_local_database_manager_->CheckCsdWhitelistUrl(
+ url_check, nullptr));
+
+ // TODO(nparker): Verify no hash-check was scheduled.
+ WaitForTasksOnTaskRunner();
+}
+
+TEST_F(V4LocalDatabaseManagerTest, TestCheckCsdWhitelistWithNoMatch) {
+ WaitForTasksOnTaskRunner();
+ net::TestURLFetcherFactory factory;
+
+ // Add a full hash that won't match the URL we check.
+ std::string url_white_no_scheme("example.com/white/");
+ FullHash white_full_hash(crypto::SHA256HashString(url_white_no_scheme));
+ StoreAndHashPrefixes store_and_hash_prefixes;
+ store_and_hash_prefixes.emplace_back(GetUrlMalwareId(), white_full_hash);
+ ReplaceV4Database(store_and_hash_prefixes, true /* stores_available */);
+
+ const GURL url_check("https://other.com/");
+ EXPECT_EQ(
+ AsyncMatch::NO_MATCH,
+ v4_local_database_manager_->CheckCsdWhitelistUrl(url_check, nullptr));
+
+ // TODO(nparker): Verify no hash-check was scheduled.
+ WaitForTasksOnTaskRunner();
+}
+
+// When whitelist is unavailable, all URLS should be whitelisted.
+TEST_F(V4LocalDatabaseManagerTest, TestCheckCsdWhitelistUnavailable) {
+ WaitForTasksOnTaskRunner();
+ net::TestURLFetcherFactory factory;
+
+ StoreAndHashPrefixes store_and_hash_prefixes;
+ ReplaceV4Database(store_and_hash_prefixes, false /* stores_available */);
+
+ const GURL url_check("https://other.com/");
+ EXPECT_EQ(AsyncMatch::MATCH, v4_local_database_manager_->CheckCsdWhitelistUrl(
+ url_check, nullptr));
+
+ // TODO(nparker): Verify no hash-check was scheduled.
+ WaitForTasksOnTaskRunner();
+}
+
TEST_F(V4LocalDatabaseManagerTest,
TestCheckBrowseUrlReturnsNoMatchWhenDisabled) {
WaitForTasksOnTaskRunner();

Powered by Google App Engine
This is Rietveld 408576698