blob: d2de2b3e9c921a6ae4fee920ed94b36743eeae14 [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
dchengf42750232016-04-12 04:12:277#include "base/memory/ptr_util.h"
[email protected]6fb03b72013-07-31 13:31:118#include "base/time/time.h"
lukasza01b9d55a2015-07-21 15:19:259#include "components/drive/drive.pb.h"
lukasza8acc4eb2015-07-20 20:57:2010#include "components/drive/drive_api_util.h"
yamaguchib1bbca32017-04-11 11:01:3511#include "components/drive/file_system_core_util.h"
[email protected]35287ea2014-06-10 21:48:2912#include "google_apis/drive/drive_api_parser.h"
[email protected]9eaae802012-09-12 00:12:1613#include "testing/gtest/include/gtest/gtest.h"
14
[email protected]d9d04df2012-10-12 07:06:3515namespace drive {
[email protected]9eaae802012-09-12 00:12:1616
[email protected]35287ea2014-06-10 21:48:2917namespace {
[email protected]9eaae802012-09-12 00:12:1618
[email protected]35287ea2014-06-10 21:48:2919base::Time GetTestTime() {
20 // 2011-12-14-T00:40:47.330Z
21 base::Time::Exploded exploded;
22 exploded.year = 2011;
23 exploded.month = 12;
24 exploded.day_of_month = 14;
25 exploded.day_of_week = 2; // Tuesday
26 exploded.hour = 0;
27 exploded.minute = 40;
28 exploded.second = 47;
29 exploded.millisecond = 330;
maksim.sisov040af552016-07-07 06:56:5430 base::Time out_time;
31 EXPECT_TRUE(base::Time::FromUTCExploded(exploded, &out_time));
32 return out_time;
[email protected]35287ea2014-06-10 21:48:2933}
34
35} // namespace
36
37TEST(ResourceEntryConversionTest, ConvertToResourceEntry_File) {
38 google_apis::FileResource file_resource;
39 file_resource.set_title("File 1.mp3");
40 file_resource.set_file_id("resource_id");
41 file_resource.set_created_date(GetTestTime());
42 file_resource.set_modified_date(
43 GetTestTime() + base::TimeDelta::FromSeconds(10));
Shuhei Takahashia25ace562017-09-15 09:22:1744 file_resource.set_modified_by_me_date(GetTestTime() +
45 base::TimeDelta::FromSeconds(5));
[email protected]35287ea2014-06-10 21:48:2946 file_resource.set_mime_type("audio/mpeg");
47 file_resource.set_alternate_link(GURL("https://file_link_alternate"));
48 file_resource.set_file_size(892721);
49 file_resource.set_md5_checksum("3b4382ebefec6e743578c76bbd0575ce");
[email protected]9eaae802012-09-12 00:12:1650
Sasha Morrisseyacab441f2018-05-23 04:27:4451 google_apis::FileResourceCapabilities capabilities;
52 capabilities.set_can_copy(true);
53 capabilities.set_can_delete(false);
54 capabilities.set_can_rename(true);
55 capabilities.set_can_add_children(false);
56 capabilities.set_can_share(true);
57 file_resource.set_capabilities(capabilities);
58
[email protected]c6f16622013-07-28 08:46:0059 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:2560 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:3161 ConvertFileResourceToResourceEntry(file_resource, &entry,
62 &parent_resource_id);
[email protected]9eaae802012-09-12 00:12:1663
[email protected]35287ea2014-06-10 21:48:2964 EXPECT_EQ(file_resource.title(), entry.title());
65 EXPECT_EQ(file_resource.title(), entry.base_name());
66 EXPECT_EQ(file_resource.file_id(), entry.resource_id());
[email protected]8388cfa2013-12-18 12:43:0467 EXPECT_EQ("", parent_resource_id);
[email protected]9eaae802012-09-12 00:12:1668
[email protected]67241b832013-05-02 04:55:5269 EXPECT_FALSE(entry.deleted());
harukam68666d12016-09-29 12:00:0170 EXPECT_FALSE(entry.starred());
[email protected]67241b832013-05-02 04:55:5271 EXPECT_FALSE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:5272 EXPECT_FALSE(entry.shared());
[email protected]40687c02013-03-27 12:14:5873
[email protected]35287ea2014-06-10 21:48:2974 EXPECT_EQ(file_resource.modified_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:5275 entry.file_info().last_modified());
Shuhei Takahashia25ace562017-09-15 09:22:1776 EXPECT_EQ(file_resource.modified_by_me_date().ToInternalValue(),
77 entry.last_modified_by_me());
[email protected]a03cd73f2012-09-28 03:33:0878 // Last accessed value equal to 0 means that the file has never been viewed.
[email protected]67241b832013-05-02 04:55:5279 EXPECT_EQ(0, entry.file_info().last_accessed());
[email protected]35287ea2014-06-10 21:48:2980 EXPECT_EQ(file_resource.created_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:5281 entry.file_info().creation_time());
Sasha Morrissey7ae517a2018-05-18 04:14:2282 EXPECT_EQ(file_resource.alternate_link().spec(), entry.alternate_url());
[email protected]9eaae802012-09-12 00:12:1683
[email protected]35287ea2014-06-10 21:48:2984 EXPECT_EQ(file_resource.mime_type(),
[email protected]67241b832013-05-02 04:55:5285 entry.file_specific_info().content_mime_type());
86 EXPECT_FALSE(entry.file_specific_info().is_hosted_document());
[email protected]9eaae802012-09-12 00:12:1687
88 // Regular file specific fields.
[email protected]35287ea2014-06-10 21:48:2989 EXPECT_EQ(file_resource.file_size(), entry.file_info().size());
90 EXPECT_EQ(file_resource.md5_checksum(), entry.file_specific_info().md5());
[email protected]67241b832013-05-02 04:55:5291 EXPECT_FALSE(entry.file_info().is_directory());
Sasha Morrisseyacab441f2018-05-23 04:27:4492
93 // Capabilities.
94 EXPECT_TRUE(entry.capabilities_info().can_copy());
95 EXPECT_FALSE(entry.capabilities_info().can_delete());
96 EXPECT_TRUE(entry.capabilities_info().can_rename());
97 EXPECT_FALSE(entry.capabilities_info().can_add_children());
98 EXPECT_TRUE(entry.capabilities_info().can_share());
[email protected]9eaae802012-09-12 00:12:1699}
100
[email protected]5d922672012-12-10 01:17:16101TEST(ResourceEntryConversionTest,
[email protected]35287ea2014-06-10 21:48:29102 ConvertFileResourceToResourceEntry_HostedDocument) {
103 google_apis::FileResource file_resource;
104 file_resource.set_title("Document 1");
105 file_resource.set_file_id("resource_id");
106 file_resource.set_created_date(GetTestTime());
107 file_resource.set_modified_date(
108 GetTestTime() + base::TimeDelta::FromSeconds(10));
Shuhei Takahashia25ace562017-09-15 09:22:17109 file_resource.set_modified_by_me_date(GetTestTime() +
110 base::TimeDelta::FromSeconds(5));
[email protected]35287ea2014-06-10 21:48:29111 file_resource.set_last_viewed_by_me_date(
112 GetTestTime() + base::TimeDelta::FromSeconds(20));
113 file_resource.set_mime_type(util::kGoogleDocumentMimeType);
114 file_resource.set_alternate_link(GURL("https://file_link_alternate"));
[email protected]4979eaf02014-07-31 11:34:20115 // Do not set file size to represent a hosted document.
[email protected]9eaae802012-09-12 00:12:16116
Sasha Morrisseyacab441f2018-05-23 04:27:44117 google_apis::FileResourceCapabilities capabilities;
118 capabilities.set_can_copy(false);
119 capabilities.set_can_delete(true);
120 capabilities.set_can_rename(false);
121 capabilities.set_can_add_children(true);
122 capabilities.set_can_share(false);
123 file_resource.set_capabilities(capabilities);
124
[email protected]c6f16622013-07-28 08:46:00125 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:25126 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31127 ConvertFileResourceToResourceEntry(file_resource, &entry,
128 &parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16129
[email protected]35287ea2014-06-10 21:48:29130 EXPECT_EQ(file_resource.title(), entry.title());
131 EXPECT_EQ(file_resource.title() + ".gdoc",
132 entry.base_name()); // The suffix added.
[email protected]67241b832013-05-02 04:55:52133 EXPECT_EQ(".gdoc", entry.file_specific_info().document_extension());
[email protected]35287ea2014-06-10 21:48:29134 EXPECT_EQ(file_resource.file_id(), entry.resource_id());
[email protected]8388cfa2013-12-18 12:43:04135 EXPECT_EQ("", parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16136
[email protected]67241b832013-05-02 04:55:52137 EXPECT_FALSE(entry.deleted());
harukam68666d12016-09-29 12:00:01138 EXPECT_FALSE(entry.starred());
[email protected]67241b832013-05-02 04:55:52139 EXPECT_FALSE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:52140 EXPECT_FALSE(entry.shared());
[email protected]40687c02013-03-27 12:14:58141
[email protected]35287ea2014-06-10 21:48:29142 EXPECT_EQ(file_resource.modified_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52143 entry.file_info().last_modified());
Shuhei Takahashia25ace562017-09-15 09:22:17144 EXPECT_EQ(file_resource.modified_by_me_date().ToInternalValue(),
145 entry.last_modified_by_me());
[email protected]35287ea2014-06-10 21:48:29146 EXPECT_EQ(file_resource.last_viewed_by_me_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52147 entry.file_info().last_accessed());
[email protected]35287ea2014-06-10 21:48:29148 EXPECT_EQ(file_resource.created_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52149 entry.file_info().creation_time());
Sasha Morrissey7ae517a2018-05-18 04:14:22150 EXPECT_EQ(file_resource.alternate_link().spec(), entry.alternate_url());
[email protected]9eaae802012-09-12 00:12:16151
[email protected]35287ea2014-06-10 21:48:29152 EXPECT_EQ(file_resource.mime_type(),
[email protected]67241b832013-05-02 04:55:52153 entry.file_specific_info().content_mime_type());
154 EXPECT_TRUE(entry.file_specific_info().is_hosted_document());
[email protected]9eaae802012-09-12 00:12:16155
156 // The size should be 0 for a hosted document.
[email protected]943cb8b2013-08-21 03:17:08157 EXPECT_EQ(0, entry.file_info().size());
[email protected]67241b832013-05-02 04:55:52158 EXPECT_FALSE(entry.file_info().is_directory());
Sasha Morrisseyacab441f2018-05-23 04:27:44159
160 // Capabilities.
161 EXPECT_FALSE(entry.capabilities_info().can_copy());
162 EXPECT_TRUE(entry.capabilities_info().can_delete());
163 EXPECT_FALSE(entry.capabilities_info().can_rename());
164 EXPECT_TRUE(entry.capabilities_info().can_add_children());
165 EXPECT_FALSE(entry.capabilities_info().can_share());
[email protected]9eaae802012-09-12 00:12:16166}
167
[email protected]5d922672012-12-10 01:17:16168TEST(ResourceEntryConversionTest,
[email protected]35287ea2014-06-10 21:48:29169 ConvertFileResourceToResourceEntry_Directory) {
170 google_apis::FileResource file_resource;
171 file_resource.set_title("Folder");
172 file_resource.set_file_id("resource_id");
173 file_resource.set_created_date(GetTestTime());
174 file_resource.set_modified_date(
175 GetTestTime() + base::TimeDelta::FromSeconds(10));
Shuhei Takahashia25ace562017-09-15 09:22:17176 file_resource.set_modified_by_me_date(GetTestTime() +
177 base::TimeDelta::FromSeconds(5));
[email protected]35287ea2014-06-10 21:48:29178 file_resource.set_last_viewed_by_me_date(
179 GetTestTime() + base::TimeDelta::FromSeconds(20));
180 file_resource.set_mime_type(util::kDriveFolderMimeType);
[email protected]9eaae802012-09-12 00:12:16181
[email protected]35287ea2014-06-10 21:48:29182 google_apis::ParentReference parent;
183 parent.set_file_id("parent_resource_id");
184 file_resource.mutable_parents()->push_back(parent);
[email protected]9eaae802012-09-12 00:12:16185
[email protected]c6f16622013-07-28 08:46:00186 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:25187 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31188 ConvertFileResourceToResourceEntry(file_resource, &entry,
189 &parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16190
[email protected]35287ea2014-06-10 21:48:29191 EXPECT_EQ(file_resource.title(), entry.title());
192 EXPECT_EQ(file_resource.title(), entry.base_name());
193 EXPECT_EQ(file_resource.file_id(), entry.resource_id());
Sasha Morrissey7ae517a2018-05-18 04:14:22194 EXPECT_EQ(file_resource.alternate_link().spec(), entry.alternate_url());
[email protected]9eaae802012-09-12 00:12:16195 // The parent resource ID should be obtained as this is a sub directory
196 // under a non-root directory.
[email protected]35287ea2014-06-10 21:48:29197 EXPECT_EQ(parent.file_id(), parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16198
[email protected]67241b832013-05-02 04:55:52199 EXPECT_FALSE(entry.deleted());
harukam68666d12016-09-29 12:00:01200 EXPECT_FALSE(entry.starred());
[email protected]67241b832013-05-02 04:55:52201 EXPECT_FALSE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:52202 EXPECT_FALSE(entry.shared());
[email protected]40687c02013-03-27 12:14:58203
[email protected]35287ea2014-06-10 21:48:29204 EXPECT_EQ(file_resource.modified_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52205 entry.file_info().last_modified());
Shuhei Takahashia25ace562017-09-15 09:22:17206 EXPECT_EQ(file_resource.modified_by_me_date().ToInternalValue(),
207 entry.last_modified_by_me());
[email protected]35287ea2014-06-10 21:48:29208 EXPECT_EQ(file_resource.last_viewed_by_me_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52209 entry.file_info().last_accessed());
[email protected]35287ea2014-06-10 21:48:29210 EXPECT_EQ(file_resource.created_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52211 entry.file_info().creation_time());
[email protected]9eaae802012-09-12 00:12:16212
[email protected]67241b832013-05-02 04:55:52213 EXPECT_TRUE(entry.file_info().is_directory());
[email protected]9eaae802012-09-12 00:12:16214}
215
[email protected]5d922672012-12-10 01:17:16216TEST(ResourceEntryConversionTest,
[email protected]35287ea2014-06-10 21:48:29217 ConvertFileResourceToResourceEntry_DeletedHostedDocument) {
218 google_apis::FileResource file_resource;
219 file_resource.set_title("Document 1");
220 file_resource.set_file_id("resource_id");
221 file_resource.set_created_date(GetTestTime());
222 file_resource.set_modified_date(
223 GetTestTime() + base::TimeDelta::FromSeconds(10));
Shuhei Takahashia25ace562017-09-15 09:22:17224 file_resource.set_modified_by_me_date(GetTestTime() +
225 base::TimeDelta::FromSeconds(5));
[email protected]35287ea2014-06-10 21:48:29226 file_resource.set_last_viewed_by_me_date(
227 GetTestTime() + base::TimeDelta::FromSeconds(20));
228 file_resource.set_mime_type(util::kGoogleDocumentMimeType);
229 file_resource.set_alternate_link(GURL("https://file_link_alternate"));
230 file_resource.mutable_labels()->set_trashed(true);
[email protected]9eaae802012-09-12 00:12:16231
[email protected]c6f16622013-07-28 08:46:00232 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:25233 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31234 ConvertFileResourceToResourceEntry(file_resource, &entry,
235 &parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16236
[email protected]35287ea2014-06-10 21:48:29237 EXPECT_EQ(file_resource.title(), entry.title());
238 EXPECT_EQ(file_resource.title() + ".gdoc", entry.base_name());
239 EXPECT_EQ(file_resource.file_id(), entry.resource_id());
Sasha Morrissey7ae517a2018-05-18 04:14:22240 EXPECT_EQ(file_resource.alternate_link().spec(), entry.alternate_url());
[email protected]8388cfa2013-12-18 12:43:04241 EXPECT_EQ("", parent_resource_id);
[email protected]9eaae802012-09-12 00:12:16242
[email protected]67241b832013-05-02 04:55:52243 EXPECT_TRUE(entry.deleted()); // The document was deleted.
harukam68666d12016-09-29 12:00:01244 EXPECT_FALSE(entry.starred());
[email protected]67241b832013-05-02 04:55:52245 EXPECT_FALSE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:52246 EXPECT_FALSE(entry.shared());
[email protected]40687c02013-03-27 12:14:58247
[email protected]35287ea2014-06-10 21:48:29248 EXPECT_EQ(file_resource.modified_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52249 entry.file_info().last_modified());
Shuhei Takahashia25ace562017-09-15 09:22:17250 EXPECT_EQ(file_resource.modified_by_me_date().ToInternalValue(),
251 entry.last_modified_by_me());
[email protected]35287ea2014-06-10 21:48:29252 EXPECT_EQ(file_resource.last_viewed_by_me_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52253 entry.file_info().last_accessed());
[email protected]35287ea2014-06-10 21:48:29254 EXPECT_EQ(file_resource.created_date().ToInternalValue(),
[email protected]67241b832013-05-02 04:55:52255 entry.file_info().creation_time());
[email protected]9eaae802012-09-12 00:12:16256
[email protected]35287ea2014-06-10 21:48:29257 EXPECT_EQ(file_resource.mime_type(),
[email protected]67241b832013-05-02 04:55:52258 entry.file_specific_info().content_mime_type());
259 EXPECT_TRUE(entry.file_specific_info().is_hosted_document());
[email protected]9eaae802012-09-12 00:12:16260
261 // The size should be 0 for a hosted document.
[email protected]943cb8b2013-08-21 03:17:08262 EXPECT_EQ(0, entry.file_info().size());
[email protected]9eaae802012-09-12 00:12:16263}
264
[email protected]35287ea2014-06-10 21:48:29265TEST(ResourceEntryConversionTest, ConvertChangeResourceToResourceEntry) {
266 google_apis::ChangeResource change_resource;
yamaguchic11f1ba2017-03-28 04:16:52267 change_resource.set_type(google_apis::ChangeResource::FILE);
dchengf42750232016-04-12 04:12:27268 change_resource.set_file(base::WrapUnique(new google_apis::FileResource));
[email protected]35287ea2014-06-10 21:48:29269 change_resource.set_file_id("resource_id");
270 change_resource.set_modification_date(GetTestTime());
[email protected]40687c02013-03-27 12:14:58271
[email protected]35287ea2014-06-10 21:48:29272 google_apis::FileResource* file_resource = change_resource.mutable_file();
273 file_resource->set_title("File 1.mp3");
274 file_resource->set_file_id("resource_id");
[email protected]4979eaf02014-07-31 11:34:20275 // Set dummy file size to declare that this is a regular file.
276 file_resource->set_file_size(12345);
[email protected]40687c02013-03-27 12:14:58277
[email protected]c6f16622013-07-28 08:46:00278 ResourceEntry entry;
[email protected]89eaef12013-08-26 08:00:25279 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31280 ConvertChangeResourceToResourceEntry(change_resource, &entry,
281 &parent_resource_id);
[email protected]35287ea2014-06-10 21:48:29282
283 EXPECT_EQ(change_resource.file_id(), entry.resource_id());
284 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
285 entry.modification_date());
286
287 EXPECT_EQ(file_resource->title(), entry.title());
288 EXPECT_EQ(file_resource->title(), entry.base_name());
289 EXPECT_EQ("", parent_resource_id);
290
291 EXPECT_FALSE(entry.deleted());
292}
293
294TEST(ResourceEntryConversionTest,
295 ConvertChangeResourceToResourceEntry_Trashed) {
296 google_apis::ChangeResource change_resource;
yamaguchic11f1ba2017-03-28 04:16:52297 change_resource.set_type(google_apis::ChangeResource::FILE);
dchengf42750232016-04-12 04:12:27298 change_resource.set_file(base::WrapUnique(new google_apis::FileResource));
[email protected]35287ea2014-06-10 21:48:29299 change_resource.set_file_id("resource_id");
300 change_resource.set_modification_date(GetTestTime());
301
302 google_apis::FileResource* file_resource = change_resource.mutable_file();
303 file_resource->set_title("File 1.mp3");
304 file_resource->set_file_id("resource_id");
[email protected]4979eaf02014-07-31 11:34:20305 // Set dummy file size to declare that this is a regular file.
306 file_resource->set_file_size(12345);
[email protected]35287ea2014-06-10 21:48:29307 file_resource->mutable_labels()->set_trashed(true);
308
309 ResourceEntry entry;
310 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31311 ConvertChangeResourceToResourceEntry(change_resource, &entry,
312 &parent_resource_id);
[email protected]35287ea2014-06-10 21:48:29313
314 EXPECT_EQ(change_resource.file_id(), entry.resource_id());
315 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
316 entry.modification_date());
317
318 EXPECT_EQ(file_resource->title(), entry.title());
319 EXPECT_EQ(file_resource->title(), entry.base_name());
320 EXPECT_EQ("", parent_resource_id);
321
322 EXPECT_TRUE(entry.deleted());
323}
324
325TEST(ResourceEntryConversionTest,
326 ConvertChangeResourceToResourceEntry_Deleted) {
327 google_apis::ChangeResource change_resource;
yamaguchic11f1ba2017-03-28 04:16:52328 change_resource.set_type(google_apis::ChangeResource::FILE);
[email protected]35287ea2014-06-10 21:48:29329 change_resource.set_deleted(true);
330 change_resource.set_file_id("resource_id");
331 change_resource.set_modification_date(GetTestTime());
332
333 ResourceEntry entry;
334 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31335 ConvertChangeResourceToResourceEntry(change_resource, &entry,
336 &parent_resource_id);
[email protected]35287ea2014-06-10 21:48:29337
338 EXPECT_EQ(change_resource.file_id(), entry.resource_id());
339 EXPECT_EQ("", parent_resource_id);
340
341 EXPECT_TRUE(entry.deleted());
342
343 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
344 entry.modification_date());
345}
346
347TEST(ResourceEntryConversionTest,
harukam68666d12016-09-29 12:00:01348 ConvertFileResourceToResourceEntry_StarredEntry) {
349 google_apis::FileResource file_resource;
350 file_resource.mutable_labels()->set_starred(true);
351
352 ResourceEntry entry;
353 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31354 ConvertFileResourceToResourceEntry(file_resource, &entry,
355 &parent_resource_id);
harukam68666d12016-09-29 12:00:01356 EXPECT_TRUE(entry.starred());
357}
358
359TEST(ResourceEntryConversionTest,
[email protected]35287ea2014-06-10 21:48:29360 ConvertFileResourceToResourceEntry_SharedWithMeEntry) {
361 google_apis::FileResource file_resource;
362 file_resource.set_shared(true);
363 file_resource.set_shared_with_me_date(GetTestTime());
364
365 ResourceEntry entry;
366 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31367 ConvertFileResourceToResourceEntry(file_resource, &entry,
368 &parent_resource_id);
[email protected]67241b832013-05-02 04:55:52369 EXPECT_TRUE(entry.shared_with_me());
[email protected]b0b3dbd2013-12-05 11:09:52370 EXPECT_TRUE(entry.shared());
[email protected]40687c02013-03-27 12:14:58371}
372
[email protected]6fb03b72013-07-31 13:31:11373TEST(ResourceEntryConversionTest, ToPlatformFileInfo) {
374 ResourceEntry entry;
375 entry.mutable_file_info()->set_size(12345);
376 entry.mutable_file_info()->set_is_directory(true);
377 entry.mutable_file_info()->set_is_symbolic_link(true);
378 entry.mutable_file_info()->set_creation_time(999);
379 entry.mutable_file_info()->set_last_modified(123456789);
380 entry.mutable_file_info()->set_last_accessed(987654321);
381
[email protected]141bcc52014-01-27 21:36:00382 base::File::Info file_info;
383 ConvertResourceEntryToFileInfo(entry, &file_info);
[email protected]6fb03b72013-07-31 13:31:11384 EXPECT_EQ(entry.file_info().size(), file_info.size);
385 EXPECT_EQ(entry.file_info().is_directory(), file_info.is_directory);
386 EXPECT_EQ(entry.file_info().is_symbolic_link(), file_info.is_symbolic_link);
387 EXPECT_EQ(base::Time::FromInternalValue(entry.file_info().creation_time()),
388 file_info.creation_time);
389 EXPECT_EQ(base::Time::FromInternalValue(entry.file_info().last_modified()),
390 file_info.last_modified);
391 EXPECT_EQ(base::Time::FromInternalValue(entry.file_info().last_accessed()),
392 file_info.last_accessed);
393}
394
[email protected]35287ea2014-06-10 21:48:29395TEST(ResourceEntryConversionTest,
396 ConvertFileResourceToResourceEntry_ImageMediaMetadata) {
397 google_apis::FileResource entry_all_fields;
398 google_apis::FileResource entry_zero_fields;
399 google_apis::FileResource entry_no_fields;
[email protected]34722302013-10-04 08:33:25400
[email protected]35287ea2014-06-10 21:48:29401 entry_all_fields.mutable_image_media_metadata()->set_width(640);
402 entry_all_fields.mutable_image_media_metadata()->set_height(480);
403 entry_all_fields.mutable_image_media_metadata()->set_rotation(90);
[email protected]34722302013-10-04 08:33:25404
[email protected]35287ea2014-06-10 21:48:29405 entry_zero_fields.mutable_image_media_metadata()->set_width(0);
406 entry_zero_fields.mutable_image_media_metadata()->set_height(0);
407 entry_zero_fields.mutable_image_media_metadata()->set_rotation(0);
[email protected]34722302013-10-04 08:33:25408
409 {
410 ResourceEntry entry;
411 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31412 ConvertFileResourceToResourceEntry(entry_all_fields, &entry,
413 &parent_resource_id);
[email protected]34722302013-10-04 08:33:25414 EXPECT_EQ(640, entry.file_specific_info().image_width());
415 EXPECT_EQ(480, entry.file_specific_info().image_height());
416 EXPECT_EQ(90, entry.file_specific_info().image_rotation());
417 }
418 {
419 ResourceEntry entry;
420 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31421 ConvertFileResourceToResourceEntry(entry_zero_fields, &entry,
422 &parent_resource_id);
[email protected]34722302013-10-04 08:33:25423 EXPECT_TRUE(entry.file_specific_info().has_image_width());
424 EXPECT_TRUE(entry.file_specific_info().has_image_height());
425 EXPECT_TRUE(entry.file_specific_info().has_image_rotation());
426 EXPECT_EQ(0, entry.file_specific_info().image_width());
427 EXPECT_EQ(0, entry.file_specific_info().image_height());
428 EXPECT_EQ(0, entry.file_specific_info().image_rotation());
429 }
430 {
431 ResourceEntry entry;
432 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31433 ConvertFileResourceToResourceEntry(entry_no_fields, &entry,
434 &parent_resource_id);
[email protected]34722302013-10-04 08:33:25435 EXPECT_FALSE(entry.file_specific_info().has_image_width());
436 EXPECT_FALSE(entry.file_specific_info().has_image_height());
437 EXPECT_FALSE(entry.file_specific_info().has_image_rotation());
438 }
439}
440
yamaguchib1bbca32017-04-11 11:01:35441TEST(ResourceEntryConversionTest,
442 ConvertTeamDriveChangeResourceToResourceEntry) {
443 google_apis::ChangeResource change_resource;
444 change_resource.set_type(google_apis::ChangeResource::TEAM_DRIVE);
445 change_resource.set_team_drive(
446 base::WrapUnique(new google_apis::TeamDriveResource));
447 change_resource.set_team_drive_id("team_drive_id");
448 change_resource.set_modification_date(GetTestTime());
449 change_resource.set_deleted(false);
450
451 google_apis::TeamDriveResource* team_drive_resource =
452 change_resource.mutable_team_drive();
453 team_drive_resource->set_name("ABC Team Drive");
454 team_drive_resource->set_id("team_drive_id");
455
Sasha Morrisseyacab441f2018-05-23 04:27:44456 google_apis::TeamDriveCapabilities team_drive_capabilities;
457 team_drive_capabilities.set_can_copy(true);
458 team_drive_capabilities.set_can_delete_team_drive(false);
459 team_drive_capabilities.set_can_rename_team_drive(true);
460 // Can_rename is ignored for team drives.
461 team_drive_capabilities.set_can_rename(false);
462 team_drive_capabilities.set_can_add_children(false);
463 team_drive_capabilities.set_can_share(true);
464 team_drive_resource->set_capabilities(team_drive_capabilities);
465
yamaguchib1bbca32017-04-11 11:01:35466 ResourceEntry entry;
467 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31468 ConvertChangeResourceToResourceEntry(change_resource, &entry,
469 &parent_resource_id);
yamaguchib1bbca32017-04-11 11:01:35470
471 EXPECT_EQ(change_resource.team_drive_id(), entry.resource_id());
472 EXPECT_EQ(team_drive_resource->name(), entry.title());
473 EXPECT_EQ(team_drive_resource->name(), entry.base_name());
474 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
475 entry.modification_date());
yamaguchi587d7602017-04-14 06:49:08476 EXPECT_TRUE(entry.file_info().is_directory());
yamaguchib1bbca32017-04-11 11:01:35477 EXPECT_EQ(util::kDriveTeamDrivesDirLocalId, entry.parent_local_id());
478 EXPECT_EQ("", parent_resource_id);
479 EXPECT_FALSE(entry.deleted());
Sasha Morrisseyacab441f2018-05-23 04:27:44480
481 EXPECT_TRUE(entry.capabilities_info().can_copy());
482 EXPECT_FALSE(entry.capabilities_info().can_delete());
483 EXPECT_TRUE(entry.capabilities_info().can_rename());
484 EXPECT_FALSE(entry.capabilities_info().can_add_children());
485 EXPECT_TRUE(entry.capabilities_info().can_share());
yamaguchib1bbca32017-04-11 11:01:35486}
487
yamaguchi587d7602017-04-14 06:49:08488TEST(ResourceEntryConversionTest, ConvertTeamDriveResourceToResourceEntry) {
489 google_apis::TeamDriveResource team_drive_resource;
490 team_drive_resource.set_name("ABC Team Drive");
491 team_drive_resource.set_id("team_drive_id");
492
493 ResourceEntry entry;
494 ConvertTeamDriveResourceToResourceEntry(team_drive_resource, &entry);
495
496 EXPECT_EQ(team_drive_resource.id(), entry.resource_id());
497 EXPECT_EQ(team_drive_resource.name(), entry.title());
498 EXPECT_EQ(team_drive_resource.name(), entry.base_name());
499 EXPECT_TRUE(entry.file_info().is_directory());
500 EXPECT_EQ(util::kDriveTeamDrivesDirLocalId, entry.parent_local_id());
501}
502
yamaguchib1bbca32017-04-11 11:01:35503TEST(ResourceEntryConversionTest,
504 ConvertTeamDriveRemovalChangeResourceToResourceEntry) {
505 google_apis::ChangeResource change_resource;
506 change_resource.set_type(google_apis::ChangeResource::TEAM_DRIVE);
507 change_resource.set_team_drive_id("team_drive_id");
508 change_resource.set_modification_date(GetTestTime());
509 change_resource.set_deleted(true);
510 // team_drive field is not filled for a deleted change resource.
511
512 ResourceEntry entry;
513 std::string parent_resource_id;
Stuart Langley1cf907f2018-09-13 07:27:31514 ConvertChangeResourceToResourceEntry(change_resource, &entry,
515 &parent_resource_id);
yamaguchib1bbca32017-04-11 11:01:35516
517 EXPECT_EQ(change_resource.team_drive_id(), entry.resource_id());
518 EXPECT_EQ(change_resource.modification_date().ToInternalValue(),
519 entry.modification_date());
yamaguchi587d7602017-04-14 06:49:08520 EXPECT_TRUE(entry.file_info().is_directory());
yamaguchib1bbca32017-04-11 11:01:35521 EXPECT_EQ(util::kDriveTeamDrivesDirLocalId, entry.parent_local_id());
522 EXPECT_EQ("", parent_resource_id);
523 EXPECT_TRUE(entry.deleted());
524}
525
[email protected]d9d04df2012-10-12 07:06:35526} // namespace drive