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

Side by Side Diff: chrome/browser/supervised_user/experimental/safe_search_url_reporter_unittest.cc

Issue 1813833002: Add report URL to safe search API functionality. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2014 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/json/json_writer.h"
6 #include "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
7 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
8 #include "base/thread_task_runner_handle.h" 7 #include "base/thread_task_runner_handle.h"
9 #include "base/values.h" 8 #include "base/values.h"
10 #include "chrome/browser/supervised_user/child_accounts/permission_request_creat or_apiary.h" 9 #include "chrome/browser/supervised_user/experimental/safe_search_url_reporter.h "
11 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h" 10 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h"
12 #include "net/base/net_errors.h" 11 #include "net/base/net_errors.h"
13 #include "net/url_request/test_url_fetcher_factory.h" 12 #include "net/url_request/test_url_fetcher_factory.h"
14 #include "net/url_request/url_request_test_util.h" 13 #include "net/url_request/url_request_test_util.h"
15 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
17 16
18 namespace { 17 namespace {
19 18
20 const char kAccountId[] = "account@gmail.com"; 19 const char kAccountId[] = "account@gmail.com";
21 20
22 std::string BuildResponse() {
23 base::DictionaryValue dict;
24 base::DictionaryValue* permission_dict = new base::DictionaryValue;
25 permission_dict->SetStringWithoutPathExpansion("id", "requestid");
26 dict.SetWithoutPathExpansion("permissionRequest", permission_dict);
27 std::string result;
28 base::JSONWriter::Write(dict, &result);
29 return result;
30 }
31
32 } // namespace 21 } // namespace
33 22
34 class PermissionRequestCreatorApiaryTest : public testing::Test { 23 class SafeSearchURLReporterTest : public testing::Test {
35 public: 24 public:
36 PermissionRequestCreatorApiaryTest() 25 SafeSearchURLReporterTest()
37 : request_context_(new net::TestURLRequestContextGetter( 26 : request_context_(new net::TestURLRequestContextGetter(
38 base::ThreadTaskRunnerHandle::Get())), 27 base::ThreadTaskRunnerHandle::Get())),
39 permission_creator_(&token_service_, 28 report_url_(&token_service_, kAccountId, request_context_.get()) {
40 kAccountId,
41 request_context_.get()) {
42 token_service_.UpdateCredentials(kAccountId, "refresh_token"); 29 token_service_.UpdateCredentials(kAccountId, "refresh_token");
43 } 30 }
44 31
45 protected: 32 protected:
46 void IssueAccessTokens() { 33 void IssueAccessTokens() {
47 token_service_.IssueAllTokensForAccount( 34 token_service_.IssueAllTokensForAccount(
48 kAccountId, 35 kAccountId, "access_token",
49 "access_token",
50 base::Time::Now() + base::TimeDelta::FromHours(1)); 36 base::Time::Now() + base::TimeDelta::FromHours(1));
51 } 37 }
52 38
53 void IssueAccessTokenErrors() { 39 void IssueAccessTokenErrors() {
54 token_service_.IssueErrorForAllPendingRequestsForAccount( 40 token_service_.IssueErrorForAllPendingRequestsForAccount(
55 kAccountId, 41 kAccountId, GoogleServiceAuthError::FromServiceError("Error!"));
56 GoogleServiceAuthError::FromServiceError("Error!"));
57 } 42 }
58 43
59 void CreateRequest(int url_fetcher_id, const GURL& url) { 44 void CreateRequest(int url_fetcher_id, const GURL& url) {
60 permission_creator_.set_url_fetcher_id_for_testing(url_fetcher_id); 45 report_url_.set_url_fetcher_id_for_testing(url_fetcher_id);
61 permission_creator_.CreateURLAccessRequest( 46 report_url_.ReportUrl(
62 url, 47 url, base::Bind(&SafeSearchURLReporterTest::OnRequestCreated,
63 base::Bind(&PermissionRequestCreatorApiaryTest::OnRequestCreated, 48 base::Unretained(this)));
64 base::Unretained(this)));
65 } 49 }
66 50
67 net::TestURLFetcher* GetURLFetcher(int id) { 51 net::TestURLFetcher* GetURLFetcher(int id) {
68 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID(id); 52 net::TestURLFetcher* url_fetcher = url_fetcher_factory_.GetFetcherByID(id);
69 EXPECT_TRUE(url_fetcher); 53 EXPECT_TRUE(url_fetcher);
70 return url_fetcher; 54 return url_fetcher;
71 } 55 }
72 56
73 void SendResponse(int url_fetcher_id, 57 void SendResponse(int url_fetcher_id, net::Error error) {
74 net::Error error,
75 const std::string& response) {
76 net::TestURLFetcher* url_fetcher = GetURLFetcher(url_fetcher_id); 58 net::TestURLFetcher* url_fetcher = GetURLFetcher(url_fetcher_id);
77 url_fetcher->set_status(net::URLRequestStatus::FromError(error)); 59 url_fetcher->set_status(net::URLRequestStatus::FromError(error));
78 url_fetcher->set_response_code(net::HTTP_OK); 60 url_fetcher->set_response_code(net::HTTP_OK);
79 url_fetcher->SetResponseString(response);
80 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher); 61 url_fetcher->delegate()->OnURLFetchComplete(url_fetcher);
81 } 62 }
82 63
83 void SendValidResponse(int url_fetcher_id) { 64 void SendValidResponse(int url_fetcher_id) {
84 SendResponse(url_fetcher_id, net::OK, BuildResponse()); 65 SendResponse(url_fetcher_id, net::OK);
85 } 66 }
86 67
87 void SendFailedResponse(int url_fetcher_id) { 68 void SendFailedResponse(int url_fetcher_id) {
88 SendResponse(url_fetcher_id, net::ERR_ABORTED, std::string()); 69 SendResponse(url_fetcher_id, net::ERR_ABORTED);
89 } 70 }
90 71
91 MOCK_METHOD1(OnRequestCreated, void(bool success)); 72 MOCK_METHOD1(OnRequestCreated, void(bool success));
92 73
93 base::MessageLoop message_loop_; 74 base::MessageLoop message_loop_;
94 FakeProfileOAuth2TokenService token_service_; 75 FakeProfileOAuth2TokenService token_service_;
95 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 76 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
96 net::TestURLFetcherFactory url_fetcher_factory_; 77 net::TestURLFetcherFactory url_fetcher_factory_;
97 PermissionRequestCreatorApiary permission_creator_; 78 SafeSearchURLReporter report_url_;
98 }; 79 };
99 80
100 TEST_F(PermissionRequestCreatorApiaryTest, Success) { 81 TEST_F(SafeSearchURLReporterTest, Success) {
101 CreateRequest(0, GURL("http://randomurl.com")); 82 CreateRequest(0, GURL("http://google.com"));
102 CreateRequest(1, GURL("http://anotherurl.com")); 83 CreateRequest(1, GURL("http://url.com"));
103 84
104 // We should have gotten a request for an access token.
105 EXPECT_GT(token_service_.GetPendingRequests().size(), 0U); 85 EXPECT_GT(token_service_.GetPendingRequests().size(), 0U);
106 86
107 IssueAccessTokens(); 87 IssueAccessTokens();
108 88
109 EXPECT_CALL(*this, OnRequestCreated(true)); 89 EXPECT_CALL(*this, OnRequestCreated(true));
110 SendValidResponse(0); 90 SendValidResponse(0);
111 EXPECT_CALL(*this, OnRequestCreated(true)); 91 EXPECT_CALL(*this, OnRequestCreated(true));
112 SendValidResponse(1); 92 SendValidResponse(1);
113 } 93 }
114 94
115 TEST_F(PermissionRequestCreatorApiaryTest, AccessTokenError) { 95 TEST_F(SafeSearchURLReporterTest, AccessTokenError) {
116 CreateRequest(0, GURL("http://randomurl.com")); 96 CreateRequest(0, GURL("http://google.com"));
117 97
118 // We should have gotten a request for an access token.
119 EXPECT_EQ(1U, token_service_.GetPendingRequests().size()); 98 EXPECT_EQ(1U, token_service_.GetPendingRequests().size());
120 99
121 // Our callback should get called immediately on an error.
122 EXPECT_CALL(*this, OnRequestCreated(false)); 100 EXPECT_CALL(*this, OnRequestCreated(false));
123 IssueAccessTokenErrors(); 101 IssueAccessTokenErrors();
124 } 102 }
125 103
126 TEST_F(PermissionRequestCreatorApiaryTest, NetworkError) { 104 TEST_F(SafeSearchURLReporterTest, NetworkError) {
127 CreateRequest(0, GURL("http://randomurl.com")); 105 CreateRequest(0, GURL("http://google.com"));
128 106
129 // We should have gotten a request for an access token.
130 EXPECT_EQ(1U, token_service_.GetPendingRequests().size()); 107 EXPECT_EQ(1U, token_service_.GetPendingRequests().size());
131 108
132 IssueAccessTokens(); 109 IssueAccessTokens();
133 110
134 // Our callback should get called on an error.
135 EXPECT_CALL(*this, OnRequestCreated(false)); 111 EXPECT_CALL(*this, OnRequestCreated(false));
136 SendFailedResponse(0); 112 SendFailedResponse(0);
137 } 113 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698