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

Side by Side Diff: chrome/browser/chromeos/drive/file_system/create_directory_operation_unittest.cc

Issue 15817003: drive: Use OperationTestBase from CreateDirectoryOperationTest (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 6 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/file_system/create_directory_operation.h " 5 #include "chrome/browser/chromeos/drive/file_system/create_directory_operation.h "
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "chrome/browser/chromeos/drive/file_system/operation_test_base.h"
8 #include "base/message_loop.h"
9 #include "chrome/browser/chromeos/drive/file_system_util.h"
10 #include "chrome/browser/chromeos/drive/resource_metadata.h"
11 #include "chrome/browser/chromeos/drive/test_util.h"
12 #include "chrome/browser/google_apis/test_util.h" 8 #include "chrome/browser/google_apis/test_util.h"
13 #include "content/public/browser/browser_thread.h"
14 #include "content/public/test/test_browser_thread.h"
15 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
16 10
17 namespace drive { 11 namespace drive {
18 namespace file_system { 12 namespace file_system {
19 namespace {
20 13
21 // Creates a resource entry instance. The resource id is "resource_id:{title}", 14 class CreateDirectoryOperationTest : public OperationTestBase {
22 // where {title} is the given |title|. 15 protected:
23 ResourceEntry CreateResourceEntry(const std::string& title, 16 // Returns FILE_ERROR_OK if a directory is found at |path|.
24 const std::string& parent_resource_id, 17 FileError FindDirectory(const base::FilePath& path) {
25 bool is_directory) { 18 ResourceEntry entry;
26 ResourceEntry entry; 19 FileError error = GetLocalResourceEntry(path, &entry);
27 const std::string resource_id = "resource_id:" + title; 20 if (error == FILE_ERROR_OK && !entry.file_info().is_directory())
28 entry.set_title(title); 21 error = FILE_ERROR_NOT_A_DIRECTORY;
29 entry.set_resource_id(resource_id); 22 return error;
30 entry.set_parent_resource_id(parent_resource_id); 23 }
24 };
31 25
32 PlatformFileInfoProto* file_info = entry.mutable_file_info(); 26 TEST_F(CreateDirectoryOperationTest, CreateDirectory) {
33 file_info->set_is_directory(is_directory); 27 CreateDirectoryOperation operation(blocking_task_runner(),
28 observer(),
29 scheduler(),
30 metadata());
34 31
35 return entry; 32 const base::FilePath kExistingFile(
36 } 33 FILE_PATH_LITERAL("drive/root/File 1.txt"));
34 const base::FilePath kExistingDirectory(
35 FILE_PATH_LITERAL("drive/root/Directory 1"));
36 const base::FilePath kNewDirectory1(
37 FILE_PATH_LITERAL("drive/root/New Directory"));
38 const base::FilePath kNewDirectory2 =
39 kNewDirectory1.AppendASCII("New Directory 2/a/b/c");
37 40
38 } // namespace 41 // Create a new directory, not recursively.
42 EXPECT_EQ(FILE_ERROR_NOT_FOUND, FindDirectory(kNewDirectory1));
39 43
40 TEST(CreateDirectoryOperationTest, GetExistingDeepestDirectory) {
41 MessageLoopForUI message_loop;
42 content::TestBrowserThread ui_thread(
43 content::BrowserThread::UI, &message_loop);
44
45 // Set up a Metadata instance.
46 base::ScopedTempDir temp_dir;
47 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
48 scoped_ptr<internal::ResourceMetadata, test_util::DestroyHelperForTests>
49 metadata(new internal::ResourceMetadata(
50 temp_dir.path(), message_loop.message_loop_proxy()));
51 FileError error = FILE_ERROR_FAILED; 44 FileError error = FILE_ERROR_FAILED;
52 metadata->Initialize( 45 operation.CreateDirectory(
46 kNewDirectory1,
47 true, // is_exclusive
48 false, // is_recursive
53 google_apis::test_util::CreateCopyResultCallback(&error)); 49 google_apis::test_util::CreateCopyResultCallback(&error));
54 google_apis::test_util::RunBlockingPoolTask(); 50 google_apis::test_util::RunBlockingPoolTask();
55 ASSERT_EQ(FILE_ERROR_OK, error); 51 EXPECT_EQ(FILE_ERROR_OK, error);
52 EXPECT_EQ(FILE_ERROR_OK, FindDirectory(kNewDirectory1));
53 EXPECT_EQ(1U, observer()->get_changed_paths().size());
54 EXPECT_EQ(1U,
55 observer()->get_changed_paths().count(kNewDirectory1.DirName()));
56 56
57 // Create a testee directory tree. 57 // Create a new directory recursively.
58 // drive/root/dir1/ 58 EXPECT_EQ(FILE_ERROR_NOT_FOUND, FindDirectory(kNewDirectory2));
59 // drive/root/dir1/dir2/ 59 operation.CreateDirectory(
60 // drive/root/dir1/dir2/file3 60 kNewDirectory2,
61 // drive/root/dir1/file4 61 true, // is_exclusive
62 // drive/root/dir5/ 62 false, // is_recursive
63 const char kTestRootResourceId[] = "test_root"; 63 google_apis::test_util::CreateCopyResultCallback(&error));
64 ASSERT_EQ(FILE_ERROR_OK, metadata->AddEntry( 64 google_apis::test_util::RunBlockingPoolTask();
65 util::CreateMyDriveRootEntry(kTestRootResourceId))); 65 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error);
66 ASSERT_EQ(FILE_ERROR_OK, metadata->AddEntry( 66 EXPECT_EQ(FILE_ERROR_NOT_FOUND, FindDirectory(kNewDirectory2));
67 CreateResourceEntry("dir1", kTestRootResourceId, true)));
68 ASSERT_EQ(FILE_ERROR_OK, metadata->AddEntry(
69 CreateResourceEntry("dir2", "resource_id:dir1", true)));
70 ASSERT_EQ(FILE_ERROR_OK, metadata->AddEntry(
71 CreateResourceEntry("file3", "resource_id:dir2", false)));
72 ASSERT_EQ(FILE_ERROR_OK, metadata->AddEntry(
73 CreateResourceEntry("file4", "resource_id:dir1", false)));
74 ASSERT_EQ(FILE_ERROR_OK, metadata->AddEntry(
75 CreateResourceEntry("dir5", kTestRootResourceId, true)));
76 67
77 ResourceEntry entry; 68 operation.CreateDirectory(
78 // Searching grand root and mydrive root. 69 kNewDirectory2,
79 EXPECT_EQ( 70 true, // is_exclusive
80 FILE_PATH_LITERAL("drive"), 71 true, // is_recursive
81 CreateDirectoryOperation::GetExistingDeepestDirectory( 72 google_apis::test_util::CreateCopyResultCallback(&error));
82 metadata.get(), base::FilePath(FILE_PATH_LITERAL("drive")), 73 google_apis::test_util::RunBlockingPoolTask();
83 &entry).value()); 74 EXPECT_EQ(FILE_ERROR_OK, error);
84 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry.resource_id()); 75 EXPECT_EQ(FILE_ERROR_OK, FindDirectory(kNewDirectory2));
85 EXPECT_EQ(
86 FILE_PATH_LITERAL("drive/root"),
87 CreateDirectoryOperation::GetExistingDeepestDirectory(
88 metadata.get(), base::FilePath(FILE_PATH_LITERAL("drive/root")),
89 &entry).value());
90 EXPECT_EQ(kTestRootResourceId, entry.resource_id());
91 76
92 // Searching existing directories. 77 // Try to create an existing directory.
93 EXPECT_EQ( 78 operation.CreateDirectory(
94 FILE_PATH_LITERAL("drive/root/dir1"), 79 kExistingDirectory,
95 CreateDirectoryOperation::GetExistingDeepestDirectory( 80 true, // is_exclusive
96 metadata.get(), base::FilePath(FILE_PATH_LITERAL("drive/root/dir1")), 81 false, // is_recursive
97 &entry).value()); 82 google_apis::test_util::CreateCopyResultCallback(&error));
98 EXPECT_EQ("resource_id:dir1", entry.resource_id()); 83 google_apis::test_util::RunBlockingPoolTask();
99 EXPECT_EQ( 84 EXPECT_EQ(FILE_ERROR_EXISTS, error);
100 FILE_PATH_LITERAL("drive/root/dir1/dir2"),
101 CreateDirectoryOperation::GetExistingDeepestDirectory(
102 metadata.get(),
103 base::FilePath(FILE_PATH_LITERAL("drive/root/dir1/dir2")),
104 &entry).value());
105 EXPECT_EQ("resource_id:dir2", entry.resource_id());
106 85
107 // Searching missing directories. 86 operation.CreateDirectory(
108 EXPECT_EQ( 87 kExistingDirectory,
109 FILE_PATH_LITERAL("drive/root/dir1/dir2"), 88 false, // is_exclusive
110 CreateDirectoryOperation::GetExistingDeepestDirectory( 89 false, // is_recursive
111 metadata.get(), 90 google_apis::test_util::CreateCopyResultCallback(&error));
112 base::FilePath(FILE_PATH_LITERAL("drive/root/dir1/dir2/dir3")), 91 google_apis::test_util::RunBlockingPoolTask();
113 &entry).value()); 92 EXPECT_EQ(FILE_ERROR_OK, error);
114 EXPECT_EQ("resource_id:dir2", entry.resource_id());
115 EXPECT_EQ(
116 FILE_PATH_LITERAL("drive/root/dir1/dir2"),
117 CreateDirectoryOperation::GetExistingDeepestDirectory(
118 metadata.get(),
119 base::FilePath(FILE_PATH_LITERAL("drive/root/dir1/dir2/dir3/dir4")),
120 &entry).value());
121 EXPECT_EQ("resource_id:dir2", entry.resource_id());
122 EXPECT_EQ(
123 FILE_PATH_LITERAL("drive/root/dir1"),
124 CreateDirectoryOperation::GetExistingDeepestDirectory(
125 metadata.get(),
126 base::FilePath(FILE_PATH_LITERAL("drive/root/dir1/dir2-1/dir3")),
127 &entry).value());
128 EXPECT_EQ("resource_id:dir1", entry.resource_id());
129 EXPECT_EQ(
130 FILE_PATH_LITERAL("drive/root/dir5"),
131 CreateDirectoryOperation::GetExistingDeepestDirectory(
132 metadata.get(),
133 base::FilePath(FILE_PATH_LITERAL("drive/root/dir5/dir6/dir7/dir8")),
134 &entry).value());
135 EXPECT_EQ("resource_id:dir5", entry.resource_id());
136 93
137 // If the path points to a file (not a directory), failed to find. 94 // Try to create a directory with a path for an existing file.
138 EXPECT_EQ( 95 operation.CreateDirectory(
139 FILE_PATH_LITERAL(""), 96 kExistingFile,
140 CreateDirectoryOperation::GetExistingDeepestDirectory( 97 false, // is_exclusive
141 metadata.get(), 98 true, // is_recursive
142 base::FilePath(FILE_PATH_LITERAL("drive/root/dir1/dir2/file3")), 99 google_apis::test_util::CreateCopyResultCallback(&error));
143 &entry).value()); 100 google_apis::test_util::RunBlockingPoolTask();
144 EXPECT_EQ( 101 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error);
145 FILE_PATH_LITERAL(""),
146 CreateDirectoryOperation::GetExistingDeepestDirectory(
147 metadata.get(),
148 base::FilePath(FILE_PATH_LITERAL("drive/root/dir1/file4")),
149 &entry).value());
150 102
151 // Searching missing directory under a "file" should be also failed. 103 // Try to create a directory under a file.
152 EXPECT_EQ( 104 operation.CreateDirectory(
153 FILE_PATH_LITERAL(""), 105 kExistingFile.AppendASCII("New Directory"),
154 CreateDirectoryOperation::GetExistingDeepestDirectory( 106 false, // is_exclusive
155 metadata.get(), 107 true, // is_recursive
156 base::FilePath(FILE_PATH_LITERAL("drive/root/dir1/file4/dir5")), 108 google_apis::test_util::CreateCopyResultCallback(&error));
157 &entry).value()); 109 google_apis::test_util::RunBlockingPoolTask();
158 110 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error);
159 // Searching path not starting "drive" should be also failed.
160 EXPECT_EQ(
161 FILE_PATH_LITERAL(""),
162 CreateDirectoryOperation::GetExistingDeepestDirectory(
163 metadata.get(),
164 base::FilePath(FILE_PATH_LITERAL("123456")),
165 &entry).value());
166 EXPECT_EQ(
167 FILE_PATH_LITERAL(""),
168 CreateDirectoryOperation::GetExistingDeepestDirectory(
169 metadata.get(),
170 base::FilePath(FILE_PATH_LITERAL("foo/bar")),
171 &entry).value());
172 } 111 }
173 112
174 } // namespace file_system 113 } // namespace file_system
175 } // namespace drive 114 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698