| 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
|
|
|