| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "google_apis/drive/drive_api_requests.h" | 5 #include "google_apis/drive/drive_api_requests.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 "\"selfLink\": \"self_link\",\n" | 51 "\"selfLink\": \"self_link\",\n" |
| 52 "}\n"; | 52 "}\n"; |
| 53 | 53 |
| 54 const char kTestUploadExistingFilePath[] = "/upload/existingfile/path"; | 54 const char kTestUploadExistingFilePath[] = "/upload/existingfile/path"; |
| 55 const char kTestUploadNewFilePath[] = "/upload/newfile/path"; | 55 const char kTestUploadNewFilePath[] = "/upload/newfile/path"; |
| 56 const char kTestDownloadPathPrefix[] = "/host/"; | 56 const char kTestDownloadPathPrefix[] = "/host/"; |
| 57 | 57 |
| 58 // Used as a GetContentCallback. | 58 // Used as a GetContentCallback. |
| 59 void AppendContent(std::string* out, | 59 void AppendContent(std::string* out, |
| 60 DriveApiErrorCode error, | 60 DriveApiErrorCode error, |
| 61 scoped_ptr<std::string> content) { | 61 std::unique_ptr<std::string> content) { |
| 62 EXPECT_EQ(HTTP_SUCCESS, error); | 62 EXPECT_EQ(HTTP_SUCCESS, error); |
| 63 out->append(*content); | 63 out->append(*content); |
| 64 } | 64 } |
| 65 | 65 |
| 66 class TestBatchableDelegate : public BatchableDelegate { | 66 class TestBatchableDelegate : public BatchableDelegate { |
| 67 public: | 67 public: |
| 68 TestBatchableDelegate(const GURL url, | 68 TestBatchableDelegate(const GURL url, |
| 69 const std::string& content_type, | 69 const std::string& content_type, |
| 70 const std::string& content_data, | 70 const std::string& content_data, |
| 71 const base::Closure& callback) | 71 const base::Closure& callback) |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 public_property.set_key("key2"); | 184 public_property.set_key("key2"); |
| 185 public_property.set_value("value2"); | 185 public_property.set_value("value2"); |
| 186 | 186 |
| 187 testing_properties_.clear(); | 187 testing_properties_.clear(); |
| 188 testing_properties_.push_back(private_property); | 188 testing_properties_.push_back(private_property); |
| 189 testing_properties_.push_back(public_property); | 189 testing_properties_.push_back(public_property); |
| 190 } | 190 } |
| 191 | 191 |
| 192 base::MessageLoopForIO message_loop_; // Test server needs IO thread. | 192 base::MessageLoopForIO message_loop_; // Test server needs IO thread. |
| 193 net::EmbeddedTestServer test_server_; | 193 net::EmbeddedTestServer test_server_; |
| 194 scoped_ptr<RequestSender> request_sender_; | 194 std::unique_ptr<RequestSender> request_sender_; |
| 195 scoped_ptr<DriveApiUrlGenerator> url_generator_; | 195 std::unique_ptr<DriveApiUrlGenerator> url_generator_; |
| 196 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; | 196 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; |
| 197 base::ScopedTempDir temp_dir_; | 197 base::ScopedTempDir temp_dir_; |
| 198 | 198 |
| 199 // This is a path to the file which contains expected response from | 199 // This is a path to the file which contains expected response from |
| 200 // the server. See also HandleDataFileRequest below. | 200 // the server. See also HandleDataFileRequest below. |
| 201 base::FilePath expected_data_file_path_; | 201 base::FilePath expected_data_file_path_; |
| 202 | 202 |
| 203 // This is a path string in the expected response header from the server | 203 // This is a path string in the expected response header from the server |
| 204 // for initiating file uploading. | 204 // for initiating file uploading. |
| 205 std::string expected_upload_path_; | 205 std::string expected_upload_path_; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 224 private: | 224 private: |
| 225 void ResetExpectedResponse() { | 225 void ResetExpectedResponse() { |
| 226 expected_data_file_path_.clear(); | 226 expected_data_file_path_.clear(); |
| 227 expected_upload_path_.clear(); | 227 expected_upload_path_.clear(); |
| 228 expected_content_type_.clear(); | 228 expected_content_type_.clear(); |
| 229 expected_content_.clear(); | 229 expected_content_.clear(); |
| 230 } | 230 } |
| 231 | 231 |
| 232 // For "Children: delete" request, the server will return "204 No Content" | 232 // For "Children: delete" request, the server will return "204 No Content" |
| 233 // response meaning "success". | 233 // response meaning "success". |
| 234 scoped_ptr<net::test_server::HttpResponse> HandleChildrenDeleteRequest( | 234 std::unique_ptr<net::test_server::HttpResponse> HandleChildrenDeleteRequest( |
| 235 const net::test_server::HttpRequest& request) { | 235 const net::test_server::HttpRequest& request) { |
| 236 if (request.method != net::test_server::METHOD_DELETE || | 236 if (request.method != net::test_server::METHOD_DELETE || |
| 237 request.relative_url.find("/children/") == std::string::npos) { | 237 request.relative_url.find("/children/") == std::string::npos) { |
| 238 // The request is not the "Children: delete" request. Delegate the | 238 // The request is not the "Children: delete" request. Delegate the |
| 239 // processing to the next handler. | 239 // processing to the next handler. |
| 240 return scoped_ptr<net::test_server::HttpResponse>(); | 240 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 241 } | 241 } |
| 242 | 242 |
| 243 http_request_ = request; | 243 http_request_ = request; |
| 244 | 244 |
| 245 // Return the response with just "204 No Content" status code. | 245 // Return the response with just "204 No Content" status code. |
| 246 scoped_ptr<net::test_server::BasicHttpResponse> http_response( | 246 std::unique_ptr<net::test_server::BasicHttpResponse> http_response( |
| 247 new net::test_server::BasicHttpResponse); | 247 new net::test_server::BasicHttpResponse); |
| 248 http_response->set_code(net::HTTP_NO_CONTENT); | 248 http_response->set_code(net::HTTP_NO_CONTENT); |
| 249 return std::move(http_response); | 249 return std::move(http_response); |
| 250 } | 250 } |
| 251 | 251 |
| 252 // Reads the data file of |expected_data_file_path_| and returns its content | 252 // Reads the data file of |expected_data_file_path_| and returns its content |
| 253 // for the request. | 253 // for the request. |
| 254 // To use this method, it is necessary to set |expected_data_file_path_| | 254 // To use this method, it is necessary to set |expected_data_file_path_| |
| 255 // to the appropriate file path before sending the request to the server. | 255 // to the appropriate file path before sending the request to the server. |
| 256 scoped_ptr<net::test_server::HttpResponse> HandleDataFileRequest( | 256 std::unique_ptr<net::test_server::HttpResponse> HandleDataFileRequest( |
| 257 const net::test_server::HttpRequest& request) { | 257 const net::test_server::HttpRequest& request) { |
| 258 if (expected_data_file_path_.empty()) { | 258 if (expected_data_file_path_.empty()) { |
| 259 // The file is not specified. Delegate the processing to the next | 259 // The file is not specified. Delegate the processing to the next |
| 260 // handler. | 260 // handler. |
| 261 return scoped_ptr<net::test_server::HttpResponse>(); | 261 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 262 } | 262 } |
| 263 | 263 |
| 264 http_request_ = request; | 264 http_request_ = request; |
| 265 | 265 |
| 266 // Return the response from the data file. | 266 // Return the response from the data file. |
| 267 return test_util::CreateHttpResponseFromFile(expected_data_file_path_); | 267 return test_util::CreateHttpResponseFromFile(expected_data_file_path_); |
| 268 } | 268 } |
| 269 | 269 |
| 270 // Deletes the resource and returns no content with HTTP_NO_CONTENT status | 270 // Deletes the resource and returns no content with HTTP_NO_CONTENT status |
| 271 // code. | 271 // code. |
| 272 scoped_ptr<net::test_server::HttpResponse> HandleDeleteRequest( | 272 std::unique_ptr<net::test_server::HttpResponse> HandleDeleteRequest( |
| 273 const net::test_server::HttpRequest& request) { | 273 const net::test_server::HttpRequest& request) { |
| 274 if (request.method != net::test_server::METHOD_DELETE || | 274 if (request.method != net::test_server::METHOD_DELETE || |
| 275 request.relative_url.find("/files/") == std::string::npos) { | 275 request.relative_url.find("/files/") == std::string::npos) { |
| 276 // The file is not file deletion request. Delegate the processing to the | 276 // The file is not file deletion request. Delegate the processing to the |
| 277 // next handler. | 277 // next handler. |
| 278 return scoped_ptr<net::test_server::HttpResponse>(); | 278 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 279 } | 279 } |
| 280 | 280 |
| 281 http_request_ = request; | 281 http_request_ = request; |
| 282 | 282 |
| 283 scoped_ptr<net::test_server::BasicHttpResponse> response( | 283 std::unique_ptr<net::test_server::BasicHttpResponse> response( |
| 284 new net::test_server::BasicHttpResponse); | 284 new net::test_server::BasicHttpResponse); |
| 285 response->set_code(net::HTTP_NO_CONTENT); | 285 response->set_code(net::HTTP_NO_CONTENT); |
| 286 | 286 |
| 287 return std::move(response); | 287 return std::move(response); |
| 288 } | 288 } |
| 289 | 289 |
| 290 // Returns PRECONDITION_FAILED response for ETag mismatching with error JSON | 290 // Returns PRECONDITION_FAILED response for ETag mismatching with error JSON |
| 291 // content specified by |expected_precondition_failed_file_path_|. | 291 // content specified by |expected_precondition_failed_file_path_|. |
| 292 // To use this method, it is necessary to set the variable to the appropriate | 292 // To use this method, it is necessary to set the variable to the appropriate |
| 293 // file path before sending the request to the server. | 293 // file path before sending the request to the server. |
| 294 scoped_ptr<net::test_server::HttpResponse> HandlePreconditionFailedRequest( | 294 std::unique_ptr<net::test_server::HttpResponse> |
| 295 HandlePreconditionFailedRequest( |
| 295 const net::test_server::HttpRequest& request) { | 296 const net::test_server::HttpRequest& request) { |
| 296 if (expected_precondition_failed_file_path_.empty()) { | 297 if (expected_precondition_failed_file_path_.empty()) { |
| 297 // The file is not specified. Delegate the process to the next handler. | 298 // The file is not specified. Delegate the process to the next handler. |
| 298 return scoped_ptr<net::test_server::HttpResponse>(); | 299 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 299 } | 300 } |
| 300 | 301 |
| 301 http_request_ = request; | 302 http_request_ = request; |
| 302 | 303 |
| 303 scoped_ptr<net::test_server::BasicHttpResponse> response( | 304 std::unique_ptr<net::test_server::BasicHttpResponse> response( |
| 304 new net::test_server::BasicHttpResponse); | 305 new net::test_server::BasicHttpResponse); |
| 305 response->set_code(net::HTTP_PRECONDITION_FAILED); | 306 response->set_code(net::HTTP_PRECONDITION_FAILED); |
| 306 | 307 |
| 307 std::string content; | 308 std::string content; |
| 308 if (base::ReadFileToString(expected_precondition_failed_file_path_, | 309 if (base::ReadFileToString(expected_precondition_failed_file_path_, |
| 309 &content)) { | 310 &content)) { |
| 310 response->set_content(content); | 311 response->set_content(content); |
| 311 response->set_content_type("application/json"); | 312 response->set_content_type("application/json"); |
| 312 } | 313 } |
| 313 | 314 |
| 314 return std::move(response); | 315 return std::move(response); |
| 315 } | 316 } |
| 316 | 317 |
| 317 // Returns the response based on set expected upload url. | 318 // Returns the response based on set expected upload url. |
| 318 // The response contains the url in its "Location: " header. Also, it doesn't | 319 // The response contains the url in its "Location: " header. Also, it doesn't |
| 319 // have any content. | 320 // have any content. |
| 320 // To use this method, it is necessary to set |expected_upload_path_| | 321 // To use this method, it is necessary to set |expected_upload_path_| |
| 321 // to the string representation of the url to be returned. | 322 // to the string representation of the url to be returned. |
| 322 scoped_ptr<net::test_server::HttpResponse> HandleInitiateUploadRequest( | 323 std::unique_ptr<net::test_server::HttpResponse> HandleInitiateUploadRequest( |
| 323 const net::test_server::HttpRequest& request) { | 324 const net::test_server::HttpRequest& request) { |
| 324 if (request.relative_url == expected_upload_path_ || | 325 if (request.relative_url == expected_upload_path_ || |
| 325 expected_upload_path_.empty()) { | 326 expected_upload_path_.empty()) { |
| 326 // The request is for resume uploading or the expected upload url is not | 327 // The request is for resume uploading or the expected upload url is not |
| 327 // set. Delegate the processing to the next handler. | 328 // set. Delegate the processing to the next handler. |
| 328 return scoped_ptr<net::test_server::HttpResponse>(); | 329 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 329 } | 330 } |
| 330 | 331 |
| 331 http_request_ = request; | 332 http_request_ = request; |
| 332 | 333 |
| 333 scoped_ptr<net::test_server::BasicHttpResponse> response( | 334 std::unique_ptr<net::test_server::BasicHttpResponse> response( |
| 334 new net::test_server::BasicHttpResponse); | 335 new net::test_server::BasicHttpResponse); |
| 335 | 336 |
| 336 // Check if the X-Upload-Content-Length is present. If yes, store the | 337 // Check if the X-Upload-Content-Length is present. If yes, store the |
| 337 // length of the file. | 338 // length of the file. |
| 338 auto found = request.headers.find("X-Upload-Content-Length"); | 339 auto found = request.headers.find("X-Upload-Content-Length"); |
| 339 if (found == request.headers.end() || | 340 if (found == request.headers.end() || |
| 340 !base::StringToInt64(found->second, &content_length_)) { | 341 !base::StringToInt64(found->second, &content_length_)) { |
| 341 return scoped_ptr<net::test_server::HttpResponse>(); | 342 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 342 } | 343 } |
| 343 received_bytes_ = 0; | 344 received_bytes_ = 0; |
| 344 | 345 |
| 345 response->set_code(net::HTTP_OK); | 346 response->set_code(net::HTTP_OK); |
| 346 response->AddCustomHeader( | 347 response->AddCustomHeader( |
| 347 "Location", | 348 "Location", |
| 348 test_server_.base_url().Resolve(expected_upload_path_).spec()); | 349 test_server_.base_url().Resolve(expected_upload_path_).spec()); |
| 349 return std::move(response); | 350 return std::move(response); |
| 350 } | 351 } |
| 351 | 352 |
| 352 scoped_ptr<net::test_server::HttpResponse> HandleResumeUploadRequest( | 353 std::unique_ptr<net::test_server::HttpResponse> HandleResumeUploadRequest( |
| 353 const net::test_server::HttpRequest& request) { | 354 const net::test_server::HttpRequest& request) { |
| 354 if (request.relative_url != expected_upload_path_) { | 355 if (request.relative_url != expected_upload_path_) { |
| 355 // The request path is different from the expected path for uploading. | 356 // The request path is different from the expected path for uploading. |
| 356 // Delegate the processing to the next handler. | 357 // Delegate the processing to the next handler. |
| 357 return scoped_ptr<net::test_server::HttpResponse>(); | 358 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 358 } | 359 } |
| 359 | 360 |
| 360 http_request_ = request; | 361 http_request_ = request; |
| 361 | 362 |
| 362 if (!request.content.empty()) { | 363 if (!request.content.empty()) { |
| 363 auto iter = request.headers.find("Content-Range"); | 364 auto iter = request.headers.find("Content-Range"); |
| 364 if (iter == request.headers.end()) { | 365 if (iter == request.headers.end()) { |
| 365 // The range must be set. | 366 // The range must be set. |
| 366 return scoped_ptr<net::test_server::HttpResponse>(); | 367 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 367 } | 368 } |
| 368 | 369 |
| 369 int64_t length = 0; | 370 int64_t length = 0; |
| 370 int64_t start_position = 0; | 371 int64_t start_position = 0; |
| 371 int64_t end_position = 0; | 372 int64_t end_position = 0; |
| 372 if (!test_util::ParseContentRangeHeader( | 373 if (!test_util::ParseContentRangeHeader( |
| 373 iter->second, &start_position, &end_position, &length)) { | 374 iter->second, &start_position, &end_position, &length)) { |
| 374 // Invalid "Content-Range" value. | 375 // Invalid "Content-Range" value. |
| 375 return scoped_ptr<net::test_server::HttpResponse>(); | 376 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 376 } | 377 } |
| 377 | 378 |
| 378 EXPECT_EQ(start_position, received_bytes_); | 379 EXPECT_EQ(start_position, received_bytes_); |
| 379 EXPECT_EQ(length, content_length_); | 380 EXPECT_EQ(length, content_length_); |
| 380 | 381 |
| 381 // end_position is inclusive, but so +1 to change the range to byte size. | 382 // end_position is inclusive, but so +1 to change the range to byte size. |
| 382 received_bytes_ = end_position + 1; | 383 received_bytes_ = end_position + 1; |
| 383 } | 384 } |
| 384 | 385 |
| 385 if (received_bytes_ < content_length_) { | 386 if (received_bytes_ < content_length_) { |
| 386 scoped_ptr<net::test_server::BasicHttpResponse> response( | 387 std::unique_ptr<net::test_server::BasicHttpResponse> response( |
| 387 new net::test_server::BasicHttpResponse); | 388 new net::test_server::BasicHttpResponse); |
| 388 // Set RESUME INCOMPLETE (308) status code. | 389 // Set RESUME INCOMPLETE (308) status code. |
| 389 response->set_code(static_cast<net::HttpStatusCode>(308)); | 390 response->set_code(static_cast<net::HttpStatusCode>(308)); |
| 390 | 391 |
| 391 // Add Range header to the response, based on the values of | 392 // Add Range header to the response, based on the values of |
| 392 // Content-Range header in the request. | 393 // Content-Range header in the request. |
| 393 // The header is annotated only when at least one byte is received. | 394 // The header is annotated only when at least one byte is received. |
| 394 if (received_bytes_ > 0) { | 395 if (received_bytes_ > 0) { |
| 395 response->AddCustomHeader( | 396 response->AddCustomHeader( |
| 396 "Range", "bytes=0-" + base::Int64ToString(received_bytes_ - 1)); | 397 "Range", "bytes=0-" + base::Int64ToString(received_bytes_ - 1)); |
| 397 } | 398 } |
| 398 | 399 |
| 399 return std::move(response); | 400 return std::move(response); |
| 400 } | 401 } |
| 401 | 402 |
| 402 // All bytes are received. Return the "success" response with the file's | 403 // All bytes are received. Return the "success" response with the file's |
| 403 // (dummy) metadata. | 404 // (dummy) metadata. |
| 404 scoped_ptr<net::test_server::BasicHttpResponse> response = | 405 std::unique_ptr<net::test_server::BasicHttpResponse> response = |
| 405 test_util::CreateHttpResponseFromFile( | 406 test_util::CreateHttpResponseFromFile( |
| 406 test_util::GetTestFilePath("drive/file_entry.json")); | 407 test_util::GetTestFilePath("drive/file_entry.json")); |
| 407 | 408 |
| 408 // The response code is CREATED if it is new file uploading. | 409 // The response code is CREATED if it is new file uploading. |
| 409 if (http_request_.relative_url == kTestUploadNewFilePath) { | 410 if (http_request_.relative_url == kTestUploadNewFilePath) { |
| 410 response->set_code(net::HTTP_CREATED); | 411 response->set_code(net::HTTP_CREATED); |
| 411 } | 412 } |
| 412 | 413 |
| 413 return std::move(response); | 414 return std::move(response); |
| 414 } | 415 } |
| 415 | 416 |
| 416 // Returns the response based on set expected content and its type. | 417 // Returns the response based on set expected content and its type. |
| 417 // To use this method, both |expected_content_type_| and |expected_content_| | 418 // To use this method, both |expected_content_type_| and |expected_content_| |
| 418 // must be set in advance. | 419 // must be set in advance. |
| 419 scoped_ptr<net::test_server::HttpResponse> HandleContentResponse( | 420 std::unique_ptr<net::test_server::HttpResponse> HandleContentResponse( |
| 420 const net::test_server::HttpRequest& request) { | 421 const net::test_server::HttpRequest& request) { |
| 421 if (expected_content_type_.empty() || expected_content_.empty()) { | 422 if (expected_content_type_.empty() || expected_content_.empty()) { |
| 422 // Expected content is not set. Delegate the processing to the next | 423 // Expected content is not set. Delegate the processing to the next |
| 423 // handler. | 424 // handler. |
| 424 return scoped_ptr<net::test_server::HttpResponse>(); | 425 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 425 } | 426 } |
| 426 | 427 |
| 427 http_request_ = request; | 428 http_request_ = request; |
| 428 | 429 |
| 429 scoped_ptr<net::test_server::BasicHttpResponse> response( | 430 std::unique_ptr<net::test_server::BasicHttpResponse> response( |
| 430 new net::test_server::BasicHttpResponse); | 431 new net::test_server::BasicHttpResponse); |
| 431 response->set_code(net::HTTP_OK); | 432 response->set_code(net::HTTP_OK); |
| 432 response->set_content_type(expected_content_type_); | 433 response->set_content_type(expected_content_type_); |
| 433 response->set_content(expected_content_); | 434 response->set_content(expected_content_); |
| 434 return std::move(response); | 435 return std::move(response); |
| 435 } | 436 } |
| 436 | 437 |
| 437 // Handles a request for downloading a file. | 438 // Handles a request for downloading a file. |
| 438 scoped_ptr<net::test_server::HttpResponse> HandleDownloadRequest( | 439 std::unique_ptr<net::test_server::HttpResponse> HandleDownloadRequest( |
| 439 const net::test_server::HttpRequest& request) { | 440 const net::test_server::HttpRequest& request) { |
| 440 http_request_ = request; | 441 http_request_ = request; |
| 441 | 442 |
| 442 const GURL absolute_url = test_server_.GetURL(request.relative_url); | 443 const GURL absolute_url = test_server_.GetURL(request.relative_url); |
| 443 std::string id; | 444 std::string id; |
| 444 if (!test_util::RemovePrefix(absolute_url.path(), | 445 if (!test_util::RemovePrefix(absolute_url.path(), |
| 445 kTestDownloadPathPrefix, | 446 kTestDownloadPathPrefix, |
| 446 &id)) { | 447 &id)) { |
| 447 return scoped_ptr<net::test_server::HttpResponse>(); | 448 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 448 } | 449 } |
| 449 | 450 |
| 450 // For testing, returns a text with |id| repeated 3 times. | 451 // For testing, returns a text with |id| repeated 3 times. |
| 451 scoped_ptr<net::test_server::BasicHttpResponse> response( | 452 std::unique_ptr<net::test_server::BasicHttpResponse> response( |
| 452 new net::test_server::BasicHttpResponse); | 453 new net::test_server::BasicHttpResponse); |
| 453 response->set_code(net::HTTP_OK); | 454 response->set_code(net::HTTP_OK); |
| 454 response->set_content(id + id + id); | 455 response->set_content(id + id + id); |
| 455 response->set_content_type("text/plain"); | 456 response->set_content_type("text/plain"); |
| 456 return std::move(response); | 457 return std::move(response); |
| 457 } | 458 } |
| 458 | 459 |
| 459 scoped_ptr<net::test_server::HttpResponse> HandleBatchUploadRequest( | 460 std::unique_ptr<net::test_server::HttpResponse> HandleBatchUploadRequest( |
| 460 const net::test_server::HttpRequest& request) { | 461 const net::test_server::HttpRequest& request) { |
| 461 http_request_ = request; | 462 http_request_ = request; |
| 462 | 463 |
| 463 const GURL absolute_url = test_server_.GetURL(request.relative_url); | 464 const GURL absolute_url = test_server_.GetURL(request.relative_url); |
| 464 std::string id; | 465 std::string id; |
| 465 if (absolute_url.path() != "/upload/drive") | 466 if (absolute_url.path() != "/upload/drive") |
| 466 return scoped_ptr<net::test_server::HttpResponse>(); | 467 return std::unique_ptr<net::test_server::HttpResponse>(); |
| 467 | 468 |
| 468 scoped_ptr<net::test_server::BasicHttpResponse> response( | 469 std::unique_ptr<net::test_server::BasicHttpResponse> response( |
| 469 new net::test_server::BasicHttpResponse); | 470 new net::test_server::BasicHttpResponse); |
| 470 response->set_code(net::HTTP_OK); | 471 response->set_code(net::HTTP_OK); |
| 471 response->set_content_type("multipart/mixed; boundary=BOUNDARY"); | 472 response->set_content_type("multipart/mixed; boundary=BOUNDARY"); |
| 472 response->set_content( | 473 response->set_content( |
| 473 "--BOUNDARY\r\n" | 474 "--BOUNDARY\r\n" |
| 474 "Content-Type: application/http\r\n" | 475 "Content-Type: application/http\r\n" |
| 475 "\r\n" | 476 "\r\n" |
| 476 "HTTP/1.1 200 OK\r\n" | 477 "HTTP/1.1 200 OK\r\n" |
| 477 "Content-Type: application/json; charset=UTF-8\r\n" | 478 "Content-Type: application/json; charset=UTF-8\r\n" |
| 478 "\r\n" | 479 "\r\n" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 501 | 502 |
| 502 TEST_F(DriveApiRequestsTest, DriveApiDataRequest_Fields) { | 503 TEST_F(DriveApiRequestsTest, DriveApiDataRequest_Fields) { |
| 503 // Make sure that "fields" query param is supported by using its subclass, | 504 // Make sure that "fields" query param is supported by using its subclass, |
| 504 // AboutGetRequest. | 505 // AboutGetRequest. |
| 505 | 506 |
| 506 // Set an expected data file containing valid result. | 507 // Set an expected data file containing valid result. |
| 507 expected_data_file_path_ = test_util::GetTestFilePath( | 508 expected_data_file_path_ = test_util::GetTestFilePath( |
| 508 "drive/about.json"); | 509 "drive/about.json"); |
| 509 | 510 |
| 510 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 511 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 511 scoped_ptr<AboutResource> about_resource; | 512 std::unique_ptr<AboutResource> about_resource; |
| 512 | 513 |
| 513 { | 514 { |
| 514 base::RunLoop run_loop; | 515 base::RunLoop run_loop; |
| 515 drive::AboutGetRequest* request = new drive::AboutGetRequest( | 516 drive::AboutGetRequest* request = new drive::AboutGetRequest( |
| 516 request_sender_.get(), | 517 request_sender_.get(), |
| 517 *url_generator_, | 518 *url_generator_, |
| 518 test_util::CreateQuitCallback( | 519 test_util::CreateQuitCallback( |
| 519 &run_loop, | 520 &run_loop, |
| 520 test_util::CreateCopyResultCallback(&error, &about_resource))); | 521 test_util::CreateCopyResultCallback(&error, &about_resource))); |
| 521 request->set_fields("kind,quotaBytesTotal,quotaBytesUsedAggregate," | 522 request->set_fields("kind,quotaBytesTotal,quotaBytesUsedAggregate," |
| 522 "largestChangeId,rootFolderId"); | 523 "largestChangeId,rootFolderId"); |
| 523 request_sender_->StartRequestWithAuthRetry(request); | 524 request_sender_->StartRequestWithAuthRetry(request); |
| 524 run_loop.Run(); | 525 run_loop.Run(); |
| 525 } | 526 } |
| 526 | 527 |
| 527 EXPECT_EQ(HTTP_SUCCESS, error); | 528 EXPECT_EQ(HTTP_SUCCESS, error); |
| 528 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); | 529 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); |
| 529 EXPECT_EQ("/drive/v2/about?" | 530 EXPECT_EQ("/drive/v2/about?" |
| 530 "fields=kind%2CquotaBytesTotal%2CquotaBytesUsedAggregate%2C" | 531 "fields=kind%2CquotaBytesTotal%2CquotaBytesUsedAggregate%2C" |
| 531 "largestChangeId%2CrootFolderId", | 532 "largestChangeId%2CrootFolderId", |
| 532 http_request_.relative_url); | 533 http_request_.relative_url); |
| 533 | 534 |
| 534 scoped_ptr<AboutResource> expected( | 535 std::unique_ptr<AboutResource> expected( |
| 535 AboutResource::CreateFrom( | 536 AboutResource::CreateFrom(*test_util::LoadJSONFile("drive/about.json"))); |
| 536 *test_util::LoadJSONFile("drive/about.json"))); | |
| 537 ASSERT_TRUE(about_resource.get()); | 537 ASSERT_TRUE(about_resource.get()); |
| 538 EXPECT_EQ(expected->largest_change_id(), about_resource->largest_change_id()); | 538 EXPECT_EQ(expected->largest_change_id(), about_resource->largest_change_id()); |
| 539 EXPECT_EQ(expected->quota_bytes_total(), about_resource->quota_bytes_total()); | 539 EXPECT_EQ(expected->quota_bytes_total(), about_resource->quota_bytes_total()); |
| 540 EXPECT_EQ(expected->quota_bytes_used_aggregate(), | 540 EXPECT_EQ(expected->quota_bytes_used_aggregate(), |
| 541 about_resource->quota_bytes_used_aggregate()); | 541 about_resource->quota_bytes_used_aggregate()); |
| 542 EXPECT_EQ(expected->root_folder_id(), about_resource->root_folder_id()); | 542 EXPECT_EQ(expected->root_folder_id(), about_resource->root_folder_id()); |
| 543 } | 543 } |
| 544 | 544 |
| 545 TEST_F(DriveApiRequestsTest, FilesInsertRequest) { | 545 TEST_F(DriveApiRequestsTest, FilesInsertRequest) { |
| 546 const base::Time::Exploded kModifiedDate = {2012, 7, 0, 19, 15, 59, 13, 123}; | 546 const base::Time::Exploded kModifiedDate = {2012, 7, 0, 19, 15, 59, 13, 123}; |
| 547 const base::Time::Exploded kLastViewedByMeDate = | 547 const base::Time::Exploded kLastViewedByMeDate = |
| 548 {2013, 7, 0, 19, 15, 59, 13, 123}; | 548 {2013, 7, 0, 19, 15, 59, 13, 123}; |
| 549 | 549 |
| 550 // Set an expected data file containing the directory's entry data. | 550 // Set an expected data file containing the directory's entry data. |
| 551 expected_data_file_path_ = | 551 expected_data_file_path_ = |
| 552 test_util::GetTestFilePath("drive/directory_entry.json"); | 552 test_util::GetTestFilePath("drive/directory_entry.json"); |
| 553 | 553 |
| 554 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 554 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 555 scoped_ptr<FileResource> file_resource; | 555 std::unique_ptr<FileResource> file_resource; |
| 556 | 556 |
| 557 // Create "new directory" in the root directory. | 557 // Create "new directory" in the root directory. |
| 558 { | 558 { |
| 559 base::RunLoop run_loop; | 559 base::RunLoop run_loop; |
| 560 drive::FilesInsertRequest* request = new drive::FilesInsertRequest( | 560 drive::FilesInsertRequest* request = new drive::FilesInsertRequest( |
| 561 request_sender_.get(), | 561 request_sender_.get(), |
| 562 *url_generator_, | 562 *url_generator_, |
| 563 test_util::CreateQuitCallback( | 563 test_util::CreateQuitCallback( |
| 564 &run_loop, | 564 &run_loop, |
| 565 test_util::CreateCopyResultCallback(&error, &file_resource))); | 565 test_util::CreateCopyResultCallback(&error, &file_resource))); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 585 "{\"lastViewedByMeDate\":\"2013-07-19T15:59:13.123Z\"," | 585 "{\"lastViewedByMeDate\":\"2013-07-19T15:59:13.123Z\"," |
| 586 "\"mimeType\":\"application/vnd.google-apps.folder\"," | 586 "\"mimeType\":\"application/vnd.google-apps.folder\"," |
| 587 "\"modifiedDate\":\"2012-07-19T15:59:13.123Z\"," | 587 "\"modifiedDate\":\"2012-07-19T15:59:13.123Z\"," |
| 588 "\"parents\":[{\"id\":\"root\"}]," | 588 "\"parents\":[{\"id\":\"root\"}]," |
| 589 "\"properties\":[" | 589 "\"properties\":[" |
| 590 "{\"key\":\"key1\",\"value\":\"value1\",\"visibility\":\"PRIVATE\"}," | 590 "{\"key\":\"key1\",\"value\":\"value1\",\"visibility\":\"PRIVATE\"}," |
| 591 "{\"key\":\"key2\",\"value\":\"value2\",\"visibility\":\"PUBLIC\"}]," | 591 "{\"key\":\"key2\",\"value\":\"value2\",\"visibility\":\"PUBLIC\"}]," |
| 592 "\"title\":\"new directory\"}", | 592 "\"title\":\"new directory\"}", |
| 593 http_request_.content); | 593 http_request_.content); |
| 594 | 594 |
| 595 scoped_ptr<FileResource> expected( | 595 std::unique_ptr<FileResource> expected(FileResource::CreateFrom( |
| 596 FileResource::CreateFrom( | 596 *test_util::LoadJSONFile("drive/directory_entry.json"))); |
| 597 *test_util::LoadJSONFile("drive/directory_entry.json"))); | |
| 598 | 597 |
| 599 // Sanity check. | 598 // Sanity check. |
| 600 ASSERT_TRUE(file_resource.get()); | 599 ASSERT_TRUE(file_resource.get()); |
| 601 | 600 |
| 602 EXPECT_EQ(expected->file_id(), file_resource->file_id()); | 601 EXPECT_EQ(expected->file_id(), file_resource->file_id()); |
| 603 EXPECT_EQ(expected->title(), file_resource->title()); | 602 EXPECT_EQ(expected->title(), file_resource->title()); |
| 604 EXPECT_EQ(expected->mime_type(), file_resource->mime_type()); | 603 EXPECT_EQ(expected->mime_type(), file_resource->mime_type()); |
| 605 EXPECT_EQ(expected->parents().size(), file_resource->parents().size()); | 604 EXPECT_EQ(expected->parents().size(), file_resource->parents().size()); |
| 606 } | 605 } |
| 607 | 606 |
| 608 TEST_F(DriveApiRequestsTest, FilesPatchRequest) { | 607 TEST_F(DriveApiRequestsTest, FilesPatchRequest) { |
| 609 const base::Time::Exploded kModifiedDate = {2012, 7, 0, 19, 15, 59, 13, 123}; | 608 const base::Time::Exploded kModifiedDate = {2012, 7, 0, 19, 15, 59, 13, 123}; |
| 610 const base::Time::Exploded kLastViewedByMeDate = | 609 const base::Time::Exploded kLastViewedByMeDate = |
| 611 {2013, 7, 0, 19, 15, 59, 13, 123}; | 610 {2013, 7, 0, 19, 15, 59, 13, 123}; |
| 612 | 611 |
| 613 // Set an expected data file containing valid result. | 612 // Set an expected data file containing valid result. |
| 614 expected_data_file_path_ = | 613 expected_data_file_path_ = |
| 615 test_util::GetTestFilePath("drive/file_entry.json"); | 614 test_util::GetTestFilePath("drive/file_entry.json"); |
| 616 | 615 |
| 617 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 616 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 618 scoped_ptr<FileResource> file_resource; | 617 std::unique_ptr<FileResource> file_resource; |
| 619 | 618 |
| 620 { | 619 { |
| 621 base::RunLoop run_loop; | 620 base::RunLoop run_loop; |
| 622 drive::FilesPatchRequest* request = new drive::FilesPatchRequest( | 621 drive::FilesPatchRequest* request = new drive::FilesPatchRequest( |
| 623 request_sender_.get(), | 622 request_sender_.get(), |
| 624 *url_generator_, | 623 *url_generator_, |
| 625 test_util::CreateQuitCallback( | 624 test_util::CreateQuitCallback( |
| 626 &run_loop, | 625 &run_loop, |
| 627 test_util::CreateCopyResultCallback(&error, &file_resource))); | 626 test_util::CreateCopyResultCallback(&error, &file_resource))); |
| 628 request->set_file_id("resource_id"); | 627 request->set_file_id("resource_id"); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 659 http_request_.content); | 658 http_request_.content); |
| 660 EXPECT_TRUE(file_resource); | 659 EXPECT_TRUE(file_resource); |
| 661 } | 660 } |
| 662 | 661 |
| 663 TEST_F(DriveApiRequestsTest, AboutGetRequest_ValidJson) { | 662 TEST_F(DriveApiRequestsTest, AboutGetRequest_ValidJson) { |
| 664 // Set an expected data file containing valid result. | 663 // Set an expected data file containing valid result. |
| 665 expected_data_file_path_ = test_util::GetTestFilePath( | 664 expected_data_file_path_ = test_util::GetTestFilePath( |
| 666 "drive/about.json"); | 665 "drive/about.json"); |
| 667 | 666 |
| 668 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 667 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 669 scoped_ptr<AboutResource> about_resource; | 668 std::unique_ptr<AboutResource> about_resource; |
| 670 | 669 |
| 671 { | 670 { |
| 672 base::RunLoop run_loop; | 671 base::RunLoop run_loop; |
| 673 drive::AboutGetRequest* request = new drive::AboutGetRequest( | 672 drive::AboutGetRequest* request = new drive::AboutGetRequest( |
| 674 request_sender_.get(), | 673 request_sender_.get(), |
| 675 *url_generator_, | 674 *url_generator_, |
| 676 test_util::CreateQuitCallback( | 675 test_util::CreateQuitCallback( |
| 677 &run_loop, | 676 &run_loop, |
| 678 test_util::CreateCopyResultCallback(&error, &about_resource))); | 677 test_util::CreateCopyResultCallback(&error, &about_resource))); |
| 679 request_sender_->StartRequestWithAuthRetry(request); | 678 request_sender_->StartRequestWithAuthRetry(request); |
| 680 run_loop.Run(); | 679 run_loop.Run(); |
| 681 } | 680 } |
| 682 | 681 |
| 683 EXPECT_EQ(HTTP_SUCCESS, error); | 682 EXPECT_EQ(HTTP_SUCCESS, error); |
| 684 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); | 683 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); |
| 685 EXPECT_EQ("/drive/v2/about", http_request_.relative_url); | 684 EXPECT_EQ("/drive/v2/about", http_request_.relative_url); |
| 686 | 685 |
| 687 scoped_ptr<AboutResource> expected( | 686 std::unique_ptr<AboutResource> expected( |
| 688 AboutResource::CreateFrom( | 687 AboutResource::CreateFrom(*test_util::LoadJSONFile("drive/about.json"))); |
| 689 *test_util::LoadJSONFile("drive/about.json"))); | |
| 690 ASSERT_TRUE(about_resource.get()); | 688 ASSERT_TRUE(about_resource.get()); |
| 691 EXPECT_EQ(expected->largest_change_id(), about_resource->largest_change_id()); | 689 EXPECT_EQ(expected->largest_change_id(), about_resource->largest_change_id()); |
| 692 EXPECT_EQ(expected->quota_bytes_total(), about_resource->quota_bytes_total()); | 690 EXPECT_EQ(expected->quota_bytes_total(), about_resource->quota_bytes_total()); |
| 693 EXPECT_EQ(expected->quota_bytes_used_aggregate(), | 691 EXPECT_EQ(expected->quota_bytes_used_aggregate(), |
| 694 about_resource->quota_bytes_used_aggregate()); | 692 about_resource->quota_bytes_used_aggregate()); |
| 695 EXPECT_EQ(expected->root_folder_id(), about_resource->root_folder_id()); | 693 EXPECT_EQ(expected->root_folder_id(), about_resource->root_folder_id()); |
| 696 } | 694 } |
| 697 | 695 |
| 698 TEST_F(DriveApiRequestsTest, AboutGetRequest_InvalidJson) { | 696 TEST_F(DriveApiRequestsTest, AboutGetRequest_InvalidJson) { |
| 699 // Set an expected data file containing invalid result. | 697 // Set an expected data file containing invalid result. |
| 700 expected_data_file_path_ = test_util::GetTestFilePath( | 698 expected_data_file_path_ = test_util::GetTestFilePath( |
| 701 "drive/testfile.txt"); | 699 "drive/testfile.txt"); |
| 702 | 700 |
| 703 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 701 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 704 scoped_ptr<AboutResource> about_resource; | 702 std::unique_ptr<AboutResource> about_resource; |
| 705 | 703 |
| 706 { | 704 { |
| 707 base::RunLoop run_loop; | 705 base::RunLoop run_loop; |
| 708 drive::AboutGetRequest* request = new drive::AboutGetRequest( | 706 drive::AboutGetRequest* request = new drive::AboutGetRequest( |
| 709 request_sender_.get(), | 707 request_sender_.get(), |
| 710 *url_generator_, | 708 *url_generator_, |
| 711 test_util::CreateQuitCallback( | 709 test_util::CreateQuitCallback( |
| 712 &run_loop, | 710 &run_loop, |
| 713 test_util::CreateCopyResultCallback(&error, &about_resource))); | 711 test_util::CreateCopyResultCallback(&error, &about_resource))); |
| 714 request_sender_->StartRequestWithAuthRetry(request); | 712 request_sender_->StartRequestWithAuthRetry(request); |
| 715 run_loop.Run(); | 713 run_loop.Run(); |
| 716 } | 714 } |
| 717 | 715 |
| 718 // "parse error" should be returned, and the about resource should be NULL. | 716 // "parse error" should be returned, and the about resource should be NULL. |
| 719 EXPECT_EQ(DRIVE_PARSE_ERROR, error); | 717 EXPECT_EQ(DRIVE_PARSE_ERROR, error); |
| 720 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); | 718 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); |
| 721 EXPECT_EQ("/drive/v2/about", http_request_.relative_url); | 719 EXPECT_EQ("/drive/v2/about", http_request_.relative_url); |
| 722 EXPECT_FALSE(about_resource); | 720 EXPECT_FALSE(about_resource); |
| 723 } | 721 } |
| 724 | 722 |
| 725 TEST_F(DriveApiRequestsTest, AppsListRequest) { | 723 TEST_F(DriveApiRequestsTest, AppsListRequest) { |
| 726 // Set an expected data file containing valid result. | 724 // Set an expected data file containing valid result. |
| 727 expected_data_file_path_ = test_util::GetTestFilePath( | 725 expected_data_file_path_ = test_util::GetTestFilePath( |
| 728 "drive/applist.json"); | 726 "drive/applist.json"); |
| 729 | 727 |
| 730 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 728 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 731 scoped_ptr<AppList> app_list; | 729 std::unique_ptr<AppList> app_list; |
| 732 | 730 |
| 733 { | 731 { |
| 734 base::RunLoop run_loop; | 732 base::RunLoop run_loop; |
| 735 drive::AppsListRequest* request = new drive::AppsListRequest( | 733 drive::AppsListRequest* request = new drive::AppsListRequest( |
| 736 request_sender_.get(), | 734 request_sender_.get(), |
| 737 *url_generator_, | 735 *url_generator_, |
| 738 false, // use_internal_endpoint | 736 false, // use_internal_endpoint |
| 739 test_util::CreateQuitCallback( | 737 test_util::CreateQuitCallback( |
| 740 &run_loop, | 738 &run_loop, |
| 741 test_util::CreateCopyResultCallback(&error, &app_list))); | 739 test_util::CreateCopyResultCallback(&error, &app_list))); |
| 742 request_sender_->StartRequestWithAuthRetry(request); | 740 request_sender_->StartRequestWithAuthRetry(request); |
| 743 run_loop.Run(); | 741 run_loop.Run(); |
| 744 } | 742 } |
| 745 | 743 |
| 746 EXPECT_EQ(HTTP_SUCCESS, error); | 744 EXPECT_EQ(HTTP_SUCCESS, error); |
| 747 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); | 745 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); |
| 748 EXPECT_EQ("/drive/v2/apps", http_request_.relative_url); | 746 EXPECT_EQ("/drive/v2/apps", http_request_.relative_url); |
| 749 EXPECT_TRUE(app_list); | 747 EXPECT_TRUE(app_list); |
| 750 } | 748 } |
| 751 | 749 |
| 752 TEST_F(DriveApiRequestsTest, ChangesListRequest) { | 750 TEST_F(DriveApiRequestsTest, ChangesListRequest) { |
| 753 // Set an expected data file containing valid result. | 751 // Set an expected data file containing valid result. |
| 754 expected_data_file_path_ = test_util::GetTestFilePath( | 752 expected_data_file_path_ = test_util::GetTestFilePath( |
| 755 "drive/changelist.json"); | 753 "drive/changelist.json"); |
| 756 | 754 |
| 757 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 755 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 758 scoped_ptr<ChangeList> result; | 756 std::unique_ptr<ChangeList> result; |
| 759 | 757 |
| 760 { | 758 { |
| 761 base::RunLoop run_loop; | 759 base::RunLoop run_loop; |
| 762 drive::ChangesListRequest* request = new drive::ChangesListRequest( | 760 drive::ChangesListRequest* request = new drive::ChangesListRequest( |
| 763 request_sender_.get(), *url_generator_, | 761 request_sender_.get(), *url_generator_, |
| 764 test_util::CreateQuitCallback( | 762 test_util::CreateQuitCallback( |
| 765 &run_loop, | 763 &run_loop, |
| 766 test_util::CreateCopyResultCallback(&error, &result))); | 764 test_util::CreateCopyResultCallback(&error, &result))); |
| 767 request->set_include_deleted(true); | 765 request->set_include_deleted(true); |
| 768 request->set_start_change_id(100); | 766 request->set_start_change_id(100); |
| 769 request->set_max_results(500); | 767 request->set_max_results(500); |
| 770 request_sender_->StartRequestWithAuthRetry(request); | 768 request_sender_->StartRequestWithAuthRetry(request); |
| 771 run_loop.Run(); | 769 run_loop.Run(); |
| 772 } | 770 } |
| 773 | 771 |
| 774 EXPECT_EQ(HTTP_SUCCESS, error); | 772 EXPECT_EQ(HTTP_SUCCESS, error); |
| 775 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); | 773 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); |
| 776 EXPECT_EQ("/drive/v2/changes?maxResults=500&startChangeId=100", | 774 EXPECT_EQ("/drive/v2/changes?maxResults=500&startChangeId=100", |
| 777 http_request_.relative_url); | 775 http_request_.relative_url); |
| 778 EXPECT_TRUE(result); | 776 EXPECT_TRUE(result); |
| 779 } | 777 } |
| 780 | 778 |
| 781 TEST_F(DriveApiRequestsTest, ChangesListNextPageRequest) { | 779 TEST_F(DriveApiRequestsTest, ChangesListNextPageRequest) { |
| 782 // Set an expected data file containing valid result. | 780 // Set an expected data file containing valid result. |
| 783 expected_data_file_path_ = test_util::GetTestFilePath( | 781 expected_data_file_path_ = test_util::GetTestFilePath( |
| 784 "drive/changelist.json"); | 782 "drive/changelist.json"); |
| 785 | 783 |
| 786 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 784 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 787 scoped_ptr<ChangeList> result; | 785 std::unique_ptr<ChangeList> result; |
| 788 | 786 |
| 789 { | 787 { |
| 790 base::RunLoop run_loop; | 788 base::RunLoop run_loop; |
| 791 drive::ChangesListNextPageRequest* request = | 789 drive::ChangesListNextPageRequest* request = |
| 792 new drive::ChangesListNextPageRequest( | 790 new drive::ChangesListNextPageRequest( |
| 793 request_sender_.get(), | 791 request_sender_.get(), |
| 794 test_util::CreateQuitCallback( | 792 test_util::CreateQuitCallback( |
| 795 &run_loop, | 793 &run_loop, |
| 796 test_util::CreateCopyResultCallback(&error, &result))); | 794 test_util::CreateCopyResultCallback(&error, &result))); |
| 797 request->set_next_link(test_server_.GetURL("/continue/get/change/list")); | 795 request->set_next_link(test_server_.GetURL("/continue/get/change/list")); |
| 798 request_sender_->StartRequestWithAuthRetry(request); | 796 request_sender_->StartRequestWithAuthRetry(request); |
| 799 run_loop.Run(); | 797 run_loop.Run(); |
| 800 } | 798 } |
| 801 | 799 |
| 802 EXPECT_EQ(HTTP_SUCCESS, error); | 800 EXPECT_EQ(HTTP_SUCCESS, error); |
| 803 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); | 801 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); |
| 804 EXPECT_EQ("/continue/get/change/list", http_request_.relative_url); | 802 EXPECT_EQ("/continue/get/change/list", http_request_.relative_url); |
| 805 EXPECT_TRUE(result); | 803 EXPECT_TRUE(result); |
| 806 } | 804 } |
| 807 | 805 |
| 808 TEST_F(DriveApiRequestsTest, FilesCopyRequest) { | 806 TEST_F(DriveApiRequestsTest, FilesCopyRequest) { |
| 809 const base::Time::Exploded kModifiedDate = {2012, 7, 0, 19, 15, 59, 13, 123}; | 807 const base::Time::Exploded kModifiedDate = {2012, 7, 0, 19, 15, 59, 13, 123}; |
| 810 | 808 |
| 811 // Set an expected data file containing the dummy file entry data. | 809 // Set an expected data file containing the dummy file entry data. |
| 812 // It'd be returned if we copy a file. | 810 // It'd be returned if we copy a file. |
| 813 expected_data_file_path_ = | 811 expected_data_file_path_ = |
| 814 test_util::GetTestFilePath("drive/file_entry.json"); | 812 test_util::GetTestFilePath("drive/file_entry.json"); |
| 815 | 813 |
| 816 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 814 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 817 scoped_ptr<FileResource> file_resource; | 815 std::unique_ptr<FileResource> file_resource; |
| 818 | 816 |
| 819 // Copy the file to a new file named "new title". | 817 // Copy the file to a new file named "new title". |
| 820 { | 818 { |
| 821 base::RunLoop run_loop; | 819 base::RunLoop run_loop; |
| 822 drive::FilesCopyRequest* request = new drive::FilesCopyRequest( | 820 drive::FilesCopyRequest* request = new drive::FilesCopyRequest( |
| 823 request_sender_.get(), | 821 request_sender_.get(), |
| 824 *url_generator_, | 822 *url_generator_, |
| 825 test_util::CreateQuitCallback( | 823 test_util::CreateQuitCallback( |
| 826 &run_loop, | 824 &run_loop, |
| 827 test_util::CreateCopyResultCallback(&error, &file_resource))); | 825 test_util::CreateCopyResultCallback(&error, &file_resource))); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 848 EXPECT_TRUE(file_resource); | 846 EXPECT_TRUE(file_resource); |
| 849 } | 847 } |
| 850 | 848 |
| 851 TEST_F(DriveApiRequestsTest, FilesCopyRequest_EmptyParentResourceId) { | 849 TEST_F(DriveApiRequestsTest, FilesCopyRequest_EmptyParentResourceId) { |
| 852 // Set an expected data file containing the dummy file entry data. | 850 // Set an expected data file containing the dummy file entry data. |
| 853 // It'd be returned if we copy a file. | 851 // It'd be returned if we copy a file. |
| 854 expected_data_file_path_ = | 852 expected_data_file_path_ = |
| 855 test_util::GetTestFilePath("drive/file_entry.json"); | 853 test_util::GetTestFilePath("drive/file_entry.json"); |
| 856 | 854 |
| 857 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 855 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 858 scoped_ptr<FileResource> file_resource; | 856 std::unique_ptr<FileResource> file_resource; |
| 859 | 857 |
| 860 // Copy the file to a new file named "new title". | 858 // Copy the file to a new file named "new title". |
| 861 { | 859 { |
| 862 base::RunLoop run_loop; | 860 base::RunLoop run_loop; |
| 863 drive::FilesCopyRequest* request = new drive::FilesCopyRequest( | 861 drive::FilesCopyRequest* request = new drive::FilesCopyRequest( |
| 864 request_sender_.get(), | 862 request_sender_.get(), |
| 865 *url_generator_, | 863 *url_generator_, |
| 866 test_util::CreateQuitCallback( | 864 test_util::CreateQuitCallback( |
| 867 &run_loop, | 865 &run_loop, |
| 868 test_util::CreateCopyResultCallback(&error, &file_resource))); | 866 test_util::CreateCopyResultCallback(&error, &file_resource))); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 881 EXPECT_EQ("{\"title\":\"new title\"}", http_request_.content); | 879 EXPECT_EQ("{\"title\":\"new title\"}", http_request_.content); |
| 882 EXPECT_TRUE(file_resource); | 880 EXPECT_TRUE(file_resource); |
| 883 } | 881 } |
| 884 | 882 |
| 885 TEST_F(DriveApiRequestsTest, FilesListRequest) { | 883 TEST_F(DriveApiRequestsTest, FilesListRequest) { |
| 886 // Set an expected data file containing valid result. | 884 // Set an expected data file containing valid result. |
| 887 expected_data_file_path_ = test_util::GetTestFilePath( | 885 expected_data_file_path_ = test_util::GetTestFilePath( |
| 888 "drive/filelist.json"); | 886 "drive/filelist.json"); |
| 889 | 887 |
| 890 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 888 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 891 scoped_ptr<FileList> result; | 889 std::unique_ptr<FileList> result; |
| 892 | 890 |
| 893 { | 891 { |
| 894 base::RunLoop run_loop; | 892 base::RunLoop run_loop; |
| 895 drive::FilesListRequest* request = new drive::FilesListRequest( | 893 drive::FilesListRequest* request = new drive::FilesListRequest( |
| 896 request_sender_.get(), *url_generator_, | 894 request_sender_.get(), *url_generator_, |
| 897 test_util::CreateQuitCallback( | 895 test_util::CreateQuitCallback( |
| 898 &run_loop, | 896 &run_loop, |
| 899 test_util::CreateCopyResultCallback(&error, &result))); | 897 test_util::CreateCopyResultCallback(&error, &result))); |
| 900 request->set_max_results(50); | 898 request->set_max_results(50); |
| 901 request->set_q("\"abcde\" in parents"); | 899 request->set_q("\"abcde\" in parents"); |
| 902 request_sender_->StartRequestWithAuthRetry(request); | 900 request_sender_->StartRequestWithAuthRetry(request); |
| 903 run_loop.Run(); | 901 run_loop.Run(); |
| 904 } | 902 } |
| 905 | 903 |
| 906 EXPECT_EQ(HTTP_SUCCESS, error); | 904 EXPECT_EQ(HTTP_SUCCESS, error); |
| 907 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); | 905 EXPECT_EQ(net::test_server::METHOD_GET, http_request_.method); |
| 908 EXPECT_EQ("/drive/v2/files?maxResults=50&q=%22abcde%22+in+parents", | 906 EXPECT_EQ("/drive/v2/files?maxResults=50&q=%22abcde%22+in+parents", |
| 909 http_request_.relative_url); | 907 http_request_.relative_url); |
| 910 EXPECT_TRUE(result); | 908 EXPECT_TRUE(result); |
| 911 } | 909 } |
| 912 | 910 |
| 913 TEST_F(DriveApiRequestsTest, FilesListNextPageRequest) { | 911 TEST_F(DriveApiRequestsTest, FilesListNextPageRequest) { |
| 914 // Set an expected data file containing valid result. | 912 // Set an expected data file containing valid result. |
| 915 expected_data_file_path_ = test_util::GetTestFilePath( | 913 expected_data_file_path_ = test_util::GetTestFilePath( |
| 916 "drive/filelist.json"); | 914 "drive/filelist.json"); |
| 917 | 915 |
| 918 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 916 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 919 scoped_ptr<FileList> result; | 917 std::unique_ptr<FileList> result; |
| 920 | 918 |
| 921 { | 919 { |
| 922 base::RunLoop run_loop; | 920 base::RunLoop run_loop; |
| 923 drive::FilesListNextPageRequest* request = | 921 drive::FilesListNextPageRequest* request = |
| 924 new drive::FilesListNextPageRequest( | 922 new drive::FilesListNextPageRequest( |
| 925 request_sender_.get(), | 923 request_sender_.get(), |
| 926 test_util::CreateQuitCallback( | 924 test_util::CreateQuitCallback( |
| 927 &run_loop, | 925 &run_loop, |
| 928 test_util::CreateCopyResultCallback(&error, &result))); | 926 test_util::CreateCopyResultCallback(&error, &result))); |
| 929 request->set_next_link(test_server_.GetURL("/continue/get/file/list")); | 927 request->set_next_link(test_server_.GetURL("/continue/get/file/list")); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 961 EXPECT_FALSE(http_request_.has_content); | 959 EXPECT_FALSE(http_request_.has_content); |
| 962 } | 960 } |
| 963 | 961 |
| 964 TEST_F(DriveApiRequestsTest, FilesTrashRequest) { | 962 TEST_F(DriveApiRequestsTest, FilesTrashRequest) { |
| 965 // Set data for the expected result. Directory entry should be returned | 963 // Set data for the expected result. Directory entry should be returned |
| 966 // if the trashing entry is a directory, so using it here should be fine. | 964 // if the trashing entry is a directory, so using it here should be fine. |
| 967 expected_data_file_path_ = | 965 expected_data_file_path_ = |
| 968 test_util::GetTestFilePath("drive/directory_entry.json"); | 966 test_util::GetTestFilePath("drive/directory_entry.json"); |
| 969 | 967 |
| 970 DriveApiErrorCode error = DRIVE_OTHER_ERROR; | 968 DriveApiErrorCode error = DRIVE_OTHER_ERROR; |
| 971 scoped_ptr<FileResource> file_resource; | 969 std::unique_ptr<FileResource> file_resource; |
| 972 | 970 |
| 973 // Trash a resource with the given resource id. | 971 // Trash a resource with the given resource id. |
| 974 { | 972 { |
| 975 base::RunLoop run_loop; | 973 base::RunLoop run_loop; |
| 976 drive::FilesTrashRequest* request = new drive::FilesTrashRequest( | 974 drive::FilesTrashRequest* request = new drive::FilesTrashRequest( |
| 977 request_sender_.get(), | 975 request_sender_.get(), |
| 978 *url_generator_, | 976 *url_generator_, |
| 979 test_util::CreateQuitCallback( | 977 test_util::CreateQuitCallback( |
| 980 &run_loop, | 978 &run_loop, |
| 981 test_util::CreateCopyResultCallback(&error, &file_resource))); | 979 test_util::CreateCopyResultCallback(&error, &file_resource))); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1100 "\"kind\":\"drive#fileLink\"" | 1098 "\"kind\":\"drive#fileLink\"" |
| 1101 "}]," | 1099 "}]," |
| 1102 "\"properties\":[" | 1100 "\"properties\":[" |
| 1103 "{\"key\":\"key1\",\"value\":\"value1\",\"visibility\":\"PRIVATE\"}," | 1101 "{\"key\":\"key1\",\"value\":\"value1\",\"visibility\":\"PRIVATE\"}," |
| 1104 "{\"key\":\"key2\",\"value\":\"value2\",\"visibility\":\"PUBLIC\"}]," | 1102 "{\"key\":\"key2\",\"value\":\"value2\",\"visibility\":\"PUBLIC\"}]," |
| 1105 "\"title\":\"new file title\"}", | 1103 "\"title\":\"new file title\"}", |
| 1106 http_request_.content); | 1104 http_request_.content); |
| 1107 | 1105 |
| 1108 // Upload the content to the upload URL. | 1106 // Upload the content to the upload URL. |
| 1109 UploadRangeResponse response; | 1107 UploadRangeResponse response; |
| 1110 scoped_ptr<FileResource> new_entry; | 1108 std::unique_ptr<FileResource> new_entry; |
| 1111 | 1109 |
| 1112 { | 1110 { |
| 1113 base::RunLoop run_loop; | 1111 base::RunLoop run_loop; |
| 1114 drive::ResumeUploadRequest* resume_request = | 1112 drive::ResumeUploadRequest* resume_request = |
| 1115 new drive::ResumeUploadRequest( | 1113 new drive::ResumeUploadRequest( |
| 1116 request_sender_.get(), | 1114 request_sender_.get(), |
| 1117 upload_url, | 1115 upload_url, |
| 1118 0, // start_position | 1116 0, // start_position |
| 1119 kTestContent.size(), // end_position (exclusive) | 1117 kTestContent.size(), // end_position (exclusive) |
| 1120 kTestContent.size(), // content_length, | 1118 kTestContent.size(), // content_length, |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1191 EXPECT_TRUE(http_request_.has_content); | 1189 EXPECT_TRUE(http_request_.has_content); |
| 1192 EXPECT_EQ("{\"parents\":[{" | 1190 EXPECT_EQ("{\"parents\":[{" |
| 1193 "\"id\":\"parent_resource_id\"," | 1191 "\"id\":\"parent_resource_id\"," |
| 1194 "\"kind\":\"drive#fileLink\"" | 1192 "\"kind\":\"drive#fileLink\"" |
| 1195 "}]," | 1193 "}]," |
| 1196 "\"title\":\"new file title\"}", | 1194 "\"title\":\"new file title\"}", |
| 1197 http_request_.content); | 1195 http_request_.content); |
| 1198 | 1196 |
| 1199 // Upload the content to the upload URL. | 1197 // Upload the content to the upload URL. |
| 1200 UploadRangeResponse response; | 1198 UploadRangeResponse response; |
| 1201 scoped_ptr<FileResource> new_entry; | 1199 std::unique_ptr<FileResource> new_entry; |
| 1202 | 1200 |
| 1203 { | 1201 { |
| 1204 base::RunLoop run_loop; | 1202 base::RunLoop run_loop; |
| 1205 drive::ResumeUploadRequest* resume_request = | 1203 drive::ResumeUploadRequest* resume_request = |
| 1206 new drive::ResumeUploadRequest( | 1204 new drive::ResumeUploadRequest( |
| 1207 request_sender_.get(), | 1205 request_sender_.get(), |
| 1208 upload_url, | 1206 upload_url, |
| 1209 0, // start_position | 1207 0, // start_position |
| 1210 0, // end_position (exclusive) | 1208 0, // end_position (exclusive) |
| 1211 0, // content_length, | 1209 0, // content_length, |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1283 "\"id\":\"parent_resource_id\"," | 1281 "\"id\":\"parent_resource_id\"," |
| 1284 "\"kind\":\"drive#fileLink\"" | 1282 "\"kind\":\"drive#fileLink\"" |
| 1285 "}]," | 1283 "}]," |
| 1286 "\"title\":\"new file title\"}", | 1284 "\"title\":\"new file title\"}", |
| 1287 http_request_.content); | 1285 http_request_.content); |
| 1288 | 1286 |
| 1289 // Before sending any data, check the current status. | 1287 // Before sending any data, check the current status. |
| 1290 // This is an edge case test for GetUploadStatusRequest. | 1288 // This is an edge case test for GetUploadStatusRequest. |
| 1291 { | 1289 { |
| 1292 UploadRangeResponse response; | 1290 UploadRangeResponse response; |
| 1293 scoped_ptr<FileResource> new_entry; | 1291 std::unique_ptr<FileResource> new_entry; |
| 1294 | 1292 |
| 1295 // Check the response by GetUploadStatusRequest. | 1293 // Check the response by GetUploadStatusRequest. |
| 1296 { | 1294 { |
| 1297 base::RunLoop run_loop; | 1295 base::RunLoop run_loop; |
| 1298 drive::GetUploadStatusRequest* get_upload_status_request = | 1296 drive::GetUploadStatusRequest* get_upload_status_request = |
| 1299 new drive::GetUploadStatusRequest( | 1297 new drive::GetUploadStatusRequest( |
| 1300 request_sender_.get(), | 1298 request_sender_.get(), |
| 1301 upload_url, | 1299 upload_url, |
| 1302 kTestContent.size(), | 1300 kTestContent.size(), |
| 1303 test_util::CreateQuitCallback( | 1301 test_util::CreateQuitCallback( |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1325 | 1323 |
| 1326 // Upload the content to the upload URL. | 1324 // Upload the content to the upload URL. |
| 1327 for (size_t start_position = 0; start_position < kTestContent.size(); | 1325 for (size_t start_position = 0; start_position < kTestContent.size(); |
| 1328 start_position += kNumChunkBytes) { | 1326 start_position += kNumChunkBytes) { |
| 1329 const std::string payload = kTestContent.substr( | 1327 const std::string payload = kTestContent.substr( |
| 1330 start_position, | 1328 start_position, |
| 1331 std::min(kNumChunkBytes, kTestContent.size() - start_position)); | 1329 std::min(kNumChunkBytes, kTestContent.size() - start_position)); |
| 1332 const size_t end_position = start_position + payload.size(); | 1330 const size_t end_position = start_position + payload.size(); |
| 1333 | 1331 |
| 1334 UploadRangeResponse response; | 1332 UploadRangeResponse response; |
| 1335 scoped_ptr<FileResource> new_entry; | 1333 std::unique_ptr<FileResource> new_entry; |
| 1336 | 1334 |
| 1337 { | 1335 { |
| 1338 base::RunLoop run_loop; | 1336 base::RunLoop run_loop; |
| 1339 drive::ResumeUploadRequest* resume_request = | 1337 drive::ResumeUploadRequest* resume_request = |
| 1340 new drive::ResumeUploadRequest( | 1338 new drive::ResumeUploadRequest( |
| 1341 request_sender_.get(), | 1339 request_sender_.get(), |
| 1342 upload_url, | 1340 upload_url, |
| 1343 start_position, | 1341 start_position, |
| 1344 end_position, | 1342 end_position, |
| 1345 kTestContent.size(), // content_length, | 1343 kTestContent.size(), // content_length, |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1514 http_request_.relative_url); | 1512 http_request_.relative_url); |
| 1515 EXPECT_TRUE(http_request_.has_content); | 1513 EXPECT_TRUE(http_request_.has_content); |
| 1516 EXPECT_EQ( | 1514 EXPECT_EQ( |
| 1517 "{\"properties\":[" | 1515 "{\"properties\":[" |
| 1518 "{\"key\":\"key1\",\"value\":\"value1\",\"visibility\":\"PRIVATE\"}," | 1516 "{\"key\":\"key1\",\"value\":\"value1\",\"visibility\":\"PRIVATE\"}," |
| 1519 "{\"key\":\"key2\",\"value\":\"value2\",\"visibility\":\"PUBLIC\"}]}", | 1517 "{\"key\":\"key2\",\"value\":\"value2\",\"visibility\":\"PUBLIC\"}]}", |
| 1520 http_request_.content); | 1518 http_request_.content); |
| 1521 | 1519 |
| 1522 // Upload the content to the upload URL. | 1520 // Upload the content to the upload URL. |
| 1523 UploadRangeResponse response; | 1521 UploadRangeResponse response; |
| 1524 scoped_ptr<FileResource> new_entry; | 1522 std::unique_ptr<FileResource> new_entry; |
| 1525 | 1523 |
| 1526 { | 1524 { |
| 1527 base::RunLoop run_loop; | 1525 base::RunLoop run_loop; |
| 1528 drive::ResumeUploadRequest* resume_request = | 1526 drive::ResumeUploadRequest* resume_request = |
| 1529 new drive::ResumeUploadRequest( | 1527 new drive::ResumeUploadRequest( |
| 1530 request_sender_.get(), | 1528 request_sender_.get(), |
| 1531 upload_url, | 1529 upload_url, |
| 1532 0, // start_position | 1530 0, // start_position |
| 1533 kTestContent.size(), // end_position (exclusive) | 1531 kTestContent.size(), // end_position (exclusive) |
| 1534 kTestContent.size(), // content_length, | 1532 kTestContent.size(), // content_length, |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1601 EXPECT_EQ(kTestETag, http_request_.headers["If-Match"]); | 1599 EXPECT_EQ(kTestETag, http_request_.headers["If-Match"]); |
| 1602 | 1600 |
| 1603 EXPECT_EQ(net::test_server::METHOD_PUT, http_request_.method); | 1601 EXPECT_EQ(net::test_server::METHOD_PUT, http_request_.method); |
| 1604 EXPECT_EQ("/upload/drive/v2/files/resource_id?uploadType=resumable", | 1602 EXPECT_EQ("/upload/drive/v2/files/resource_id?uploadType=resumable", |
| 1605 http_request_.relative_url); | 1603 http_request_.relative_url); |
| 1606 EXPECT_TRUE(http_request_.has_content); | 1604 EXPECT_TRUE(http_request_.has_content); |
| 1607 EXPECT_TRUE(http_request_.content.empty()); | 1605 EXPECT_TRUE(http_request_.content.empty()); |
| 1608 | 1606 |
| 1609 // Upload the content to the upload URL. | 1607 // Upload the content to the upload URL. |
| 1610 UploadRangeResponse response; | 1608 UploadRangeResponse response; |
| 1611 scoped_ptr<FileResource> new_entry; | 1609 std::unique_ptr<FileResource> new_entry; |
| 1612 | 1610 |
| 1613 { | 1611 { |
| 1614 base::RunLoop run_loop; | 1612 base::RunLoop run_loop; |
| 1615 drive::ResumeUploadRequest* resume_request = | 1613 drive::ResumeUploadRequest* resume_request = |
| 1616 new drive::ResumeUploadRequest( | 1614 new drive::ResumeUploadRequest( |
| 1617 request_sender_.get(), | 1615 request_sender_.get(), |
| 1618 upload_url, | 1616 upload_url, |
| 1619 0, // start_position | 1617 0, // start_position |
| 1620 kTestContent.size(), // end_position (exclusive) | 1618 kTestContent.size(), // end_position (exclusive) |
| 1621 kTestContent.size(), // content_length, | 1619 kTestContent.size(), // content_length, |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1740 EXPECT_TRUE(http_request_.has_content); | 1738 EXPECT_TRUE(http_request_.has_content); |
| 1741 EXPECT_TRUE(http_request_.content.empty()); | 1739 EXPECT_TRUE(http_request_.content.empty()); |
| 1742 | 1740 |
| 1743 // Set PRECONDITION_FAILED to the server. This is the emulation of the | 1741 // Set PRECONDITION_FAILED to the server. This is the emulation of the |
| 1744 // confliction during uploading. | 1742 // confliction during uploading. |
| 1745 expected_precondition_failed_file_path_ = | 1743 expected_precondition_failed_file_path_ = |
| 1746 test_util::GetTestFilePath("drive/error.json"); | 1744 test_util::GetTestFilePath("drive/error.json"); |
| 1747 | 1745 |
| 1748 // Upload the content to the upload URL. | 1746 // Upload the content to the upload URL. |
| 1749 UploadRangeResponse response; | 1747 UploadRangeResponse response; |
| 1750 scoped_ptr<FileResource> new_entry; | 1748 std::unique_ptr<FileResource> new_entry; |
| 1751 | 1749 |
| 1752 { | 1750 { |
| 1753 base::RunLoop run_loop; | 1751 base::RunLoop run_loop; |
| 1754 drive::ResumeUploadRequest* resume_request = | 1752 drive::ResumeUploadRequest* resume_request = |
| 1755 new drive::ResumeUploadRequest( | 1753 new drive::ResumeUploadRequest( |
| 1756 request_sender_.get(), | 1754 request_sender_.get(), |
| 1757 upload_url, | 1755 upload_url, |
| 1758 0, // start_position | 1756 0, // start_position |
| 1759 kTestContent.size(), // end_position (exclusive) | 1757 kTestContent.size(), // end_position (exclusive) |
| 1760 kTestContent.size(), // content_length, | 1758 kTestContent.size(), // content_length, |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1944 request_sender_->StartRequestWithAuthRetry(request); | 1942 request_sender_->StartRequestWithAuthRetry(request); |
| 1945 run_loop.Run(); | 1943 run_loop.Run(); |
| 1946 } | 1944 } |
| 1947 | 1945 |
| 1948 EXPECT_EQ(HTTP_SUCCESS, error); | 1946 EXPECT_EQ(HTTP_SUCCESS, error); |
| 1949 EXPECT_EQ(net::test_server::METHOD_POST, http_request_.method); | 1947 EXPECT_EQ(net::test_server::METHOD_POST, http_request_.method); |
| 1950 EXPECT_EQ("/drive/v2/files/resource_id/permissions", | 1948 EXPECT_EQ("/drive/v2/files/resource_id/permissions", |
| 1951 http_request_.relative_url); | 1949 http_request_.relative_url); |
| 1952 EXPECT_EQ("application/json", http_request_.headers["Content-Type"]); | 1950 EXPECT_EQ("application/json", http_request_.headers["Content-Type"]); |
| 1953 | 1951 |
| 1954 scoped_ptr<base::Value> expected = base::JSONReader::Read( | 1952 std::unique_ptr<base::Value> expected = base::JSONReader::Read( |
| 1955 "{\"additionalRoles\":[\"commenter\"], \"role\":\"reader\", " | 1953 "{\"additionalRoles\":[\"commenter\"], \"role\":\"reader\", " |
| 1956 "\"type\":\"user\",\"value\":\"user@example.com\"}"); | 1954 "\"type\":\"user\",\"value\":\"user@example.com\"}"); |
| 1957 ASSERT_TRUE(expected); | 1955 ASSERT_TRUE(expected); |
| 1958 | 1956 |
| 1959 scoped_ptr<base::Value> result = | 1957 std::unique_ptr<base::Value> result = |
| 1960 base::JSONReader::Read(http_request_.content); | 1958 base::JSONReader::Read(http_request_.content); |
| 1961 EXPECT_TRUE(http_request_.has_content); | 1959 EXPECT_TRUE(http_request_.has_content); |
| 1962 EXPECT_TRUE(base::Value::Equals(expected.get(), result.get())); | 1960 EXPECT_TRUE(base::Value::Equals(expected.get(), result.get())); |
| 1963 | 1961 |
| 1964 // Add "can edit" permission to users in "example.com". | 1962 // Add "can edit" permission to users in "example.com". |
| 1965 error = DRIVE_OTHER_ERROR; | 1963 error = DRIVE_OTHER_ERROR; |
| 1966 { | 1964 { |
| 1967 base::RunLoop run_loop; | 1965 base::RunLoop run_loop; |
| 1968 drive::PermissionsInsertRequest* request = | 1966 drive::PermissionsInsertRequest* request = |
| 1969 new drive::PermissionsInsertRequest( | 1967 new drive::PermissionsInsertRequest( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2004 ASSERT_TRUE(test_util::WriteStringToFile(kTestFilePath, kTestContent)); | 2002 ASSERT_TRUE(test_util::WriteStringToFile(kTestFilePath, kTestContent)); |
| 2005 | 2003 |
| 2006 // Create batch request. | 2004 // Create batch request. |
| 2007 drive::BatchUploadRequest* const request = | 2005 drive::BatchUploadRequest* const request = |
| 2008 new drive::BatchUploadRequest(request_sender_.get(), *url_generator_); | 2006 new drive::BatchUploadRequest(request_sender_.get(), *url_generator_); |
| 2009 request->SetBoundaryForTesting("OUTERBOUNDARY"); | 2007 request->SetBoundaryForTesting("OUTERBOUNDARY"); |
| 2010 request_sender_->StartRequestWithAuthRetry(request); | 2008 request_sender_->StartRequestWithAuthRetry(request); |
| 2011 | 2009 |
| 2012 // Create child request. | 2010 // Create child request. |
| 2013 DriveApiErrorCode errors[] = {DRIVE_OTHER_ERROR, DRIVE_OTHER_ERROR}; | 2011 DriveApiErrorCode errors[] = {DRIVE_OTHER_ERROR, DRIVE_OTHER_ERROR}; |
| 2014 scoped_ptr<FileResource> file_resources[2]; | 2012 std::unique_ptr<FileResource> file_resources[2]; |
| 2015 base::RunLoop run_loop[2]; | 2013 base::RunLoop run_loop[2]; |
| 2016 for (int i = 0; i < 2; ++i) { | 2014 for (int i = 0; i < 2; ++i) { |
| 2017 const FileResourceCallback callback = test_util::CreateQuitCallback( | 2015 const FileResourceCallback callback = test_util::CreateQuitCallback( |
| 2018 &run_loop[i], | 2016 &run_loop[i], |
| 2019 test_util::CreateCopyResultCallback(&errors[i], &file_resources[i])); | 2017 test_util::CreateCopyResultCallback(&errors[i], &file_resources[i])); |
| 2020 drive::MultipartUploadNewFileDelegate* const child_request = | 2018 drive::MultipartUploadNewFileDelegate* const child_request = |
| 2021 new drive::MultipartUploadNewFileDelegate( | 2019 new drive::MultipartUploadNewFileDelegate( |
| 2022 request_sender_->blocking_task_runner(), | 2020 request_sender_->blocking_task_runner(), |
| 2023 base::StringPrintf("new file title %d", i), | 2021 base::StringPrintf("new file title %d", i), |
| 2024 "parent_resource_id", kTestContentType, kTestContent.size(), | 2022 "parent_resource_id", kTestContentType, kTestContent.size(), |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2290 "Header: value\r\n" | 2288 "Header: value\r\n" |
| 2291 "\r\n" | 2289 "\r\n" |
| 2292 "BODY\r\n" | 2290 "BODY\r\n" |
| 2293 "--BOUNDARY-- \t", | 2291 "--BOUNDARY-- \t", |
| 2294 &parts)); | 2292 &parts)); |
| 2295 ASSERT_EQ(1u, parts.size()); | 2293 ASSERT_EQ(1u, parts.size()); |
| 2296 EXPECT_EQ(HTTP_SUCCESS, parts[0].code); | 2294 EXPECT_EQ(HTTP_SUCCESS, parts[0].code); |
| 2297 EXPECT_EQ("BODY", parts[0].body); | 2295 EXPECT_EQ("BODY", parts[0].body); |
| 2298 } | 2296 } |
| 2299 } // namespace google_apis | 2297 } // namespace google_apis |
| OLD | NEW |