| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/gdata_wapi_parser.h" | 5 #include "google_apis/drive/gdata_wapi_parser.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/json/json_file_value_serializer.h" | 10 #include "base/json/json_file_value_serializer.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 EXPECT_EQ("https://resumable_create_media_link/", | 53 EXPECT_EQ("https://resumable_create_media_link/", |
| 54 resumable_link->href().spec()); | 54 resumable_link->href().spec()); |
| 55 EXPECT_EQ("application/atom+xml", resumable_link->mime_type()); | 55 EXPECT_EQ("application/atom+xml", resumable_link->mime_type()); |
| 56 | 56 |
| 57 // Check entries. | 57 // Check entries. |
| 58 ASSERT_EQ(4U, feed->entries().size()); | 58 ASSERT_EQ(4U, feed->entries().size()); |
| 59 | 59 |
| 60 // Check a folder entry. | 60 // Check a folder entry. |
| 61 const ResourceEntry* folder_entry = feed->entries()[0]; | 61 const ResourceEntry* folder_entry = feed->entries()[0]; |
| 62 ASSERT_TRUE(folder_entry); | 62 ASSERT_TRUE(folder_entry); |
| 63 EXPECT_EQ(ENTRY_KIND_FOLDER, folder_entry->kind()); | 63 EXPECT_EQ(ResourceEntry::ENTRY_KIND_FOLDER, folder_entry->kind()); |
| 64 EXPECT_EQ("\"HhMOFgcNHSt7ImBr\"", folder_entry->etag()); | 64 EXPECT_EQ("\"HhMOFgcNHSt7ImBr\"", folder_entry->etag()); |
| 65 EXPECT_EQ("folder:sub_sub_directory_folder_id", folder_entry->resource_id()); | 65 EXPECT_EQ("folder:sub_sub_directory_folder_id", folder_entry->resource_id()); |
| 66 EXPECT_EQ("https://1_folder_id", folder_entry->id()); | 66 EXPECT_EQ("https://1_folder_id", folder_entry->id()); |
| 67 EXPECT_EQ("Entry 1 Title", folder_entry->title()); | 67 EXPECT_EQ("Entry 1 Title", folder_entry->title()); |
| 68 base::Time entry1_update_time; | 68 base::Time entry1_update_time; |
| 69 base::Time entry1_publish_time; | 69 base::Time entry1_publish_time; |
| 70 ASSERT_TRUE(util::GetTimeFromString("2011-04-01T18:34:08.234Z", | 70 ASSERT_TRUE(util::GetTimeFromString("2011-04-01T18:34:08.234Z", |
| 71 &entry1_update_time)); | 71 &entry1_update_time)); |
| 72 ASSERT_TRUE(util::GetTimeFromString("2010-11-07T05:03:54.719Z", | 72 ASSERT_TRUE(util::GetTimeFromString("2010-11-07T05:03:54.719Z", |
| 73 &entry1_publish_time)); | 73 &entry1_publish_time)); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 95 EXPECT_EQ("text/html", entry1_alternate_link->mime_type()); | 95 EXPECT_EQ("text/html", entry1_alternate_link->mime_type()); |
| 96 | 96 |
| 97 const Link* entry1_edit_link = folder_entry->GetLinkByType(Link::LINK_EDIT); | 97 const Link* entry1_edit_link = folder_entry->GetLinkByType(Link::LINK_EDIT); |
| 98 ASSERT_TRUE(entry1_edit_link); | 98 ASSERT_TRUE(entry1_edit_link); |
| 99 EXPECT_EQ("https://1_edit_link/", entry1_edit_link->href().spec()); | 99 EXPECT_EQ("https://1_edit_link/", entry1_edit_link->href().spec()); |
| 100 EXPECT_EQ("application/atom+xml", entry1_edit_link->mime_type()); | 100 EXPECT_EQ("application/atom+xml", entry1_edit_link->mime_type()); |
| 101 | 101 |
| 102 // Check a file entry. | 102 // Check a file entry. |
| 103 const ResourceEntry* file_entry = feed->entries()[1]; | 103 const ResourceEntry* file_entry = feed->entries()[1]; |
| 104 ASSERT_TRUE(file_entry); | 104 ASSERT_TRUE(file_entry); |
| 105 EXPECT_EQ(ENTRY_KIND_FILE, file_entry->kind()); | 105 EXPECT_EQ(ResourceEntry::ENTRY_KIND_FILE, file_entry->kind()); |
| 106 EXPECT_EQ("filename.m4a", file_entry->filename()); | 106 EXPECT_EQ("filename.m4a", file_entry->filename()); |
| 107 EXPECT_EQ("sugg_file_name.m4a", file_entry->suggested_filename()); | 107 EXPECT_EQ("sugg_file_name.m4a", file_entry->suggested_filename()); |
| 108 EXPECT_EQ("3b4382ebefec6e743578c76bbd0575ce", file_entry->file_md5()); | 108 EXPECT_EQ("3b4382ebefec6e743578c76bbd0575ce", file_entry->file_md5()); |
| 109 EXPECT_EQ(892721, file_entry->file_size()); | 109 EXPECT_EQ(892721, file_entry->file_size()); |
| 110 const Link* file_parent_link = file_entry->GetLinkByType(Link::LINK_PARENT); | 110 const Link* file_parent_link = file_entry->GetLinkByType(Link::LINK_PARENT); |
| 111 ASSERT_TRUE(file_parent_link); | 111 ASSERT_TRUE(file_parent_link); |
| 112 EXPECT_EQ("https://file_link_parent/", file_parent_link->href().spec()); | 112 EXPECT_EQ("https://file_link_parent/", file_parent_link->href().spec()); |
| 113 EXPECT_EQ("application/atom+xml", file_parent_link->mime_type()); | 113 EXPECT_EQ("application/atom+xml", file_parent_link->mime_type()); |
| 114 EXPECT_EQ("Medical", file_parent_link->title()); | 114 EXPECT_EQ("Medical", file_parent_link->title()); |
| 115 const Link* file_open_with_link = | 115 const Link* file_open_with_link = |
| 116 file_entry->GetLinkByType(Link::LINK_OPEN_WITH); | 116 file_entry->GetLinkByType(Link::LINK_OPEN_WITH); |
| 117 ASSERT_TRUE(file_open_with_link); | 117 ASSERT_TRUE(file_open_with_link); |
| 118 EXPECT_EQ("https://xml_file_entry_open_with_link/", | 118 EXPECT_EQ("https://xml_file_entry_open_with_link/", |
| 119 file_open_with_link->href().spec()); | 119 file_open_with_link->href().spec()); |
| 120 EXPECT_EQ("application/atom+xml", file_open_with_link->mime_type()); | 120 EXPECT_EQ("application/atom+xml", file_open_with_link->mime_type()); |
| 121 EXPECT_EQ("the_app_id", file_open_with_link->app_id()); | 121 EXPECT_EQ("the_app_id", file_open_with_link->app_id()); |
| 122 EXPECT_EQ(654321, file_entry->changestamp()); | 122 EXPECT_EQ(654321, file_entry->changestamp()); |
| 123 | 123 |
| 124 const Link* file_unknown_link = file_entry->GetLinkByType(Link::LINK_UNKNOWN); | 124 const Link* file_unknown_link = file_entry->GetLinkByType(Link::LINK_UNKNOWN); |
| 125 ASSERT_TRUE(file_unknown_link); | 125 ASSERT_TRUE(file_unknown_link); |
| 126 EXPECT_EQ("https://xml_file_fake_entry_open_with_link/", | 126 EXPECT_EQ("https://xml_file_fake_entry_open_with_link/", |
| 127 file_unknown_link->href().spec()); | 127 file_unknown_link->href().spec()); |
| 128 EXPECT_EQ("application/atom+xml", file_unknown_link->mime_type()); | 128 EXPECT_EQ("application/atom+xml", file_unknown_link->mime_type()); |
| 129 EXPECT_EQ("", file_unknown_link->app_id()); | 129 EXPECT_EQ("", file_unknown_link->app_id()); |
| 130 | 130 |
| 131 // Check a file entry. | 131 // Check a file entry. |
| 132 const ResourceEntry* resource_entry = feed->entries()[2]; | 132 const ResourceEntry* resource_entry = feed->entries()[2]; |
| 133 ASSERT_TRUE(resource_entry); | 133 ASSERT_TRUE(resource_entry); |
| 134 EXPECT_EQ(ENTRY_KIND_DOCUMENT, resource_entry->kind()); | 134 // Hosted documents are treated as unknown kind so that sync file system |
| 135 EXPECT_TRUE(resource_entry->is_hosted_document()); | 135 // doesn't assume them as neither folders nor normal files. |
| 136 EXPECT_TRUE(resource_entry->is_google_document()); | 136 EXPECT_EQ(ResourceEntry::ENTRY_KIND_UNKNOWN, resource_entry->kind()); |
| 137 EXPECT_FALSE(resource_entry->is_external_document()); | |
| 138 | 137 |
| 139 // Check an external document entry. | 138 // Check an external document entry. |
| 140 const ResourceEntry* app_entry = feed->entries()[3]; | 139 const ResourceEntry* app_entry = feed->entries()[3]; |
| 141 ASSERT_TRUE(app_entry); | 140 ASSERT_TRUE(app_entry); |
| 142 EXPECT_EQ(ENTRY_KIND_EXTERNAL_APP, app_entry->kind()); | 141 // Hosted documents are treated as unknown kind so that sync file system |
| 143 EXPECT_TRUE(app_entry->is_hosted_document()); | 142 // doesn't assume them as neither folders nor normal files. |
| 144 EXPECT_TRUE(app_entry->is_external_document()); | 143 EXPECT_EQ(ResourceEntry::ENTRY_KIND_UNKNOWN, app_entry->kind()); |
| 145 EXPECT_FALSE(app_entry->is_google_document()); | |
| 146 } | 144 } |
| 147 | 145 |
| 148 | 146 |
| 149 // Test document feed parsing. | 147 // Test document feed parsing. |
| 150 TEST(GDataWAPIParserTest, ResourceEntryJsonParser) { | 148 TEST(GDataWAPIParserTest, ResourceEntryJsonParser) { |
| 151 std::string error; | 149 std::string error; |
| 152 scoped_ptr<base::Value> document = | 150 scoped_ptr<base::Value> document = |
| 153 test_util::LoadJSONFile("gdata/file_entry.json"); | 151 test_util::LoadJSONFile("gdata/file_entry.json"); |
| 154 ASSERT_TRUE(document.get()); | 152 ASSERT_TRUE(document.get()); |
| 155 ASSERT_EQ(base::Value::TYPE_DICTIONARY, document->GetType()); | 153 ASSERT_EQ(base::Value::TYPE_DICTIONARY, document->GetType()); |
| 156 scoped_ptr<ResourceEntry> entry(ResourceEntry::ExtractAndParse(*document)); | 154 scoped_ptr<ResourceEntry> entry(ResourceEntry::ExtractAndParse(*document)); |
| 157 ASSERT_TRUE(entry.get()); | 155 ASSERT_TRUE(entry.get()); |
| 158 | 156 |
| 159 EXPECT_EQ(ENTRY_KIND_FILE, entry->kind()); | 157 EXPECT_EQ(ResourceEntry::ENTRY_KIND_FILE, entry->kind()); |
| 160 EXPECT_EQ("\"HhMOFgxXHit7ImBr\"", entry->etag()); | 158 EXPECT_EQ("\"HhMOFgxXHit7ImBr\"", entry->etag()); |
| 161 EXPECT_EQ("file:2_file_resource_id", entry->resource_id()); | 159 EXPECT_EQ("file:2_file_resource_id", entry->resource_id()); |
| 162 EXPECT_EQ("2_file_id", entry->id()); | 160 EXPECT_EQ("2_file_id", entry->id()); |
| 163 EXPECT_EQ("File 1.mp3", entry->title()); | 161 EXPECT_EQ("File 1.mp3", entry->title()); |
| 164 base::Time entry1_update_time; | 162 base::Time entry1_update_time; |
| 165 base::Time entry1_publish_time; | 163 base::Time entry1_publish_time; |
| 166 ASSERT_TRUE(util::GetTimeFromString("2011-12-14T00:40:47.330Z", | 164 ASSERT_TRUE(util::GetTimeFromString("2011-12-14T00:40:47.330Z", |
| 167 &entry1_update_time)); | 165 &entry1_update_time)); |
| 168 ASSERT_TRUE(util::GetTimeFromString("2011-12-13T00:40:47.330Z", | 166 ASSERT_TRUE(util::GetTimeFromString("2011-12-13T00:40:47.330Z", |
| 169 &entry1_publish_time)); | 167 &entry1_publish_time)); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 EXPECT_EQ("the_app_id", entry1_open_with_link->app_id()); | 213 EXPECT_EQ("the_app_id", entry1_open_with_link->app_id()); |
| 216 | 214 |
| 217 const Link* entry1_unknown_link = entry->GetLinkByType(Link::LINK_UNKNOWN); | 215 const Link* entry1_unknown_link = entry->GetLinkByType(Link::LINK_UNKNOWN); |
| 218 ASSERT_TRUE(entry1_unknown_link); | 216 ASSERT_TRUE(entry1_unknown_link); |
| 219 EXPECT_EQ("https://entry1_fake_entry_open_with_link/", | 217 EXPECT_EQ("https://entry1_fake_entry_open_with_link/", |
| 220 entry1_unknown_link->href().spec()); | 218 entry1_unknown_link->href().spec()); |
| 221 EXPECT_EQ("application/atom+xml", entry1_unknown_link->mime_type()); | 219 EXPECT_EQ("application/atom+xml", entry1_unknown_link->mime_type()); |
| 222 EXPECT_EQ("", entry1_unknown_link->app_id()); | 220 EXPECT_EQ("", entry1_unknown_link->app_id()); |
| 223 | 221 |
| 224 // Check a file properties. | 222 // Check a file properties. |
| 225 EXPECT_EQ(ENTRY_KIND_FILE, entry->kind()); | 223 EXPECT_EQ(ResourceEntry::ENTRY_KIND_FILE, entry->kind()); |
| 226 EXPECT_EQ("File 1.mp3", entry->filename()); | 224 EXPECT_EQ("File 1.mp3", entry->filename()); |
| 227 EXPECT_EQ("File 1.mp3", entry->suggested_filename()); | 225 EXPECT_EQ("File 1.mp3", entry->suggested_filename()); |
| 228 EXPECT_EQ("3b4382ebefec6e743578c76bbd0575ce", entry->file_md5()); | 226 EXPECT_EQ("3b4382ebefec6e743578c76bbd0575ce", entry->file_md5()); |
| 229 EXPECT_EQ(892721, entry->file_size()); | 227 EXPECT_EQ(892721, entry->file_size()); |
| 230 | 228 |
| 231 // WAPI doesn't provide image metadata, but these fields are available | 229 // WAPI doesn't provide image metadata, but these fields are available |
| 232 // since this class can wrap data received from Drive API (via a converter). | 230 // since this class can wrap data received from Drive API (via a converter). |
| 233 EXPECT_EQ(-1, entry->image_width()); | 231 EXPECT_EQ(-1, entry->image_width()); |
| 234 EXPECT_EQ(-1, entry->image_height()); | 232 EXPECT_EQ(-1, entry->image_height()); |
| 235 EXPECT_EQ(-1, entry->image_rotation()); | 233 EXPECT_EQ(-1, entry->image_rotation()); |
| 236 } | 234 } |
| 237 | 235 |
| 238 TEST(GDataWAPIParserTest, ClassifyEntryKindByFileExtension) { | |
| 239 EXPECT_EQ( | |
| 240 ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 241 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 242 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 243 base::FilePath(FILE_PATH_LITERAL("Test.gdoc")))); | |
| 244 EXPECT_EQ( | |
| 245 ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 246 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 247 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 248 base::FilePath(FILE_PATH_LITERAL("Test.gsheet")))); | |
| 249 EXPECT_EQ( | |
| 250 ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 251 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 252 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 253 base::FilePath(FILE_PATH_LITERAL("Test.gslides")))); | |
| 254 EXPECT_EQ( | |
| 255 ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 256 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 257 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 258 base::FilePath(FILE_PATH_LITERAL("Test.gdraw")))); | |
| 259 EXPECT_EQ( | |
| 260 ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 261 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 262 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 263 base::FilePath(FILE_PATH_LITERAL("Test.gtable")))); | |
| 264 EXPECT_EQ( | |
| 265 ResourceEntry::KIND_OF_EXTERNAL_DOCUMENT | | |
| 266 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 267 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 268 base::FilePath(FILE_PATH_LITERAL("Test.glink")))); | |
| 269 EXPECT_EQ( | |
| 270 ResourceEntry::KIND_OF_NONE, | |
| 271 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 272 base::FilePath(FILE_PATH_LITERAL("Test.tar.gz")))); | |
| 273 EXPECT_EQ( | |
| 274 ResourceEntry::KIND_OF_NONE, | |
| 275 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 276 base::FilePath(FILE_PATH_LITERAL("Test.txt")))); | |
| 277 EXPECT_EQ( | |
| 278 ResourceEntry::KIND_OF_NONE, | |
| 279 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 280 base::FilePath(FILE_PATH_LITERAL("Test")))); | |
| 281 EXPECT_EQ( | |
| 282 ResourceEntry::KIND_OF_NONE, | |
| 283 ResourceEntry::ClassifyEntryKindByFileExtension( | |
| 284 base::FilePath())); | |
| 285 } | |
| 286 | |
| 287 TEST(GDataWAPIParserTest, ResourceEntryClassifyEntryKind) { | |
| 288 EXPECT_EQ(ResourceEntry::KIND_OF_NONE, | |
| 289 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_UNKNOWN)); | |
| 290 EXPECT_EQ(ResourceEntry::KIND_OF_NONE, | |
| 291 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_ITEM)); | |
| 292 EXPECT_EQ(ResourceEntry::KIND_OF_NONE, | |
| 293 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_SITE)); | |
| 294 EXPECT_EQ(ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 295 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 296 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_DOCUMENT)); | |
| 297 EXPECT_EQ(ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 298 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 299 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_SPREADSHEET)); | |
| 300 EXPECT_EQ(ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 301 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 302 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_PRESENTATION)); | |
| 303 EXPECT_EQ(ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 304 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 305 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_DRAWING)); | |
| 306 EXPECT_EQ(ResourceEntry::KIND_OF_GOOGLE_DOCUMENT | | |
| 307 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 308 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_TABLE)); | |
| 309 EXPECT_EQ(ResourceEntry::KIND_OF_EXTERNAL_DOCUMENT | | |
| 310 ResourceEntry::KIND_OF_HOSTED_DOCUMENT, | |
| 311 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_EXTERNAL_APP)); | |
| 312 EXPECT_EQ(ResourceEntry::KIND_OF_FOLDER, | |
| 313 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_FOLDER)); | |
| 314 EXPECT_EQ(ResourceEntry::KIND_OF_FILE, | |
| 315 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_FILE)); | |
| 316 EXPECT_EQ(ResourceEntry::KIND_OF_FILE, | |
| 317 ResourceEntry::ClassifyEntryKind(ENTRY_KIND_PDF)); | |
| 318 } | |
| 319 | |
| 320 } // namespace google_apis | 236 } // namespace google_apis |
| OLD | NEW |