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

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

Issue 1403153004: Supervised user SafeSites: don't cache results for more than one hour (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 5 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/supervised_user/experimental/supervised_user_async_url_checker.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <string> 5 #include <string>
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 size_t next_url_; 106 size_t next_url_;
107 base::MessageLoop message_loop_; 107 base::MessageLoop message_loop_;
108 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 108 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
109 net::TestURLFetcherFactory url_fetcher_factory_; 109 net::TestURLFetcherFactory url_fetcher_factory_;
110 SupervisedUserAsyncURLChecker checker_; 110 SupervisedUserAsyncURLChecker checker_;
111 }; 111 };
112 112
113 TEST_F(SupervisedUserAsyncURLCheckerTest, Simple) { 113 TEST_F(SupervisedUserAsyncURLCheckerTest, Simple) {
114 { 114 {
115 GURL url(GetNewURL()); 115 GURL url(GetNewURL());
116 EXPECT_FALSE(CheckURL(url)); 116 ASSERT_FALSE(CheckURL(url));
117 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); 117 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
118 SendValidResponse(false); 118 SendValidResponse(false);
119 } 119 }
120 { 120 {
121 GURL url(GetNewURL()); 121 GURL url(GetNewURL());
122 EXPECT_FALSE(CheckURL(url)); 122 ASSERT_FALSE(CheckURL(url));
123 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::BLOCK, false)); 123 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::BLOCK, false));
124 SendValidResponse(true); 124 SendValidResponse(true);
125 } 125 }
126 { 126 {
127 GURL url(GetNewURL()); 127 GURL url(GetNewURL());
128 EXPECT_FALSE(CheckURL(url)); 128 ASSERT_FALSE(CheckURL(url));
129 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, true)); 129 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, true));
130 SendFailedResponse(); 130 SendFailedResponse();
131 } 131 }
132 } 132 }
133 133
134 TEST_F(SupervisedUserAsyncURLCheckerTest, Equivalence) { 134 TEST_F(SupervisedUserAsyncURLCheckerTest, Equivalence) {
135 // Leading "www." in the response should be ignored. 135 // Leading "www." in the response should be ignored.
136 { 136 {
137 GURL url("http://example.com"); 137 GURL url("http://example.com");
138 GURL url_response("http://www.example.com"); 138 GURL url_response("http://www.example.com");
139 EXPECT_FALSE(CheckURL(url)); 139 ASSERT_FALSE(CheckURL(url));
140 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); 140 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
141 SendValidResponse(false); 141 SendValidResponse(false);
142 } 142 }
143 // Scheme should be ignored. 143 // Scheme should be ignored.
144 { 144 {
145 GURL url("http://www.example2.com"); 145 GURL url("http://www.example2.com");
146 GURL url_response("https://www.example2.com"); 146 GURL url_response("https://www.example2.com");
147 EXPECT_FALSE(CheckURL(url)); 147 ASSERT_FALSE(CheckURL(url));
148 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); 148 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
149 SendValidResponse(false); 149 SendValidResponse(false);
150 } 150 }
151 // Both at the same time should work as well. 151 // Both at the same time should work as well.
152 { 152 {
153 GURL url("http://example3.com"); 153 GURL url("http://example3.com");
154 GURL url_response("https://www.example3.com"); 154 GURL url_response("https://www.example3.com");
155 EXPECT_FALSE(CheckURL(url)); 155 ASSERT_FALSE(CheckURL(url));
156 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)); 156 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
157 SendValidResponse(false); 157 SendValidResponse(false);
158 } 158 }
159 } 159 }
160 160
161 TEST_F(SupervisedUserAsyncURLCheckerTest, Cache) { 161 TEST_F(SupervisedUserAsyncURLCheckerTest, Cache) {
162 // One more URL than fit in the cache. 162 // One more URL than fit in the cache.
163 ASSERT_EQ(2u, kCacheSize); 163 ASSERT_EQ(2u, kCacheSize);
164 GURL url1(GetNewURL()); 164 GURL url1(GetNewURL());
165 GURL url2(GetNewURL()); 165 GURL url2(GetNewURL());
166 GURL url3(GetNewURL()); 166 GURL url3(GetNewURL());
167 167
168 // Populate the cache. 168 // Populate the cache.
169 EXPECT_FALSE(CheckURL(url1)); 169 ASSERT_FALSE(CheckURL(url1));
170 EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false)); 170 EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false));
171 SendValidResponse(false); 171 SendValidResponse(false);
172 EXPECT_FALSE(CheckURL(url2)); 172 ASSERT_FALSE(CheckURL(url2));
173 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); 173 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false));
174 SendValidResponse(false); 174 SendValidResponse(false);
175 175
176 // Now we should get results synchronously. 176 // Now we should get results synchronously.
177 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); 177 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false));
178 EXPECT_TRUE(CheckURL(url2)); 178 ASSERT_TRUE(CheckURL(url2));
179 EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false)); 179 EXPECT_CALL(*this, OnCheckDone(url1, SupervisedUserURLFilter::ALLOW, false));
180 EXPECT_TRUE(CheckURL(url1)); 180 ASSERT_TRUE(CheckURL(url1));
181 181
182 // Now |url2| is the LRU and should be evicted on the next check. 182 // Now |url2| is the LRU and should be evicted on the next check.
183 EXPECT_FALSE(CheckURL(url3)); 183 ASSERT_FALSE(CheckURL(url3));
184 EXPECT_CALL(*this, OnCheckDone(url3, SupervisedUserURLFilter::ALLOW, false)); 184 EXPECT_CALL(*this, OnCheckDone(url3, SupervisedUserURLFilter::ALLOW, false));
185 SendValidResponse(false); 185 SendValidResponse(false);
186 186
187 EXPECT_FALSE(CheckURL(url2)); 187 ASSERT_FALSE(CheckURL(url2));
188 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false)); 188 EXPECT_CALL(*this, OnCheckDone(url2, SupervisedUserURLFilter::ALLOW, false));
189 SendValidResponse(false); 189 SendValidResponse(false);
190 } 190 }
191 191
192 TEST_F(SupervisedUserAsyncURLCheckerTest, CoalesceRequestsToSameURL) { 192 TEST_F(SupervisedUserAsyncURLCheckerTest, CoalesceRequestsToSameURL) {
193 GURL url(GetNewURL()); 193 GURL url(GetNewURL());
194 // Start two checks for the same URL. 194 // Start two checks for the same URL.
195 EXPECT_FALSE(CheckURL(url)); 195 ASSERT_FALSE(CheckURL(url));
196 EXPECT_FALSE(CheckURL(url)); 196 ASSERT_FALSE(CheckURL(url));
197 // A single response should answer both checks. 197 // A single response should answer both checks.
198 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false)) 198 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false))
199 .Times(2); 199 .Times(2);
200 SendValidResponse(false); 200 SendValidResponse(false);
201 } 201 }
202
203 TEST_F(SupervisedUserAsyncURLCheckerTest, CacheTimeout) {
204 GURL url(GetNewURL());
205
206 checker_.SetCacheTimeoutForTesting(base::TimeDelta::FromSeconds(0));
207
208 ASSERT_FALSE(CheckURL(url));
209 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::ALLOW, false));
210 SendValidResponse(false);
211
212 // Since the cache timeout is zero, the cache entry should be invalidated
213 // immediately.
214 ASSERT_FALSE(CheckURL(url));
215 EXPECT_CALL(*this, OnCheckDone(url, SupervisedUserURLFilter::BLOCK, false));
216 SendValidResponse(true);
217 }
OLDNEW
« no previous file with comments | « chrome/browser/supervised_user/experimental/supervised_user_async_url_checker.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698