OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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_file_operation.h" | 5 #include "chrome/browser/chromeos/drive/file_system/create_file_operation.h" |
6 | 6 |
7 #include "chrome/browser/chromeos/drive/file_change.h" | 7 #include "chrome/browser/chromeos/drive/file_change.h" |
8 #include "chrome/browser/chromeos/drive/file_system/operation_test_base.h" | 8 #include "chrome/browser/chromeos/drive/file_system/operation_test_base.h" |
| 9 #include "content/public/test/test_utils.h" |
9 #include "google_apis/drive/test_util.h" | 10 #include "google_apis/drive/test_util.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
11 | 12 |
12 namespace drive { | 13 namespace drive { |
13 namespace file_system { | 14 namespace file_system { |
14 | 15 |
15 typedef OperationTestBase CreateFileOperationTest; | 16 typedef OperationTestBase CreateFileOperationTest; |
16 | 17 |
17 TEST_F(CreateFileOperationTest, CreateFile) { | 18 TEST_F(CreateFileOperationTest, CreateFile) { |
18 CreateFileOperation operation(blocking_task_runner(), | 19 CreateFileOperation operation(blocking_task_runner(), |
19 observer(), | 20 observer(), |
20 metadata()); | 21 metadata()); |
21 | 22 |
22 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/New File.txt")); | 23 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/New File.txt")); |
23 FileError error = FILE_ERROR_FAILED; | 24 FileError error = FILE_ERROR_FAILED; |
24 operation.CreateFile( | 25 operation.CreateFile( |
25 kFilePath, | 26 kFilePath, |
26 true, // is_exclusive | 27 true, // is_exclusive |
27 std::string(), // no predetermined mime type | 28 std::string(), // no predetermined mime type |
28 google_apis::test_util::CreateCopyResultCallback(&error)); | 29 google_apis::test_util::CreateCopyResultCallback(&error)); |
29 test_util::RunBlockingPoolTask(); | 30 content::RunAllBlockingPoolTasksUntilIdle(); |
30 EXPECT_EQ(FILE_ERROR_OK, error); | 31 EXPECT_EQ(FILE_ERROR_OK, error); |
31 | 32 |
32 ResourceEntry entry; | 33 ResourceEntry entry; |
33 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kFilePath, &entry)); | 34 EXPECT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kFilePath, &entry)); |
34 EXPECT_EQ(ResourceEntry::DIRTY, entry.metadata_edit_state()); | 35 EXPECT_EQ(ResourceEntry::DIRTY, entry.metadata_edit_state()); |
35 EXPECT_FALSE(base::Time::FromInternalValue( | 36 EXPECT_FALSE(base::Time::FromInternalValue( |
36 entry.file_info().last_modified()).is_null()); | 37 entry.file_info().last_modified()).is_null()); |
37 EXPECT_FALSE(base::Time::FromInternalValue( | 38 EXPECT_FALSE(base::Time::FromInternalValue( |
38 entry.file_info().last_accessed()).is_null()); | 39 entry.file_info().last_accessed()).is_null()); |
39 | 40 |
(...skipping 17 matching lines...) Expand all Loading... |
57 const base::FilePath kFileInNonExistingDirectory( | 58 const base::FilePath kFileInNonExistingDirectory( |
58 FILE_PATH_LITERAL("drive/root/not exist/not exist.png")); | 59 FILE_PATH_LITERAL("drive/root/not exist/not exist.png")); |
59 | 60 |
60 // Create fails if is_exclusive = true and a file exists. | 61 // Create fails if is_exclusive = true and a file exists. |
61 FileError error = FILE_ERROR_FAILED; | 62 FileError error = FILE_ERROR_FAILED; |
62 operation.CreateFile( | 63 operation.CreateFile( |
63 kExistingFile, | 64 kExistingFile, |
64 true, // is_exclusive | 65 true, // is_exclusive |
65 std::string(), // no predetermined mime type | 66 std::string(), // no predetermined mime type |
66 google_apis::test_util::CreateCopyResultCallback(&error)); | 67 google_apis::test_util::CreateCopyResultCallback(&error)); |
67 test_util::RunBlockingPoolTask(); | 68 content::RunAllBlockingPoolTasksUntilIdle(); |
68 EXPECT_EQ(FILE_ERROR_EXISTS, error); | 69 EXPECT_EQ(FILE_ERROR_EXISTS, error); |
69 | 70 |
70 // Create succeeds if is_exclusive = false and a file exists. | 71 // Create succeeds if is_exclusive = false and a file exists. |
71 operation.CreateFile( | 72 operation.CreateFile( |
72 kExistingFile, | 73 kExistingFile, |
73 false, // is_exclusive | 74 false, // is_exclusive |
74 std::string(), // no predetermined mime type | 75 std::string(), // no predetermined mime type |
75 google_apis::test_util::CreateCopyResultCallback(&error)); | 76 google_apis::test_util::CreateCopyResultCallback(&error)); |
76 test_util::RunBlockingPoolTask(); | 77 content::RunAllBlockingPoolTasksUntilIdle(); |
77 EXPECT_EQ(FILE_ERROR_OK, error); | 78 EXPECT_EQ(FILE_ERROR_OK, error); |
78 | 79 |
79 // Create fails if a directory existed even when is_exclusive = false. | 80 // Create fails if a directory existed even when is_exclusive = false. |
80 operation.CreateFile( | 81 operation.CreateFile( |
81 kExistingDirectory, | 82 kExistingDirectory, |
82 false, // is_exclusive | 83 false, // is_exclusive |
83 std::string(), // no predetermined mime type | 84 std::string(), // no predetermined mime type |
84 google_apis::test_util::CreateCopyResultCallback(&error)); | 85 google_apis::test_util::CreateCopyResultCallback(&error)); |
85 test_util::RunBlockingPoolTask(); | 86 content::RunAllBlockingPoolTasksUntilIdle(); |
86 EXPECT_EQ(FILE_ERROR_EXISTS, error); | 87 EXPECT_EQ(FILE_ERROR_EXISTS, error); |
87 | 88 |
88 // Create succeeds if no entry exists. | 89 // Create succeeds if no entry exists. |
89 operation.CreateFile( | 90 operation.CreateFile( |
90 kNonExistingFile, | 91 kNonExistingFile, |
91 true, // is_exclusive | 92 true, // is_exclusive |
92 std::string(), // no predetermined mime type | 93 std::string(), // no predetermined mime type |
93 google_apis::test_util::CreateCopyResultCallback(&error)); | 94 google_apis::test_util::CreateCopyResultCallback(&error)); |
94 test_util::RunBlockingPoolTask(); | 95 content::RunAllBlockingPoolTasksUntilIdle(); |
95 EXPECT_EQ(FILE_ERROR_OK, error); | 96 EXPECT_EQ(FILE_ERROR_OK, error); |
96 | 97 |
97 // Create fails if the parent directory does not exist. | 98 // Create fails if the parent directory does not exist. |
98 operation.CreateFile( | 99 operation.CreateFile( |
99 kFileInNonExistingDirectory, | 100 kFileInNonExistingDirectory, |
100 false, // is_exclusive | 101 false, // is_exclusive |
101 std::string(), // no predetermined mime type | 102 std::string(), // no predetermined mime type |
102 google_apis::test_util::CreateCopyResultCallback(&error)); | 103 google_apis::test_util::CreateCopyResultCallback(&error)); |
103 test_util::RunBlockingPoolTask(); | 104 content::RunAllBlockingPoolTasksUntilIdle(); |
104 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error); | 105 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error); |
105 } | 106 } |
106 | 107 |
107 TEST_F(CreateFileOperationTest, CreateFileMimeType) { | 108 TEST_F(CreateFileOperationTest, CreateFileMimeType) { |
108 CreateFileOperation operation(blocking_task_runner(), | 109 CreateFileOperation operation(blocking_task_runner(), |
109 observer(), | 110 observer(), |
110 metadata()); | 111 metadata()); |
111 | 112 |
112 const base::FilePath kPng1(FILE_PATH_LITERAL("drive/root/1.png")); | 113 const base::FilePath kPng1(FILE_PATH_LITERAL("drive/root/1.png")); |
113 const base::FilePath kPng2(FILE_PATH_LITERAL("drive/root/2.png")); | 114 const base::FilePath kPng2(FILE_PATH_LITERAL("drive/root/2.png")); |
114 const base::FilePath kUnknown(FILE_PATH_LITERAL("drive/root/3.unknown")); | 115 const base::FilePath kUnknown(FILE_PATH_LITERAL("drive/root/3.unknown")); |
115 const std::string kSpecialMimeType("application/x-createfile-test"); | 116 const std::string kSpecialMimeType("application/x-createfile-test"); |
116 | 117 |
117 FileError error = FILE_ERROR_FAILED; | 118 FileError error = FILE_ERROR_FAILED; |
118 operation.CreateFile( | 119 operation.CreateFile( |
119 kPng1, | 120 kPng1, |
120 false, // is_exclusive | 121 false, // is_exclusive |
121 std::string(), // no predetermined mime type | 122 std::string(), // no predetermined mime type |
122 google_apis::test_util::CreateCopyResultCallback(&error)); | 123 google_apis::test_util::CreateCopyResultCallback(&error)); |
123 test_util::RunBlockingPoolTask(); | 124 content::RunAllBlockingPoolTasksUntilIdle(); |
124 EXPECT_EQ(FILE_ERROR_OK, error); | 125 EXPECT_EQ(FILE_ERROR_OK, error); |
125 | 126 |
126 // If no mime type is specified, it is guessed from the file name. | 127 // If no mime type is specified, it is guessed from the file name. |
127 ResourceEntry entry; | 128 ResourceEntry entry; |
128 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kPng1, &entry)); | 129 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kPng1, &entry)); |
129 EXPECT_EQ("image/png", entry.file_specific_info().content_mime_type()); | 130 EXPECT_EQ("image/png", entry.file_specific_info().content_mime_type()); |
130 | 131 |
131 error = FILE_ERROR_FAILED; | 132 error = FILE_ERROR_FAILED; |
132 operation.CreateFile( | 133 operation.CreateFile( |
133 kPng2, | 134 kPng2, |
134 false, // is_exclusive | 135 false, // is_exclusive |
135 kSpecialMimeType, | 136 kSpecialMimeType, |
136 google_apis::test_util::CreateCopyResultCallback(&error)); | 137 google_apis::test_util::CreateCopyResultCallback(&error)); |
137 test_util::RunBlockingPoolTask(); | 138 content::RunAllBlockingPoolTasksUntilIdle(); |
138 EXPECT_EQ(FILE_ERROR_OK, error); | 139 EXPECT_EQ(FILE_ERROR_OK, error); |
139 | 140 |
140 // If the mime type is explicitly set, respect it. | 141 // If the mime type is explicitly set, respect it. |
141 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kPng2, &entry)); | 142 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kPng2, &entry)); |
142 EXPECT_EQ(kSpecialMimeType, entry.file_specific_info().content_mime_type()); | 143 EXPECT_EQ(kSpecialMimeType, entry.file_specific_info().content_mime_type()); |
143 | 144 |
144 error = FILE_ERROR_FAILED; | 145 error = FILE_ERROR_FAILED; |
145 operation.CreateFile( | 146 operation.CreateFile( |
146 kUnknown, | 147 kUnknown, |
147 false, // is_exclusive | 148 false, // is_exclusive |
148 std::string(), // no predetermined mime type | 149 std::string(), // no predetermined mime type |
149 google_apis::test_util::CreateCopyResultCallback(&error)); | 150 google_apis::test_util::CreateCopyResultCallback(&error)); |
150 test_util::RunBlockingPoolTask(); | 151 content::RunAllBlockingPoolTasksUntilIdle(); |
151 EXPECT_EQ(FILE_ERROR_OK, error); | 152 EXPECT_EQ(FILE_ERROR_OK, error); |
152 | 153 |
153 // If the mime type is not set and unknown, default to octet-stream. | 154 // If the mime type is not set and unknown, default to octet-stream. |
154 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kUnknown, &entry)); | 155 ASSERT_EQ(FILE_ERROR_OK, GetLocalResourceEntry(kUnknown, &entry)); |
155 EXPECT_EQ("application/octet-stream", | 156 EXPECT_EQ("application/octet-stream", |
156 entry.file_specific_info().content_mime_type()); | 157 entry.file_specific_info().content_mime_type()); |
157 } | 158 } |
158 | 159 |
159 } // namespace file_system | 160 } // namespace file_system |
160 } // namespace drive | 161 } // namespace drive |
OLD | NEW |