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

Unified Diff: components/safe_browsing_db/v4_local_database_manager_unittest.cc

Issue 2225613002: V4LDM: Add check for HashPrefix match and some tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move declaration of stores_to_look close to site of use. Created 4 years, 4 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
« no previous file with comments | « components/safe_browsing_db/v4_local_database_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
new file mode 100644
index 0000000000000000000000000000000000000000..d8f3a3c317bf983dcae56f5948a53713405651ec
--- /dev/null
+++ b/components/safe_browsing_db/v4_local_database_manager_unittest.cc
@@ -0,0 +1,136 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/files/scoped_temp_dir.h"
+#include "base/memory/ptr_util.h"
+#include "base/memory/ref_counted.h"
+#include "base/run_loop.h"
+#include "base/test/test_simple_task_runner.h"
+#include "components/safe_browsing_db/v4_database.h"
+#include "components/safe_browsing_db/v4_local_database_manager.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "testing/platform_test.h"
+
+namespace safe_browsing {
+
+class FakeV4Database : public V4Database {
+ public:
+ FakeV4Database(const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
+ std::unique_ptr<StoreMap> store_map,
+ const MatchedHashPrefixMap& matched_hash_prefix_map)
+ : V4Database(db_task_runner, std::move(store_map)),
+ matched_hash_prefix_map_(matched_hash_prefix_map) {}
+
+ void GetStoresMatchingFullHash(
+ const FullHash& full_hash,
+ const base::hash_set<UpdateListIdentifier>& stores_to_look,
+ MatchedHashPrefixMap* matched_hash_prefix_map) override {
+ *matched_hash_prefix_map = matched_hash_prefix_map_;
+ }
+
+ private:
+ const MatchedHashPrefixMap& matched_hash_prefix_map_;
+};
+
+class V4LocalDatabaseManagerTest : public PlatformTest {
+ public:
+ V4LocalDatabaseManagerTest() : task_runner_(new base::TestSimpleTaskRunner) {}
+
+ void SetUp() override {
+ PlatformTest::SetUp();
+
+ ASSERT_TRUE(base_dir_.CreateUniqueTempDir());
+ DVLOG(1) << "base_dir_: " << base_dir_.path().value();
+
+ v4_local_database_manager_ =
+ make_scoped_refptr(new V4LocalDatabaseManager(base_dir_.path()));
+ v4_local_database_manager_->SetTaskRunnerForTest(task_runner_);
+
+ SetupLocalDatabaseManager();
+ }
+
+ void TearDown() override {
+ v4_local_database_manager_->StopOnIOThread(true);
+
+ // Force destruction of the database.
+ task_runner_->RunPendingTasks();
+ base::RunLoop().RunUntilIdle();
+
+ PlatformTest::TearDown();
+ }
+
+ void SetupLocalDatabaseManager() {
+ v4_local_database_manager_->StartOnIOThread(NULL, V4ProtocolConfig());
+
+ task_runner_->RunPendingTasks();
+ base::RunLoop().RunUntilIdle();
+ }
+
+ void ReplaceV4Database(const MatchedHashPrefixMap& matched_hash_prefix_map) {
+ v4_local_database_manager_->v4_database_.reset(new FakeV4Database(
+ task_runner_, base::MakeUnique<StoreMap>(), matched_hash_prefix_map));
+ }
+
+ void ForceDisableLocalDatabaseManager() {
+ v4_local_database_manager_->enabled_ = false;
+ }
+
+ base::ScopedTempDir base_dir_;
+ scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
+ content::TestBrowserThreadBundle thread_bundle_;
+ scoped_refptr<V4LocalDatabaseManager> v4_local_database_manager_;
+};
+
+TEST_F(V4LocalDatabaseManagerTest, TestGetThreatSource) {
+ EXPECT_EQ(ThreatSource::LOCAL_PVER4,
+ v4_local_database_manager_->GetThreatSource());
+}
+
+TEST_F(V4LocalDatabaseManagerTest, TestIsSupported) {
+ EXPECT_TRUE(v4_local_database_manager_->IsSupported());
+}
+
+TEST_F(V4LocalDatabaseManagerTest, TestCanCheckUrl) {
+ EXPECT_TRUE(
+ v4_local_database_manager_->CanCheckUrl(GURL("http://example.com/a/")));
+ EXPECT_TRUE(
+ v4_local_database_manager_->CanCheckUrl(GURL("https://example.com/a/")));
+ EXPECT_TRUE(
+ v4_local_database_manager_->CanCheckUrl(GURL("ftp://example.com/a/")));
+ EXPECT_FALSE(
+ v4_local_database_manager_->CanCheckUrl(GURL("adp://example.com/a/")));
+}
+
+TEST_F(V4LocalDatabaseManagerTest,
+ TestCheckBrowseUrlWithEmptyStoresReturnsNoMatch) {
+ // Both the stores are empty right now so CheckBrowseUrl should return true.
+ EXPECT_TRUE(v4_local_database_manager_->CheckBrowseUrl(
+ GURL("http://example.com/a/"), nullptr));
+}
+
+TEST_F(V4LocalDatabaseManagerTest, TestCheckBrowseUrlWithFakeDbReturnsMatch) {
+ MatchedHashPrefixMap matched_hash_prefix_map;
+ matched_hash_prefix_map[GetUrlMalwareId()] = HashPrefix("aaaa");
+ ReplaceV4Database(matched_hash_prefix_map);
+
+ // The fake database returns a matched hash prefix.
+ EXPECT_FALSE(v4_local_database_manager_->CheckBrowseUrl(
+ GURL("http://example.com/a/"), nullptr));
+}
+
+TEST_F(V4LocalDatabaseManagerTest,
+ TestCheckBrowseUrlReturnsNoMatchWhenDisabled) {
+ MatchedHashPrefixMap matched_hash_prefix_map;
+ matched_hash_prefix_map[GetUrlMalwareId()] = HashPrefix("aaaa");
+ ReplaceV4Database(matched_hash_prefix_map);
+
+ // The same URL returns |false| in the previous test because
+ // v4_local_database_manager_ is enabled.
+ ForceDisableLocalDatabaseManager();
+
+ EXPECT_TRUE(v4_local_database_manager_->CheckBrowseUrl(
+ GURL("http://example.com/a/"), nullptr));
+}
+
+} // namespace safe_browsing
« no previous file with comments | « components/safe_browsing_db/v4_local_database_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698