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

Side by Side Diff: components/precache/core/precache_fetcher_unittest.cc

Issue 48713008: [sync] Allow FakeURLFetcher to return arbitrary HTTP response codes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/precache/core/precache_fetcher.h" 5 #include "components/precache/core/precache_fetcher.h"
6 6
7 #include <list> 7 #include <list>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/callback.h" 13 #include "base/callback.h"
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/compiler_specific.h" 15 #include "base/compiler_specific.h"
16 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
17 #include "components/precache/core/precache_switches.h" 17 #include "components/precache/core/precache_switches.h"
18 #include "components/precache/core/proto/precache.pb.h" 18 #include "components/precache/core/proto/precache.pb.h"
19 #include "net/http/http_response_headers.h" 19 #include "net/http/http_response_headers.h"
20 #include "net/http/http_status_code.h"
20 #include "net/url_request/test_url_fetcher_factory.h" 21 #include "net/url_request/test_url_fetcher_factory.h"
21 #include "net/url_request/url_request_test_util.h" 22 #include "net/url_request/url_request_test_util.h"
22 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
23 24
24 namespace precache { 25 namespace precache {
25 26
26 namespace { 27 namespace {
27 28
28 class TestURLFetcherCallback { 29 class TestURLFetcherCallback {
29 public: 30 public:
30 scoped_ptr<net::FakeURLFetcher> CreateURLFetcher( 31 scoped_ptr<net::FakeURLFetcher> CreateURLFetcher(
31 const GURL& url, net::URLFetcherDelegate* delegate, 32 const GURL& url, net::URLFetcherDelegate* delegate,
32 const std::string& response_data, bool success) { 33 const std::string& response_data, net::HttpStatusCode response_code) {
33 scoped_ptr<net::FakeURLFetcher> fetcher( 34 scoped_ptr<net::FakeURLFetcher> fetcher(
34 new net::FakeURLFetcher(url, delegate, response_data, success)); 35 new net::FakeURLFetcher(url, delegate, response_data, response_code));
35 36
36 if (success) { 37 if (response_code == net::HTTP_OK) {
37 scoped_refptr<net::HttpResponseHeaders> download_headers = 38 scoped_refptr<net::HttpResponseHeaders> download_headers =
38 new net::HttpResponseHeaders(""); 39 new net::HttpResponseHeaders("");
39 download_headers->AddHeader("Content-Type: text/html"); 40 download_headers->AddHeader("Content-Type: text/html");
40 fetcher->set_response_headers(download_headers); 41 fetcher->set_response_headers(download_headers);
41 } 42 }
42 43
43 requested_urls_.insert(url); 44 requested_urls_.insert(url);
44 return fetcher.Pass(); 45 return fetcher.Pass();
45 } 46 }
46 47
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 config.add_whitelisted_starting_url("http://bad-manifest.com"); 117 config.add_whitelisted_starting_url("http://bad-manifest.com");
117 config.add_whitelisted_starting_url("http://good-manifest.com"); 118 config.add_whitelisted_starting_url("http://good-manifest.com");
118 config.add_whitelisted_starting_url("http://not-in-top-4.com"); 119 config.add_whitelisted_starting_url("http://not-in-top-4.com");
119 config.set_maximum_rank_starting_url(4); 120 config.set_maximum_rank_starting_url(4);
120 121
121 PrecacheManifest good_manifest; 122 PrecacheManifest good_manifest;
122 good_manifest.add_resource()->set_url(kResourceFetchFailureURL); 123 good_manifest.add_resource()->set_url(kResourceFetchFailureURL);
123 good_manifest.add_resource(); // Resource with no URL, should not be fetched. 124 good_manifest.add_resource(); // Resource with no URL, should not be fetched.
124 good_manifest.add_resource()->set_url(kGoodResourceURL); 125 good_manifest.add_resource()->set_url(kGoodResourceURL);
125 126
126 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), true); 127 factory_.SetFakeResponse(GURL(kConfigURL),
127 factory_.SetFakeResponse(GURL(kManifestFetchFailureURL), "", false); 128 config.SerializeAsString(),
128 factory_.SetFakeResponse(GURL(kBadManifestURL), "bad protobuf", true); 129 net::HTTP_OK);
130 factory_.SetFakeResponse(GURL(kManifestFetchFailureURL),
131 "",
132 net::HTTP_INTERNAL_SERVER_ERROR);
133 factory_.SetFakeResponse(GURL(kBadManifestURL), "bad protobuf", net::HTTP_OK);
129 factory_.SetFakeResponse(GURL(kGoodManifestURL), 134 factory_.SetFakeResponse(GURL(kGoodManifestURL),
130 good_manifest.SerializeAsString(), true); 135 good_manifest.SerializeAsString(), net::HTTP_OK);
131 factory_.SetFakeResponse(GURL(kResourceFetchFailureURL), "", false); 136 factory_.SetFakeResponse(GURL(kResourceFetchFailureURL),
132 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", true); 137 "",
138 net::HTTP_INTERNAL_SERVER_ERROR);
139 factory_.SetFakeResponse(GURL(kGoodResourceURL), "good", net::HTTP_OK);
133 140
134 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(), 141 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(),
135 &precache_delegate_); 142 &precache_delegate_);
136 precache_fetcher.Start(); 143 precache_fetcher.Start();
137 144
138 base::MessageLoop::current()->RunUntilIdle(); 145 base::MessageLoop::current()->RunUntilIdle();
139 146
140 std::multiset<GURL> expected_requested_urls; 147 std::multiset<GURL> expected_requested_urls;
141 expected_requested_urls.insert(GURL(kConfigURL)); 148 expected_requested_urls.insert(GURL(kConfigURL));
142 expected_requested_urls.insert(GURL(kManifestFetchFailureURL)); 149 expected_requested_urls.insert(GURL(kManifestFetchFailureURL));
143 expected_requested_urls.insert(GURL(kBadManifestURL)); 150 expected_requested_urls.insert(GURL(kBadManifestURL));
144 expected_requested_urls.insert(GURL(kGoodManifestURL)); 151 expected_requested_urls.insert(GURL(kGoodManifestURL));
145 expected_requested_urls.insert(GURL(kResourceFetchFailureURL)); 152 expected_requested_urls.insert(GURL(kResourceFetchFailureURL));
146 expected_requested_urls.insert(GURL(kGoodResourceURL)); 153 expected_requested_urls.insert(GURL(kGoodResourceURL));
147 154
148 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 155 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
149 156
150 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 157 EXPECT_TRUE(precache_delegate_.was_on_done_called());
151 } 158 }
152 159
153 TEST_F(PrecacheFetcherTest, ConfigFetchFailure) { 160 TEST_F(PrecacheFetcherTest, ConfigFetchFailure) {
154 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 161 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
155 switches::kPrecacheConfigSettingsURL, kConfigURL); 162 switches::kPrecacheConfigSettingsURL, kConfigURL);
156 163
157 std::list<GURL> starting_urls(1, GURL("http://starting-url.com")); 164 std::list<GURL> starting_urls(1, GURL("http://starting-url.com"));
158 165
159 factory_.SetFakeResponse(GURL(kConfigURL), "", false); 166 factory_.SetFakeResponse(GURL(kConfigURL),
167 "",
168 net::HTTP_INTERNAL_SERVER_ERROR);
160 169
161 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(), 170 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(),
162 &precache_delegate_); 171 &precache_delegate_);
163 precache_fetcher.Start(); 172 precache_fetcher.Start();
164 173
165 base::MessageLoop::current()->RunUntilIdle(); 174 base::MessageLoop::current()->RunUntilIdle();
166 175
167 std::multiset<GURL> expected_requested_urls; 176 std::multiset<GURL> expected_requested_urls;
168 expected_requested_urls.insert(GURL(kConfigURL)); 177 expected_requested_urls.insert(GURL(kConfigURL));
169 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 178 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
170 179
171 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 180 EXPECT_TRUE(precache_delegate_.was_on_done_called());
172 } 181 }
173 182
174 TEST_F(PrecacheFetcherTest, BadConfig) { 183 TEST_F(PrecacheFetcherTest, BadConfig) {
175 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 184 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
176 switches::kPrecacheConfigSettingsURL, kConfigURL); 185 switches::kPrecacheConfigSettingsURL, kConfigURL);
177 186
178 std::list<GURL> starting_urls(1, GURL("http://starting-url.com")); 187 std::list<GURL> starting_urls(1, GURL("http://starting-url.com"));
179 188
180 factory_.SetFakeResponse(GURL(kConfigURL), "bad protobuf", true); 189 factory_.SetFakeResponse(GURL(kConfigURL), "bad protobuf", net::HTTP_OK);
181 190
182 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(), 191 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(),
183 &precache_delegate_); 192 &precache_delegate_);
184 precache_fetcher.Start(); 193 precache_fetcher.Start();
185 194
186 base::MessageLoop::current()->RunUntilIdle(); 195 base::MessageLoop::current()->RunUntilIdle();
187 196
188 std::multiset<GURL> expected_requested_urls; 197 std::multiset<GURL> expected_requested_urls;
189 expected_requested_urls.insert(GURL(kConfigURL)); 198 expected_requested_urls.insert(GURL(kConfigURL));
190 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 199 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
191 200
192 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 201 EXPECT_TRUE(precache_delegate_.was_on_done_called());
193 } 202 }
194 203
195 TEST_F(PrecacheFetcherTest, Cancel) { 204 TEST_F(PrecacheFetcherTest, Cancel) {
196 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 205 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
197 switches::kPrecacheConfigSettingsURL, kConfigURL); 206 switches::kPrecacheConfigSettingsURL, kConfigURL);
198 207
199 std::list<GURL> starting_urls(1, GURL("http://starting-url.com")); 208 std::list<GURL> starting_urls(1, GURL("http://starting-url.com"));
200 209
201 PrecacheConfigurationSettings config; 210 PrecacheConfigurationSettings config;
202 config.add_whitelisted_starting_url("http://starting-url.com"); 211 config.add_whitelisted_starting_url("http://starting-url.com");
203 config.set_maximum_rank_starting_url(1); 212 config.set_maximum_rank_starting_url(1);
204 213
205 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), true); 214 factory_.SetFakeResponse(GURL(kConfigURL),
215 config.SerializeAsString(),
216 net::HTTP_OK);
206 217
207 scoped_ptr<PrecacheFetcher> precache_fetcher(new PrecacheFetcher( 218 scoped_ptr<PrecacheFetcher> precache_fetcher(new PrecacheFetcher(
208 starting_urls, request_context_.get(), &precache_delegate_)); 219 starting_urls, request_context_.get(), &precache_delegate_));
209 precache_fetcher->Start(); 220 precache_fetcher->Start();
210 221
211 // Destroy the PrecacheFetcher to cancel precaching. This should not cause 222 // Destroy the PrecacheFetcher to cancel precaching. This should not cause
212 // OnDone to be called on the precache delegate. 223 // OnDone to be called on the precache delegate.
213 precache_fetcher.reset(); 224 precache_fetcher.reset();
214 225
215 base::MessageLoop::current()->RunUntilIdle(); 226 base::MessageLoop::current()->RunUntilIdle();
216 227
217 std::multiset<GURL> expected_requested_urls; 228 std::multiset<GURL> expected_requested_urls;
218 expected_requested_urls.insert(GURL(kConfigURL)); 229 expected_requested_urls.insert(GURL(kConfigURL));
219 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 230 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
220 231
221 EXPECT_FALSE(precache_delegate_.was_on_done_called()); 232 EXPECT_FALSE(precache_delegate_.was_on_done_called());
222 } 233 }
223 234
224 #if defined(PRECACHE_CONFIG_SETTINGS_URL) 235 #if defined(PRECACHE_CONFIG_SETTINGS_URL)
225 236
226 // If the default precache configuration settings URL is defined, then test that 237 // If the default precache configuration settings URL is defined, then test that
227 // it works with the PrecacheFetcher. 238 // it works with the PrecacheFetcher.
228 TEST_F(PrecacheFetcherTest, PrecacheUsingDefaultConfigSettingsURL) { 239 TEST_F(PrecacheFetcherTest, PrecacheUsingDefaultConfigSettingsURL) {
229 std::list<GURL> starting_urls(1, GURL("http://starting-url.com")); 240 std::list<GURL> starting_urls(1, GURL("http://starting-url.com"));
230 241
231 factory_.SetFakeResponse(GURL(PRECACHE_CONFIG_SETTINGS_URL), 242 factory_.SetFakeResponse(GURL(PRECACHE_CONFIG_SETTINGS_URL),
232 PrecacheConfigurationSettings().SerializeAsString(), 243 PrecacheConfigurationSettings().SerializeAsString(),
233 true); 244 net::HTTP_OK);
234 245
235 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(), 246 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(),
236 &precache_delegate_); 247 &precache_delegate_);
237 precache_fetcher.Start(); 248 precache_fetcher.Start();
238 249
239 base::MessageLoop::current()->RunUntilIdle(); 250 base::MessageLoop::current()->RunUntilIdle();
240 251
241 std::multiset<GURL> expected_requested_urls; 252 std::multiset<GURL> expected_requested_urls;
242 expected_requested_urls.insert(GURL(PRECACHE_CONFIG_SETTINGS_URL)); 253 expected_requested_urls.insert(GURL(PRECACHE_CONFIG_SETTINGS_URL));
243 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 254 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
(...skipping 13 matching lines...) Expand all
257 268
258 std::list<GURL> starting_urls(1, GURL("http://starting-url.com")); 269 std::list<GURL> starting_urls(1, GURL("http://starting-url.com"));
259 270
260 PrecacheConfigurationSettings config; 271 PrecacheConfigurationSettings config;
261 config.add_whitelisted_starting_url("http://starting-url.com"); 272 config.add_whitelisted_starting_url("http://starting-url.com");
262 config.set_maximum_rank_starting_url(1); 273 config.set_maximum_rank_starting_url(1);
263 274
264 GURL manifest_url(PRECACHE_MANIFEST_URL_PREFIX 275 GURL manifest_url(PRECACHE_MANIFEST_URL_PREFIX
265 "http%253A%252F%252Fstarting-url.com%252F"); 276 "http%253A%252F%252Fstarting-url.com%252F");
266 277
267 factory_.SetFakeResponse(GURL(kConfigURL), config.SerializeAsString(), true); 278 factory_.SetFakeResponse(GURL(kConfigURL),
268 factory_.SetFakeResponse(manifest_url, PrecacheManifest().SerializeAsString(), 279 config.SerializeAsString(),
269 true); 280 net::HTTP_OK);
281 factory_.SetFakeResponse(manifest_url,
282 PrecacheManifest().SerializeAsString(),
283 net::HTTP_OK);
270 284
271 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(), 285 PrecacheFetcher precache_fetcher(starting_urls, request_context_.get(),
272 &precache_delegate_); 286 &precache_delegate_);
273 precache_fetcher.Start(); 287 precache_fetcher.Start();
274 288
275 base::MessageLoop::current()->RunUntilIdle(); 289 base::MessageLoop::current()->RunUntilIdle();
276 290
277 std::multiset<GURL> expected_requested_urls; 291 std::multiset<GURL> expected_requested_urls;
278 expected_requested_urls.insert(GURL(kConfigURL)); 292 expected_requested_urls.insert(GURL(kConfigURL));
279 expected_requested_urls.insert(manifest_url); 293 expected_requested_urls.insert(manifest_url);
280 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls()); 294 EXPECT_EQ(expected_requested_urls, url_callback_.requested_urls());
281 295
282 EXPECT_TRUE(precache_delegate_.was_on_done_called()); 296 EXPECT_TRUE(precache_delegate_.was_on_done_called());
283 } 297 }
284 298
285 #endif // PRECACHE_MANIFEST_URL_PREFIX 299 #endif // PRECACHE_MANIFEST_URL_PREFIX
286 300
287 } // namespace 301 } // namespace
288 302
289 } // namespace precache 303 } // namespace precache
OLDNEW
« no previous file with comments | « components/dom_distiller/core/distiller_url_fetcher_unittest.cc ('k') | net/url_request/test_url_fetcher_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698