blob: 7ca0eba33f7ec74ac8a16feb6ec9da2e201d10c9 [file] [log] [blame]
[email protected]9eaae802012-09-12 00:12:161// 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
3// found in the LICENSE file.
4
lukasza6364a022015-08-21 01:13:245#include "components/drive/resource_entry_conversion.h"
[email protected]9eaae802012-09-12 00:12:166
Tomasz Dobrowolski95c45e6e2019-09-16 16:44:107#include <memory>
8
[email protected]6fb03b72013-07-31 13:31:119#include "base/time/time.h"
lukasza01b9d55a2015-07-21 15:19:2510#include "components/drive/drive.pb.h"
lukasza8acc4eb2015-07-20 20:57:2011#include "components/drive/drive_api_util.h"
yamaguchib1bbca32017-04-11 11:01:3512#include "components/drive/file_system_core_util.h"
[email protected]35287ea2014-06-10 21:48:2913#include "google_apis/drive/drive_api_parser.h"
[email protected]9eaae802012-09-12 00:12:1614#include "testing/gtest/include/gtest/gtest.h"
15
[email protected]d9d04df2012-10-12 07:06:3516namespace drive {
[email protected]9eaae802012-09-12 00:12:1617
[email protected]35287ea2014-06-10 21:48:2918namespace {
[email protected]9eaae802012-09-12 00:12:1619
[email protected]35287ea2014-06-10 21:48:2920base::Time GetTestTime() {
21 // 2011-12-14-T00:40:47.330Z
22 base::Time::Exploded exploded;
23 exploded.year = 2011;
24 exploded.month = 12;
25 exploded.day_of_month = 14;
26 exploded.day_of_week = 2; // Tuesday
27 exploded.hour = 0;
28 exploded.minute = 40;
29 exploded.second = 47;
30 exploded.millisecond = 330;
maksim.sisov040af552016-07-07 06:56:5431 base::Time out_time;
32 EXPECT_TRUE(base::Time::FromUTCExploded(exploded, &out_time));
33 return out_time;
[email protected]35287ea2014-06-10 21:48:2934}
35
36} // namespace
37
38TEST(ResourceEntryConversionTest, ConvertToResourceEntry_File) {
39 google_apis::FileResource file_resource;
40 file_resource.set_title("File 1.mp3");
41 file_resource.set_file_id("resource_id");
42 file_resource.set_created_date(GetTestTime());
43 file_resource.set_modified_date(
44 GetTestTime() + base::TimeDelta::FromSeconds(10));
Shuhei Takahashia25ace562017-09-15 09:22:1745 file_resource.set_modified_by_me_date(GetTestTime() +
46 base::TimeDelta::FromSeconds(5));
[email protected]35287ea2014-06-10 21:48:2947 file_resource.set_mime_type("audio/mpeg");
48 file_resource.set_alternate_link(GURL("https://file_link_alternate"));
49 file_resource.set_file_size(892721);
50 file_resource.set_md5_checksum("3b4382ebefec6e743578c76bbd0575ce");
[email protected]9eaae802012-09-12 00:12:1651
Sasha Morrisseyacab441f2018-05-23 04:27:4452 google_apis::FileResourceCapabilities capabilities;
53 capabilities.set_can_copy(true);
54 capabilities.set_can_delete(false);
55 capabilities.set_can_rename(true);
56 capabilities.set_can_add_children(false);
57 capabilities.set_can_share(true);
58 file_resource.set_capabilities(capabilities);
59
[email protected]c6f16622013-07-28 08:46:0060 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:2561 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:3162 ConvertFileResourceToResourceEntry(file_resource, &entry,
63 &parent_resource_id);
[email protected]9eaae802012-09-12 00:12:1664
[email protected]35287ea2014-06-10 21:48:2965 EXPECT_EQ(file_resource.title(), entry.title());
66 EXPECT_EQ(file_resource.title(), entry.base_name());
67 EXPECT_EQ(file_resource.file_id(), entry.resource_id());
[email protected]8388cfa2013-12-18 12:43:0468 EXPECT_EQ("", parent_resource_id);
[email protected]9eaae802012-09-12 00:12:1669
[email protected]67241b832013-05-02 04:55:5270 EXPECT_FALSE(entry.deleted());
harukam68666d12016-09-29 12:00:0171 EXPECT_FALSE(entry.starred());
[email protected]67241b832013-05-02 04:55:5272 EXPECT_FALSE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:5273 EXPECT_FALSE(entry.shared());
[email protected]40687c02013-03-27 12:14:5874
[email protected]35287ea2014-06-10 21:48:2975 EXPECT_EQ(file_resource.modified_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:5276 entry.file_info().last_modified());
Shuhei Takahashia25ace562017-09-15 09:22:1777 EXPECT_EQ(file_resource.modified_by_me_date().ToInternalValue(),
78 entry.last_modified_by_me());
[email protected]a03cd73f2012-09-28 03:33:0879 // Last accessed value equal to 0 means that the file has never been viewed.
[email protected]67241b832013-05-02 04:55:5280 EXPECT_EQ(0, entry.file_info().last_accessed());
[email protected]35287ea2014-06-10 21:48:2981 EXPECT_EQ(file_resource.created_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:5282 entry.file_info().creation_time());
Sasha Morrissey7ae517a2018-05-18 04:14:2283 EXPECT_EQ(file_resource.alternate_link().spec(), entry.alternate_url());
[email protected]9eaae802012-09-12 00:12:1684
[email protected]35287ea2014-06-10 21:48:2985 EXPECT_EQ(file_resource.mime_type(),
[email protected]67241b832013-05-02 04:55:5286 entry.file_specific_info().content_mime_type());
87 EXPECT_FALSE(entry.file_specific_info().is_hosted_document());
[email protected]9eaae802012-09-12 00:12:1688
89 // Regular file specific fields.
[email protected]35287ea2014-06-10 21:48:2990 EXPECT_EQ(file_resource.file_size(), entry.file_info().size());
91 EXPECT_EQ(file_resource.md5_checksum(), entry.file_specific_info().md5());
[email protected]67241b832013-05-02 04:55:5292 EXPECT_FALSE(entry.file_info().is_directory());
Sasha Morrisseyacab441f2018-05-23 04:27:4493
94 // Capabilities.
95 EXPECT_TRUE(entry.capabilities_info().can_copy());
96 EXPECT_FALSE(entry.capabilities_info().can_delete());
97 EXPECT_TRUE(entry.capabilities_info().can_rename());
98 EXPECT_FALSE(entry.capabilities_info().can_add_children());
99 EXPECT_TRUE(entry.capabilities_info().can_share());
[email protected]9eaae802012-09-12 00:12:16100}
101
[email protected]5d922672012-12-10 01:17:16102TEST(ResourceEntryConversionTest,
[email protected]35287ea2014-06-10 21:48:29103 ConvertFileResourceToResourceEntry_HostedDocument) {
104 google_apis::FileResource file_resource;
105 file_resource.set_title("Document 1");
106 file_resource.set_file_id("resource_id");
107 file_resource.set_created_date(GetTestTime());
108 file_resource.set_modified_date(
109 GetTestTime() + base::TimeDelta::FromSeconds(10));
Shuhei Takahashia25ace562017-09-15 09:22:17110 file_resource.set_modified_by_me_date(GetTestTime() +
111 base::TimeDelta::FromSeconds(5));
[email protected]35287ea2014-06-10 21:48:29112 file_resource.set_last_viewed_by_me_date(
113 GetTestTime() + base::TimeDelta::FromSeconds(20));
114 file_resource.set_mime_type(util::kGoogleDocumentMimeType);
115 file_resource.set_alternate_link(GURL("https://file_link_alternate"));
[email protected]4979eaf02014-07-31 11:34:20116 // Do not set file size to represent a hosted document.
[email protected]9eaae802012-09-12 00:12:16117
Sasha Morrisseyacab441f2018-05-23 04:27:44118 google_apis::FileResourceCapabilities capabilities;
119 capabilities.set_can_copy(false);
120 capabilities.set_can_delete(true);
121 capabilities.set_can_rename(false);
122 capabilities.set_can_add_children(true);
123 capabilities.set_can_share(false);
124 file_resource.set_capabilities(capabilities);
125
[email protected]c6f16622013-07-28 08:46:00126 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:25127 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31128 ConvertFileResourceToResourceEntry(file_resource, &entry,
129 &parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16130
[email protected]35287ea2014-06-10 21:48:29131 EXPECT_EQ(file_resource.title(), entry.title());
132 EXPECT_EQ(file_resource.title() + ".gdoc",
133 entry.base_name()); // The suffix added.
[email protected]67241b832013-05-02 04:55:52134 EXPECT_EQ(".gdoc", entry.file_specific_info().document_extension());
[email protected]35287ea2014-06-10 21:48:29135 EXPECT_EQ(file_resource.file_id(), entry.resource_id());
[email protected]8388cfa2013-12-18 12:43:04136 EXPECT_EQ("", parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16137
[email protected]67241b832013-05-02 04:55:52138 EXPECT_FALSE(entry.deleted());
harukam68666d12016-09-29 12:00:01139 EXPECT_FALSE(entry.starred());
[email protected]67241b832013-05-02 04:55:52140 EXPECT_FALSE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:52141 EXPECT_FALSE(entry.shared());
[email protected]40687c02013-03-27 12:14:58142
[email protected]35287ea2014-06-10 21:48:29143 EXPECT_EQ(file_resource.modified_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52144 entry.file_info().last_modified());
Shuhei Takahashia25ace562017-09-15 09:22:17145 EXPECT_EQ(file_resource.modified_by_me_date().ToInternalValue(),
146 entry.last_modified_by_me());
[email protected]35287ea2014-06-10 21:48:29147 EXPECT_EQ(file_resource.last_viewed_by_me_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52148 entry.file_info().last_accessed());
[email protected]35287ea2014-06-10 21:48:29149 EXPECT_EQ(file_resource.created_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52150 entry.file_info().creation_time());
Sasha Morrissey7ae517a2018-05-18 04:14:22151 EXPECT_EQ(file_resource.alternate_link().spec(), entry.alternate_url());
[email protected]9eaae802012-09-12 00:12:16152
[email protected]35287ea2014-06-10 21:48:29153 EXPECT_EQ(file_resource.mime_type(),
[email protected]67241b832013-05-02 04:55:52154 entry.file_specific_info().content_mime_type());
155 EXPECT_TRUE(entry.file_specific_info().is_hosted_document());
[email protected]9eaae802012-09-12 00:12:16156
157 // The size should be 0 for a hosted document.
[email protected]943cb8b2013-08-21 03:17:08158 EXPECT_EQ(0, entry.file_info().size());
[email protected]67241b832013-05-02 04:55:52159 EXPECT_FALSE(entry.file_info().is_directory());
Sasha Morrisseyacab441f2018-05-23 04:27:44160
161 // Capabilities.
162 EXPECT_FALSE(entry.capabilities_info().can_copy());
163 EXPECT_TRUE(entry.capabilities_info().can_delete());
164 EXPECT_FALSE(entry.capabilities_info().can_rename());
165 EXPECT_TRUE(entry.capabilities_info().can_add_children());
166 EXPECT_FALSE(entry.capabilities_info().can_share());
[email protected]9eaae802012-09-12 00:12:16167}
168
[email protected]5d922672012-12-10 01:17:16169TEST(ResourceEntryConversionTest,
[email protected]35287ea2014-06-10 21:48:29170 ConvertFileResourceToResourceEntry_Directory) {
171 google_apis::FileResource file_resource;
172 file_resource.set_title("Folder");
173 file_resource.set_file_id("resource_id");
174 file_resource.set_created_date(GetTestTime());
175 file_resource.set_modified_date(
176 GetTestTime() + base::TimeDelta::FromSeconds(10));
Shuhei Takahashia25ace562017-09-15 09:22:17177 file_resource.set_modified_by_me_date(GetTestTime() +
178 base::TimeDelta::FromSeconds(5));
[email protected]35287ea2014-06-10 21:48:29179 file_resource.set_last_viewed_by_me_date(
180 GetTestTime() + base::TimeDelta::FromSeconds(20));
181 file_resource.set_mime_type(util::kDriveFolderMimeType);
[email protected]9eaae802012-09-12 00:12:16182
[email protected]35287ea2014-06-10 21:48:29183 google_apis::ParentReference parent;
184 parent.set_file_id("parent_resource_id");
185 file_resource.mutable_parents()->push_back(parent);
[email protected]9eaae802012-09-12 00:12:16186
[email protected]c6f16622013-07-28 08:46:00187 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:25188 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31189 ConvertFileResourceToResourceEntry(file_resource, &entry,
190 &parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16191
[email protected]35287ea2014-06-10 21:48:29192 EXPECT_EQ(file_resource.title(), entry.title());
193 EXPECT_EQ(file_resource.title(), entry.base_name());
194 EXPECT_EQ(file_resource.file_id(), entry.resource_id());
Sasha Morrissey7ae517a2018-05-18 04:14:22195 EXPECT_EQ(file_resource.alternate_link().spec(), entry.alternate_url());
[email protected]9eaae802012-09-12 00:12:16196 // The parent resource ID should be obtained as this is a sub directory
197 // under a non-root directory.
[email protected]35287ea2014-06-10 21:48:29198 EXPECT_EQ(parent.file_id(), parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16199
[email protected]67241b832013-05-02 04:55:52200 EXPECT_FALSE(entry.deleted());
harukam68666d12016-09-29 12:00:01201 EXPECT_FALSE(entry.starred());
[email protected]67241b832013-05-02 04:55:52202 EXPECT_FALSE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:52203 EXPECT_FALSE(entry.shared());
[email protected]40687c02013-03-27 12:14:58204
[email protected]35287ea2014-06-10 21:48:29205 EXPECT_EQ(file_resource.modified_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52206 entry.file_info().last_modified());
Shuhei Takahashia25ace562017-09-15 09:22:17207 EXPECT_EQ(file_resource.modified_by_me_date().ToInternalValue(),
208 entry.last_modified_by_me());
[email protected]35287ea2014-06-10 21:48:29209 EXPECT_EQ(file_resource.last_viewed_by_me_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52210 entry.file_info().last_accessed());
[email protected]35287ea2014-06-10 21:48:29211 EXPECT_EQ(file_resource.created_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52212 entry.file_info().creation_time());
[email protected]9eaae802012-09-12 00:12:16213
[email protected]67241b832013-05-02 04:55:52214 EXPECT_TRUE(entry.file_info().is_directory());
[email protected]9eaae802012-09-12 00:12:16215}
216
[email protected]5d922672012-12-10 01:17:16217TEST(ResourceEntryConversionTest,
[email protected]35287ea2014-06-10 21:48:29218 ConvertFileResourceToResourceEntry_DeletedHostedDocument) {
219 google_apis::FileResource file_resource;
220 file_resource.set_title("Document 1");
221 file_resource.set_file_id("resource_id");
222 file_resource.set_created_date(GetTestTime());
223 file_resource.set_modified_date(
224 GetTestTime() + base::TimeDelta::FromSeconds(10));
Shuhei Takahashia25ace562017-09-15 09:22:17225 file_resource.set_modified_by_me_date(GetTestTime() +
226 base::TimeDelta::FromSeconds(5));
[email protected]35287ea2014-06-10 21:48:29227 file_resource.set_last_viewed_by_me_date(
228 GetTestTime() + base::TimeDelta::FromSeconds(20));
229 file_resource.set_mime_type(util::kGoogleDocumentMimeType);
230 file_resource.set_alternate_link(GURL("https://file_link_alternate"));
231 file_resource.mutable_labels()->set_trashed(true);
[email protected]9eaae802012-09-12 00:12:16232
[email protected]c6f16622013-07-28 08:46:00233 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:25234 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31235 ConvertFileResourceToResourceEntry(file_resource, &entry,
236 &parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16237
[email protected]35287ea2014-06-10 21:48:29238 EXPECT_EQ(file_resource.title(), entry.title());
239 EXPECT_EQ(file_resource.title() + ".gdoc", entry.base_name());
240 EXPECT_EQ(file_resource.file_id(), entry.resource_id());
Sasha Morrissey7ae517a2018-05-18 04:14:22241 EXPECT_EQ(file_resource.alternate_link().spec(), entry.alternate_url());
[email protected]8388cfa2013-12-18 12:43:04242 EXPECT_EQ("", parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16243
[email protected]67241b832013-05-02 04:55:52244 EXPECT_TRUE(entry.deleted()); // The document was deleted.
harukam68666d12016-09-29 12:00:01245 EXPECT_FALSE(entry.starred());
[email protected]67241b832013-05-02 04:55:52246 EXPECT_FALSE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:52247 EXPECT_FALSE(entry.shared());
[email protected]40687c02013-03-27 12:14:58248
[email protected]35287ea2014-06-10 21:48:29249 EXPECT_EQ(file_resource.modified_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52250 entry.file_info().last_modified());
Shuhei Takahashia25ace562017-09-15 09:22:17251 EXPECT_EQ(file_resource.modified_by_me_date().ToInternalValue(),
252 entry.last_modified_by_me());
[email protected]35287ea2014-06-10 21:48:29253 EXPECT_EQ(file_resource.last_viewed_by_me_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52254 entry.file_info().last_accessed());
[email protected]35287ea2014-06-10 21:48:29255 EXPECT_EQ(file_resource.created_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52256 entry.file_info().creation_time());
[email protected]9eaae802012-09-12 00:12:16257
[email protected]35287ea2014-06-10 21:48:29258 EXPECT_EQ(file_resource.mime_type(),
[email protected]67241b832013-05-02 04:55:52259 entry.file_specific_info().content_mime_type());
260 EXPECT_TRUE(entry.file_specific_info().is_hosted_document());
[email protected]9eaae802012-09-12 00:12:16261
262 // The size should be 0 for a hosted document.
[email protected]943cb8b2013-08-21 03:17:08263 EXPECT_EQ(0, entry.file_info().size());
[email protected]9eaae802012-09-12 00:12:16264}
265
[email protected]35287ea2014-06-10 21:48:29266TEST(ResourceEntryConversionTest, ConvertChangeResourceToResourceEntry) {
267 google_apis::ChangeResource change_resource;
yamaguchic11f1ba2017-03-28 04:16:52268 change_resource.set_type(google_apis::ChangeResource::FILE);
Tomasz Dobrowolski95c45e6e2019-09-16 16:44:10269 change_resource.set_file(std::make_unique<google_apis::FileResource>());
[email protected]35287ea2014-06-10 21:48:29270 change_resource.set_file_id("resource_id");
271 change_resource.set_modification_date(GetTestTime());
[email protected]40687c02013-03-27 12:14:58272
[email protected]35287ea2014-06-10 21:48:29273 google_apis::FileResource* file_resource = change_resource.mutable_file();
274 file_resource->set_title("File 1.mp3");
275 file_resource->set_file_id("resource_id");
[email protected]4979eaf02014-07-31 11:34:20276 // Set dummy file size to declare that this is a regular file.
277 file_resource->set_file_size(12345);
[email protected]40687c02013-03-27 12:14:58278
[email protected]c6f16622013-07-28 08:46:00279 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:25280 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31281 ConvertChangeResourceToResourceEntry(change_resource, &entry,
282 &parent_resource_id);
[email protected]35287ea2014-06-10 21:48:29283
284 EXPECT_EQ(change_resource.file_id(), entry.resource_id());
285 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
286 entry.modification_date());
287
288 EXPECT_EQ(file_resource->title(), entry.title());
289 EXPECT_EQ(file_resource->title(), entry.base_name());
290 EXPECT_EQ("", parent_resource_id);
291
292 EXPECT_FALSE(entry.deleted());
293}
294
295TEST(ResourceEntryConversionTest,
296 ConvertChangeResourceToResourceEntry_Trashed) {
297 google_apis::ChangeResource change_resource;
yamaguchic11f1ba2017-03-28 04:16:52298 change_resource.set_type(google_apis::ChangeResource::FILE);
Tomasz Dobrowolski95c45e6e2019-09-16 16:44:10299 change_resource.set_file(std::make_unique<google_apis::FileResource>());
[email protected]35287ea2014-06-10 21:48:29300 change_resource.set_file_id("resource_id");
301 change_resource.set_modification_date(GetTestTime());
302
303 google_apis::FileResource* file_resource = change_resource.mutable_file();
304 file_resource->set_title("File 1.mp3");
305 file_resource->set_file_id("resource_id");
[email protected]4979eaf02014-07-31 11:34:20306 // Set dummy file size to declare that this is a regular file.
307 file_resource->set_file_size(12345);
[email protected]35287ea2014-06-10 21:48:29308 file_resource->mutable_labels()->set_trashed(true);
309
310 ResourceEntry entry;
311 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31312 ConvertChangeResourceToResourceEntry(change_resource, &entry,
313 &parent_resource_id);
[email protected]35287ea2014-06-10 21:48:29314
315 EXPECT_EQ(change_resource.file_id(), entry.resource_id());
316 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
317 entry.modification_date());
318
319 EXPECT_EQ(file_resource->title(), entry.title());
320 EXPECT_EQ(file_resource->title(), entry.base_name());
321 EXPECT_EQ("", parent_resource_id);
322
323 EXPECT_TRUE(entry.deleted());
324}
325
326TEST(ResourceEntryConversionTest,
327 ConvertChangeResourceToResourceEntry_Deleted) {
328 google_apis::ChangeResource change_resource;
yamaguchic11f1ba2017-03-28 04:16:52329 change_resource.set_type(google_apis::ChangeResource::FILE);
[email protected]35287ea2014-06-10 21:48:29330 change_resource.set_deleted(true);
331 change_resource.set_file_id("resource_id");
332 change_resource.set_modification_date(GetTestTime());
333
334 ResourceEntry entry;
335 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31336 ConvertChangeResourceToResourceEntry(change_resource, &entry,
337 &parent_resource_id);
[email protected]35287ea2014-06-10 21:48:29338
339 EXPECT_EQ(change_resource.file_id(), entry.resource_id());
340 EXPECT_EQ("", parent_resource_id);
341
342 EXPECT_TRUE(entry.deleted());
343
344 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
345 entry.modification_date());
346}
347
348TEST(ResourceEntryConversionTest,
harukam68666d12016-09-29 12:00:01349 ConvertFileResourceToResourceEntry_StarredEntry) {
350 google_apis::FileResource file_resource;
351 file_resource.mutable_labels()->set_starred(true);
352
353 ResourceEntry entry;
354 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31355 ConvertFileResourceToResourceEntry(file_resource, &entry,
356 &parent_resource_id);
harukam68666d12016-09-29 12:00:01357 EXPECT_TRUE(entry.starred());
358}
359
360TEST(ResourceEntryConversionTest,
[email protected]35287ea2014-06-10 21:48:29361 ConvertFileResourceToResourceEntry_SharedWithMeEntry) {
362 google_apis::FileResource file_resource;
363 file_resource.set_shared(true);
364 file_resource.set_shared_with_me_date(GetTestTime());
365
366 ResourceEntry entry;
367 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31368 ConvertFileResourceToResourceEntry(file_resource, &entry,
369 &parent_resource_id);
[email protected]67241b832013-05-02 04:55:52370 EXPECT_TRUE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:52371 EXPECT_TRUE(entry.shared());
[email protected]40687c02013-03-27 12:14:58372}
373
[email protected]6fb03b72013-07-31 13:31:11374TEST(ResourceEntryConversionTest, ToPlatformFileInfo) {
375 ResourceEntry entry;
376 entry.mutable_file_info()->set_size(12345);
377 entry.mutable_file_info()->set_is_directory(true);
378 entry.mutable_file_info()->set_is_symbolic_link(true);
379 entry.mutable_file_info()->set_creation_time(999);
380 entry.mutable_file_info()->set_last_modified(123456789);
381 entry.mutable_file_info()->set_last_accessed(987654321);
382
[email protected]141bcc52014-01-27 21:36:00383 base::File::Info file_info;
384 ConvertResourceEntryToFileInfo(entry, &file_info);
[email protected]6fb03b72013-07-31 13:31:11385 EXPECT_EQ(entry.file_info().size(), file_info.size);
386 EXPECT_EQ(entry.file_info().is_directory(), file_info.is_directory);
387 EXPECT_EQ(entry.file_info().is_symbolic_link(), file_info.is_symbolic_link);
388 EXPECT_EQ(base::Time::FromInternalValue(entry.file_info().creation_time()),
389 file_info.creation_time);
390 EXPECT_EQ(base::Time::FromInternalValue(entry.file_info().last_modified()),
391 file_info.last_modified);
392 EXPECT_EQ(base::Time::FromInternalValue(entry.file_info().last_accessed()),
393 file_info.last_accessed);
394}
395
[email protected]35287ea2014-06-10 21:48:29396TEST(ResourceEntryConversionTest,
397 ConvertFileResourceToResourceEntry_ImageMediaMetadata) {
398 google_apis::FileResource entry_all_fields;
399 google_apis::FileResource entry_zero_fields;
400 google_apis::FileResource entry_no_fields;
[email protected]34722302013-10-04 08:33:25401
[email protected]35287ea2014-06-10 21:48:29402 entry_all_fields.mutable_image_media_metadata()->set_width(640);
403 entry_all_fields.mutable_image_media_metadata()->set_height(480);
404 entry_all_fields.mutable_image_media_metadata()->set_rotation(90);
[email protected]34722302013-10-04 08:33:25405
[email protected]35287ea2014-06-10 21:48:29406 entry_zero_fields.mutable_image_media_metadata()->set_width(0);
407 entry_zero_fields.mutable_image_media_metadata()->set_height(0);
408 entry_zero_fields.mutable_image_media_metadata()->set_rotation(0);
[email protected]34722302013-10-04 08:33:25409
410 {
411 ResourceEntry entry;
412 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31413 ConvertFileResourceToResourceEntry(entry_all_fields, &entry,
414 &parent_resource_id);
[email protected]34722302013-10-04 08:33:25415 EXPECT_EQ(640, entry.file_specific_info().image_width());
416 EXPECT_EQ(480, entry.file_specific_info().image_height());
417 EXPECT_EQ(90, entry.file_specific_info().image_rotation());
418 }
419 {
420 ResourceEntry entry;
421 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31422 ConvertFileResourceToResourceEntry(entry_zero_fields, &entry,
423 &parent_resource_id);
[email protected]34722302013-10-04 08:33:25424 EXPECT_TRUE(entry.file_specific_info().has_image_width());
425 EXPECT_TRUE(entry.file_specific_info().has_image_height());
426 EXPECT_TRUE(entry.file_specific_info().has_image_rotation());
427 EXPECT_EQ(0, entry.file_specific_info().image_width());
428 EXPECT_EQ(0, entry.file_specific_info().image_height());
429 EXPECT_EQ(0, entry.file_specific_info().image_rotation());
430 }
431 {
432 ResourceEntry entry;
433 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31434 ConvertFileResourceToResourceEntry(entry_no_fields, &entry,
435 &parent_resource_id);
[email protected]34722302013-10-04 08:33:25436 EXPECT_FALSE(entry.file_specific_info().has_image_width());
437 EXPECT_FALSE(entry.file_specific_info().has_image_height());
438 EXPECT_FALSE(entry.file_specific_info().has_image_rotation());
439 }
440}
441
yamaguchib1bbca32017-04-11 11:01:35442TEST(ResourceEntryConversionTest,
443 ConvertTeamDriveChangeResourceToResourceEntry) {
444 google_apis::ChangeResource change_resource;
445 change_resource.set_type(google_apis::ChangeResource::TEAM_DRIVE);
446 change_resource.set_team_drive(
Tomasz Dobrowolski95c45e6e2019-09-16 16:44:10447 std::make_unique<google_apis::TeamDriveResource>());
yamaguchib1bbca32017-04-11 11:01:35448 change_resource.set_team_drive_id("team_drive_id");
449 change_resource.set_modification_date(GetTestTime());
450 change_resource.set_deleted(false);
451
452 google_apis::TeamDriveResource* team_drive_resource =
453 change_resource.mutable_team_drive();
454 team_drive_resource->set_name("ABC Team Drive");
455 team_drive_resource->set_id("team_drive_id");
456
Sasha Morrisseyacab441f2018-05-23 04:27:44457 google_apis::TeamDriveCapabilities team_drive_capabilities;
458 team_drive_capabilities.set_can_copy(true);
459 team_drive_capabilities.set_can_delete_team_drive(false);
460 team_drive_capabilities.set_can_rename_team_drive(true);
461 // Can_rename is ignored for team drives.
462 team_drive_capabilities.set_can_rename(false);
463 team_drive_capabilities.set_can_add_children(false);
464 team_drive_capabilities.set_can_share(true);
465 team_drive_resource->set_capabilities(team_drive_capabilities);
466
yamaguchib1bbca32017-04-11 11:01:35467 ResourceEntry entry;
468 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31469 ConvertChangeResourceToResourceEntry(change_resource, &entry,
470 &parent_resource_id);
yamaguchib1bbca32017-04-11 11:01:35471
472 EXPECT_EQ(change_resource.team_drive_id(), entry.resource_id());
473 EXPECT_EQ(team_drive_resource->name(), entry.title());
474 EXPECT_EQ(team_drive_resource->name(), entry.base_name());
475 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
476 entry.modification_date());
yamaguchi587d7602017-04-14 06:49:08477 EXPECT_TRUE(entry.file_info().is_directory());
yamaguchib1bbca32017-04-11 11:01:35478 EXPECT_EQ(util::kDriveTeamDrivesDirLocalId, entry.parent_local_id());
479 EXPECT_EQ("", parent_resource_id);
480 EXPECT_FALSE(entry.deleted());
Sasha Morrisseyacab441f2018-05-23 04:27:44481
482 EXPECT_TRUE(entry.capabilities_info().can_copy());
483 EXPECT_FALSE(entry.capabilities_info().can_delete());
484 EXPECT_TRUE(entry.capabilities_info().can_rename());
485 EXPECT_FALSE(entry.capabilities_info().can_add_children());
486 EXPECT_TRUE(entry.capabilities_info().can_share());
yamaguchib1bbca32017-04-11 11:01:35487}
488
yamaguchi587d7602017-04-14 06:49:08489TEST(ResourceEntryConversionTest, ConvertTeamDriveResourceToResourceEntry) {
490 google_apis::TeamDriveResource team_drive_resource;
491 team_drive_resource.set_name("ABC Team Drive");
492 team_drive_resource.set_id("team_drive_id");
493
494 ResourceEntry entry;
495 ConvertTeamDriveResourceToResourceEntry(team_drive_resource, &entry);
496
497 EXPECT_EQ(team_drive_resource.id(), entry.resource_id());
498 EXPECT_EQ(team_drive_resource.name(), entry.title());
499 EXPECT_EQ(team_drive_resource.name(), entry.base_name());
500 EXPECT_TRUE(entry.file_info().is_directory());
501 EXPECT_EQ(util::kDriveTeamDrivesDirLocalId, entry.parent_local_id());
502}
503
yamaguchib1bbca32017-04-11 11:01:35504TEST(ResourceEntryConversionTest,
505 ConvertTeamDriveRemovalChangeResourceToResourceEntry) {
506 google_apis::ChangeResource change_resource;
507 change_resource.set_type(google_apis::ChangeResource::TEAM_DRIVE);
508 change_resource.set_team_drive_id("team_drive_id");
509 change_resource.set_modification_date(GetTestTime());
510 change_resource.set_deleted(true);
511 // team_drive field is not filled for a deleted change resource.
512
513 ResourceEntry entry;
514 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31515 ConvertChangeResourceToResourceEntry(change_resource, &entry,
516 &parent_resource_id);
yamaguchib1bbca32017-04-11 11:01:35517
518 EXPECT_EQ(change_resource.team_drive_id(), entry.resource_id());
519 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
520 entry.modification_date());
yamaguchi587d7602017-04-14 06:49:08521 EXPECT_TRUE(entry.file_info().is_directory());
yamaguchib1bbca32017-04-11 11:01:35522 EXPECT_EQ(util::kDriveTeamDrivesDirLocalId, entry.parent_local_id());
523 EXPECT_EQ("", parent_resource_id);
524 EXPECT_TRUE(entry.deleted());
525}
526
[email protected]d9d04df2012-10-12 07:06:35527} // namespace drive