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

Side by Side Diff: chrome/browser/chromeos/fileapi/external_file_url_request_job_unittest.cc

Issue 589473002: Files.app: Enable externalfile: protocol for MTP volumes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed test. Created 6 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
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 "chrome/browser/chromeos/fileapi/external_file_url_request_job.h" 5 #include "chrome/browser/chromeos/fileapi/external_file_url_request_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 scoped_ptr<net::TestNetworkDelegate> test_network_delegate_; 221 scoped_ptr<net::TestNetworkDelegate> test_network_delegate_;
222 scoped_ptr<TestURLRequestJobFactory> test_url_request_job_factory_; 222 scoped_ptr<TestURLRequestJobFactory> test_url_request_job_factory_;
223 223
224 scoped_ptr<TestingProfileManager> profile_manager_; 224 scoped_ptr<TestingProfileManager> profile_manager_;
225 base::ScopedTempDir drive_cache_dir_; 225 base::ScopedTempDir drive_cache_dir_;
226 scoped_refptr<storage::FileSystemContext> file_system_context_; 226 scoped_refptr<storage::FileSystemContext> file_system_context_;
227 }; 227 };
228 228
229 TEST_F(ExternalFileURLRequestJobTest, NonGetMethod) { 229 TEST_F(ExternalFileURLRequestJobTest, NonGetMethod) {
230 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 230 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
231 GURL("externalfile:drive/root/File 1.txt"), 231 GURL("externalfile:drive-test-user-hash/root/File 1.txt"),
232 net::DEFAULT_PRIORITY, 232 net::DEFAULT_PRIORITY,
233 test_delegate_.get(), 233 test_delegate_.get(),
234 NULL)); 234 NULL));
235 request->set_method("POST"); // Set non "GET" method. 235 request->set_method("POST"); // Set non "GET" method.
236 request->Start(); 236 request->Start();
237 237
238 base::RunLoop().Run(); 238 base::RunLoop().Run();
239 239
240 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 240 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
241 EXPECT_EQ(net::ERR_METHOD_NOT_SUPPORTED, request->status().error()); 241 EXPECT_EQ(net::ERR_METHOD_NOT_SUPPORTED, request->status().error());
242 } 242 }
243 243
244 TEST_F(ExternalFileURLRequestJobTest, RegularFile) { 244 TEST_F(ExternalFileURLRequestJobTest, RegularFile) {
245 const GURL kTestUrl("externalfile:drive/root/File 1.txt"); 245 const GURL kTestUrl("externalfile:drive-test-user-hash/root/File 1.txt");
246 const base::FilePath kTestFilePath("drive/root/File 1.txt"); 246 const base::FilePath kTestFilePath("drive/root/File 1.txt");
247 247
248 // For the first time, the file should be fetched from the server. 248 // For the first time, the file should be fetched from the server.
249 { 249 {
250 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 250 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
251 kTestUrl, net::DEFAULT_PRIORITY, test_delegate_.get(), NULL)); 251 kTestUrl, net::DEFAULT_PRIORITY, test_delegate_.get(), NULL));
252 request->Start(); 252 request->Start();
253 253
254 base::RunLoop().Run(); 254 base::RunLoop().Run();
255 255
256 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 256 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
257 // It looks weird, but the mime type for the "File 1.txt" is "audio/mpeg" 257 // It looks weird, but the mime type for the "File 1.txt" is "audio/mpeg"
258 // on the server. 258 // on the server.
259 std::string mime_type; 259 std::string mime_type;
260 request->GetMimeType(&mime_type); 260 request->GetMimeType(&mime_type);
261 EXPECT_EQ("audio/mpeg", mime_type); 261 EXPECT_EQ("audio/mpeg", mime_type);
262 262
263 // Reading file must be done after |request| runs, otherwise 263 // Reading file must be done after |request| runs, otherwise
264 // it'll create a local cache file, and we cannot test correctly. 264 // it'll create a local cache file, and we cannot test correctly.
265 std::string expected_data; 265 std::string expected_data;
266 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data)); 266 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data));
267 EXPECT_EQ(expected_data, test_delegate_->data_received()); 267 EXPECT_EQ(expected_data, test_delegate_->data_received());
268 } 268 }
269 269
270 // For the second time, the locally cached file should be used. 270 // For the second time, the locally cached file should be used.
271 // The caching emulation is done by FakeFileSystem. 271 // The caching emulation is done by FakeFileSystem.
272 { 272 {
273 test_delegate_.reset(new TestDelegate); 273 test_delegate_.reset(new TestDelegate);
274 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 274 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
275 GURL("externalfile:drive/root/File 1.txt"), 275 GURL("externalfile:drive-test-user-hash/root/File 1.txt"),
276 net::DEFAULT_PRIORITY, 276 net::DEFAULT_PRIORITY,
277 test_delegate_.get(), 277 test_delegate_.get(),
278 NULL)); 278 NULL));
279 request->Start(); 279 request->Start();
280 280
281 base::RunLoop().Run(); 281 base::RunLoop().Run();
282 282
283 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 283 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
284 std::string mime_type; 284 std::string mime_type;
285 request->GetMimeType(&mime_type); 285 request->GetMimeType(&mime_type);
286 EXPECT_EQ("audio/mpeg", mime_type); 286 EXPECT_EQ("audio/mpeg", mime_type);
287 287
288 std::string expected_data; 288 std::string expected_data;
289 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data)); 289 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data));
290 EXPECT_EQ(expected_data, test_delegate_->data_received()); 290 EXPECT_EQ(expected_data, test_delegate_->data_received());
291 } 291 }
292 } 292 }
293 293
294 TEST_F(ExternalFileURLRequestJobTest, HostedDocument) { 294 TEST_F(ExternalFileURLRequestJobTest, HostedDocument) {
295 // Open a gdoc file. 295 // Open a gdoc file.
296 test_delegate_->set_quit_on_redirect(true); 296 test_delegate_->set_quit_on_redirect(true);
297 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 297 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
298 GURL("externalfile:drive/root/Document 1 excludeDir-test.gdoc"), 298 GURL(
299 "externalfile:drive-test-user-hash/root/Document 1 "
300 "excludeDir-test.gdoc"),
299 net::DEFAULT_PRIORITY, 301 net::DEFAULT_PRIORITY,
300 test_delegate_.get(), 302 test_delegate_.get(),
301 NULL)); 303 NULL));
302 request->Start(); 304 request->Start();
303 305
304 base::RunLoop().Run(); 306 base::RunLoop().Run();
305 307
306 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 308 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
307 // Make sure that a hosted document triggers redirection. 309 // Make sure that a hosted document triggers redirection.
308 EXPECT_TRUE(request->is_redirecting()); 310 EXPECT_TRUE(request->is_redirecting());
309 EXPECT_TRUE(test_delegate_->redirect_url().is_valid()); 311 EXPECT_TRUE(test_delegate_->redirect_url().is_valid());
310 } 312 }
311 313
312 TEST_F(ExternalFileURLRequestJobTest, RootDirectory) { 314 TEST_F(ExternalFileURLRequestJobTest, RootDirectory) {
313 scoped_ptr<net::URLRequest> request( 315 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
314 url_request_context_->CreateRequest(GURL("externalfile:drive/root"), 316 GURL("externalfile:drive-test-user-hash/root"),
315 net::DEFAULT_PRIORITY, 317 net::DEFAULT_PRIORITY,
316 test_delegate_.get(), 318 test_delegate_.get(),
317 NULL)); 319 NULL));
318 request->Start(); 320 request->Start();
319 321
320 base::RunLoop().Run(); 322 base::RunLoop().Run();
321 323
322 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 324 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
323 EXPECT_EQ(net::ERR_FAILED, request->status().error()); 325 EXPECT_EQ(net::ERR_FAILED, request->status().error());
324 } 326 }
325 327
326 TEST_F(ExternalFileURLRequestJobTest, Directory) { 328 TEST_F(ExternalFileURLRequestJobTest, Directory) {
327 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 329 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
328 GURL("externalfile:drive/root/Directory 1"), 330 GURL("externalfile:drive-test-user-hash/root/Directory 1"),
329 net::DEFAULT_PRIORITY, 331 net::DEFAULT_PRIORITY,
330 test_delegate_.get(), 332 test_delegate_.get(),
331 NULL)); 333 NULL));
332 request->Start(); 334 request->Start();
333 335
334 base::RunLoop().Run(); 336 base::RunLoop().Run();
335 337
336 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 338 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
337 EXPECT_EQ(net::ERR_FAILED, request->status().error()); 339 EXPECT_EQ(net::ERR_FAILED, request->status().error());
338 } 340 }
339 341
340 TEST_F(ExternalFileURLRequestJobTest, NonExistingFile) { 342 TEST_F(ExternalFileURLRequestJobTest, NonExistingFile) {
341 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 343 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
342 GURL("externalfile:drive/root/non-existing-file.txt"), 344 GURL("externalfile:drive-test-user-hash/root/non-existing-file.txt"),
343 net::DEFAULT_PRIORITY, 345 net::DEFAULT_PRIORITY,
344 test_delegate_.get(), 346 test_delegate_.get(),
345 NULL)); 347 NULL));
346 request->Start(); 348 request->Start();
347 349
348 base::RunLoop().Run(); 350 base::RunLoop().Run();
349 351
350 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 352 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
351 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error()); 353 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, request->status().error());
352 } 354 }
353 355
354 TEST_F(ExternalFileURLRequestJobTest, WrongFormat) { 356 TEST_F(ExternalFileURLRequestJobTest, WrongFormat) {
355 scoped_ptr<net::URLRequest> request( 357 scoped_ptr<net::URLRequest> request(
356 url_request_context_->CreateRequest(GURL("externalfile:"), 358 url_request_context_->CreateRequest(GURL("externalfile:"),
357 net::DEFAULT_PRIORITY, 359 net::DEFAULT_PRIORITY,
358 test_delegate_.get(), 360 test_delegate_.get(),
359 NULL)); 361 NULL));
360 request->Start(); 362 request->Start();
361 363
362 base::RunLoop().Run(); 364 base::RunLoop().Run();
363 365
364 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 366 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
365 EXPECT_EQ(net::ERR_INVALID_URL, request->status().error()); 367 EXPECT_EQ(net::ERR_INVALID_URL, request->status().error());
366 } 368 }
367 369
368 TEST_F(ExternalFileURLRequestJobTest, Cancel) { 370 TEST_F(ExternalFileURLRequestJobTest, Cancel) {
369 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 371 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
370 GURL("externalfile:drive/root/File 1.txt"), 372 GURL("externalfile:drive-test-user-hash/root/File 1.txt"),
371 net::DEFAULT_PRIORITY, 373 net::DEFAULT_PRIORITY,
372 test_delegate_.get(), 374 test_delegate_.get(),
373 NULL)); 375 NULL));
374 376
375 // Start the request, and cancel it immediately after it. 377 // Start the request, and cancel it immediately after it.
376 request->Start(); 378 request->Start();
377 request->Cancel(); 379 request->Cancel();
378 380
379 base::RunLoop().Run(); 381 base::RunLoop().Run();
380 382
381 EXPECT_EQ(net::URLRequestStatus::CANCELED, request->status().status()); 383 EXPECT_EQ(net::URLRequestStatus::CANCELED, request->status().status());
382 } 384 }
383 385
384 TEST_F(ExternalFileURLRequestJobTest, RangeHeader) { 386 TEST_F(ExternalFileURLRequestJobTest, RangeHeader) {
385 const GURL kTestUrl("externalfile:drive/root/File 1.txt"); 387 const GURL kTestUrl("externalfile:drive-test-user-hash/root/File 1.txt");
386 const base::FilePath kTestFilePath("drive/root/File 1.txt"); 388 const base::FilePath kTestFilePath("drive/root/File 1.txt");
387 389
388 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 390 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
389 kTestUrl, net::DEFAULT_PRIORITY, test_delegate_.get(), NULL)); 391 kTestUrl, net::DEFAULT_PRIORITY, test_delegate_.get(), NULL));
390 392
391 // Set range header. 393 // Set range header.
392 request->SetExtraRequestHeaderByName( 394 request->SetExtraRequestHeaderByName(
393 "Range", "bytes=3-5", false /* overwrite */); 395 "Range", "bytes=3-5", false /* overwrite */);
394 request->Start(); 396 request->Start();
395 397
396 base::RunLoop().Run(); 398 base::RunLoop().Run();
397 399
398 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 400 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status());
399 401
400 // Reading file must be done after |request| runs, otherwise 402 // Reading file must be done after |request| runs, otherwise
401 // it'll create a local cache file, and we cannot test correctly. 403 // it'll create a local cache file, and we cannot test correctly.
402 std::string expected_data; 404 std::string expected_data;
403 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data)); 405 ASSERT_TRUE(ReadDriveFileSync(kTestFilePath, &expected_data));
404 EXPECT_EQ(expected_data.substr(3, 3), test_delegate_->data_received()); 406 EXPECT_EQ(expected_data.substr(3, 3), test_delegate_->data_received());
405 } 407 }
406 408
407 TEST_F(ExternalFileURLRequestJobTest, WrongRangeHeader) { 409 TEST_F(ExternalFileURLRequestJobTest, WrongRangeHeader) {
408 const GURL kTestUrl("externalfile:drive/root/File 1.txt"); 410 const GURL kTestUrl("externalfile:drive-test-user-hash/root/File 1.txt");
409 411
410 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest( 412 scoped_ptr<net::URLRequest> request(url_request_context_->CreateRequest(
411 kTestUrl, net::DEFAULT_PRIORITY, test_delegate_.get(), NULL)); 413 kTestUrl, net::DEFAULT_PRIORITY, test_delegate_.get(), NULL));
412 414
413 // Set range header. 415 // Set range header.
414 request->SetExtraRequestHeaderByName( 416 request->SetExtraRequestHeaderByName(
415 "Range", "Wrong Range Header Value", false /* overwrite */); 417 "Range", "Wrong Range Header Value", false /* overwrite */);
416 request->Start(); 418 request->Start();
417 419
418 base::RunLoop().Run(); 420 base::RunLoop().Run();
419 421
420 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status()); 422 EXPECT_EQ(net::URLRequestStatus::FAILED, request->status().status());
421 EXPECT_EQ(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE, request->status().error()); 423 EXPECT_EQ(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE, request->status().error());
422 } 424 }
423 425
424 } // namespace chromeos 426 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698