| 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 c205c62dff65d494a69fd0b28c18e87af6e11b63..2c4a973ce6b82c4a3e58b6770c5b15124cfd9f36 100644
|
| --- a/chrome/browser/google_apis/fake_drive_service_unittest.cc
|
| +++ b/chrome/browser/google_apis/fake_drive_service_unittest.cc
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/browser/google_apis/fake_drive_service.h"
|
|
|
| #include "base/message_loop.h"
|
| +#include "base/utf_string_conversions.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,8 +20,8 @@ class FakeDriveServiceTest : public testing::Test {
|
| : ui_thread_(content::BrowserThread::UI, &message_loop_) {
|
| }
|
|
|
| - // Returns true if the resource identified by |resource_id| exists.
|
| - bool Exists(const std::string& resource_id) {
|
| + // Returns the resource entry that matches |resource_id|.
|
| + scoped_ptr<ResourceEntry> FindEntry(const std::string& resource_id) {
|
| GDataErrorCode error = GDATA_OTHER_ERROR;
|
| scoped_ptr<ResourceEntry> resource_entry;
|
| fake_service_.GetResourceEntry(
|
| @@ -29,7 +30,13 @@ class FakeDriveServiceTest : public testing::Test {
|
| &error,
|
| &resource_entry));
|
| message_loop_.RunUntilIdle();
|
| - return error == HTTP_SUCCESS;
|
| + return resource_entry.Pass();
|
| + }
|
| +
|
| + // Returns true if the resource identified by |resource_id| exists.
|
| + bool Exists(const std::string& resource_id) {
|
| + scoped_ptr<ResourceEntry> resource_entry = FindEntry(resource_id);
|
| + return resource_entry;
|
| }
|
|
|
| MessageLoopForUI message_loop_;
|
| @@ -78,6 +85,23 @@ TEST_F(FakeDriveServiceTest, GetAccountMetadata) {
|
| EXPECT_EQ(2U, account_metadata->installed_apps().size());
|
| }
|
|
|
| +TEST_F(FakeDriveServiceTest, GetApplicationInfo) {
|
| + ASSERT_TRUE(fake_service_.LoadApplicationInfoForDriveApi(
|
| + "drive/applist.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + scoped_ptr<base::Value> app_info;
|
| + fake_service_.GetApplicationInfo(
|
| + base::Bind(&test_util::CopyResultsFromGetDataCallback,
|
| + &error,
|
| + &app_info));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| +
|
| + ASSERT_TRUE(app_info);
|
| +}
|
| +
|
| TEST_F(FakeDriveServiceTest, GetResourceEntry_ExistingFile) {
|
| ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
|
|
| @@ -145,4 +169,302 @@ TEST_F(FakeDriveServiceTest, DeleteResource_NonexistingFile) {
|
| EXPECT_EQ(HTTP_NOT_FOUND, error);
|
| }
|
|
|
| +TEST_F(FakeDriveServiceTest, CopyHostedDocument_ExistingHostedDocument) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const std::string kResourceId = "document:5_document_resource_id";
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + scoped_ptr<ResourceEntry> resource_entry;
|
| + fake_service_.CopyHostedDocument(
|
| + kResourceId,
|
| + FILE_PATH_LITERAL("new name"),
|
| + base::Bind(&test_util::CopyResultsFromGetResourceEntryCallback,
|
| + &error,
|
| + &resource_entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| + ASSERT_TRUE(resource_entry);
|
| + // The copied entry should have the new resource ID and the title.
|
| + EXPECT_EQ(kResourceId + "_copied", resource_entry->resource_id());
|
| + EXPECT_EQ("new name", UTF16ToUTF8(resource_entry->title()));
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, CopyHostedDocument_NonexistingHostedDocument) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const std::string kResourceId = "document:nonexisting_resource_id";
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + scoped_ptr<ResourceEntry> resource_entry;
|
| + fake_service_.CopyHostedDocument(
|
| + kResourceId,
|
| + FILE_PATH_LITERAL("new name"),
|
| + base::Bind(&test_util::CopyResultsFromGetResourceEntryCallback,
|
| + &error,
|
| + &resource_entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_NOT_FOUND, error);
|
| + EXPECT_FALSE(resource_entry);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, CopyHostedDocument_ExistingRegularFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const std::string kResourceId = "file:2_file_resource_id";
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + scoped_ptr<ResourceEntry> resource_entry;
|
| + fake_service_.CopyHostedDocument(
|
| + kResourceId,
|
| + FILE_PATH_LITERAL("new name"),
|
| + base::Bind(&test_util::CopyResultsFromGetResourceEntryCallback,
|
| + &error,
|
| + &resource_entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + // The copy should fail as this is not a hosted document.
|
| + EXPECT_EQ(HTTP_NOT_FOUND, error);
|
| + EXPECT_FALSE(resource_entry);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, RenameResource_ExistingFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const std::string kResourceId = "file:2_file_resource_id";
|
| + const GURL kEditUrl("https://file1_link_self/file:2_file_resource_id");
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + fake_service_.RenameResource(
|
| + kEditUrl,
|
| + FILE_PATH_LITERAL("new name"),
|
| + base::Bind(&test_util::CopyResultsFromEntryActionCallback,
|
| + &error));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| +
|
| + scoped_ptr<ResourceEntry> resource_entry = FindEntry(kResourceId);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ("new name", UTF16ToUTF8(resource_entry->title()));
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, RenameResource_NonexistingFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const GURL kEditUrl("https://file1_link_self/file:nonexisting_file");
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + fake_service_.RenameResource(
|
| + kEditUrl,
|
| + FILE_PATH_LITERAL("new name"),
|
| + base::Bind(&test_util::CopyResultsFromEntryActionCallback,
|
| + &error));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_NOT_FOUND, error);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, AddResourceToDirectory_FileInRootDirectory) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const std::string kResourceId = "file:2_file_resource_id";
|
| + const GURL kEditUrl("https://file1_link_self/file:2_file_resource_id");
|
| + const GURL kNewParentContentUrl("https://new_url");
|
| +
|
| + scoped_ptr<ResourceEntry> resource_entry = FindEntry(kResourceId);
|
| + ASSERT_TRUE(resource_entry);
|
| + // The parent link should not exist as this file is in the root directory.
|
| + const google_apis::Link* parent_link =
|
| + resource_entry->GetLinkByType(Link::LINK_PARENT);
|
| + ASSERT_FALSE(parent_link);
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + fake_service_.AddResourceToDirectory(
|
| + kNewParentContentUrl,
|
| + kEditUrl,
|
| + base::Bind(&test_util::CopyResultsFromEntryActionCallback,
|
| + &error));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| +
|
| + resource_entry = FindEntry(kResourceId);
|
| + ASSERT_TRUE(resource_entry);
|
| + // The parent link should now exist as the parent directory is changed.
|
| + parent_link = resource_entry->GetLinkByType(Link::LINK_PARENT);
|
| + ASSERT_TRUE(parent_link);
|
| + EXPECT_EQ(kNewParentContentUrl, parent_link->href());
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, AddResourceToDirectory_FileInNonRootDirectory) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const std::string kResourceId = "file:subdirectory_file_1_id";
|
| + const GURL kEditUrl(
|
| + "https://dir1_file_link_self/file:subdirectory_file_1_id");
|
| + const GURL kNewParentContentUrl("https://new_url");
|
| +
|
| + scoped_ptr<ResourceEntry> resource_entry = FindEntry(kResourceId);
|
| + ASSERT_TRUE(resource_entry);
|
| + // Here's the original parent link.
|
| + const google_apis::Link* parent_link =
|
| + resource_entry->GetLinkByType(Link::LINK_PARENT);
|
| + ASSERT_TRUE(parent_link);
|
| + EXPECT_EQ("https://dir_1_self_link/folder:1_folder_resource_id",
|
| + parent_link->href().spec());
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + fake_service_.AddResourceToDirectory(
|
| + kNewParentContentUrl,
|
| + kEditUrl,
|
| + base::Bind(&test_util::CopyResultsFromEntryActionCallback,
|
| + &error));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| +
|
| + resource_entry = FindEntry(kResourceId);
|
| + ASSERT_TRUE(resource_entry);
|
| + // The parent link should now be changed.
|
| + parent_link = resource_entry->GetLinkByType(Link::LINK_PARENT);
|
| + ASSERT_TRUE(parent_link);
|
| + EXPECT_EQ(kNewParentContentUrl, parent_link->href());
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, AddResourceToDirectory_NonexistingFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const GURL kEditUrl("https://file1_link_self/file:nonexisting_file");
|
| + const GURL kNewParentContentUrl("https://new_url");
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + fake_service_.AddResourceToDirectory(
|
| + kNewParentContentUrl,
|
| + kEditUrl,
|
| + base::Bind(&test_util::CopyResultsFromEntryActionCallback,
|
| + &error));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_NOT_FOUND, error);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, RemoveResourceFromDirectory_ExistingFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const std::string kResourceId("file:subdirectory_file_1_id");
|
| + const GURL kParentContentUrl(
|
| + "https://dir_1_self_link/folder:1_folder_resource_id");
|
| +
|
| + scoped_ptr<ResourceEntry> resource_entry = FindEntry(kResourceId);
|
| + ASSERT_TRUE(resource_entry);
|
| + // The parent link should exist now.
|
| + const google_apis::Link* parent_link =
|
| + resource_entry->GetLinkByType(Link::LINK_PARENT);
|
| + ASSERT_TRUE(parent_link);
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + fake_service_.RemoveResourceFromDirectory(
|
| + kParentContentUrl,
|
| + kResourceId,
|
| + base::Bind(&test_util::CopyResultsFromEntryActionCallback,
|
| + &error));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| +
|
| + resource_entry = FindEntry(kResourceId);
|
| + ASSERT_TRUE(resource_entry);
|
| + // The parent link should be gone now.
|
| + parent_link = resource_entry->GetLinkByType(Link::LINK_PARENT);
|
| + ASSERT_FALSE(parent_link);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, RemoveResourceFromDirectory_NonexistingFile) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const std::string kResourceId("file:nonexisting_file");
|
| + const GURL kParentContentUrl(
|
| + "https://dir_1_self_link/folder:1_folder_resource_id");
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + fake_service_.RemoveResourceFromDirectory(
|
| + kParentContentUrl,
|
| + kResourceId,
|
| + base::Bind(&test_util::CopyResultsFromEntryActionCallback,
|
| + &error));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_NOT_FOUND, error);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, AddNewDirectory_ToRootDirectory) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + scoped_ptr<ResourceEntry> resource_entry;
|
| + fake_service_.AddNewDirectory(
|
| + GURL(), // Empty means add it to the root directory.
|
| + FILE_PATH_LITERAL("new directory"),
|
| + base::Bind(&test_util::CopyResultsFromGetResourceEntryCallback,
|
| + &error,
|
| + &resource_entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ("resource_id_1", resource_entry->resource_id());
|
| + EXPECT_EQ("new directory", UTF16ToUTF8(resource_entry->title()));
|
| + // The parent link should not exist as the new directory was added in the
|
| + // root.
|
| + const google_apis::Link* parent_link =
|
| + resource_entry->GetLinkByType(Link::LINK_PARENT);
|
| + ASSERT_FALSE(parent_link);
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, AddNewDirectory_ToNonRootDirectory) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const GURL kParentContentUrl(
|
| + "https://dir_1_self_link/folder:1_folder_resource_id");
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + scoped_ptr<ResourceEntry> resource_entry;
|
| + fake_service_.AddNewDirectory(
|
| + kParentContentUrl,
|
| + FILE_PATH_LITERAL("new directory"),
|
| + base::Bind(&test_util::CopyResultsFromGetResourceEntryCallback,
|
| + &error,
|
| + &resource_entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_SUCCESS, error);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ("resource_id_1", resource_entry->resource_id());
|
| + EXPECT_EQ("new directory", UTF16ToUTF8(resource_entry->title()));
|
| + const google_apis::Link* parent_link =
|
| + resource_entry->GetLinkByType(Link::LINK_PARENT);
|
| + ASSERT_TRUE(parent_link);
|
| + EXPECT_EQ(kParentContentUrl, parent_link->href());
|
| +}
|
| +
|
| +TEST_F(FakeDriveServiceTest, AddNewDirectory_ToNonexistingDirectory) {
|
| + ASSERT_TRUE(fake_service_.LoadResourceListForWapi("gdata/root_feed.json"));
|
| +
|
| + const GURL kParentContentUrl(
|
| + "https://dir_1_self_link/folder:nonexisting_resource_id");
|
| +
|
| + GDataErrorCode error = GDATA_OTHER_ERROR;
|
| + scoped_ptr<ResourceEntry> resource_entry;
|
| + fake_service_.AddNewDirectory(
|
| + kParentContentUrl,
|
| + FILE_PATH_LITERAL("new directory"),
|
| + base::Bind(&test_util::CopyResultsFromGetResourceEntryCallback,
|
| + &error,
|
| + &resource_entry));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + EXPECT_EQ(HTTP_NOT_FOUND, error);
|
| + EXPECT_FALSE(resource_entry);
|
| +}
|
| +
|
| } // namespace google_apis
|
|
|