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

Side by Side Diff: components/safe_browsing_db/v4_local_database_manager_unittest.cc

Issue 2647323009: Add extended reporting level in the update request (Closed)
Patch Set: rebase Created 3 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "base/files/scoped_temp_dir.h" 5 #include "base/files/scoped_temp_dir.h"
6 #include "base/memory/ptr_util.h" 6 #include "base/memory/ptr_util.h"
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/test/test_simple_task_runner.h" 9 #include "base/test/test_simple_task_runner.h"
10 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
11 #include "components/safe_browsing_db/v4_database.h" 11 #include "components/safe_browsing_db/v4_database.h"
12 #include "components/safe_browsing_db/v4_local_database_manager.h" 12 #include "components/safe_browsing_db/v4_local_database_manager.h"
13 #include "components/safe_browsing_db/v4_test_util.h" 13 #include "components/safe_browsing_db/v4_test_util.h"
14 #include "content/public/test/test_browser_thread_bundle.h" 14 #include "content/public/test/test_browser_thread_bundle.h"
15 #include "crypto/sha2.h" 15 #include "crypto/sha2.h"
16 #include "net/url_request/test_url_fetcher_factory.h" 16 #include "net/url_request/test_url_fetcher_factory.h"
17 #include "testing/platform_test.h" 17 #include "testing/platform_test.h"
18 18
19 namespace safe_browsing { 19 namespace safe_browsing {
20 20
21 namespace { 21 namespace {
22 22
23 typedef base::Callback<void()> NullCallback;
24
23 // Utility function for populating hashes. 25 // Utility function for populating hashes.
24 FullHash HashForUrl(const GURL& url) { 26 FullHash HashForUrl(const GURL& url) {
25 std::vector<FullHash> full_hashes; 27 std::vector<FullHash> full_hashes;
26 V4ProtocolManagerUtil::UrlToFullHashes(url, &full_hashes); 28 V4ProtocolManagerUtil::UrlToFullHashes(url, &full_hashes);
27 // ASSERT_GE(full_hashes.size(), 1u); 29 // ASSERT_GE(full_hashes.size(), 1u);
28 return full_hashes[0]; 30 return full_hashes[0];
29 } 31 }
30 32
31 // Always returns misses from GetFullHashes(). 33 // Always returns misses from GetFullHashes().
32 class FakeGetHashProtocolManager : public V4GetHashProtocolManager { 34 class FakeGetHashProtocolManager : public V4GetHashProtocolManager {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 }; 183 };
182 184
183 class FakeV4LocalDatabaseManager : public V4LocalDatabaseManager { 185 class FakeV4LocalDatabaseManager : public V4LocalDatabaseManager {
184 public: 186 public:
185 void PerformFullHashCheck(std::unique_ptr<PendingCheck> check, 187 void PerformFullHashCheck(std::unique_ptr<PendingCheck> check,
186 const FullHashToStoreAndHashPrefixesMap& 188 const FullHashToStoreAndHashPrefixesMap&
187 full_hash_to_store_and_hash_prefixes) override { 189 full_hash_to_store_and_hash_prefixes) override {
188 perform_full_hash_check_called_ = true; 190 perform_full_hash_check_called_ = true;
189 } 191 }
190 192
191 FakeV4LocalDatabaseManager(const base::FilePath& base_path) 193 FakeV4LocalDatabaseManager(
192 : V4LocalDatabaseManager(base_path), 194 const base::FilePath& base_path,
195 ExtendedReportingLevelCallback extended_reporting_level_callback)
196 : V4LocalDatabaseManager(base_path, extended_reporting_level_callback),
193 perform_full_hash_check_called_(false) {} 197 perform_full_hash_check_called_(false) {}
194 198
195 static bool PerformFullHashCheckCalled( 199 static bool PerformFullHashCheckCalled(
196 scoped_refptr<safe_browsing::V4LocalDatabaseManager>& v4_ldbm) { 200 scoped_refptr<safe_browsing::V4LocalDatabaseManager>& v4_ldbm) {
197 FakeV4LocalDatabaseManager* fake = 201 FakeV4LocalDatabaseManager* fake =
198 static_cast<FakeV4LocalDatabaseManager*>(v4_ldbm.get()); 202 static_cast<FakeV4LocalDatabaseManager*>(v4_ldbm.get());
199 return fake->perform_full_hash_check_called_; 203 return fake->perform_full_hash_check_called_;
200 } 204 }
201 205
202 private: 206 private:
203 ~FakeV4LocalDatabaseManager() override {} 207 ~FakeV4LocalDatabaseManager() override {}
204 208
205 bool perform_full_hash_check_called_; 209 bool perform_full_hash_check_called_;
206 }; 210 };
207 211
208 class V4LocalDatabaseManagerTest : public PlatformTest { 212 class V4LocalDatabaseManagerTest : public PlatformTest {
209 public: 213 public:
210 V4LocalDatabaseManagerTest() : task_runner_(new base::TestSimpleTaskRunner) {} 214 V4LocalDatabaseManagerTest() : task_runner_(new base::TestSimpleTaskRunner) {}
211 215
212 void SetUp() override { 216 void SetUp() override {
213 PlatformTest::SetUp(); 217 PlatformTest::SetUp();
214 218
215 ASSERT_TRUE(base_dir_.CreateUniqueTempDir()); 219 ASSERT_TRUE(base_dir_.CreateUniqueTempDir());
216 DVLOG(1) << "base_dir_: " << base_dir_.GetPath().value(); 220 DVLOG(1) << "base_dir_: " << base_dir_.GetPath().value();
217 221
218 v4_local_database_manager_ = 222 extended_reporting_level_ = SBER_LEVEL_OFF;
219 make_scoped_refptr(new V4LocalDatabaseManager(base_dir_.GetPath())); 223 erl_callback_ =
224 base::Bind(&V4LocalDatabaseManagerTest::GetExtendedReportingLevel,
225 base::Unretained(this));
226
227 v4_local_database_manager_ = make_scoped_refptr(
228 new V4LocalDatabaseManager(base_dir_.GetPath(), erl_callback_));
220 SetTaskRunnerForTest(); 229 SetTaskRunnerForTest();
221 230
222 StartLocalDatabaseManager(); 231 StartLocalDatabaseManager();
223 } 232 }
224 233
225 void TearDown() override { 234 void TearDown() override {
226 StopLocalDatabaseManager(); 235 StopLocalDatabaseManager();
227 236
228 PlatformTest::TearDown(); 237 PlatformTest::TearDown();
229 } 238 }
230 239
231 void ForceDisableLocalDatabaseManager() { 240 void ForceDisableLocalDatabaseManager() {
232 v4_local_database_manager_->enabled_ = false; 241 v4_local_database_manager_->enabled_ = false;
233 } 242 }
234 243
235 void ForceEnableLocalDatabaseManager() { 244 void ForceEnableLocalDatabaseManager() {
236 v4_local_database_manager_->enabled_ = true; 245 v4_local_database_manager_->enabled_ = true;
237 } 246 }
238 247
239 const V4LocalDatabaseManager::QueuedChecks& GetQueuedChecks() { 248 const V4LocalDatabaseManager::QueuedChecks& GetQueuedChecks() {
240 return v4_local_database_manager_->queued_checks_; 249 return v4_local_database_manager_->queued_checks_;
241 } 250 }
242 251
252 ExtendedReportingLevel GetExtendedReportingLevel() {
253 return extended_reporting_level_;
254 }
255
243 void ReplaceV4Database(const StoreAndHashPrefixes& store_and_hash_prefixes, 256 void ReplaceV4Database(const StoreAndHashPrefixes& store_and_hash_prefixes,
244 bool stores_available = false) { 257 bool stores_available = false) {
245 // Disable the V4LocalDatabaseManager first so that if the callback to 258 // Disable the V4LocalDatabaseManager first so that if the callback to
246 // verify checksum has been scheduled, then it doesn't do anything when it 259 // verify checksum has been scheduled, then it doesn't do anything when it
247 // is called back. 260 // is called back.
248 ForceDisableLocalDatabaseManager(); 261 ForceDisableLocalDatabaseManager();
249 // Wait to make sure that the callback gets executed if it has already been 262 // Wait to make sure that the callback gets executed if it has already been
250 // scheduled. 263 // scheduled.
251 WaitForTasksOnTaskRunner(); 264 WaitForTasksOnTaskRunner();
252 // Re-enable the V4LocalDatabaseManager otherwise the checks won't work and 265 // Re-enable the V4LocalDatabaseManager otherwise the checks won't work and
253 // the fake database won't be set either. 266 // the fake database won't be set either.
254 ForceEnableLocalDatabaseManager(); 267 ForceEnableLocalDatabaseManager();
255 268
256 NewDatabaseReadyCallback db_ready_callback = 269 NewDatabaseReadyCallback db_ready_callback =
257 base::Bind(&V4LocalDatabaseManager::DatabaseReadyForChecks, 270 base::Bind(&V4LocalDatabaseManager::DatabaseReadyForChecks,
258 base::Unretained(v4_local_database_manager_.get())); 271 base::Unretained(v4_local_database_manager_.get()));
259 FakeV4Database::Create(task_runner_, base::MakeUnique<StoreMap>(), 272 FakeV4Database::Create(task_runner_, base::MakeUnique<StoreMap>(),
260 store_and_hash_prefixes, db_ready_callback, 273 store_and_hash_prefixes, db_ready_callback,
261 stores_available); 274 stores_available);
262 WaitForTasksOnTaskRunner(); 275 WaitForTasksOnTaskRunner();
263 } 276 }
264 277
265 void ResetLocalDatabaseManager() { 278 void ResetLocalDatabaseManager() {
266 StopLocalDatabaseManager(); 279 StopLocalDatabaseManager();
267 v4_local_database_manager_ = 280 v4_local_database_manager_ = make_scoped_refptr(
268 make_scoped_refptr(new V4LocalDatabaseManager(base_dir_.GetPath())); 281 new V4LocalDatabaseManager(base_dir_.GetPath(), erl_callback_));
269 SetTaskRunnerForTest(); 282 SetTaskRunnerForTest();
270 StartLocalDatabaseManager(); 283 StartLocalDatabaseManager();
271 } 284 }
272 285
273 void ResetV4Database() { 286 void ResetV4Database() {
274 V4Database::Destroy(std::move(v4_local_database_manager_->v4_database_)); 287 V4Database::Destroy(std::move(v4_local_database_manager_->v4_database_));
275 } 288 }
276 289
277 void SetTaskRunnerForTest() { 290 void SetTaskRunnerForTest() {
278 v4_local_database_manager_->SetTaskRunnerForTest(task_runner_); 291 v4_local_database_manager_->SetTaskRunnerForTest(task_runner_);
(...skipping 18 matching lines...) Expand all
297 // V4LocalDatabaseManager has read the data from disk. 310 // V4LocalDatabaseManager has read the data from disk.
298 task_runner_->RunPendingTasks(); 311 task_runner_->RunPendingTasks();
299 base::RunLoop().RunUntilIdle(); 312 base::RunLoop().RunUntilIdle();
300 } 313 }
301 314
302 // For those tests that need the fake manager 315 // For those tests that need the fake manager
303 void SetupFakeManager() { 316 void SetupFakeManager() {
304 // StopLocalDatabaseManager before resetting it because that's what 317 // StopLocalDatabaseManager before resetting it because that's what
305 // ~V4LocalDatabaseManager expects. 318 // ~V4LocalDatabaseManager expects.
306 StopLocalDatabaseManager(); 319 StopLocalDatabaseManager();
307 v4_local_database_manager_ = 320 v4_local_database_manager_ = make_scoped_refptr(
308 make_scoped_refptr(new FakeV4LocalDatabaseManager(base_dir_.GetPath())); 321 new FakeV4LocalDatabaseManager(base_dir_.GetPath(), erl_callback_));
309 SetTaskRunnerForTest(); 322 SetTaskRunnerForTest();
310 StartLocalDatabaseManager(); 323 StartLocalDatabaseManager();
311 WaitForTasksOnTaskRunner(); 324 WaitForTasksOnTaskRunner();
312 } 325 }
313 326
314 base::ScopedTempDir base_dir_; 327 base::ScopedTempDir base_dir_;
328 ExtendedReportingLevel extended_reporting_level_;
329 ExtendedReportingLevelCallback erl_callback_;
315 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 330 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
316 content::TestBrowserThreadBundle thread_bundle_; 331 content::TestBrowserThreadBundle thread_bundle_;
317 scoped_refptr<V4LocalDatabaseManager> v4_local_database_manager_; 332 scoped_refptr<V4LocalDatabaseManager> v4_local_database_manager_;
318 }; 333 };
319 334
320 TEST_F(V4LocalDatabaseManagerTest, TestGetThreatSource) { 335 TEST_F(V4LocalDatabaseManagerTest, TestGetThreatSource) {
321 WaitForTasksOnTaskRunner(); 336 WaitForTasksOnTaskRunner();
322 EXPECT_EQ(ThreatSource::LOCAL_PVER4, 337 EXPECT_EQ(ThreatSource::LOCAL_PVER4,
323 v4_local_database_manager_->GetThreatSource()); 338 v4_local_database_manager_->GetThreatSource());
324 } 339 }
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 EXPECT_FALSE(client.on_check_resource_url_result_called_); 730 EXPECT_FALSE(client.on_check_resource_url_result_called_);
716 WaitForTasksOnTaskRunner(); 731 WaitForTasksOnTaskRunner();
717 EXPECT_TRUE(client.on_check_resource_url_result_called_); 732 EXPECT_TRUE(client.on_check_resource_url_result_called_);
718 } 733 }
719 734
720 // TODO(nparker): Add tests for 735 // TODO(nparker): Add tests for
721 // CheckDownloadUrl() 736 // CheckDownloadUrl()
722 // CheckExtensionIDs() 737 // CheckExtensionIDs()
723 738
724 } // namespace safe_browsing 739 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « components/safe_browsing_db/v4_local_database_manager.cc ('k') | components/safe_browsing_db/v4_update_protocol_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698