| Index: chrome/browser/google_apis/fake_drive_service_unittest.cc
|
| diff --git a/chrome/browser/google_apis/fake_drive_service_unittest.cc b/chrome/browser/google_apis/fake_drive_service_unittest.cc
|
| index ce7612220b0df8325ff926166ef845dde88f7bab..9c0998c79710c578eff4e313b3d80dbfc08e1e6e 100644
|
| --- a/chrome/browser/google_apis/fake_drive_service_unittest.cc
|
| +++ b/chrome/browser/google_apis/fake_drive_service_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/message_loop.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/browser/google_apis/drive_api_parser.h"
|
| +#include "chrome/browser/google_apis/gdata_wapi_operations.h"
|
| #include "chrome/browser/google_apis/gdata_wapi_parser.h"
|
| #include "chrome/browser/google_apis/test_util.h"
|
| #include "content/public/browser/browser_thread.h"
|
| @@ -19,6 +20,8 @@
|
|
|
| namespace google_apis {
|
|
|
| +namespace {
|
| +
|
| class FakeDriveServiceTest : public testing::Test {
|
| protected:
|
| FakeDriveServiceTest()
|
| @@ -1036,4 +1039,317 @@ TEST_F(FakeDriveServiceTest, AddNewDirectory_Offline) {
|
| EXPECT_FALSE(resource_entry);
|
| }
|
|
|
| +TEST_F(FakeDriveServiceTest, InitiateUpload_Offline) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| + fake_service_.set_offline(true);
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_NEW_FILE,
|
| + "new file.foo",
|
| + "test/foo",
|
| + 13,
|
| + GURL("https://1_folder_resumable_create_media_link"),
|
| + FilePath(FILE_PATH_LITERAL("drive/Directory 1")),
|
| + "etag_ignored"),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(GDATA_NO_CONNECTION, error);
|
| + EXPECT_TRUE(upload_location.is_empty());
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, InitiateUpload_NotFound) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_NEW_FILE,
|
| + "new file.foo",
|
| + "test/foo",
|
| + 13,
|
| + GURL("https://non_existent"),
|
| + FilePath(FILE_PATH_LITERAL("drive/Directory 1")),
|
| + "etag_ignored"),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_NOT_FOUND, error);
|
| + EXPECT_TRUE(upload_location.is_empty());
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, InitiateUpload_NewFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_NEW_FILE,
|
| + "new file.foo",
|
| + "test/foo",
|
| + 13,
|
| + GURL("https://1_folder_resumable_create_media_link"),
|
| + FilePath(FILE_PATH_LITERAL("drive/Directory 1")),
|
| + "etag_ignored"),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| + EXPECT_FALSE(upload_location.is_empty());
|
| + EXPECT_NE(GURL("https://1_folder_resumable_create_media_link"),
|
| + upload_location);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, InitiateUpload_WrongETag) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_EXISTING_FILE,
|
| + "name_ignored",
|
| + "text/plain",
|
| + 13,
|
| + GURL("https://2_file_link_resumable_create_media"),
|
| + FilePath(FILE_PATH_LITERAL("drive/File 1.txt")),
|
| + "invalid_etag"),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_PRECONDITION, error);
|
| + EXPECT_TRUE(upload_location.is_empty());
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, InitiateUpload_ExistingFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_EXISTING_FILE,
|
| + "name_ignored",
|
| + "text/plain",
|
| + 13,
|
| + GURL("https://2_file_link_resumable_create_media"),
|
| + FilePath(FILE_PATH_LITERAL("drive/File 1.txt")),
|
| + "\"HhMOFgxXHit7ImBr\""),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| + EXPECT_EQ(GURL("https://2_file_link_resumable_create_media"),
|
| + upload_location);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, ResumeUpload_Offline) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_NEW_FILE,
|
| + "new file.foo",
|
| + "test/foo",
|
| + 15,
|
| + GURL("https://1_folder_resumable_create_media_link"),
|
| + FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")),
|
| + "etag_ignored"),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| + EXPECT_FALSE(upload_location.is_empty());
|
| + EXPECT_NE(GURL("https://1_folder_resumable_create_media_link"),
|
| + upload_location);
|
| +
|
| + fake_service_.set_offline(true);
|
| +
|
| + UploadRangeResponse response;
|
| + scoped_ptr<ResourceEntry> entry;
|
| + fake_service_.ResumeUpload(
|
| + ResumeUploadParams(UPLOAD_NEW_FILE,
|
| + 0, 13, 15, "test/foo",
|
| + scoped_refptr<net::IOBuffer>(),
|
| + upload_location,
|
| + FilePath(FILE_PATH_LITERAL(
|
| + "drive/Directory 1/new file.foo"))),
|
| + base::Bind(&test_util::CopyResultsFromUploadRangeCallback,
|
| + &response, &entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(GDATA_NO_CONNECTION, response.code);
|
| + EXPECT_FALSE(entry.get());
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, ResumeUpload_NotFound) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_NEW_FILE,
|
| + "new file.foo",
|
| + "test/foo",
|
| + 15,
|
| + GURL("https://1_folder_resumable_create_media_link"),
|
| + FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")),
|
| + "etag_ignored"),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + ASSERT_EQ(HTTP_SUCCESS, error);
|
| +
|
| + UploadRangeResponse response;
|
| + scoped_ptr<ResourceEntry> entry;
|
| + fake_service_.ResumeUpload(
|
| + ResumeUploadParams(UPLOAD_NEW_FILE,
|
| + 0, 13, 15, "test/foo",
|
| + scoped_refptr<net::IOBuffer>(),
|
| + GURL("https://foo.com/"),
|
| + FilePath(FILE_PATH_LITERAL(
|
| + "drive/Directory 1/new file.foo"))),
|
| + base::Bind(&test_util::CopyResultsFromUploadRangeCallback,
|
| + &response, &entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_NOT_FOUND, response.code);
|
| + EXPECT_FALSE(entry.get());
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, ResumeUpload_ExistingFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_EXISTING_FILE,
|
| + "name_ignored",
|
| + "text/plain",
|
| + 15,
|
| + GURL("https://2_file_link_resumable_create_media"),
|
| + FilePath(FILE_PATH_LITERAL("drive/File 1.txt")),
|
| + "\"HhMOFgxXHit7ImBr\""),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + ASSERT_EQ(HTTP_SUCCESS, error);
|
| +
|
| + UploadRangeResponse response;
|
| + scoped_ptr<ResourceEntry> entry;
|
| + fake_service_.ResumeUpload(
|
| + ResumeUploadParams(UPLOAD_EXISTING_FILE,
|
| + 0, 13, 15, "text/plain",
|
| + scoped_refptr<net::IOBuffer>(),
|
| + upload_location,
|
| + FilePath(FILE_PATH_LITERAL(
|
| + "drive/File 1.txt"))),
|
| + base::Bind(&test_util::CopyResultsFromUploadRangeCallback,
|
| + &response, &entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_RESUME_INCOMPLETE, response.code);
|
| + EXPECT_FALSE(entry.get());
|
| +
|
| + fake_service_.ResumeUpload(
|
| + ResumeUploadParams(UPLOAD_EXISTING_FILE,
|
| + 14, 15, 15, "text/plain",
|
| + scoped_refptr<net::IOBuffer>(),
|
| + upload_location,
|
| + FilePath(FILE_PATH_LITERAL(
|
| + "drive/File 1.txt"))),
|
| + base::Bind(&test_util::CopyResultsFromUploadRangeCallback,
|
| + &response, &entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, response.code);
|
| + EXPECT_TRUE(entry.get());
|
| + EXPECT_EQ(15L, entry->file_size());
|
| + EXPECT_TRUE(Exists(entry->resource_id()));
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, ResumeUpload_NewFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + GURL upload_location;
|
| + fake_service_.InitiateUpload(
|
| + InitiateUploadParams(
|
| + UPLOAD_NEW_FILE,
|
| + "new file.foo",
|
| + "test/foo",
|
| + 15,
|
| + GURL("https://1_folder_resumable_create_media_link"),
|
| + FilePath(FILE_PATH_LITERAL("drive/Directory 1/new file.foo")),
|
| + "etag_ignored"),
|
| + base::Bind(&test_util::CopyResultsFromInitiateUploadCallback,
|
| + &error,
|
| + &upload_location));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| + EXPECT_FALSE(upload_location.is_empty());
|
| + EXPECT_NE(GURL("https://1_folder_resumable_create_media_link"),
|
| + upload_location);
|
| +
|
| + UploadRangeResponse response;
|
| + scoped_ptr<ResourceEntry> entry;
|
| + fake_service_.ResumeUpload(
|
| + ResumeUploadParams(UPLOAD_NEW_FILE,
|
| + 0, 13, 15, "test/foo",
|
| + scoped_refptr<net::IOBuffer>(),
|
| + upload_location,
|
| + FilePath(FILE_PATH_LITERAL(
|
| + "drive/Directory 1/new file.foo"))),
|
| + base::Bind(&test_util::CopyResultsFromUploadRangeCallback,
|
| + &response, &entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_RESUME_INCOMPLETE, response.code);
|
| + EXPECT_FALSE(entry.get());
|
| +
|
| + fake_service_.ResumeUpload(
|
| + ResumeUploadParams(UPLOAD_NEW_FILE,
|
| + 14, 15, 15, "test/foo",
|
| + scoped_refptr<net::IOBuffer>(),
|
| + upload_location,
|
| + FilePath(FILE_PATH_LITERAL(
|
| + "drive/Directory 1/new file.foo"))),
|
| + base::Bind(&test_util::CopyResultsFromUploadRangeCallback,
|
| + &response, &entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_CREATED, response.code);
|
| + EXPECT_TRUE(entry.get());
|
| + EXPECT_EQ(15L, entry->file_size());
|
| + EXPECT_TRUE(Exists(entry->resource_id()));
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| } // namespace google_apis
|
|
|