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

Unified Diff: chrome/browser/supervised_user/experimental/supervised_user_async_url_checker_unittest.cc

Issue 2399823002: Extract the SafeSearch client to a separate directory (Closed)
Patch Set: Created 4 years, 2 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: chrome/browser/supervised_user/experimental/supervised_user_async_url_checker_unittest.cc
diff --git a/chrome/browser/supervised_user/experimental/supervised_user_async_url_checker_unittest.cc b/chrome/browser/supervised_user/experimental/supervised_user_async_url_checker_unittest.cc
deleted file mode 100644
index 7d7fbe025f737d178e1ba6e2d97de06075e5ddaf..0000000000000000000000000000000000000000
--- a/chrome/browser/supervised_user/experimental/supervised_user_async_url_checker_unittest.cc
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright 2014 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 "chrome/browser/supervised_user/experimental/supervised_user_async_url_checker.h"
-
-#include <stddef.h>
-
-#include <memory>
-#include <string>
-#include <utility>
-
-#include "base/callback.h"
-#include "base/json/json_writer.h"
-#include "base/macros.h"
-#include "base/message_loop/message_loop.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "base/values.h"
-#include "net/base/net_errors.h"
-#include "net/url_request/test_url_fetcher_factory.h"
-#include "net/url_request/url_request_test_util.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "url/gurl.h"
-
-using testing::_;
-
-namespace {
-
-const size_t kCacheSize = 2;
-
-const int kSupervisedUserAsyncURLCheckerURLFetcherID = 0;
-
-const char* kURLs[] = {
- "http://www.randomsite1.com",
- "http://www.randomsite2.com",
- "http://www.randomsite3.com",
- "http://www.randomsite4.com",
- "http://www.randomsite5.com",
- "http://www.randomsite6.com",
- "http://www.randomsite7.com",
- "http://www.randomsite8.com",
- "http://www.randomsite9.com",
-};
-
-std::string BuildResponse(bool is_porn) {
- base::DictionaryValue dict;
- std::unique_ptr<base::DictionaryValue> classification_dict(
- new base::DictionaryValue);
- if (is_porn)
- classification_dict->SetBoolean("pornography", is_porn);
- base::ListValue* classifications_list = new base::ListValue;
- classifications_list->Append(std::move(classification_dict));
- dict.SetWithoutPathExpansion("classifications", classifications_list);
- std::string result;
- base::JSONWriter::Write(dict, &result);
- return result;
-}
-
-} // namespace
-
-class SupervisedUserAsyncURLCheckerTest : public testing::Test {
- public:
- SupervisedUserAsyncURLCheckerTest()
- : next_url_(0),
- request_context_(new net::TestURLRequestContextGetter(
- base::ThreadTaskRunnerHandle::Get())),
- checker_(request_context_.get(), kCacheSize) {}
-
- MOCK_METHOD3(OnCheckDone,
- void(const GURL& url,
- SupervisedUserURLFilter::FilteringBehavior behavior,
- bool uncertain));
-
- protected:
- GURL GetNewURL() {
- CHECK(next_url_ < arraysize(kURLs));
- return GURL(kURLs[next_url_++]);
- }
-
- // Returns true if the result was returned synchronously (cache hit).
- bool CheckURL(const GURL& url) {
- return checker_.CheckURL(
- url,
- base::Bind(&SupervisedUserAsyncURLCheckerTest::OnCheckDone,
- base::Unretained(this)));
- }
-
- net::TestURLFetcher* GetURLFetcher() {
- net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID(
- kSupervisedUserAsyncURLCheckerURLFetcherID);
- EXPECT_TRUE(url_fetcher);
- return url_fetcher;
- }
-
- void SendResponse(net::Error error, const std::string& response) {
- net::TestURLFetcher* url_fetcher = GetURLFetcher();
- url_fetcher->set_status(net::URLRequestStatus::FromError(error));
- url_fetcher->set_response_code(net::HTTP_OK);
- url_fetcher->SetResponseString(response);
- url_fetcher->delegate()->OnURLFetchComplete(url_fetcher);
- }
-
- void SendValidResponse(bool is_porn) {
- SendResponse(net::OK, BuildResponse(is_porn));
- }
-
- void SendFailedResponse() {
- SendResponse(net::ERR_ABORTED, std::string());
- }
-
- size_t next_url_;
- base::MessageLoop message_loop_;
- scoped_refptr<net::TestURLRequestContextGetter> request_context_;
- net::TestURLFetcherFactory url_fetcher_factory_;
- SupervisedUserAsyncURLChecker checker_;
-};
-
-TEST_F(SupervisedUserAsyncURLCheckerTest, Simple) {
- {
- GURL url(GetNewURL());
- ASSERT_FALSE(CheckURL(url));
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
- }
- {
- GURL url(GetNewURL());
- ASSERT_FALSE(CheckURL(url));
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::BLOCK, false));
- SendValidResponse(true);
- }
- {
- GURL url(GetNewURL());
- ASSERT_FALSE(CheckURL(url));
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, true));
- SendFailedResponse();
- }
-}
-
-TEST_F(SupervisedUserAsyncURLCheckerTest, Equivalence) {
- // Leading "www." in the response should be ignored.
- {
- GURL url("http://example.com");
- GURL url_response("http://www.example.com");
- ASSERT_FALSE(CheckURL(url));
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
- }
- // Scheme should be ignored.
- {
- GURL url("http://www.example2.com");
- GURL url_response("https://www.example2.com");
- ASSERT_FALSE(CheckURL(url));
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
- }
- // Both at the same time should work as well.
- {
- GURL url("http://example3.com");
- GURL url_response("https://www.example3.com");
- ASSERT_FALSE(CheckURL(url));
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
- }
-}
-
-TEST_F(SupervisedUserAsyncURLCheckerTest, Cache) {
- // One more URL than fit in the cache.
- ASSERT_EQ(2u, kCacheSize);
- GURL url1(GetNewURL());
- GURL url2(GetNewURL());
- GURL url3(GetNewURL());
-
- // Populate the cache.
- ASSERT_FALSE(CheckURL(url1));
- EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
- ASSERT_FALSE(CheckURL(url2));
- EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
-
- // Now we should get results synchronously.
- EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false));
- ASSERT_TRUE(CheckURL(url2));
- EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false));
- ASSERT_TRUE(CheckURL(url1));
-
- // Now |url2| is the LRU and should be evicted on the next check.
- ASSERT_FALSE(CheckURL(url3));
- EXPECT_CALL(*this, OnCheckDone(url3, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
-
- ASSERT_FALSE(CheckURL(url2));
- EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
-}
-
-TEST_F(SupervisedUserAsyncURLCheckerTest, CoalesceRequestsToSameURL) {
- GURL url(GetNewURL());
- // Start two checks for the same URL.
- ASSERT_FALSE(CheckURL(url));
- ASSERT_FALSE(CheckURL(url));
- // A single response should answer both checks.
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false))
- .Times(2);
- SendValidResponse(false);
-}
-
-TEST_F(SupervisedUserAsyncURLCheckerTest, CacheTimeout) {
- GURL url(GetNewURL());
-
- checker_.SetCacheTimeoutForTesting(base::TimeDelta::FromSeconds(0));
-
- ASSERT_FALSE(CheckURL(url));
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
- SendValidResponse(false);
-
- // Since the cache timeout is zero, the cache entry should be invalidated
- // immediately.
- ASSERT_FALSE(CheckURL(url));
- EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::BLOCK, false));
- SendValidResponse(true);
-}

Powered by Google App Engine
This is Rietveld 408576698