Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(593)

Side by Side Diff: chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc

Issue 12049085: Use DriveResourceMetadataInterface in unit tests. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix unit test Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/chromeos/drive/drive_resource_metadata.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "chrome/browser/chromeos/drive/drive_resource_metadata.h" 5 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 // Copies result from GetChangestampCallback. 46 // Copies result from GetChangestampCallback.
47 void CopyResultFromGetChangestampCallback( 47 void CopyResultFromGetChangestampCallback(
48 int64* out_changestamp, int64 in_changestamp) { 48 int64* out_changestamp, int64 in_changestamp) {
49 *out_changestamp = in_changestamp; 49 *out_changestamp = in_changestamp;
50 } 50 }
51 51
52 } // namespace 52 } // namespace
53 53
54 class DriveResourceMetadataTest : public testing::Test { 54 class DriveResourceMetadataTest : public testing::Test {
55 public: 55 protected:
56 DriveResourceMetadataTest(); 56 DriveResourceMetadataTest();
57 57
58 protected:
59 // Creates a DriveEntryProto.
60 DriveEntryProto CreateDriveEntryProto(int sequence_id,
61 bool is_directory,
62 const std::string& parent_resource_id);
63
64 // Adds a DriveEntryProto to the metadata tree. Returns true on success.
65 bool AddDriveEntryProto(int sequence_id,
66 bool is_directory,
67 const std::string& parent_resource_id);
68
69 DriveResourceMetadata resource_metadata_;
70
71 private:
72 // Creates the following files/directories 58 // Creates the following files/directories
73 // drive/dir1/ 59 // drive/dir1/
74 // drive/dir2/ 60 // drive/dir2/
75 // drive/dir1/dir3/ 61 // drive/dir1/dir3/
76 // drive/dir1/file4 62 // drive/dir1/file4
77 // drive/dir1/file5 63 // drive/dir1/file5
78 // drive/dir2/file6 64 // drive/dir2/file6
79 // drive/dir2/file7 65 // drive/dir2/file7
80 // drive/dir2/file8 66 // drive/dir2/file8
81 // drive/dir1/dir3/file9 67 // drive/dir1/dir3/file9
82 // drive/dir1/dir3/file10 68 // drive/dir1/dir3/file10
83 void Init(); 69 static void Init(DriveResourceMetadataInterface* resource_metadata);
84 70
71 // Creates a DriveEntryProto.
72 static DriveEntryProto CreateDriveEntryProto(
73 int sequence_id,
74 bool is_directory,
75 const std::string& parent_resource_id);
76
77 // Adds a DriveEntryProto to the metadata tree. Returns true on success.
78 static bool AddDriveEntryProto(
79 DriveResourceMetadataInterface* resource_metadata,
80 int sequence_id,
81 bool is_directory,
82 const std::string& parent_resource_id);
83
84 scoped_ptr<DriveResourceMetadataInterface> resource_metadata_;
85
86 private:
85 MessageLoopForUI message_loop_; 87 MessageLoopForUI message_loop_;
86 content::TestBrowserThread ui_thread_; 88 content::TestBrowserThread ui_thread_;
87 }; 89 };
88 90
89 DriveResourceMetadataTest::DriveResourceMetadataTest() 91 DriveResourceMetadataTest::DriveResourceMetadataTest()
90 : resource_metadata_(kTestRootResourceId), 92 : ui_thread_(content::BrowserThread::UI, &message_loop_) {
91 ui_thread_(content::BrowserThread::UI, &message_loop_) { 93 resource_metadata_.reset(new DriveResourceMetadata(kTestRootResourceId));
92 Init(); 94
95 Init(resource_metadata_.get());
93 } 96 }
94 97
95 void DriveResourceMetadataTest::Init() { 98 // static
99 void DriveResourceMetadataTest::Init(
100 DriveResourceMetadataInterface* resource_metadata) {
96 int sequence_id = 1; 101 int sequence_id = 1;
97 ASSERT_TRUE(AddDriveEntryProto( 102 ASSERT_TRUE(AddDriveEntryProto(
98 sequence_id++, true, kTestRootResourceId)); 103 resource_metadata, sequence_id++, true, kTestRootResourceId));
99 ASSERT_TRUE(AddDriveEntryProto( 104 ASSERT_TRUE(AddDriveEntryProto(
100 sequence_id++, true, kTestRootResourceId)); 105 resource_metadata, sequence_id++, true, kTestRootResourceId));
101 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir1")); 106 ASSERT_TRUE(AddDriveEntryProto(
107 resource_metadata, sequence_id++, true, "resource_id:dir1"));
102 108
103 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir1")); 109 ASSERT_TRUE(AddDriveEntryProto(
104 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir1")); 110 resource_metadata, sequence_id++, false, "resource_id:dir1"));
111 ASSERT_TRUE(AddDriveEntryProto(
112 resource_metadata, sequence_id++, false, "resource_id:dir1"));
105 113
106 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir2")); 114 ASSERT_TRUE(AddDriveEntryProto(
107 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir2")); 115 resource_metadata, sequence_id++, false, "resource_id:dir2"));
108 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir2")); 116 ASSERT_TRUE(AddDriveEntryProto(
117 resource_metadata, sequence_id++, false, "resource_id:dir2"));
118 ASSERT_TRUE(AddDriveEntryProto(
119 resource_metadata, sequence_id++, false, "resource_id:dir2"));
109 120
110 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir3")); 121 ASSERT_TRUE(AddDriveEntryProto(
111 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir3")); 122 resource_metadata, sequence_id++, false, "resource_id:dir3"));
123 ASSERT_TRUE(AddDriveEntryProto(
124 resource_metadata, sequence_id++, false, "resource_id:dir3"));
112 } 125 }
113 126
127 // static
114 DriveEntryProto DriveResourceMetadataTest::CreateDriveEntryProto( 128 DriveEntryProto DriveResourceMetadataTest::CreateDriveEntryProto(
115 int sequence_id, 129 int sequence_id,
116 bool is_directory, 130 bool is_directory,
117 const std::string& parent_resource_id) { 131 const std::string& parent_resource_id) {
118 DriveEntryProto entry_proto; 132 DriveEntryProto entry_proto;
119 const std::string sequence_id_str = base::IntToString(sequence_id); 133 const std::string sequence_id_str = base::IntToString(sequence_id);
120 const std::string title = (is_directory ? "dir" : "file") + 134 const std::string title = (is_directory ? "dir" : "file") + sequence_id_str;
121 sequence_id_str;
122 const std::string resource_id = "resource_id:" + title; 135 const std::string resource_id = "resource_id:" + title;
123 entry_proto.set_title(title); 136 entry_proto.set_title(title);
124 entry_proto.set_resource_id(resource_id); 137 entry_proto.set_resource_id(resource_id);
125 entry_proto.set_parent_resource_id(parent_resource_id); 138 entry_proto.set_parent_resource_id(parent_resource_id);
126 139
127 PlatformFileInfoProto* file_info = entry_proto.mutable_file_info(); 140 PlatformFileInfoProto* file_info = entry_proto.mutable_file_info();
128 file_info->set_is_directory(is_directory); 141 file_info->set_is_directory(is_directory);
129 142
130 if (!is_directory) { 143 if (!is_directory) {
131 DriveFileSpecificInfo* file_specific_info = 144 DriveFileSpecificInfo* file_specific_info =
132 entry_proto.mutable_file_specific_info(); 145 entry_proto.mutable_file_specific_info();
133 file_info->set_size(sequence_id * 1024); 146 file_info->set_size(sequence_id * 1024);
134 file_specific_info->set_file_md5(std::string("md5:") + title); 147 file_specific_info->set_file_md5(std::string("md5:") + title);
135 } 148 }
136 return entry_proto; 149 return entry_proto;
137 } 150 }
138 151
139 bool DriveResourceMetadataTest::AddDriveEntryProto( 152 bool DriveResourceMetadataTest::AddDriveEntryProto(
153 DriveResourceMetadataInterface* resource_metadata,
140 int sequence_id, 154 int sequence_id,
141 bool is_directory, 155 bool is_directory,
142 const std::string& parent_resource_id) { 156 const std::string& parent_resource_id) {
143 DriveEntryProto entry_proto = CreateDriveEntryProto(sequence_id, 157 DriveEntryProto entry_proto = CreateDriveEntryProto(sequence_id,
144 is_directory, 158 is_directory,
145 parent_resource_id); 159 parent_resource_id);
146 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 160 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
147 FilePath drive_file_path; 161 FilePath drive_file_path;
148 162
149 resource_metadata_.AddEntryToParent( 163 resource_metadata->AddEntryToParent(
150 entry_proto, 164 entry_proto,
151 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 165 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
152 &error, &drive_file_path)); 166 &error, &drive_file_path));
153 google_apis::test_util::RunBlockingPoolTask(); 167 google_apis::test_util::RunBlockingPoolTask();
154 return DRIVE_FILE_OK == error; 168 return DRIVE_FILE_OK == error;
155 } 169 }
156 170
157 TEST_F(DriveResourceMetadataTest, VersionCheck) { 171 TEST_F(DriveResourceMetadataTest, VersionCheck) {
158 // Set up the root directory. 172 // Set up the root directory.
159 DriveRootDirectoryProto proto; 173 DriveRootDirectoryProto proto;
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive"), drive_file_path); 241 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive"), drive_file_path);
228 ASSERT_TRUE(entry_proto.get()); 242 ASSERT_TRUE(entry_proto.get());
229 EXPECT_EQ("drive", entry_proto->base_name()); 243 EXPECT_EQ("drive", entry_proto->base_name());
230 } 244 }
231 245
232 TEST_F(DriveResourceMetadataTest, GetEntryInfoByResourceId) { 246 TEST_F(DriveResourceMetadataTest, GetEntryInfoByResourceId) {
233 // Confirm that an existing file is found. 247 // Confirm that an existing file is found.
234 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 248 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
235 FilePath drive_file_path; 249 FilePath drive_file_path;
236 scoped_ptr<DriveEntryProto> entry_proto; 250 scoped_ptr<DriveEntryProto> entry_proto;
237 resource_metadata_.GetEntryInfoByResourceId( 251 resource_metadata_->GetEntryInfoByResourceId(
238 "resource_id:file4", 252 "resource_id:file4",
239 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 253 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
240 &error, &drive_file_path, &entry_proto)); 254 &error, &drive_file_path, &entry_proto));
241 google_apis::test_util::RunBlockingPoolTask(); 255 google_apis::test_util::RunBlockingPoolTask();
242 EXPECT_EQ(DRIVE_FILE_OK, error); 256 EXPECT_EQ(DRIVE_FILE_OK, error);
243 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file4"), drive_file_path); 257 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file4"), drive_file_path);
244 ASSERT_TRUE(entry_proto.get()); 258 ASSERT_TRUE(entry_proto.get());
245 EXPECT_EQ("file4", entry_proto->base_name()); 259 EXPECT_EQ("file4", entry_proto->base_name());
246 260
247 // Confirm that a non existing file is not found. 261 // Confirm that a non existing file is not found.
248 error = DRIVE_FILE_ERROR_FAILED; 262 error = DRIVE_FILE_ERROR_FAILED;
249 entry_proto.reset(); 263 entry_proto.reset();
250 resource_metadata_.GetEntryInfoByResourceId( 264 resource_metadata_->GetEntryInfoByResourceId(
251 "file:non_existing", 265 "file:non_existing",
252 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 266 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
253 &error, &drive_file_path, &entry_proto)); 267 &error, &drive_file_path, &entry_proto));
254 google_apis::test_util::RunBlockingPoolTask(); 268 google_apis::test_util::RunBlockingPoolTask();
255 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 269 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
256 EXPECT_FALSE(entry_proto.get()); 270 EXPECT_FALSE(entry_proto.get());
257 } 271 }
258 272
259 TEST_F(DriveResourceMetadataTest, GetEntryInfoByPath) { 273 TEST_F(DriveResourceMetadataTest, GetEntryInfoByPath) {
260 // Confirm that an existing file is found. 274 // Confirm that an existing file is found.
261 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 275 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
262 scoped_ptr<DriveEntryProto> entry_proto; 276 scoped_ptr<DriveEntryProto> entry_proto;
263 resource_metadata_.GetEntryInfoByPath( 277 resource_metadata_->GetEntryInfoByPath(
264 FilePath::FromUTF8Unsafe("drive/dir1/file4"), 278 FilePath::FromUTF8Unsafe("drive/dir1/file4"),
265 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 279 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
266 &error, &entry_proto)); 280 &error, &entry_proto));
267 google_apis::test_util::RunBlockingPoolTask(); 281 google_apis::test_util::RunBlockingPoolTask();
268 EXPECT_EQ(DRIVE_FILE_OK, error); 282 EXPECT_EQ(DRIVE_FILE_OK, error);
269 ASSERT_TRUE(entry_proto.get()); 283 ASSERT_TRUE(entry_proto.get());
270 EXPECT_EQ("file4", entry_proto->base_name()); 284 EXPECT_EQ("file4", entry_proto->base_name());
271 285
272 // Confirm that a non existing file is not found. 286 // Confirm that a non existing file is not found.
273 error = DRIVE_FILE_ERROR_FAILED; 287 error = DRIVE_FILE_ERROR_FAILED;
274 entry_proto.reset(); 288 entry_proto.reset();
275 resource_metadata_.GetEntryInfoByPath( 289 resource_metadata_->GetEntryInfoByPath(
276 FilePath::FromUTF8Unsafe("drive/dir1/non_existing"), 290 FilePath::FromUTF8Unsafe("drive/dir1/non_existing"),
277 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 291 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
278 &error, &entry_proto)); 292 &error, &entry_proto));
279 google_apis::test_util::RunBlockingPoolTask(); 293 google_apis::test_util::RunBlockingPoolTask();
280 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 294 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
281 EXPECT_FALSE(entry_proto.get()); 295 EXPECT_FALSE(entry_proto.get());
282 } 296 }
283 297
284 TEST_F(DriveResourceMetadataTest, ReadDirectoryByPath) { 298 TEST_F(DriveResourceMetadataTest, ReadDirectoryByPath) {
285 // Confirm that an existing directory is found. 299 // Confirm that an existing directory is found.
286 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 300 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
287 scoped_ptr<DriveEntryProtoVector> entries; 301 scoped_ptr<DriveEntryProtoVector> entries;
288 resource_metadata_.ReadDirectoryByPath( 302 resource_metadata_->ReadDirectoryByPath(
289 FilePath::FromUTF8Unsafe("drive/dir1"), 303 FilePath::FromUTF8Unsafe("drive/dir1"),
290 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback, 304 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback,
291 &error, &entries)); 305 &error, &entries));
292 google_apis::test_util::RunBlockingPoolTask(); 306 google_apis::test_util::RunBlockingPoolTask();
293 EXPECT_EQ(DRIVE_FILE_OK, error); 307 EXPECT_EQ(DRIVE_FILE_OK, error);
294 ASSERT_TRUE(entries.get()); 308 ASSERT_TRUE(entries.get());
295 ASSERT_EQ(3U, entries->size()); 309 ASSERT_EQ(3U, entries->size());
296 310
297 // The order is not guaranteed so we should sort the base names. 311 // The order is not guaranteed so we should sort the base names.
298 std::vector<std::string> base_names; 312 std::vector<std::string> base_names;
299 for (size_t i = 0; i < 3; ++i) 313 for (size_t i = 0; i < 3; ++i)
300 base_names.push_back(entries->at(i).base_name()); 314 base_names.push_back(entries->at(i).base_name());
tfarina 2013/01/26 17:46:10 nit: std::vector::at is informally banned. use en
achuithb 2013/01/26 20:39:14 Can't use entries[i] since entries is a pointer; I
satorux1 2013/01/29 04:58:13 ->at looks just fine to me. I guess there is no ne
301 std::sort(base_names.begin(), base_names.end()); 315 std::sort(base_names.begin(), base_names.end());
302 316
303 EXPECT_EQ("dir3", base_names[0]); 317 EXPECT_EQ("dir3", base_names[0]);
304 EXPECT_EQ("file4", base_names[1]); 318 EXPECT_EQ("file4", base_names[1]);
305 EXPECT_EQ("file5", base_names[2]); 319 EXPECT_EQ("file5", base_names[2]);
306 320
307 // Confirm that a non existing directory is not found. 321 // Confirm that a non existing directory is not found.
308 error = DRIVE_FILE_ERROR_FAILED; 322 error = DRIVE_FILE_ERROR_FAILED;
309 entries.reset(); 323 entries.reset();
310 resource_metadata_.ReadDirectoryByPath( 324 resource_metadata_->ReadDirectoryByPath(
311 FilePath::FromUTF8Unsafe("drive/non_existing"), 325 FilePath::FromUTF8Unsafe("drive/non_existing"),
312 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback, 326 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback,
313 &error, &entries)); 327 &error, &entries));
314 google_apis::test_util::RunBlockingPoolTask(); 328 google_apis::test_util::RunBlockingPoolTask();
315 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 329 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
316 EXPECT_FALSE(entries.get()); 330 EXPECT_FALSE(entries.get());
317 331
318 // Confirm that reading a file results in DRIVE_FILE_ERROR_NOT_A_DIRECTORY. 332 // Confirm that reading a file results in DRIVE_FILE_ERROR_NOT_A_DIRECTORY.
319 error = DRIVE_FILE_ERROR_FAILED; 333 error = DRIVE_FILE_ERROR_FAILED;
320 entries.reset(); 334 entries.reset();
321 resource_metadata_.ReadDirectoryByPath( 335 resource_metadata_->ReadDirectoryByPath(
322 FilePath::FromUTF8Unsafe("drive/dir1/file4"), 336 FilePath::FromUTF8Unsafe("drive/dir1/file4"),
323 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback, 337 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback,
324 &error, &entries)); 338 &error, &entries));
325 google_apis::test_util::RunBlockingPoolTask(); 339 google_apis::test_util::RunBlockingPoolTask();
326 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error); 340 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error);
327 EXPECT_FALSE(entries.get()); 341 EXPECT_FALSE(entries.get());
328 } 342 }
329 343
330 TEST_F(DriveResourceMetadataTest, GetEntryInfoPairByPaths) { 344 TEST_F(DriveResourceMetadataTest, GetEntryInfoPairByPaths) {
331 // Confirm that existing two files are found. 345 // Confirm that existing two files are found.
332 scoped_ptr<EntryInfoPairResult> pair_result; 346 scoped_ptr<EntryInfoPairResult> pair_result;
333 resource_metadata_.GetEntryInfoPairByPaths( 347 resource_metadata_->GetEntryInfoPairByPaths(
334 FilePath::FromUTF8Unsafe("drive/dir1/file4"), 348 FilePath::FromUTF8Unsafe("drive/dir1/file4"),
335 FilePath::FromUTF8Unsafe("drive/dir1/file5"), 349 FilePath::FromUTF8Unsafe("drive/dir1/file5"),
336 base::Bind(&test_util::CopyResultsFromGetEntryInfoPairCallback, 350 base::Bind(&test_util::CopyResultsFromGetEntryInfoPairCallback,
337 &pair_result)); 351 &pair_result));
338 google_apis::test_util::RunBlockingPoolTask(); 352 google_apis::test_util::RunBlockingPoolTask();
339 // The first entry should be found. 353 // The first entry should be found.
340 EXPECT_EQ(DRIVE_FILE_OK, pair_result->first.error); 354 EXPECT_EQ(DRIVE_FILE_OK, pair_result->first.error);
341 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file4"), 355 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file4"),
342 pair_result->first.path); 356 pair_result->first.path);
343 ASSERT_TRUE(pair_result->first.proto.get()); 357 ASSERT_TRUE(pair_result->first.proto.get());
344 EXPECT_EQ("file4", pair_result->first.proto->base_name()); 358 EXPECT_EQ("file4", pair_result->first.proto->base_name());
345 // The second entry should be found. 359 // The second entry should be found.
346 EXPECT_EQ(DRIVE_FILE_OK, pair_result->second.error); 360 EXPECT_EQ(DRIVE_FILE_OK, pair_result->second.error);
347 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file5"), 361 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file5"),
348 pair_result->second.path); 362 pair_result->second.path);
349 ASSERT_TRUE(pair_result->second.proto.get()); 363 ASSERT_TRUE(pair_result->second.proto.get());
350 EXPECT_EQ("file5", pair_result->second.proto->base_name()); 364 EXPECT_EQ("file5", pair_result->second.proto->base_name());
351 365
352 // Confirm that the first non existent file is not found. 366 // Confirm that the first non existent file is not found.
353 pair_result.reset(); 367 pair_result.reset();
354 resource_metadata_.GetEntryInfoPairByPaths( 368 resource_metadata_->GetEntryInfoPairByPaths(
355 FilePath::FromUTF8Unsafe("drive/dir1/non_existent"), 369 FilePath::FromUTF8Unsafe("drive/dir1/non_existent"),
356 FilePath::FromUTF8Unsafe("drive/dir1/file5"), 370 FilePath::FromUTF8Unsafe("drive/dir1/file5"),
357 base::Bind(&test_util::CopyResultsFromGetEntryInfoPairCallback, 371 base::Bind(&test_util::CopyResultsFromGetEntryInfoPairCallback,
358 &pair_result)); 372 &pair_result));
359 google_apis::test_util::RunBlockingPoolTask(); 373 google_apis::test_util::RunBlockingPoolTask();
360 // The first entry should not be found. 374 // The first entry should not be found.
361 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, pair_result->first.error); 375 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, pair_result->first.error);
362 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/non_existent"), 376 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/non_existent"),
363 pair_result->first.path); 377 pair_result->first.path);
364 ASSERT_FALSE(pair_result->first.proto.get()); 378 ASSERT_FALSE(pair_result->first.proto.get());
365 // The second entry should not be found, because the first one failed. 379 // The second entry should not be found, because the first one failed.
366 EXPECT_EQ(DRIVE_FILE_ERROR_FAILED, pair_result->second.error); 380 EXPECT_EQ(DRIVE_FILE_ERROR_FAILED, pair_result->second.error);
367 EXPECT_EQ(FilePath(), pair_result->second.path); 381 EXPECT_EQ(FilePath(), pair_result->second.path);
368 ASSERT_FALSE(pair_result->second.proto.get()); 382 ASSERT_FALSE(pair_result->second.proto.get());
369 383
370 // Confirm that the second non existent file is not found. 384 // Confirm that the second non existent file is not found.
371 pair_result.reset(); 385 pair_result.reset();
372 resource_metadata_.GetEntryInfoPairByPaths( 386 resource_metadata_->GetEntryInfoPairByPaths(
373 FilePath::FromUTF8Unsafe("drive/dir1/file4"), 387 FilePath::FromUTF8Unsafe("drive/dir1/file4"),
374 FilePath::FromUTF8Unsafe("drive/dir1/non_existent"), 388 FilePath::FromUTF8Unsafe("drive/dir1/non_existent"),
375 base::Bind(&test_util::CopyResultsFromGetEntryInfoPairCallback, 389 base::Bind(&test_util::CopyResultsFromGetEntryInfoPairCallback,
376 &pair_result)); 390 &pair_result));
377 google_apis::test_util::RunBlockingPoolTask(); 391 google_apis::test_util::RunBlockingPoolTask();
378 // The first entry should be found. 392 // The first entry should be found.
379 EXPECT_EQ(DRIVE_FILE_OK, pair_result->first.error); 393 EXPECT_EQ(DRIVE_FILE_OK, pair_result->first.error);
380 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file4"), 394 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file4"),
381 pair_result->first.path); 395 pair_result->first.path);
382 ASSERT_TRUE(pair_result->first.proto.get()); 396 ASSERT_TRUE(pair_result->first.proto.get());
383 EXPECT_EQ("file4", pair_result->first.proto->base_name()); 397 EXPECT_EQ("file4", pair_result->first.proto->base_name());
384 // The second entry should not be found. 398 // The second entry should not be found.
385 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, pair_result->second.error); 399 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, pair_result->second.error);
386 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/non_existent"), 400 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/non_existent"),
387 pair_result->second.path); 401 pair_result->second.path);
388 ASSERT_FALSE(pair_result->second.proto.get()); 402 ASSERT_FALSE(pair_result->second.proto.get());
389 } 403 }
390 404
391 TEST_F(DriveResourceMetadataTest, DBTest) { 405 TEST_F(DriveResourceMetadataTest, DBTest) {
392 TestingProfile profile; 406 TestingProfile profile;
393 scoped_refptr<base::SequencedWorkerPool> pool = 407 scoped_refptr<base::SequencedWorkerPool> pool =
394 content::BrowserThread::GetBlockingPool(); 408 content::BrowserThread::GetBlockingPool();
395 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner = 409 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
396 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); 410 pool->GetSequencedTaskRunner(pool->GetSequenceToken());
397 411
412 DriveResourceMetadata resource_metadata(kTestRootResourceId);
413 Init(&resource_metadata);
414
398 FilePath db_path(DriveCache::GetCacheRootPath(&profile). 415 FilePath db_path(DriveCache::GetCacheRootPath(&profile).
399 AppendASCII("meta").AppendASCII("resource_metadata.db")); 416 AppendASCII("meta").AppendASCII("resource_metadata.db"));
400 // InitFromDB should fail with DRIVE_FILE_ERROR_NOT_FOUND since the db 417 // InitFromDB should fail with DRIVE_FILE_ERROR_NOT_FOUND since the db
401 // doesn't exist. 418 // doesn't exist.
402 DriveFileError db_error; 419 DriveFileError db_error;
403 resource_metadata_.InitFromDB( 420 resource_metadata.InitFromDB(
404 db_path, 421 db_path,
405 blocking_task_runner, 422 blocking_task_runner,
406 base::Bind(&CopyResultsFromInitFromDBCallback, &db_error)); 423 base::Bind(&CopyResultsFromInitFromDBCallback, &db_error));
407 google_apis::test_util::RunBlockingPoolTask(); 424 google_apis::test_util::RunBlockingPoolTask();
408 ASSERT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, db_error); 425 ASSERT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, db_error);
409 426
410 // Create a file system and write it to disk. 427 // Create a file system and write it to disk.
411 // We cannot call SaveToDB without first having called InitFromDB because 428 // We cannot call SaveToDB without first having called InitFromDB because
412 // InitFrom initializes the db_path and blocking_task_runner needed by 429 // InitFrom initializes the db_path and blocking_task_runner needed by
413 // SaveToDB. 430 // SaveToDB.
414 resource_metadata_.SaveToDB(); 431 resource_metadata.SaveToDB();
415 google_apis::test_util::RunBlockingPoolTask(); 432 google_apis::test_util::RunBlockingPoolTask();
416 433
417 // InitFromDB should fail with DRIVE_FILE_ERROR_IN_USE. 434 // InitFromDB should fail with DRIVE_FILE_ERROR_IN_USE.
418 resource_metadata_.InitFromDB( 435 resource_metadata.InitFromDB(
419 db_path, 436 db_path,
420 blocking_task_runner, 437 blocking_task_runner,
421 base::Bind(&CopyResultsFromInitFromDBCallback, &db_error)); 438 base::Bind(&CopyResultsFromInitFromDBCallback, &db_error));
422 google_apis::test_util::RunBlockingPoolTask(); 439 google_apis::test_util::RunBlockingPoolTask();
423 ASSERT_EQ(DRIVE_FILE_ERROR_IN_USE, db_error); 440 ASSERT_EQ(DRIVE_FILE_ERROR_IN_USE, db_error);
424 441
425 // InitFromDB should succeed. 442 // InitFromDB should succeed.
426 DriveResourceMetadata test_resource_metadata(kTestRootResourceId); 443 DriveResourceMetadata test_resource_metadata(kTestRootResourceId);
427 test_resource_metadata.InitFromDB( 444 test_resource_metadata.InitFromDB(
428 db_path, 445 db_path,
(...skipping 14 matching lines...) Expand all
443 ASSERT_TRUE(entries.get()); 460 ASSERT_TRUE(entries.get());
444 ASSERT_EQ(3U, entries->size()); 461 ASSERT_EQ(3U, entries->size());
445 } 462 }
446 463
447 TEST_F(DriveResourceMetadataTest, RemoveEntryFromParent) { 464 TEST_F(DriveResourceMetadataTest, RemoveEntryFromParent) {
448 // Make sure file9 is found. 465 // Make sure file9 is found.
449 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 466 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
450 FilePath drive_file_path; 467 FilePath drive_file_path;
451 const std::string file9_resource_id = "resource_id:file9"; 468 const std::string file9_resource_id = "resource_id:file9";
452 scoped_ptr<DriveEntryProto> entry_proto; 469 scoped_ptr<DriveEntryProto> entry_proto;
453 resource_metadata_.GetEntryInfoByResourceId( 470 resource_metadata_->GetEntryInfoByResourceId(
454 file9_resource_id, 471 file9_resource_id,
455 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 472 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
456 &error, &drive_file_path, &entry_proto)); 473 &error, &drive_file_path, &entry_proto));
457 google_apis::test_util::RunBlockingPoolTask(); 474 google_apis::test_util::RunBlockingPoolTask();
458 EXPECT_EQ(DRIVE_FILE_OK, error); 475 EXPECT_EQ(DRIVE_FILE_OK, error);
459 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"), drive_file_path); 476 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"), drive_file_path);
460 ASSERT_TRUE(entry_proto.get()); 477 ASSERT_TRUE(entry_proto.get());
461 EXPECT_EQ("file9", entry_proto->base_name()); 478 EXPECT_EQ("file9", entry_proto->base_name());
462 479
463 // Remove file9 using RemoveEntryFromParent. 480 // Remove file9 using RemoveEntryFromParent.
464 resource_metadata_.RemoveEntryFromParent( 481 resource_metadata_->RemoveEntryFromParent(
465 file9_resource_id, 482 file9_resource_id,
466 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 483 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
467 &error, &drive_file_path)); 484 &error, &drive_file_path));
468 google_apis::test_util::RunBlockingPoolTask(); 485 google_apis::test_util::RunBlockingPoolTask();
469 EXPECT_EQ(DRIVE_FILE_OK, error); 486 EXPECT_EQ(DRIVE_FILE_OK, error);
470 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3"), drive_file_path); 487 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3"), drive_file_path);
471 488
472 // file9 should no longer exist. 489 // file9 should no longer exist.
473 resource_metadata_.GetEntryInfoByResourceId( 490 resource_metadata_->GetEntryInfoByResourceId(
474 file9_resource_id, 491 file9_resource_id,
475 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 492 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
476 &error, &drive_file_path, &entry_proto)); 493 &error, &drive_file_path, &entry_proto));
477 google_apis::test_util::RunBlockingPoolTask(); 494 google_apis::test_util::RunBlockingPoolTask();
478 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 495 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
479 EXPECT_FALSE(entry_proto.get()); 496 EXPECT_FALSE(entry_proto.get());
480 497
481 // Look for dir3. 498 // Look for dir3.
482 const std::string dir3_resource_id = "resource_id:dir3"; 499 const std::string dir3_resource_id = "resource_id:dir3";
483 resource_metadata_.GetEntryInfoByResourceId( 500 resource_metadata_->GetEntryInfoByResourceId(
484 dir3_resource_id, 501 dir3_resource_id,
485 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 502 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
486 &error, &drive_file_path, &entry_proto)); 503 &error, &drive_file_path, &entry_proto));
487 google_apis::test_util::RunBlockingPoolTask(); 504 google_apis::test_util::RunBlockingPoolTask();
488 EXPECT_EQ(DRIVE_FILE_OK, error); 505 EXPECT_EQ(DRIVE_FILE_OK, error);
489 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3"), drive_file_path); 506 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3"), drive_file_path);
490 ASSERT_TRUE(entry_proto.get()); 507 ASSERT_TRUE(entry_proto.get());
491 EXPECT_EQ("dir3", entry_proto->base_name()); 508 EXPECT_EQ("dir3", entry_proto->base_name());
492 509
493 // Remove dir3 using RemoveEntryFromParent. 510 // Remove dir3 using RemoveEntryFromParent.
494 resource_metadata_.RemoveEntryFromParent( 511 resource_metadata_->RemoveEntryFromParent(
495 dir3_resource_id, 512 dir3_resource_id,
496 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 513 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
497 &error, &drive_file_path)); 514 &error, &drive_file_path));
498 google_apis::test_util::RunBlockingPoolTask(); 515 google_apis::test_util::RunBlockingPoolTask();
499 EXPECT_EQ(DRIVE_FILE_OK, error); 516 EXPECT_EQ(DRIVE_FILE_OK, error);
500 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1"), drive_file_path); 517 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1"), drive_file_path);
501 518
502 // dir3 should no longer exist. 519 // dir3 should no longer exist.
503 resource_metadata_.GetEntryInfoByResourceId( 520 resource_metadata_->GetEntryInfoByResourceId(
504 dir3_resource_id, 521 dir3_resource_id,
505 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 522 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
506 &error, &drive_file_path, &entry_proto)); 523 &error, &drive_file_path, &entry_proto));
507 google_apis::test_util::RunBlockingPoolTask(); 524 google_apis::test_util::RunBlockingPoolTask();
508 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 525 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
509 EXPECT_FALSE(entry_proto.get()); 526 EXPECT_FALSE(entry_proto.get());
510 527
511 // Remove unknown resource_id using RemoveEntryFromParent. 528 // Remove unknown resource_id using RemoveEntryFromParent.
512 resource_metadata_.RemoveEntryFromParent( 529 resource_metadata_->RemoveEntryFromParent(
513 "foo", 530 "foo",
514 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 531 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
515 &error, &drive_file_path)); 532 &error, &drive_file_path));
516 google_apis::test_util::RunBlockingPoolTask(); 533 google_apis::test_util::RunBlockingPoolTask();
517 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 534 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
518 535
519 // Try removing root. This should fail. 536 // Try removing root. This should fail.
520 resource_metadata_.RemoveEntryFromParent( 537 resource_metadata_->RemoveEntryFromParent(
521 kTestRootResourceId, 538 kTestRootResourceId,
522 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 539 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
523 &error, &drive_file_path)); 540 &error, &drive_file_path));
524 google_apis::test_util::RunBlockingPoolTask(); 541 google_apis::test_util::RunBlockingPoolTask();
525 EXPECT_EQ(DRIVE_FILE_ERROR_ACCESS_DENIED, error); 542 EXPECT_EQ(DRIVE_FILE_ERROR_ACCESS_DENIED, error);
526 } 543 }
527 544
528 TEST_F(DriveResourceMetadataTest, MoveEntryToDirectory) { 545 TEST_F(DriveResourceMetadataTest, MoveEntryToDirectory) {
529 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 546 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
530 FilePath drive_file_path; 547 FilePath drive_file_path;
531 scoped_ptr<DriveEntryProto> entry_proto; 548 scoped_ptr<DriveEntryProto> entry_proto;
532 549
533 // Move file8 to drive/dir1. 550 // Move file8 to drive/dir1.
534 resource_metadata_.MoveEntryToDirectory( 551 resource_metadata_->MoveEntryToDirectory(
535 FilePath::FromUTF8Unsafe("drive/dir2/file8"), 552 FilePath::FromUTF8Unsafe("drive/dir2/file8"),
536 FilePath::FromUTF8Unsafe("drive/dir1"), 553 FilePath::FromUTF8Unsafe("drive/dir1"),
537 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 554 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
538 &error, &drive_file_path)); 555 &error, &drive_file_path));
539 google_apis::test_util::RunBlockingPoolTask(); 556 google_apis::test_util::RunBlockingPoolTask();
540 EXPECT_EQ(DRIVE_FILE_OK, error); 557 EXPECT_EQ(DRIVE_FILE_OK, error);
541 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file8"), drive_file_path); 558 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file8"), drive_file_path);
542 559
543 // Look up the entry by its resource id and make sure it really moved. 560 // Look up the entry by its resource id and make sure it really moved.
544 resource_metadata_.GetEntryInfoByResourceId( 561 resource_metadata_->GetEntryInfoByResourceId(
545 "resource_id:file8", 562 "resource_id:file8",
546 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 563 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
547 &error, &drive_file_path, &entry_proto)); 564 &error, &drive_file_path, &entry_proto));
548 google_apis::test_util::RunBlockingPoolTask(); 565 google_apis::test_util::RunBlockingPoolTask();
549 EXPECT_EQ(DRIVE_FILE_OK, error); 566 EXPECT_EQ(DRIVE_FILE_OK, error);
550 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file8"), drive_file_path); 567 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/file8"), drive_file_path);
551 568
552 // Move non-existent file to drive/dir1. This should fail. 569 // Move non-existent file to drive/dir1. This should fail.
553 resource_metadata_.MoveEntryToDirectory( 570 resource_metadata_->MoveEntryToDirectory(
554 FilePath::FromUTF8Unsafe("drive/dir2/file8"), 571 FilePath::FromUTF8Unsafe("drive/dir2/file8"),
555 FilePath::FromUTF8Unsafe("drive/dir1"), 572 FilePath::FromUTF8Unsafe("drive/dir1"),
556 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 573 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
557 &error, &drive_file_path)); 574 &error, &drive_file_path));
558 google_apis::test_util::RunBlockingPoolTask(); 575 google_apis::test_util::RunBlockingPoolTask();
559 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 576 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
560 EXPECT_EQ(FilePath(), drive_file_path); 577 EXPECT_EQ(FilePath(), drive_file_path);
561 578
562 // Move existing file to non-existent directory. This should fail. 579 // Move existing file to non-existent directory. This should fail.
563 resource_metadata_.MoveEntryToDirectory( 580 resource_metadata_->MoveEntryToDirectory(
564 FilePath::FromUTF8Unsafe("drive/dir1/file8"), 581 FilePath::FromUTF8Unsafe("drive/dir1/file8"),
565 FilePath::FromUTF8Unsafe("drive/dir4"), 582 FilePath::FromUTF8Unsafe("drive/dir4"),
566 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 583 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
567 &error, &drive_file_path)); 584 &error, &drive_file_path));
568 google_apis::test_util::RunBlockingPoolTask(); 585 google_apis::test_util::RunBlockingPoolTask();
569 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 586 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
570 EXPECT_EQ(FilePath(), drive_file_path); 587 EXPECT_EQ(FilePath(), drive_file_path);
571 588
572 // Move existing file to existing file (non-directory). This should fail. 589 // Move existing file to existing file (non-directory). This should fail.
573 resource_metadata_.MoveEntryToDirectory( 590 resource_metadata_->MoveEntryToDirectory(
574 FilePath::FromUTF8Unsafe("drive/dir1/file8"), 591 FilePath::FromUTF8Unsafe("drive/dir1/file8"),
575 FilePath::FromUTF8Unsafe("drive/dir1/file4"), 592 FilePath::FromUTF8Unsafe("drive/dir1/file4"),
576 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 593 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
577 &error, &drive_file_path)); 594 &error, &drive_file_path));
578 google_apis::test_util::RunBlockingPoolTask(); 595 google_apis::test_util::RunBlockingPoolTask();
579 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error); 596 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_A_DIRECTORY, error);
580 EXPECT_EQ(FilePath(), drive_file_path); 597 EXPECT_EQ(FilePath(), drive_file_path);
581 598
582 // Move the file to root. 599 // Move the file to root.
583 resource_metadata_.MoveEntryToDirectory( 600 resource_metadata_->MoveEntryToDirectory(
584 FilePath::FromUTF8Unsafe("drive/dir1/file8"), 601 FilePath::FromUTF8Unsafe("drive/dir1/file8"),
585 FilePath::FromUTF8Unsafe("drive"), 602 FilePath::FromUTF8Unsafe("drive"),
586 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 603 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
587 &error, &drive_file_path)); 604 &error, &drive_file_path));
588 google_apis::test_util::RunBlockingPoolTask(); 605 google_apis::test_util::RunBlockingPoolTask();
589 EXPECT_EQ(DRIVE_FILE_OK, error); 606 EXPECT_EQ(DRIVE_FILE_OK, error);
590 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/file8"), drive_file_path); 607 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/file8"), drive_file_path);
591 608
592 // Move the file from root. 609 // Move the file from root.
593 resource_metadata_.MoveEntryToDirectory( 610 resource_metadata_->MoveEntryToDirectory(
594 FilePath::FromUTF8Unsafe("drive/file8"), 611 FilePath::FromUTF8Unsafe("drive/file8"),
595 FilePath::FromUTF8Unsafe("drive/dir2"), 612 FilePath::FromUTF8Unsafe("drive/dir2"),
596 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 613 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
597 &error, &drive_file_path)); 614 &error, &drive_file_path));
598 google_apis::test_util::RunBlockingPoolTask(); 615 google_apis::test_util::RunBlockingPoolTask();
599 EXPECT_EQ(DRIVE_FILE_OK, error); 616 EXPECT_EQ(DRIVE_FILE_OK, error);
600 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file8"), drive_file_path); 617 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file8"), drive_file_path);
601 618
602 // Make sure file is still ok. 619 // Make sure file is still ok.
603 resource_metadata_.GetEntryInfoByResourceId( 620 resource_metadata_->GetEntryInfoByResourceId(
604 "resource_id:file8", 621 "resource_id:file8",
605 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 622 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
606 &error, &drive_file_path, &entry_proto)); 623 &error, &drive_file_path, &entry_proto));
607 google_apis::test_util::RunBlockingPoolTask(); 624 google_apis::test_util::RunBlockingPoolTask();
608 EXPECT_EQ(DRIVE_FILE_OK, error); 625 EXPECT_EQ(DRIVE_FILE_OK, error);
609 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file8"), drive_file_path); 626 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file8"), drive_file_path);
610 } 627 }
611 628
612 TEST_F(DriveResourceMetadataTest, RenameEntry) { 629 TEST_F(DriveResourceMetadataTest, RenameEntry) {
613 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 630 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
614 FilePath drive_file_path; 631 FilePath drive_file_path;
615 scoped_ptr<DriveEntryProto> entry_proto; 632 scoped_ptr<DriveEntryProto> entry_proto;
616 633
617 // Rename file8 to file11. 634 // Rename file8 to file11.
618 resource_metadata_.RenameEntry( 635 resource_metadata_->RenameEntry(
619 FilePath::FromUTF8Unsafe("drive/dir2/file8"), 636 FilePath::FromUTF8Unsafe("drive/dir2/file8"),
620 "file11", 637 "file11",
621 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 638 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
622 &error, &drive_file_path)); 639 &error, &drive_file_path));
623 google_apis::test_util::RunBlockingPoolTask(); 640 google_apis::test_util::RunBlockingPoolTask();
624 EXPECT_EQ(DRIVE_FILE_OK, error); 641 EXPECT_EQ(DRIVE_FILE_OK, error);
625 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file11"), drive_file_path); 642 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file11"), drive_file_path);
626 643
627 // Lookup the file by resource id to make sure the file actually got renamed. 644 // Lookup the file by resource id to make sure the file actually got renamed.
628 resource_metadata_.GetEntryInfoByResourceId( 645 resource_metadata_->GetEntryInfoByResourceId(
629 "resource_id:file8", 646 "resource_id:file8",
630 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 647 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
631 &error, &drive_file_path, &entry_proto)); 648 &error, &drive_file_path, &entry_proto));
632 google_apis::test_util::RunBlockingPoolTask(); 649 google_apis::test_util::RunBlockingPoolTask();
633 EXPECT_EQ(DRIVE_FILE_OK, error); 650 EXPECT_EQ(DRIVE_FILE_OK, error);
634 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file11"), drive_file_path); 651 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file11"), drive_file_path);
635 652
636 // Rename to file7 to force a duplicate name. 653 // Rename to file7 to force a duplicate name.
637 resource_metadata_.RenameEntry( 654 resource_metadata_->RenameEntry(
638 FilePath::FromUTF8Unsafe("drive/dir2/file11"), 655 FilePath::FromUTF8Unsafe("drive/dir2/file11"),
639 "file7", 656 "file7",
640 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 657 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
641 &error, &drive_file_path)); 658 &error, &drive_file_path));
642 google_apis::test_util::RunBlockingPoolTask(); 659 google_apis::test_util::RunBlockingPoolTask();
643 EXPECT_EQ(DRIVE_FILE_OK, error); 660 EXPECT_EQ(DRIVE_FILE_OK, error);
644 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file7 (2)"), drive_file_path); 661 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir2/file7 (2)"), drive_file_path);
645 662
646 // Rename to same name. This should fail. 663 // Rename to same name. This should fail.
647 resource_metadata_.RenameEntry( 664 resource_metadata_->RenameEntry(
648 FilePath::FromUTF8Unsafe("drive/dir2/file7 (2)"), 665 FilePath::FromUTF8Unsafe("drive/dir2/file7 (2)"),
649 "file7 (2)", 666 "file7 (2)",
650 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 667 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
651 &error, &drive_file_path)); 668 &error, &drive_file_path));
652 google_apis::test_util::RunBlockingPoolTask(); 669 google_apis::test_util::RunBlockingPoolTask();
653 EXPECT_EQ(DRIVE_FILE_ERROR_EXISTS, error); 670 EXPECT_EQ(DRIVE_FILE_ERROR_EXISTS, error);
654 EXPECT_EQ(FilePath(), drive_file_path); 671 EXPECT_EQ(FilePath(), drive_file_path);
655 672
656 // Rename non-existent. 673 // Rename non-existent.
657 resource_metadata_.RenameEntry( 674 resource_metadata_->RenameEntry(
658 FilePath::FromUTF8Unsafe("drive/dir2/file11"), 675 FilePath::FromUTF8Unsafe("drive/dir2/file11"),
659 "file11", 676 "file11",
660 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 677 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
661 &error, &drive_file_path)); 678 &error, &drive_file_path));
662 google_apis::test_util::RunBlockingPoolTask(); 679 google_apis::test_util::RunBlockingPoolTask();
663 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 680 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
664 EXPECT_EQ(FilePath(), drive_file_path); 681 EXPECT_EQ(FilePath(), drive_file_path);
665 } 682 }
666 683
667 TEST_F(DriveResourceMetadataTest, RefreshEntry) { 684 TEST_F(DriveResourceMetadataTest, RefreshEntry) {
668 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 685 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
669 FilePath drive_file_path; 686 FilePath drive_file_path;
670 scoped_ptr<DriveEntryProto> entry_proto; 687 scoped_ptr<DriveEntryProto> entry_proto;
671 688
672 // Get file9. 689 // Get file9.
673 resource_metadata_.GetEntryInfoByPath( 690 resource_metadata_->GetEntryInfoByPath(
674 FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"), 691 FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"),
675 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 692 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
676 &error, &entry_proto)); 693 &error, &entry_proto));
677 google_apis::test_util::RunBlockingPoolTask(); 694 google_apis::test_util::RunBlockingPoolTask();
678 EXPECT_EQ(DRIVE_FILE_OK, error); 695 EXPECT_EQ(DRIVE_FILE_OK, error);
679 ASSERT_TRUE(entry_proto.get()); 696 ASSERT_TRUE(entry_proto.get());
680 EXPECT_EQ("file9", entry_proto->base_name()); 697 EXPECT_EQ("file9", entry_proto->base_name());
681 ASSERT_TRUE(!entry_proto->file_info().is_directory()); 698 ASSERT_TRUE(!entry_proto->file_info().is_directory());
682 EXPECT_EQ("md5:file9", entry_proto->file_specific_info().file_md5()); 699 EXPECT_EQ("md5:file9", entry_proto->file_specific_info().file_md5());
683 700
684 // Rename it and change the file size. 701 // Rename it and change the file size.
685 DriveEntryProto file_entry_proto(*entry_proto); 702 DriveEntryProto file_entry_proto(*entry_proto);
686 const std::string updated_md5("md5:updated"); 703 const std::string updated_md5("md5:updated");
687 file_entry_proto.mutable_file_specific_info()->set_file_md5(updated_md5); 704 file_entry_proto.mutable_file_specific_info()->set_file_md5(updated_md5);
688 file_entry_proto.set_title("file100"); 705 file_entry_proto.set_title("file100");
689 entry_proto.reset(); 706 entry_proto.reset();
690 resource_metadata_.RefreshEntry( 707 resource_metadata_->RefreshEntry(
691 file_entry_proto, 708 file_entry_proto,
692 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 709 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
693 &error, &drive_file_path, &entry_proto)); 710 &error, &drive_file_path, &entry_proto));
694 google_apis::test_util::RunBlockingPoolTask(); 711 google_apis::test_util::RunBlockingPoolTask();
695 EXPECT_EQ(DRIVE_FILE_OK, error); 712 EXPECT_EQ(DRIVE_FILE_OK, error);
696 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"), 713 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"),
697 drive_file_path); 714 drive_file_path);
698 ASSERT_TRUE(entry_proto.get()); 715 ASSERT_TRUE(entry_proto.get());
699 EXPECT_EQ("file100", entry_proto->base_name()); 716 EXPECT_EQ("file100", entry_proto->base_name());
700 ASSERT_TRUE(!entry_proto->file_info().is_directory()); 717 ASSERT_TRUE(!entry_proto->file_info().is_directory());
701 EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5()); 718 EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5());
702 719
703 // Make sure we get the same thing from GetEntryInfoByPath. 720 // Make sure we get the same thing from GetEntryInfoByPath.
704 entry_proto.reset(); 721 entry_proto.reset();
705 resource_metadata_.GetEntryInfoByPath( 722 resource_metadata_->GetEntryInfoByPath(
706 FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"), 723 FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"),
707 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 724 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
708 &error, &entry_proto)); 725 &error, &entry_proto));
709 google_apis::test_util::RunBlockingPoolTask(); 726 google_apis::test_util::RunBlockingPoolTask();
710 EXPECT_EQ(DRIVE_FILE_OK, error); 727 EXPECT_EQ(DRIVE_FILE_OK, error);
711 ASSERT_TRUE(entry_proto.get()); 728 ASSERT_TRUE(entry_proto.get());
712 EXPECT_EQ("file100", entry_proto->base_name()); 729 EXPECT_EQ("file100", entry_proto->base_name());
713 ASSERT_TRUE(!entry_proto->file_info().is_directory()); 730 ASSERT_TRUE(!entry_proto->file_info().is_directory());
714 EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5()); 731 EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5());
715 732
716 // Get dir2. 733 // Get dir2.
717 entry_proto.reset(); 734 entry_proto.reset();
718 resource_metadata_.GetEntryInfoByPath( 735 resource_metadata_->GetEntryInfoByPath(
719 FilePath::FromUTF8Unsafe("drive/dir2"), 736 FilePath::FromUTF8Unsafe("drive/dir2"),
720 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 737 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
721 &error, &entry_proto)); 738 &error, &entry_proto));
722 google_apis::test_util::RunBlockingPoolTask(); 739 google_apis::test_util::RunBlockingPoolTask();
723 EXPECT_EQ(DRIVE_FILE_OK, error); 740 EXPECT_EQ(DRIVE_FILE_OK, error);
724 ASSERT_TRUE(entry_proto.get()); 741 ASSERT_TRUE(entry_proto.get());
725 EXPECT_EQ("dir2", entry_proto->base_name()); 742 EXPECT_EQ("dir2", entry_proto->base_name());
726 ASSERT_TRUE(entry_proto->file_info().is_directory()); 743 ASSERT_TRUE(entry_proto->file_info().is_directory());
727 744
728 // Change the name to dir100 and change the parent to drive/dir1/dir3. 745 // Change the name to dir100 and change the parent to drive/dir1/dir3.
729 DriveEntryProto dir_entry_proto(*entry_proto); 746 DriveEntryProto dir_entry_proto(*entry_proto);
730 dir_entry_proto.set_title("dir100"); 747 dir_entry_proto.set_title("dir100");
731 dir_entry_proto.set_parent_resource_id("resource_id:dir3"); 748 dir_entry_proto.set_parent_resource_id("resource_id:dir3");
732 entry_proto.reset(); 749 entry_proto.reset();
733 resource_metadata_.RefreshEntry( 750 resource_metadata_->RefreshEntry(
734 dir_entry_proto, 751 dir_entry_proto,
735 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 752 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
736 &error, &drive_file_path, &entry_proto)); 753 &error, &drive_file_path, &entry_proto));
737 google_apis::test_util::RunBlockingPoolTask(); 754 google_apis::test_util::RunBlockingPoolTask();
738 EXPECT_EQ(DRIVE_FILE_OK, error); 755 EXPECT_EQ(DRIVE_FILE_OK, error);
739 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100"), 756 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100"),
740 drive_file_path); 757 drive_file_path);
741 ASSERT_TRUE(entry_proto.get()); 758 ASSERT_TRUE(entry_proto.get());
742 EXPECT_EQ("dir100", entry_proto->base_name()); 759 EXPECT_EQ("dir100", entry_proto->base_name());
743 EXPECT_TRUE(entry_proto->file_info().is_directory()); 760 EXPECT_TRUE(entry_proto->file_info().is_directory());
744 EXPECT_EQ("resource_id:dir2", entry_proto->resource_id()); 761 EXPECT_EQ("resource_id:dir2", entry_proto->resource_id());
745 762
746 // Make sure the children have moved over. Test file6. 763 // Make sure the children have moved over. Test file6.
747 entry_proto.reset(); 764 entry_proto.reset();
748 resource_metadata_.GetEntryInfoByPath( 765 resource_metadata_->GetEntryInfoByPath(
749 FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100/file6"), 766 FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100/file6"),
750 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 767 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
751 &error, &entry_proto)); 768 &error, &entry_proto));
752 google_apis::test_util::RunBlockingPoolTask(); 769 google_apis::test_util::RunBlockingPoolTask();
753 EXPECT_EQ(DRIVE_FILE_OK, error); 770 EXPECT_EQ(DRIVE_FILE_OK, error);
754 ASSERT_TRUE(entry_proto.get()); 771 ASSERT_TRUE(entry_proto.get());
755 EXPECT_EQ("file6", entry_proto->base_name()); 772 EXPECT_EQ("file6", entry_proto->base_name());
756 773
757 // Make sure dir2 no longer exists. 774 // Make sure dir2 no longer exists.
758 resource_metadata_.GetEntryInfoByPath( 775 resource_metadata_->GetEntryInfoByPath(
759 FilePath::FromUTF8Unsafe("drive/dir2"), 776 FilePath::FromUTF8Unsafe("drive/dir2"),
760 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 777 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
761 &error, &entry_proto)); 778 &error, &entry_proto));
762 google_apis::test_util::RunBlockingPoolTask(); 779 google_apis::test_util::RunBlockingPoolTask();
763 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 780 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
764 EXPECT_FALSE(entry_proto.get()); 781 EXPECT_FALSE(entry_proto.get());
765 } 782 }
766 783
767 // Test the special logic for RefreshEntry of root. 784 // Test the special logic for RefreshEntry of root.
768 TEST_F(DriveResourceMetadataTest, RefreshEntry_Root) { 785 TEST_F(DriveResourceMetadataTest, RefreshEntry_Root) {
769 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 786 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
770 FilePath drive_file_path; 787 FilePath drive_file_path;
771 scoped_ptr<DriveEntryProto> entry_proto; 788 scoped_ptr<DriveEntryProto> entry_proto;
772 789
773 // Get root. 790 // Get root.
774 resource_metadata_.GetEntryInfoByPath( 791 resource_metadata_->GetEntryInfoByPath(
775 FilePath::FromUTF8Unsafe("drive"), 792 FilePath::FromUTF8Unsafe("drive"),
776 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 793 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
777 &error, &entry_proto)); 794 &error, &entry_proto));
778 google_apis::test_util::RunBlockingPoolTask(); 795 google_apis::test_util::RunBlockingPoolTask();
779 EXPECT_EQ(DRIVE_FILE_OK, error); 796 EXPECT_EQ(DRIVE_FILE_OK, error);
780 ASSERT_TRUE(entry_proto.get()); 797 ASSERT_TRUE(entry_proto.get());
781 EXPECT_EQ("drive", entry_proto->base_name()); 798 EXPECT_EQ("drive", entry_proto->base_name());
782 ASSERT_TRUE(entry_proto->file_info().is_directory()); 799 ASSERT_TRUE(entry_proto->file_info().is_directory());
783 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id()); 800 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id());
784 EXPECT_TRUE(entry_proto->upload_url().empty()); 801 EXPECT_TRUE(entry_proto->upload_url().empty());
785 802
786 // Set upload url and call RefreshEntry on root. 803 // Set upload url and call RefreshEntry on root.
787 DriveEntryProto dir_entry_proto(*entry_proto); 804 DriveEntryProto dir_entry_proto(*entry_proto);
788 dir_entry_proto.set_upload_url("http://root.upload.url/"); 805 dir_entry_proto.set_upload_url("http://root.upload.url/");
789 entry_proto.reset(); 806 entry_proto.reset();
790 resource_metadata_.RefreshEntry( 807 resource_metadata_->RefreshEntry(
791 dir_entry_proto, 808 dir_entry_proto,
792 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback, 809 base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
793 &error, &drive_file_path, &entry_proto)); 810 &error, &drive_file_path, &entry_proto));
794 google_apis::test_util::RunBlockingPoolTask(); 811 google_apis::test_util::RunBlockingPoolTask();
795 EXPECT_EQ(DRIVE_FILE_OK, error); 812 EXPECT_EQ(DRIVE_FILE_OK, error);
796 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive"), drive_file_path); 813 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive"), drive_file_path);
797 ASSERT_TRUE(entry_proto.get()); 814 ASSERT_TRUE(entry_proto.get());
798 EXPECT_EQ("drive", entry_proto->base_name()); 815 EXPECT_EQ("drive", entry_proto->base_name());
799 EXPECT_TRUE(entry_proto->file_info().is_directory()); 816 EXPECT_TRUE(entry_proto->file_info().is_directory());
800 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id()); 817 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id());
801 EXPECT_EQ("http://root.upload.url/", entry_proto->upload_url()); 818 EXPECT_EQ("http://root.upload.url/", entry_proto->upload_url());
802 819
803 // Make sure the children have moved over. Test file9. 820 // Make sure the children have moved over. Test file9.
804 entry_proto.reset(); 821 entry_proto.reset();
805 resource_metadata_.GetEntryInfoByPath( 822 resource_metadata_->GetEntryInfoByPath(
806 FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"), 823 FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"),
807 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 824 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
808 &error, &entry_proto)); 825 &error, &entry_proto));
809 google_apis::test_util::RunBlockingPoolTask(); 826 google_apis::test_util::RunBlockingPoolTask();
810 EXPECT_EQ(DRIVE_FILE_OK, error); 827 EXPECT_EQ(DRIVE_FILE_OK, error);
811 ASSERT_TRUE(entry_proto.get()); 828 ASSERT_TRUE(entry_proto.get());
812 EXPECT_EQ("file9", entry_proto->base_name()); 829 EXPECT_EQ("file9", entry_proto->base_name());
813 } 830 }
814 831
815 TEST_F(DriveResourceMetadataTest, AddEntryToParent) { 832 TEST_F(DriveResourceMetadataTest, AddEntryToParent) {
816 int sequence_id = 100; 833 int sequence_id = 100;
817 DriveEntryProto file_entry_proto = CreateDriveEntryProto( 834 DriveEntryProto file_entry_proto = CreateDriveEntryProto(
818 sequence_id++, false, "resource_id:dir3"); 835 sequence_id++, false, "resource_id:dir3");
819 836
820 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 837 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
821 FilePath drive_file_path; 838 FilePath drive_file_path;
822 839
823 // Add to dir3. 840 // Add to dir3.
824 resource_metadata_.AddEntryToParent( 841 resource_metadata_->AddEntryToParent(
825 file_entry_proto, 842 file_entry_proto,
826 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 843 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
827 &error, &drive_file_path)); 844 &error, &drive_file_path));
828 google_apis::test_util::RunBlockingPoolTask(); 845 google_apis::test_util::RunBlockingPoolTask();
829 EXPECT_EQ(DRIVE_FILE_OK, error); 846 EXPECT_EQ(DRIVE_FILE_OK, error);
830 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"), 847 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"),
831 drive_file_path); 848 drive_file_path);
832 849
833 // Adds to root when parent resource id is not specified. 850 // Adds to root when parent resource id is not specified.
834 DriveEntryProto file_entry_proto2 = CreateDriveEntryProto( 851 DriveEntryProto file_entry_proto2 = CreateDriveEntryProto(
835 sequence_id++, false, ""); 852 sequence_id++, false, "");
836 853
837 resource_metadata_.AddEntryToParent( 854 resource_metadata_->AddEntryToParent(
838 file_entry_proto2, 855 file_entry_proto2,
839 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 856 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
840 &error, &drive_file_path)); 857 &error, &drive_file_path));
841 google_apis::test_util::RunBlockingPoolTask(); 858 google_apis::test_util::RunBlockingPoolTask();
842 EXPECT_EQ(DRIVE_FILE_OK, error); 859 EXPECT_EQ(DRIVE_FILE_OK, error);
843 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/file101"), drive_file_path); 860 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/file101"), drive_file_path);
844 861
845 // Add a directory. 862 // Add a directory.
846 DriveEntryProto dir_entry_proto = CreateDriveEntryProto( 863 DriveEntryProto dir_entry_proto = CreateDriveEntryProto(
847 sequence_id++, true, "resource_id:dir1"); 864 sequence_id++, true, "resource_id:dir1");
848 865
849 resource_metadata_.AddEntryToParent( 866 resource_metadata_->AddEntryToParent(
850 dir_entry_proto, 867 dir_entry_proto,
851 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 868 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
852 &error, &drive_file_path)); 869 &error, &drive_file_path));
853 google_apis::test_util::RunBlockingPoolTask(); 870 google_apis::test_util::RunBlockingPoolTask();
854 EXPECT_EQ(DRIVE_FILE_OK, error); 871 EXPECT_EQ(DRIVE_FILE_OK, error);
855 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir102"), drive_file_path); 872 EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir102"), drive_file_path);
856 873
857 // Add to an invalid parent. 874 // Add to an invalid parent.
858 DriveEntryProto file_entry_proto3 = CreateDriveEntryProto( 875 DriveEntryProto file_entry_proto3 = CreateDriveEntryProto(
859 sequence_id++, false, "resource_id:invalid"); 876 sequence_id++, false, "resource_id:invalid");
860 877
861 resource_metadata_.AddEntryToParent( 878 resource_metadata_->AddEntryToParent(
862 file_entry_proto3, 879 file_entry_proto3,
863 base::Bind(&test_util::CopyResultsFromFileMoveCallback, 880 base::Bind(&test_util::CopyResultsFromFileMoveCallback,
864 &error, &drive_file_path)); 881 &error, &drive_file_path));
865 google_apis::test_util::RunBlockingPoolTask(); 882 google_apis::test_util::RunBlockingPoolTask();
866 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error); 883 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
867 } 884 }
868 885
869 TEST_F(DriveResourceMetadataTest, GetChildDirectories) { 886 TEST_F(DriveResourceMetadataTest, GetChildDirectories) {
870 std::set<FilePath> child_directories; 887 std::set<FilePath> child_directories;
871 888
872 // file9: not a directory, so no children. 889 // file9: not a directory, so no children.
873 resource_metadata_.GetChildDirectories("resource_id:file9", 890 resource_metadata_->GetChildDirectories("resource_id:file9",
874 base::Bind(&CopyResultFromGetChildDirectoriesCallback, 891 base::Bind(&CopyResultFromGetChildDirectoriesCallback,
875 &child_directories)); 892 &child_directories));
876 google_apis::test_util::RunBlockingPoolTask(); 893 google_apis::test_util::RunBlockingPoolTask();
877 EXPECT_TRUE(child_directories.empty()); 894 EXPECT_TRUE(child_directories.empty());
878 895
879 // dir2: no child directories. 896 // dir2: no child directories.
880 resource_metadata_.GetChildDirectories("resource_id:dir2", 897 resource_metadata_->GetChildDirectories("resource_id:dir2",
881 base::Bind(&CopyResultFromGetChildDirectoriesCallback, 898 base::Bind(&CopyResultFromGetChildDirectoriesCallback,
882 &child_directories)); 899 &child_directories));
883 google_apis::test_util::RunBlockingPoolTask(); 900 google_apis::test_util::RunBlockingPoolTask();
884 EXPECT_TRUE(child_directories.empty()); 901 EXPECT_TRUE(child_directories.empty());
885 902
886 // dir1: dir3 is the only child 903 // dir1: dir3 is the only child
887 resource_metadata_.GetChildDirectories("resource_id:dir1", 904 resource_metadata_->GetChildDirectories("resource_id:dir1",
888 base::Bind(&CopyResultFromGetChildDirectoriesCallback, 905 base::Bind(&CopyResultFromGetChildDirectoriesCallback,
889 &child_directories)); 906 &child_directories));
890 google_apis::test_util::RunBlockingPoolTask(); 907 google_apis::test_util::RunBlockingPoolTask();
891 EXPECT_EQ(1u, child_directories.size()); 908 EXPECT_EQ(1u, child_directories.size());
892 EXPECT_EQ(1u, child_directories.count( 909 EXPECT_EQ(1u, child_directories.count(
893 FilePath::FromUTF8Unsafe("drive/dir1/dir3"))); 910 FilePath::FromUTF8Unsafe("drive/dir1/dir3")));
894 911
895 // Add a few more directories to make sure deeper nesting works. 912 // Add a few more directories to make sure deeper nesting works.
896 // dir2/dir100 913 // dir2/dir100
897 // dir2/dir101 914 // dir2/dir101
898 // dir2/dir101/dir102 915 // dir2/dir101/dir102
899 // dir2/dir101/dir103 916 // dir2/dir101/dir103
900 // dir2/dir101/dir104 917 // dir2/dir101/dir104
901 // dir2/dir101/dir102/dir105 918 // dir2/dir101/dir102/dir105
902 // dir2/dir101/dir102/dir105/dir106 919 // dir2/dir101/dir102/dir105/dir106
903 // dir2/dir101/dir102/dir105/dir106/dir107 920 // dir2/dir101/dir102/dir105/dir106/dir107
904 int sequence_id = 100; 921 int sequence_id = 100;
905 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir2")); 922 ASSERT_TRUE(AddDriveEntryProto(
906 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir2")); 923 resource_metadata_.get(), sequence_id++, true, "resource_id:dir2"));
907 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir101")); 924 ASSERT_TRUE(AddDriveEntryProto(
908 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir101")); 925 resource_metadata_.get(), sequence_id++, true, "resource_id:dir2"));
909 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir101")); 926 ASSERT_TRUE(AddDriveEntryProto(
910 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir102")); 927 resource_metadata_.get(), sequence_id++, true, "resource_id:dir101"));
911 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir105")); 928 ASSERT_TRUE(AddDriveEntryProto(
912 ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir106")); 929 resource_metadata_.get(), sequence_id++, true, "resource_id:dir101"));
930 ASSERT_TRUE(AddDriveEntryProto(
931 resource_metadata_.get(), sequence_id++, true, "resource_id:dir101"));
932 ASSERT_TRUE(AddDriveEntryProto(
933 resource_metadata_.get(), sequence_id++, true, "resource_id:dir102"));
934 ASSERT_TRUE(AddDriveEntryProto(
935 resource_metadata_.get(), sequence_id++, true, "resource_id:dir105"));
936 ASSERT_TRUE(AddDriveEntryProto(
937 resource_metadata_.get(), sequence_id++, true, "resource_id:dir106"));
913 938
914 resource_metadata_.GetChildDirectories("resource_id:dir2", 939 resource_metadata_->GetChildDirectories("resource_id:dir2",
915 base::Bind(&CopyResultFromGetChildDirectoriesCallback, 940 base::Bind(&CopyResultFromGetChildDirectoriesCallback,
916 &child_directories)); 941 &child_directories));
917 google_apis::test_util::RunBlockingPoolTask(); 942 google_apis::test_util::RunBlockingPoolTask();
918 EXPECT_EQ(8u, child_directories.size()); 943 EXPECT_EQ(8u, child_directories.size());
919 EXPECT_EQ(1u, child_directories.count(FilePath::FromUTF8Unsafe( 944 EXPECT_EQ(1u, child_directories.count(FilePath::FromUTF8Unsafe(
920 "drive/dir2/dir101"))); 945 "drive/dir2/dir101")));
921 EXPECT_EQ(1u, child_directories.count(FilePath::FromUTF8Unsafe( 946 EXPECT_EQ(1u, child_directories.count(FilePath::FromUTF8Unsafe(
922 "drive/dir2/dir101/dir104"))); 947 "drive/dir2/dir101/dir104")));
923 EXPECT_EQ(1u, child_directories.count(FilePath::FromUTF8Unsafe( 948 EXPECT_EQ(1u, child_directories.count(FilePath::FromUTF8Unsafe(
924 "drive/dir2/dir101/dir102/dir105/dir106/dir107"))); 949 "drive/dir2/dir101/dir102/dir105/dir106/dir107")));
925 } 950 }
926 951
927 TEST_F(DriveResourceMetadataTest, RemoveAll) { 952 TEST_F(DriveResourceMetadataTest, RemoveAll) {
928 DriveFileError error = DRIVE_FILE_ERROR_FAILED; 953 DriveFileError error = DRIVE_FILE_ERROR_FAILED;
929 scoped_ptr<DriveEntryProtoVector> entries; 954 scoped_ptr<DriveEntryProtoVector> entries;
930 955
931 // root has children. 956 // root has children.
932 resource_metadata_.ReadDirectoryByPath( 957 resource_metadata_->ReadDirectoryByPath(
933 FilePath::FromUTF8Unsafe("drive"), 958 FilePath::FromUTF8Unsafe("drive"),
934 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback, 959 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback,
935 &error, &entries)); 960 &error, &entries));
936 google_apis::test_util::RunBlockingPoolTask(); 961 google_apis::test_util::RunBlockingPoolTask();
937 EXPECT_EQ(DRIVE_FILE_OK, error); 962 EXPECT_EQ(DRIVE_FILE_OK, error);
938 ASSERT_TRUE(entries.get()); 963 ASSERT_TRUE(entries.get());
939 ASSERT_FALSE(entries->empty()); 964 ASSERT_FALSE(entries->empty());
940 965
941 // remove all children. 966 // remove all children.
942 resource_metadata_.RemoveAll(base::Bind(&base::DoNothing)); 967 resource_metadata_->RemoveAll(base::Bind(&base::DoNothing));
943 google_apis::test_util::RunBlockingPoolTask(); 968 google_apis::test_util::RunBlockingPoolTask();
944 969
945 FilePath drive_file_path; 970 FilePath drive_file_path;
946 scoped_ptr<DriveEntryProto> entry_proto; 971 scoped_ptr<DriveEntryProto> entry_proto;
947 972
948 // root should continue to exist. 973 // root should continue to exist.
949 resource_metadata_.GetEntryInfoByPath( 974 resource_metadata_->GetEntryInfoByPath(
950 FilePath::FromUTF8Unsafe("drive"), 975 FilePath::FromUTF8Unsafe("drive"),
951 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback, 976 base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
952 &error, &entry_proto)); 977 &error, &entry_proto));
953 google_apis::test_util::RunBlockingPoolTask(); 978 google_apis::test_util::RunBlockingPoolTask();
954 EXPECT_EQ(DRIVE_FILE_OK, error); 979 EXPECT_EQ(DRIVE_FILE_OK, error);
955 ASSERT_TRUE(entry_proto.get()); 980 ASSERT_TRUE(entry_proto.get());
956 EXPECT_EQ("drive", entry_proto->base_name()); 981 EXPECT_EQ("drive", entry_proto->base_name());
957 ASSERT_TRUE(entry_proto->file_info().is_directory()); 982 ASSERT_TRUE(entry_proto->file_info().is_directory());
958 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id()); 983 EXPECT_EQ(kTestRootResourceId, entry_proto->resource_id());
959 984
960 // root should have no children. 985 // root should have no children.
961 resource_metadata_.ReadDirectoryByPath( 986 resource_metadata_->ReadDirectoryByPath(
962 FilePath::FromUTF8Unsafe("drive"), 987 FilePath::FromUTF8Unsafe("drive"),
963 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback, 988 base::Bind(&test_util::CopyResultsFromReadDirectoryCallback,
964 &error, &entries)); 989 &error, &entries));
965 google_apis::test_util::RunBlockingPoolTask(); 990 google_apis::test_util::RunBlockingPoolTask();
966 EXPECT_EQ(DRIVE_FILE_OK, error); 991 EXPECT_EQ(DRIVE_FILE_OK, error);
967 ASSERT_TRUE(entries.get()); 992 ASSERT_TRUE(entries.get());
968 EXPECT_TRUE(entries->empty()); 993 EXPECT_TRUE(entries->empty());
969 } 994 }
970 995
971 } // namespace drive 996 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/drive_resource_metadata.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698