OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 "google_apis/drive/files_list_request_runner.h" | 5 #include "google_apis/drive/files_list_request_runner.h" |
6 | 6 |
| 7 #include <memory> |
7 #include <utility> | 8 #include <utility> |
8 | 9 |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "base/run_loop.h" | 11 #include "base/run_loop.h" |
12 #include "base/sequenced_task_runner.h" | 12 #include "base/sequenced_task_runner.h" |
13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
14 #include "base/thread_task_runner_handle.h" | 14 #include "base/thread_task_runner_handle.h" |
15 #include "google_apis/drive/base_requests.h" | 15 #include "google_apis/drive/base_requests.h" |
16 #include "google_apis/drive/dummy_auth_service.h" | 16 #include "google_apis/drive/dummy_auth_service.h" |
17 #include "google_apis/drive/request_sender.h" | 17 #include "google_apis/drive/request_sender.h" |
18 #include "net/test/embedded_test_server/embedded_test_server.h" | 18 #include "net/test/embedded_test_server/embedded_test_server.h" |
19 #include "net/test/embedded_test_server/http_request.h" | 19 #include "net/test/embedded_test_server/http_request.h" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 | 86 |
87 void TearDown() override { | 87 void TearDown() override { |
88 on_completed_callback_ = base::Closure(); | 88 on_completed_callback_ = base::Closure(); |
89 http_request_.reset(); | 89 http_request_.reset(); |
90 response_error_.reset(); | 90 response_error_.reset(); |
91 response_entry_.reset(); | 91 response_entry_.reset(); |
92 } | 92 } |
93 | 93 |
94 // Called when the request is completed and no more backoff retries will | 94 // Called when the request is completed and no more backoff retries will |
95 // happen. | 95 // happen. |
96 void OnCompleted(DriveApiErrorCode error, scoped_ptr<FileList> entry) { | 96 void OnCompleted(DriveApiErrorCode error, std::unique_ptr<FileList> entry) { |
97 response_error_.reset(new DriveApiErrorCode(error)); | 97 response_error_.reset(new DriveApiErrorCode(error)); |
98 response_entry_ = std::move(entry); | 98 response_entry_ = std::move(entry); |
99 on_completed_callback_.Run(); | 99 on_completed_callback_.Run(); |
100 } | 100 } |
101 | 101 |
102 protected: | 102 protected: |
103 // Sets a fake Drive API server response to be returned for the upcoming HTTP | 103 // Sets a fake Drive API server response to be returned for the upcoming HTTP |
104 // request. | 104 // request. |
105 void SetFakeServerResponse(net::HttpStatusCode code, | 105 void SetFakeServerResponse(net::HttpStatusCode code, |
106 const std::string& content) { | 106 const std::string& content) { |
107 fake_server_response_.reset(new net::test_server::BasicHttpResponse); | 107 fake_server_response_.reset(new net::test_server::BasicHttpResponse); |
108 fake_server_response_->set_code(code); | 108 fake_server_response_->set_code(code); |
109 fake_server_response_->set_content(content); | 109 fake_server_response_->set_content(content); |
110 fake_server_response_->set_content_type("application/json"); | 110 fake_server_response_->set_content_type("application/json"); |
111 } | 111 } |
112 | 112 |
113 // Handles a HTTP request to the Drive API server and returns a fake response. | 113 // Handles a HTTP request to the Drive API server and returns a fake response. |
114 scoped_ptr<net::test_server::HttpResponse> OnFilesListRequest( | 114 std::unique_ptr<net::test_server::HttpResponse> OnFilesListRequest( |
115 const GURL& base_url, | 115 const GURL& base_url, |
116 const net::test_server::HttpRequest& request) { | 116 const net::test_server::HttpRequest& request) { |
117 http_request_.reset(new net::test_server::HttpRequest(request)); | 117 http_request_.reset(new net::test_server::HttpRequest(request)); |
118 return std::move(fake_server_response_); | 118 return std::move(fake_server_response_); |
119 } | 119 } |
120 | 120 |
121 base::MessageLoopForIO message_loop_; // Test server needs IO thread. | 121 base::MessageLoopForIO message_loop_; // Test server needs IO thread. |
122 scoped_ptr<RequestSender> request_sender_; | 122 std::unique_ptr<RequestSender> request_sender_; |
123 net::EmbeddedTestServer test_server_; | 123 net::EmbeddedTestServer test_server_; |
124 scoped_ptr<FilesListRequestRunner> runner_; | 124 std::unique_ptr<FilesListRequestRunner> runner_; |
125 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; | 125 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; |
126 base::Closure on_completed_callback_; | 126 base::Closure on_completed_callback_; |
127 | 127 |
128 // Response set by test cases to be returned from the HTTP server. | 128 // Response set by test cases to be returned from the HTTP server. |
129 scoped_ptr<net::test_server::BasicHttpResponse> fake_server_response_; | 129 std::unique_ptr<net::test_server::BasicHttpResponse> fake_server_response_; |
130 | 130 |
131 // A requests and a response stored for verification in test cases. | 131 // A requests and a response stored for verification in test cases. |
132 scoped_ptr<net::test_server::HttpRequest> http_request_; | 132 std::unique_ptr<net::test_server::HttpRequest> http_request_; |
133 scoped_ptr<DriveApiErrorCode> response_error_; | 133 std::unique_ptr<DriveApiErrorCode> response_error_; |
134 scoped_ptr<FileList> response_entry_; | 134 std::unique_ptr<FileList> response_entry_; |
135 }; | 135 }; |
136 | 136 |
137 TEST_F(FilesListRequestRunnerTest, Success_NoBackoff) { | 137 TEST_F(FilesListRequestRunnerTest, Success_NoBackoff) { |
138 SetFakeServerResponse(net::HTTP_OK, kSuccessResource); | 138 SetFakeServerResponse(net::HTTP_OK, kSuccessResource); |
139 runner_->CreateAndStartWithSizeBackoff( | 139 runner_->CreateAndStartWithSizeBackoff( |
140 kMaxResults, kQuery, kFields, | 140 kMaxResults, kQuery, kFields, |
141 base::Bind(&FilesListRequestRunnerTest::OnCompleted, | 141 base::Bind(&FilesListRequestRunnerTest::OnCompleted, |
142 base::Unretained(this))); | 142 base::Unretained(this))); |
143 | 143 |
144 base::RunLoop run_loop; | 144 base::RunLoop run_loop; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 http_request_->relative_url); | 267 http_request_->relative_url); |
268 | 268 |
269 // There must be no backoff in case of an error different than | 269 // There must be no backoff in case of an error different than |
270 // DRIVE_RESPONSE_TOO_LARGE. | 270 // DRIVE_RESPONSE_TOO_LARGE. |
271 ASSERT_TRUE(response_error_.get()); | 271 ASSERT_TRUE(response_error_.get()); |
272 EXPECT_EQ(DRIVE_NO_SPACE, *response_error_); | 272 EXPECT_EQ(DRIVE_NO_SPACE, *response_error_); |
273 EXPECT_FALSE(response_entry_.get()); | 273 EXPECT_FALSE(response_entry_.get()); |
274 } | 274 } |
275 | 275 |
276 } // namespace google_apis | 276 } // namespace google_apis |
OLD | NEW |