1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/message_loop/message_loop.h"
6 #include "base/test/test_simple_task_runner.h"
7 #include "components/drive/service/drive_api_service.h"
8 #include "google_apis/drive/dummy_auth_service.h"
9 #include "google_apis/drive/request_sender.h"
10 #include "google_apis/drive/test_util.h"
11 #include "net/url_request/url_request_test_util.h"
12 #include "testing/gtest/include/gtest/gtest.h"
16 const char kTestUserAgent
[] = "test-user-agent";
19 class TestAuthService
: public google_apis::DummyAuthService
{
21 void StartAuthentication(
22 const google_apis::AuthStatusCallback
& callback
) override
{
26 bool HasAccessToken() const override
{ return false; }
28 void SendHttpError() {
29 ASSERT_FALSE(callback_
.is_null());
30 callback_
.Run(google_apis::HTTP_UNAUTHORIZED
, "");
34 google_apis::AuthStatusCallback callback_
;
37 TEST(DriveAPIServiceTest
, BatchRequestConfiguratorWithAuthFailure
) {
38 const GURL
test_base_url("http://localhost/");
39 google_apis::DriveApiUrlGenerator
url_generator(test_base_url
, test_base_url
);
40 scoped_refptr
<base::TestSimpleTaskRunner
> task_runner
=
41 new base::TestSimpleTaskRunner();
42 scoped_refptr
<net::TestURLRequestContextGetter
> request_context_getter
=
43 new net::TestURLRequestContextGetter(task_runner
.get());
44 google_apis::RequestSender
sender(new TestAuthService
,
45 request_context_getter
.get(),
46 task_runner
.get(), kTestUserAgent
);
47 google_apis::drive::BatchUploadRequest
* const request
=
48 new google_apis::drive::BatchUploadRequest(&sender
, url_generator
);
49 sender
.StartRequestWithAuthRetry(request
);
50 BatchRequestConfigurator
configurator(
51 request
->GetWeakPtrAsBatchUploadRequest(), task_runner
.get(),
52 url_generator
, google_apis::CancelCallback());
53 static_cast<TestAuthService
*>(sender
.auth_service())->SendHttpError();
56 google_apis::DriveApiErrorCode error
= google_apis::HTTP_SUCCESS
;
57 scoped_ptr
<google_apis::FileResource
> file_resource
;
58 configurator
.MultipartUploadNewFile(
59 "text/plain", 10, "", "title",
60 base::FilePath(FILE_PATH_LITERAL("/file")), UploadNewFileOptions(),
61 google_apis::test_util::CreateCopyResultCallback(&error
,
63 google_apis::ProgressCallback());
64 EXPECT_EQ(google_apis::DRIVE_OTHER_ERROR
, error
);
67 google_apis::DriveApiErrorCode error
= google_apis::HTTP_SUCCESS
;
68 scoped_ptr
<google_apis::FileResource
> file_resource
;
69 configurator
.MultipartUploadExistingFile(
70 "text/plain", 10, "resource_id",
71 base::FilePath(FILE_PATH_LITERAL("/file")), UploadExistingFileOptions(),
72 google_apis::test_util::CreateCopyResultCallback(&error
,
74 google_apis::ProgressCallback());
75 EXPECT_EQ(google_apis::DRIVE_OTHER_ERROR
, error
);