1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <cstdio>
17 #include <thread>
18 #include <unistd.h>
19
20 #include <gtest/gtest.h>
21 #include <nlohmann/json.hpp>
22
23 #include "external_file_access_test.h"
24 #include "accesstoken_kit.h"
25 #include "context_impl.h"
26 #include "file_access_framework_errno.h"
27 #include "file_info_shared_memory.h"
28 #include "iservice_registry.h"
29 #include "nativetoken_kit.h"
30 #include "token_setproc.h"
31
32 namespace OHOS::FileAccessFwk {
33 static int g_num = 0;
34
35 /**
36 * @tc.number: user_file_service_external_file_access_OpenFile_0000
37 * @tc.name: external_file_access_OpenFile_0000
38 * @tc.desc: Test function of OpenFile interface for SUCCESS.
39 * @tc.size: MEDIUM
40 * @tc.type: FUNC
41 * @tc.level Level 1
42 * @tc.require: SR000H0386
43 */
44 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0000, testing::ext::TestSize.Level1)
45 {
46 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0000";
47 try {
48 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
49 vector<RootInfo> info;
50 EXPECT_NE(fileAccessHelper, nullptr);
51 int result = fileAccessHelper->GetRoots(info);
52 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
53 for (size_t i = 0; i < info.size(); i++) {
54 Uri parentUri(info[i].uri);
55 GTEST_LOG_(INFO) << parentUri.ToString();
56 Uri newDirUriTest1("");
57 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
58 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
59 Uri newFileUri("");
60 result = fileAccessHelper->CreateFile(newDirUriTest1, "external_file_access_OpenFile_0000.txt", newFileUri);
61 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
62 int fd;
63 result = fileAccessHelper->OpenFile(newFileUri, WRITE_READ, fd);
64 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
65 GTEST_LOG_(INFO) << "OpenFile_0000 result:" << result;
66 close(fd);
67 result = fileAccessHelper->Delete(newDirUriTest1);
68 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
69 }
70 } catch (...) {
71 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0000 occurs an exception.";
72 }
73 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0000";
74 }
75
76 /**
77 * @tc.number: user_file_service_external_file_access_OpenFile_0001
78 * @tc.name: external_file_access_OpenFile_0001
79 * @tc.desc: Test function of OpenFile interface for ERROR which Uri is null.
80 * @tc.size: MEDIUM
81 * @tc.type: FUNC
82 * @tc.level Level 1
83 * @tc.require: SR000H0386
84 */
85 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0001, testing::ext::TestSize.Level1)
86 {
87 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0001";
88 try {
89 Uri uri("");
90 int fd;
91 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
92 EXPECT_NE(fileAccessHelper, nullptr);
93 int result = fileAccessHelper->OpenFile(uri, WRITE_READ, fd);
94 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
95 GTEST_LOG_(INFO) << "OpenFile_0001 result:" << result;
96 } catch (...) {
97 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0001 occurs an exception.";
98 }
99 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0001";
100 }
101
102 /**
103 * @tc.number: user_file_service_external_file_access_OpenFile_0002
104 * @tc.name: external_file_access_OpenFile_0002
105 * @tc.desc: Test function of OpenFile interface for ERROR which Uri is absolute path.
106 * @tc.size: MEDIUM
107 * @tc.type: FUNC
108 * @tc.level Level 1
109 * @tc.require: SR000H0386
110 */
111 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0002, testing::ext::TestSize.Level1)
112 {
113 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0002";
114 try {
115 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
116 vector<RootInfo> info;
117 EXPECT_NE(fileAccessHelper, nullptr);
118 int result = fileAccessHelper->GetRoots(info);
119 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
120 for (size_t i = 0; i < info.size(); i++) {
121 Uri parentUri(info[i].uri);
122 Uri newFileUri("");
123 result = fileAccessHelper->CreateFile(parentUri, "external_file_access_OpenFile_0002.txt", newFileUri);
124 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
125 Uri uri("storage/media/100/local/files/Download/external_file_access_OpenFile_0002.txt");
126 int fd;
127 result = fileAccessHelper->OpenFile(uri, WRITE_READ, fd);
128 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
129 GTEST_LOG_(INFO) << "OpenFile_0002 result:" << result;
130 result = fileAccessHelper->Delete(newFileUri);
131 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
132 }
133 } catch (...) {
134 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0002 occurs an exception.";
135 }
136 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0002";
137 }
138
139 /**
140 * @tc.number: user_file_service_external_file_access_OpenFile_0003
141 * @tc.name: external_file_access_OpenFile_0003
142 * @tc.desc: Test function of OpenFile interface for ERROR which Uri is special symbols.
143 * @tc.size: MEDIUM
144 * @tc.type: FUNC
145 * @tc.level Level 1
146 * @tc.require: SR000H0386
147 */
148 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0003, testing::ext::TestSize.Level1)
149 {
150 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0003";
151 try {
152 Uri uri("~!@#$%^&*()_");
153 int fd;
154 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
155 EXPECT_NE(fileAccessHelper, nullptr);
156 int result = fileAccessHelper->OpenFile(uri, WRITE_READ, fd);
157 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
158 GTEST_LOG_(INFO) << "OpenFile_0003 result:" << result;
159 } catch (...) {
160 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0003 occurs an exception.";
161 }
162 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0003";
163 }
164
165 /**
166 * @tc.number: user_file_service_external_file_access_OpenFile_0004
167 * @tc.name: external_file_access_OpenFile_0004
168 * @tc.desc: Test function of OpenFile interface for ERROR which flag is -1.
169 * @tc.size: MEDIUM
170 * @tc.type: FUNC
171 * @tc.level Level 1
172 * @tc.require: SR000H0386
173 */
174 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0004, testing::ext::TestSize.Level1)
175 {
176 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0004";
177 try {
178 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
179 EXPECT_NE(fileAccessHelper, nullptr);
180 vector<RootInfo> info;
181 int result = fileAccessHelper->GetRoots(info);
182 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
183 for (size_t i = 0; i < info.size(); i++) {
184 Uri parentUri(info[i].uri);
185 Uri newFileUri("");
186 result = fileAccessHelper->CreateFile(parentUri, "external_file_access_OpenFile_0004.txt", newFileUri);
187 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
188 int fd;
189 int flag = -1;
190 result = fileAccessHelper->OpenFile(newFileUri, flag, fd);
191 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
192 GTEST_LOG_(INFO) << "OpenFile_0004 result:" << result;
193 result = fileAccessHelper->Delete(newFileUri);
194 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
195 }
196 } catch (...) {
197 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0004 occurs an exception.";
198 }
199 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0004";
200 }
201
202 /**
203 * @tc.number: user_file_service_external_file_access_OpenFile_0005
204 * @tc.name: external_file_access_OpenFile_0005
205 * @tc.desc: Test function of OpenFile interface for SUCCESS which flag is 0.
206 * @tc.size: MEDIUM
207 * @tc.type: FUNC
208 * @tc.level Level 1
209 * @tc.require: SR000H0386
210 */
211 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0005, testing::ext::TestSize.Level1)
212 {
213 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0005";
214 try {
215 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
216 EXPECT_NE(fileAccessHelper, nullptr);
217 vector<RootInfo> info;
218 int result = fileAccessHelper->GetRoots(info);
219 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
220 for (size_t i = 0; i < info.size(); i++) {
221 Uri parentUri(info[i].uri);
222 Uri newFileUri("");
223 result = fileAccessHelper->CreateFile(parentUri, "external_file_access_OpenFile_0005.txt", newFileUri);
224 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
225 int fd;
226 result = fileAccessHelper->OpenFile(newFileUri, READ, fd);
227 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
228 GTEST_LOG_(INFO) << "OpenFile_0005 result:" << result;
229 close(fd);
230 result = fileAccessHelper->Delete(newFileUri);
231 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
232 }
233 } catch (...) {
234 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0005 occurs an exception.";
235 }
236 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0005";
237 }
238
239 /**
240 * @tc.number: user_file_service_external_file_access_OpenFile_0006
241 * @tc.name: external_file_access_OpenFile_0006
242 * @tc.desc: Test function of OpenFile interface for SUCCESS which flag is 1.
243 * @tc.size: MEDIUM
244 * @tc.type: FUNC
245 * @tc.level Level 1
246 * @tc.require: SR000H0386
247 */
248 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0006, testing::ext::TestSize.Level1)
249 {
250 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0006";
251 try {
252 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
253 EXPECT_NE(fileAccessHelper, nullptr);
254 vector<RootInfo> info;
255 int result = fileAccessHelper->GetRoots(info);
256 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
257 for (size_t i = 0; i < info.size(); i++) {
258 Uri parentUri(info[i].uri);
259 Uri newFileUri("");
260 result = fileAccessHelper->CreateFile(parentUri, "external_file_access_OpenFile_0006.txt", newFileUri);
261 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
262 int fd;
263 result = fileAccessHelper->OpenFile(newFileUri, WRITE, fd);
264 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
265 GTEST_LOG_(INFO) << "OpenFile_0006 result:" << result;
266 close(fd);
267 result = fileAccessHelper->Delete(newFileUri);
268 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
269 }
270 } catch (...) {
271 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0006 occurs an exception.";
272 }
273 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0006";
274 }
275
276 /**
277 * @tc.number: user_file_service_external_file_access_OpenFile_0007
278 * @tc.name: external_file_access_OpenFile_0007
279 * @tc.desc: Test function of OpenFile interface for SUCCESS which flag is 2.
280 * @tc.size: MEDIUM
281 * @tc.type: FUNC
282 * @tc.level Level 1
283 * @tc.require: SR000H0386
284 */
285 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0007, testing::ext::TestSize.Level1)
286 {
287 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0007";
288 try {
289 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
290 EXPECT_NE(fileAccessHelper, nullptr);
291 vector<RootInfo> info;
292 int result = fileAccessHelper->GetRoots(info);
293 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
294 for (size_t i = 0; i < info.size(); i++) {
295 Uri parentUri(info[i].uri);
296 Uri newFileUri("");
297 result = fileAccessHelper->CreateFile(parentUri, "external_file_access_OpenFile_0007.txt", newFileUri);
298 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
299 int fd;
300 result = fileAccessHelper->OpenFile(newFileUri, WRITE_READ, fd);
301 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
302 GTEST_LOG_(INFO) << "OpenFile_0007 result:" << result;
303 close(fd);
304 result = fileAccessHelper->Delete(newFileUri);
305 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
306 }
307 } catch (...) {
308 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0007 occurs an exception.";
309 }
310 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0007";
311 }
312
OpenFileTdd(shared_ptr<FileAccessHelper> fahs,Uri uri,int flag,int fd)313 static void OpenFileTdd(shared_ptr<FileAccessHelper> fahs, Uri uri, int flag, int fd)
314 {
315 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFileTdd";
316 int ret = fahs->OpenFile(uri, flag, fd);
317 if (ret != OHOS::FileAccessFwk::ERR_OK) {
318 GTEST_LOG_(ERROR) << "OpenFile get result error, code:" << ret;
319 return;
320 }
321 EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
322 EXPECT_GE(fd, OHOS::FileAccessFwk::ERR_OK);
323 g_num++;
324 close(fd);
325 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFileTdd";
326 }
327
328 /**
329 * @tc.number: user_file_service_external_file_access_OpenFile_0008
330 * @tc.name: external_file_access_OpenFile_0008
331 * @tc.desc: Test function of OpenFile interface for SUCCESS which Concurrent.
332 * @tc.size: MEDIUM
333 * @tc.type: FUNC
334 * @tc.level Level 1
335 * @tc.require: SR000H0386
336 */
337 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0008, testing::ext::TestSize.Level1)
338 {
339 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0008";
340 try {
341 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
342 EXPECT_NE(fileAccessHelper, nullptr);
343 vector<RootInfo> info;
344 int result = fileAccessHelper->GetRoots(info);
345 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
346 for (size_t i = 0; i < info.size(); i++) {
347 Uri parentUri(info[i].uri);
348 Uri newFileUri("");
349 int fd;
350 std::string displayName = "test1.txt";
351 g_num = 0;
352 result = fileAccessHelper->CreateFile(parentUri, displayName, newFileUri);
353 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
354 for (size_t j = 0; j < INIT_THREADS_NUMBER; j++) {
355 std::thread execthread(OpenFileTdd, fileAccessHelper, newFileUri, WRITE_READ, fd);
356 execthread.join();
357 }
358 EXPECT_EQ(g_num, INIT_THREADS_NUMBER);
359 result = fileAccessHelper->Delete(newFileUri);
360 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
361 }
362 } catch (...) {
363 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0008 occurs an exception.";
364 }
365 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0008";
366 }
367
368 /**
369 * @tc.number: user_file_service_external_file_access_OpenFile_0009
370 * @tc.name: external_file_access_OpenFile_0009
371 * @tc.desc: Test function of OpenFile interface for FAILED because of GetProxyByUri failed.
372 * @tc.size: MEDIUM
373 * @tc.type: FUNC
374 * @tc.level Level 1
375 * @tc.require: SR000H0386
376 */
377 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0009, testing::ext::TestSize.Level1)
378 {
379 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0009";
380 try {
381 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
382 EXPECT_NE(fileAccessHelper, nullptr);
383 vector<RootInfo> info;
384 int result = fileAccessHelper->GetRoots(info);
385 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
386 for (size_t i = 0; i < info.size(); i++) {
387 std::string str = info[i].uri;
388 if (ReplaceBundleName(str, "ohos.com.NotExistBundleName")) {
389 int fd;
390 Uri newFileUri(str + "/NotExistFile.txt");
391 result = fileAccessHelper->OpenFile(newFileUri, WRITE_READ, fd);
392 EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
393 GTEST_LOG_(INFO) << "OpenFile_0009 result:" << result;
394 } else {
395 EXPECT_TRUE(false);
396 }
397 }
398 } catch (...) {
399 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0009 occurs an exception.";
400 }
401 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0009";
402 }
403
404 /**
405 * @tc.number: user_file_service_external_file_access_OpenFile_0010
406 * @tc.name: external_file_access_OpenFile_0010
407 * @tc.desc: Test function of OpenFile interface for SUCCESS, the file name is chinese.
408 * @tc.size: MEDIUM
409 * @tc.type: FUNC
410 * @tc.level Level 1
411 * @tc.require: I70SX9
412 */
413 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0010, testing::ext::TestSize.Level1)
414 {
415 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0010";
416 try {
417 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
418 EXPECT_NE(fileAccessHelper, nullptr);
419 vector<RootInfo> info;
420 int result = fileAccessHelper->GetRoots(info);
421 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
422 for (size_t i = 0; i < info.size(); i++) {
423 Uri parentUri(info[i].uri);
424 GTEST_LOG_(INFO) << parentUri.ToString();
425 Uri newDirUriTest1("");
426 result = fileAccessHelper->Mkdir(parentUri, "测试目录", newDirUriTest1);
427 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
428 EXPECT_EQ(newDirUriTest1.ToString().find("测试目录"), std::string::npos);
429 Uri newFileUri("");
430 result = fileAccessHelper->CreateFile(newDirUriTest1, "打开文件.txt", newFileUri);
431 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
432 EXPECT_EQ(newFileUri.ToString().find("打开文件.txt"), std::string::npos);
433 int fd;
434 result = fileAccessHelper->OpenFile(newFileUri, WRITE_READ, fd);
435 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
436 GTEST_LOG_(INFO) << "OpenFile_0010 result:" << result;
437 close(fd);
438 result = fileAccessHelper->Delete(newDirUriTest1);
439 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
440 }
441 } catch (...) {
442 GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0010 occurs an exception.";
443 }
444 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0010";
445 }
446
447 /**
448 * @tc.number: user_file_service_external_file_access_Delete_0000
449 * @tc.name: external_file_access_Delete_0000
450 * @tc.desc: Test function of Delete interface for SUCCESS which delete file.
451 * @tc.size: MEDIUM
452 * @tc.type: FUNC
453 * @tc.level Level 1
454 * @tc.require: SR000H0386
455 */
456 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0000, testing::ext::TestSize.Level1)
457 {
458 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0000";
459 try {
460 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
461 EXPECT_NE(fileAccessHelper, nullptr);
462 vector<RootInfo> info;
463 int result = fileAccessHelper->GetRoots(info);
464 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
465 for (size_t i = 0; i < info.size(); i++) {
466 Uri parentUri(info[i].uri);
467 Uri newDirUriTest("");
468 result = fileAccessHelper->Mkdir(parentUri, "test", newDirUriTest);
469 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
470 Uri newFileUri("");
471 result = fileAccessHelper->CreateFile(newDirUriTest, "external_file_access_Delete_0000.txt", newFileUri);
472 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
473 result = fileAccessHelper->Delete(newFileUri);
474 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
475 GTEST_LOG_(INFO) << "Delete_0000 result:" << result;
476 result = fileAccessHelper->Delete(newDirUriTest);
477 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
478 }
479 } catch (...) {
480 GTEST_LOG_(ERROR) << "external_file_access_Delete_0000 occurs an exception.";
481 }
482 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0000";
483 }
484
485 /**
486 * @tc.number: user_file_service_external_file_access_Delete_0001
487 * @tc.name: external_file_access_Delete_0001
488 * @tc.desc: Test function of Delete interface for SUCCESS which delete folder.
489 * @tc.size: MEDIUM
490 * @tc.type: FUNC
491 * @tc.level Level 1
492 * @tc.require: SR000H0386
493 */
494 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0001, testing::ext::TestSize.Level1)
495 {
496 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0001";
497 try {
498 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
499 EXPECT_NE(fileAccessHelper, nullptr);
500 vector<RootInfo> info;
501 int result = fileAccessHelper->GetRoots(info);
502 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
503 for (size_t i = 0; i < info.size(); i++) {
504 Uri parentUri(info[i].uri);
505 Uri newDirUriTest("");
506 result = fileAccessHelper->Mkdir(parentUri, "test", newDirUriTest);
507 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
508 result = fileAccessHelper->Delete(newDirUriTest);
509 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
510 GTEST_LOG_(INFO) << "Delete_0001 result:" << result;
511 }
512 } catch (...) {
513 GTEST_LOG_(ERROR) << "external_file_access_Delete_0001 occurs an exception.";
514 }
515 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0001";
516 }
517
518 /**
519 * @tc.number: user_file_service_external_file_access_Delete_0002
520 * @tc.name: external_file_access_Delete_0002
521 * @tc.desc: Test function of Delete interface for ERROR which selectFileUri is null.
522 * @tc.size: MEDIUM
523 * @tc.type: FUNC
524 * @tc.level Level 1
525 * @tc.require: SR000H0386
526 */
527 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0002, testing::ext::TestSize.Level1)
528 {
529 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0002";
530 try {
531 Uri selectFileUri("");
532 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
533 EXPECT_NE(fileAccessHelper, nullptr);
534 int result = fileAccessHelper->Delete(selectFileUri);
535 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
536 GTEST_LOG_(INFO) << "Delete_0002 result:" << result;
537 } catch (...) {
538 GTEST_LOG_(ERROR) << "external_file_access_Delete_0002 occurs an exception.";
539 }
540 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0002";
541 }
542
543 /**
544 * @tc.number: user_file_service_external_file_access_Delete_0003
545 * @tc.name: external_file_access_Delete_0003
546 * @tc.desc: Test function of Delete interface for ERROR which selectFileUri is absolute path.
547 * @tc.size: MEDIUM
548 * @tc.type: FUNC
549 * @tc.level Level 1
550 * @tc.require: SR000H0386
551 */
552 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0003, testing::ext::TestSize.Level1)
553 {
554 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0003";
555 try {
556 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
557 EXPECT_NE(fileAccessHelper, nullptr);
558 vector<RootInfo> info;
559 int result = fileAccessHelper->GetRoots(info);
560 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
561 for (size_t i = 0; i < info.size(); i++) {
562 Uri parentUri(info[i].uri);
563 Uri newDirUriTest("");
564 result = fileAccessHelper->Mkdir(parentUri, "test", newDirUriTest);
565 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
566 Uri selectFileUri("storage/media/100/local/files/Download/test");
567 result = fileAccessHelper->Delete(selectFileUri);
568 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
569 result = fileAccessHelper->Delete(newDirUriTest);
570 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
571 GTEST_LOG_(INFO) << "Delete_0003 result:" << result;
572 }
573 } catch (...) {
574 GTEST_LOG_(ERROR) << "external_file_access_Delete_0003 occurs an exception.";
575 }
576 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0003";
577 }
578
579 /**
580 * @tc.number: user_file_service_external_file_access_Delete_0004
581 * @tc.name: external_file_access_Delete_0004
582 * @tc.desc: Test function of Delete interface for ERROR which selectFileUri is special symbols.
583 * @tc.size: MEDIUM
584 * @tc.type: FUNC
585 * @tc.level Level 1
586 * @tc.require: SR000H0386
587 */
588 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0004, testing::ext::TestSize.Level1)
589 {
590 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0004";
591 try {
592 Uri selectFileUri("!@#$%^&*()");
593 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
594 EXPECT_NE(fileAccessHelper, nullptr);
595 int result = fileAccessHelper->Delete(selectFileUri);
596 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
597 GTEST_LOG_(INFO) << "Delete_0004 result:" << result;
598 } catch (...) {
599 GTEST_LOG_(ERROR) << "external_file_access_Delete_0004 occurs an exception.";
600 }
601 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0004";
602 }
603
DeleteTdd(shared_ptr<FileAccessHelper> fahs,Uri selectFile)604 static void DeleteTdd(shared_ptr<FileAccessHelper> fahs, Uri selectFile)
605 {
606 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_DeleteTdd";
607 int ret = fahs->Delete(selectFile);
608 if (ret != OHOS::FileAccessFwk::ERR_OK) {
609 GTEST_LOG_(ERROR) << "DeleteTdd get result error, code:" << ret;
610 return;
611 }
612 EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
613 g_num++;
614 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_DeleteTdd";
615 }
616
617 /**
618 * @tc.number: user_file_service_external_file_access_Delete_0005
619 * @tc.name: external_file_access_Delete_0005
620 * @tc.desc: Test function of Delete interface for SUCCESS which Concurrent.
621 * @tc.size: MEDIUM
622 * @tc.type: FUNC
623 * @tc.level Level 1
624 * @tc.require: SR000H0386
625 */
626 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0005, testing::ext::TestSize.Level1)
627 {
628 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0005";
629 try {
630 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
631 EXPECT_NE(fileAccessHelper, nullptr);
632 vector<RootInfo> info;
633 int result = fileAccessHelper->GetRoots(info);
634 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
635 for (size_t i = 0; i < info.size(); i++) {
636 Uri parentUri(info[i].uri);
637 Uri newDirUriTest("");
638 result = fileAccessHelper->Mkdir(parentUri, "test", newDirUriTest);
639 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
640 Uri newFileUri("");
641 std::string displayName = "test1.txt";
642 result = fileAccessHelper->CreateFile(newDirUriTest, displayName, newFileUri);
643 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
644 g_num = 0;
645 for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
646 std::thread execthread(DeleteTdd, fileAccessHelper, newFileUri);
647 execthread.join();
648 }
649 EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
650 result = fileAccessHelper->Delete(newDirUriTest);
651 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
652 }
653 } catch (...) {
654 GTEST_LOG_(ERROR) << "external_file_access_Delete_0005 occurs an exception.";
655 }
656 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0005";
657 }
658
659 /**
660 * @tc.number: user_file_service_external_file_access_Delete_0006
661 * @tc.name: external_file_access_Delete_0006
662 * @tc.desc: Test function of Delete interface for ERROR because of GetProxyByUri failed.
663 * @tc.size: MEDIUM
664 * @tc.type: FUNC
665 * @tc.level Level 1
666 * @tc.require: SR000H0386
667 */
668 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0006, testing::ext::TestSize.Level1)
669 {
670 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0006";
671 try {
672 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
673 EXPECT_NE(fileAccessHelper, nullptr);
674 vector<RootInfo> info;
675 int result = fileAccessHelper->GetRoots(info);
676 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
677 for (size_t i = 0; i < info.size(); i++) {
678 std::string str = info[i].uri;
679 if (ReplaceBundleName(str, "ohos.com.NotExistBundleName")) {
680 Uri selectFileUri(str);
681 int result = fileAccessHelper->Delete(selectFileUri);
682 EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
683 GTEST_LOG_(INFO) << "Delete_0006 result:" << result;
684 } else {
685 EXPECT_TRUE(false);
686 }
687 }
688 } catch (...) {
689 GTEST_LOG_(ERROR) << "external_file_access_Delete_0006 occurs an exception.";
690 }
691 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0006";
692 }
693
694 /**
695 * @tc.number: user_file_service_external_file_access_Delete_0007
696 * @tc.name: external_file_access_Delete_0007
697 * @tc.desc: Test function of Delete interface for SUCCESS which delete file, the file name is chinese.
698 * @tc.size: MEDIUM
699 * @tc.type: FUNC
700 * @tc.level Level 1
701 * @tc.require: I70SX9
702 */
703 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0007, testing::ext::TestSize.Level1)
704 {
705 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0007";
706 try {
707 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
708 EXPECT_NE(fileAccessHelper, nullptr);
709 vector<RootInfo> info;
710 int result = fileAccessHelper->GetRoots(info);
711 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
712 for (size_t i = 0; i < info.size(); i++) {
713 Uri parentUri(info[i].uri);
714 Uri newDirUriTest("");
715 result = fileAccessHelper->Mkdir(parentUri, "测试目录", newDirUriTest);
716 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
717 EXPECT_EQ(newDirUriTest.ToString().find("测试目录"), std::string::npos);
718 Uri newFileUri("");
719 result = fileAccessHelper->CreateFile(newDirUriTest, "删除文件.txt", newFileUri);
720 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
721 EXPECT_EQ(newFileUri.ToString().find("删除文件.txt"), std::string::npos);
722 result = fileAccessHelper->Delete(newFileUri);
723 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
724 GTEST_LOG_(INFO) << "Delete_0007 result:" << result;
725 result = fileAccessHelper->Delete(newDirUriTest);
726 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
727 }
728 } catch (...) {
729 GTEST_LOG_(ERROR) << "external_file_access_Delete_0007 occurs an exception.";
730 }
731 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0007";
732 }
733
734 /**
735 * @tc.number: user_file_service_external_file_access_Move_0000
736 * @tc.name: external_file_access_Move_0000
737 * @tc.desc: Test function of Move interface for SUCCESS which move file.
738 * @tc.size: MEDIUM
739 * @tc.type: FUNC
740 * @tc.level Level 1
741 * @tc.require: SR000H0387
742 */
743 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0000, testing::ext::TestSize.Level1)
744 {
745 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0000";
746 try {
747 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
748 EXPECT_NE(fileAccessHelper, nullptr);
749 vector<RootInfo> info;
750 int result = fileAccessHelper->GetRoots(info);
751 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
752 for (size_t i = 0; i < info.size(); i++) {
753 Uri parentUri(info[i].uri);
754 Uri newDirUriTest1("");
755 Uri newDirUriTest2("");
756 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
757 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
758 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
759 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
760 Uri testUri("");
761 result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", testUri);
762 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
763 Uri testUri2("");
764 result = fileAccessHelper->Move(testUri, newDirUriTest2, testUri2);
765 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
766 GTEST_LOG_(INFO) << "Move_0000 result:" << result;
767 result = fileAccessHelper->Delete(newDirUriTest1);
768 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
769 result = fileAccessHelper->Delete(newDirUriTest2);
770 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
771 }
772 } catch (...) {
773 GTEST_LOG_(ERROR) << "external_file_access_Move_0000 occurs an exception.";
774 }
775 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0000";
776 }
777
778 /**
779 * @tc.number: user_file_service_external_file_access_Move_0001
780 * @tc.name: external_file_access_Move_0001
781 * @tc.desc: Test function of Move interface for SUCCESS which move folder.
782 * @tc.size: MEDIUM
783 * @tc.type: FUNC
784 * @tc.level Level 1
785 * @tc.require: SR000H0387
786 */
787 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0001, testing::ext::TestSize.Level1)
788 {
789 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0001";
790 try {
791 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
792 EXPECT_NE(fileAccessHelper, nullptr);
793 vector<RootInfo> info;
794 int result = fileAccessHelper->GetRoots(info);
795 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
796 for (size_t i = 0; i < info.size(); i++) {
797 Uri parentUri(info[i].uri);
798 Uri newDirUriTest1("");
799 Uri newDirUriTest2("");
800 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
801 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
802 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
803 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
804 Uri testUri("");
805 result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", testUri);
806 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
807 Uri testUri2("");
808 result = fileAccessHelper->Move(newDirUriTest1, newDirUriTest2, testUri2);
809 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
810 GTEST_LOG_(INFO) << "Move_0001 result:" << result;
811 result = fileAccessHelper->Delete(newDirUriTest2);
812 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
813 }
814 } catch (...) {
815 GTEST_LOG_(ERROR) << "external_file_access_Move_0001 occurs an exception.";
816 }
817 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0001";
818 }
819
820 /**
821 * @tc.number: user_file_service_external_file_access_Move_0002
822 * @tc.name: external_file_access_Move_0002
823 * @tc.desc: Test function of Move interface for ERROR which sourceFileUri is null.
824 * @tc.size: MEDIUM
825 * @tc.type: FUNC
826 * @tc.level Level 1
827 * @tc.require: SR000H0387
828 */
829 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0002, testing::ext::TestSize.Level1)
830 {
831 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0002";
832 try {
833 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
834 EXPECT_NE(fileAccessHelper, nullptr);
835 vector<RootInfo> info;
836 int result = fileAccessHelper->GetRoots(info);
837 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
838 for (size_t i = 0; i < info.size(); i++) {
839 Uri parentUri(info[i].uri);
840 Uri newDirUriTest("");
841 result = fileAccessHelper->Mkdir(parentUri, "test", newDirUriTest);
842 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
843 Uri testUri("");
844 Uri sourceFileUri("");
845 result = fileAccessHelper->Move(sourceFileUri, newDirUriTest, testUri);
846 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
847 GTEST_LOG_(INFO) << "Move_0002 result:" << result;
848 result = fileAccessHelper->Delete(newDirUriTest);
849 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
850 }
851 } catch (...) {
852 GTEST_LOG_(ERROR) << "external_file_access_Move_0002 occurs an exception.";
853 }
854 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0002";
855 }
856
857 /**
858 * @tc.number: user_file_service_external_file_access_Move_0003
859 * @tc.name: external_file_access_Move_0003
860 * @tc.desc: Test function of Move interface for ERROR which sourceFileUri is absolute path.
861 * @tc.size: MEDIUM
862 * @tc.type: FUNC
863 * @tc.level Level 1
864 * @tc.require: SR000H0386
865 */
866 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0003, testing::ext::TestSize.Level1)
867 {
868 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0003";
869 try {
870 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
871 EXPECT_NE(fileAccessHelper, nullptr);
872 vector<RootInfo> info;
873 int result = fileAccessHelper->GetRoots(info);
874 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
875 for (size_t i = 0; i < info.size(); i++) {
876 Uri parentUri(info[i].uri);
877 Uri newDirUriTest1("");
878 Uri newDirUriTest2("");
879 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
880 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
881 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
882 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
883 Uri testUri("");
884 result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", testUri);
885 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
886 Uri testUri2("");
887 Uri sourceFileUri("storage/media/100/local/files/Download/test1/test.txt");
888 result = fileAccessHelper->Move(sourceFileUri, newDirUriTest2, testUri2);
889 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
890 GTEST_LOG_(INFO) << "Move_0003 result:" << result;
891 result = fileAccessHelper->Delete(newDirUriTest1);
892 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
893 result = fileAccessHelper->Delete(newDirUriTest2);
894 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
895 }
896 } catch (...) {
897 GTEST_LOG_(ERROR) << "external_file_access_Move_0003 occurs an exception.";
898 }
899 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0003";
900 }
901
902 /**
903 * @tc.number: user_file_service_external_file_access_Move_0004
904 * @tc.name: external_file_access_Move_0004
905 * @tc.desc: Test function of Move interface for ERROR which sourceFileUri is special symbols.
906 * @tc.size: MEDIUM
907 * @tc.type: FUNC
908 * @tc.level Level 1
909 * @tc.require: SR000H0387
910 */
911 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0004, testing::ext::TestSize.Level1)
912 {
913 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0004";
914 try {
915 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
916 EXPECT_NE(fileAccessHelper, nullptr);
917 vector<RootInfo> info;
918 int result = fileAccessHelper->GetRoots(info);
919 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
920 for (size_t i = 0; i < info.size(); i++) {
921 Uri parentUri(info[i].uri);
922 Uri newDirUriTest("");
923 result = fileAccessHelper->Mkdir(parentUri, "test", newDirUriTest);
924 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
925 Uri testUri("");
926 Uri sourceFileUri("~!@#$%^&*()_");
927 result = fileAccessHelper->Move(sourceFileUri, newDirUriTest, testUri);
928 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
929 GTEST_LOG_(INFO) << "Move_0004 result:" << result;
930 result = fileAccessHelper->Delete(newDirUriTest);
931 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
932 }
933 } catch (...) {
934 GTEST_LOG_(ERROR) << "external_file_access_Move_0004 occurs an exception.";
935 }
936 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0004";
937 }
938
939 /**
940 * @tc.number: user_file_service_external_file_access_Move_0005
941 * @tc.name: external_file_access_Move_0005
942 * @tc.desc: Test function of Move interface for ERROR which targetParentUri is null.
943 * @tc.size: MEDIUM
944 * @tc.type: FUNC
945 * @tc.level Level 1
946 * @tc.require: SR000H0387
947 */
948 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0005, testing::ext::TestSize.Level1)
949 {
950 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0005";
951 try {
952 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
953 EXPECT_NE(fileAccessHelper, nullptr);
954 vector<RootInfo> info;
955 int result = fileAccessHelper->GetRoots(info);
956 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
957 for (size_t i = 0; i < info.size(); i++) {
958 Uri parentUri(info[i].uri);
959 Uri newDirUriTest("");
960 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest);
961 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
962 Uri testUri("");
963 result = fileAccessHelper->CreateFile(newDirUriTest, "test.txt", testUri);
964 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
965 Uri testUri2("");
966 Uri targetParentUri("");
967 result = fileAccessHelper->Move(testUri, targetParentUri, testUri2);
968 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
969 GTEST_LOG_(INFO) << "Move_0005 result:" << result;
970 result = fileAccessHelper->Delete(newDirUriTest);
971 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
972 }
973 } catch (...) {
974 GTEST_LOG_(ERROR) << "external_file_access_Move_0005 occurs an exception.";
975 }
976 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0005";
977 }
978
979 /**
980 * @tc.number: user_file_service_external_file_access_Move_0006
981 * @tc.name: external_file_access_Move_0006
982 * @tc.desc: Test function of Move interface for ERROR which targetParentUri is absolute path.
983 * @tc.size: MEDIUM
984 * @tc.type: FUNC
985 * @tc.level Level 1
986 * @tc.require: SR000H0387
987 */
988 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0006, testing::ext::TestSize.Level1)
989 {
990 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0006";
991 try {
992 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
993 EXPECT_NE(fileAccessHelper, nullptr);
994 vector<RootInfo> info;
995 int result = fileAccessHelper->GetRoots(info);
996 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
997 for (size_t i = 0; i < info.size(); i++) {
998 Uri parentUri(info[i].uri);
999 Uri newDirUriTest1("");
1000 Uri newDirUriTest2("");
1001 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1002 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1003 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1004 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1005 Uri testUri("");
1006 result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", testUri);
1007 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1008 Uri testUri2("");
1009 Uri targetParentUri("storage/media/100/local/files/Download/test2");
1010 result = fileAccessHelper->Move(testUri, targetParentUri, testUri2);
1011 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1012 GTEST_LOG_(INFO) << "Move_0006 result:" << result;
1013 result = fileAccessHelper->Delete(newDirUriTest1);
1014 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1015 result = fileAccessHelper->Delete(newDirUriTest2);
1016 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1017 }
1018 } catch (...) {
1019 GTEST_LOG_(ERROR) << "external_file_access_Move_0006 occurs an exception.";
1020 }
1021 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0006";
1022 }
1023
1024 /**
1025 * @tc.number: user_file_service_external_file_access_Move_0007
1026 * @tc.name: external_file_access_Move_0007
1027 * @tc.desc: Test function of Move interface for ERROR which targetParentUri is special symbols.
1028 * @tc.size: MEDIUM
1029 * @tc.type: FUNC
1030 * @tc.level Level 1
1031 * @tc.require: SR000H0387
1032 */
1033 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0007, testing::ext::TestSize.Level1)
1034 {
1035 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0007";
1036 try {
1037 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1038 EXPECT_NE(fileAccessHelper, nullptr);
1039 vector<RootInfo> info;
1040 int result = fileAccessHelper->GetRoots(info);
1041 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1042 for (size_t i = 0; i < info.size(); i++) {
1043 Uri parentUri(info[i].uri);
1044 Uri newDirUriTest1("");
1045 Uri newDirUriTest2("");
1046 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1047 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1048 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1049 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1050 Uri testUri("");
1051 result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", testUri);
1052 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1053 Uri testUri2("");
1054 Uri targetParentUri("~!@#$^%&*()_");
1055 result = fileAccessHelper->Move(testUri, targetParentUri, testUri2);
1056 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1057 GTEST_LOG_(INFO) << "Move_0007 result:" << result;
1058 result = fileAccessHelper->Delete(newDirUriTest1);
1059 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1060 result = fileAccessHelper->Delete(newDirUriTest2);
1061 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1062 }
1063 } catch (...) {
1064 GTEST_LOG_(ERROR) << "external_file_access_Move_0007 occurs an exception.";
1065 }
1066 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0007";
1067 }
1068
1069 /**
1070 * @tc.number: user_file_service_external_file_access_Move_0008
1071 * @tc.name: external_file_access_Move_0008
1072 * @tc.desc: Test function of Move interface for SUCCESS which move empty folder.
1073 * @tc.size: MEDIUM
1074 * @tc.type: FUNC
1075 * @tc.level Level 1
1076 * @tc.require: SR000H0387
1077 */
1078 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0008, testing::ext::TestSize.Level1)
1079 {
1080 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0008";
1081 try {
1082 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1083 EXPECT_NE(fileAccessHelper, nullptr);
1084 vector<RootInfo> info;
1085 int result = fileAccessHelper->GetRoots(info);
1086 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1087 for (size_t i = 0; i < info.size(); i++) {
1088 Uri parentUri(info[i].uri);
1089 Uri newDirUriTest1("");
1090 Uri newDirUriTest2("");
1091 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1092 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1093 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1094 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1095 Uri testUri("");
1096 result = fileAccessHelper->Move(newDirUriTest1, newDirUriTest2, testUri);
1097 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1098 GTEST_LOG_(INFO) << "Move_0008 result:" << result;
1099 result = fileAccessHelper->Delete(newDirUriTest2);
1100 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1101 }
1102 } catch (...) {
1103 GTEST_LOG_(ERROR) << "external_file_access_Move_0008 occurs an exception.";
1104 }
1105 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0008";
1106 }
1107
1108 /**
1109 * @tc.number: user_file_service_external_file_access_Move_0009
1110 * @tc.name: external_file_access_Move_0009
1111 * @tc.desc: Test function of Move interface for SUCCESS which move more file in folder.
1112 * @tc.size: MEDIUM
1113 * @tc.type: FUNC
1114 * @tc.level Level 1
1115 * @tc.require: SR000H0387
1116 */
1117 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0009, testing::ext::TestSize.Level1)
1118 {
1119 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0009";
1120 try {
1121 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1122 EXPECT_NE(fileAccessHelper, nullptr);
1123 vector<RootInfo> info;
1124 int result = fileAccessHelper->GetRoots(info);
1125 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1126 for (size_t i = 0; i < info.size(); i++) {
1127 Uri parentUri(info[i].uri);
1128 Uri newDirUriTest1("");
1129 Uri newDirUriTest2("");
1130 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1131 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1132 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1133 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1134 Uri testUri("");
1135 size_t fileNumbers = 2000;
1136 for (size_t j = 0; j < fileNumbers; j++) {
1137 string fileName = "test" + ToString(j) + ".txt";
1138 result = fileAccessHelper->CreateFile(newDirUriTest1, fileName, testUri);
1139 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1140 }
1141 Uri testUri2("");
1142 result = fileAccessHelper->Move(newDirUriTest1, newDirUriTest2, testUri2);
1143 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1144 GTEST_LOG_(INFO) << "Move_0009 result:" << result;
1145 result = fileAccessHelper->Delete(newDirUriTest2);
1146 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1147 }
1148 } catch (...) {
1149 GTEST_LOG_(ERROR) << "external_file_access_Move_0009 occurs an exception.";
1150 }
1151 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0009";
1152 }
1153
1154 /**
1155 * @tc.number: user_file_service_external_file_access_Move_0010
1156 * @tc.name: external_file_access_Move_0010
1157 * @tc.desc: Test function of Move interface for SUCCESS which move Multilevel directory folder.
1158 * @tc.size: MEDIUM
1159 * @tc.type: FUNC
1160 * @tc.level Level 1
1161 * @tc.require: SR000H0387
1162 */
1163 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0010, testing::ext::TestSize.Level1)
1164 {
1165 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0010";
1166 try {
1167 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1168 EXPECT_NE(fileAccessHelper, nullptr);
1169 vector<RootInfo> info;
1170 int result = fileAccessHelper->GetRoots(info);
1171 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1172 for (size_t i = 0; i < info.size(); i++) {
1173 Uri parentUri(info[i].uri);
1174 Uri newDirUriTest1("");
1175 Uri newDirUriTest2("");
1176 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1177 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1178 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1179 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1180 Uri testUri("");
1181 result = fileAccessHelper->Mkdir(newDirUriTest1, "test", testUri);
1182 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1183 size_t directoryNumbers = 64;
1184 for (size_t j = 0; j < directoryNumbers; j++) {
1185 result = fileAccessHelper->Mkdir(testUri, "test", testUri);
1186 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1187 }
1188 Uri testUri2("");
1189 result = fileAccessHelper->Move(newDirUriTest1, newDirUriTest2, testUri2);
1190 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1191 GTEST_LOG_(INFO) << "Move_0010 result:" << result;
1192 result = fileAccessHelper->Delete(newDirUriTest2);
1193 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1194 }
1195 } catch (...) {
1196 GTEST_LOG_(ERROR) << "external_file_access_Move_0010 occurs an exception.";
1197 }
1198 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0010";
1199 }
1200
1201 /**
1202 * @tc.number: user_file_service_external_file_access_Move_0011
1203 * @tc.name: external_file_access_Move_0011
1204 * @tc.desc: Test function of Move interface for SUCCESS which move other equipment file.
1205 * @tc.size: MEDIUM
1206 * @tc.type: FUNC
1207 * @tc.level Level 1
1208 * @tc.require: SR000H0387
1209 */
1210 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0011, testing::ext::TestSize.Level1)
1211 {
1212 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0011";
1213 try {
1214 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1215 EXPECT_NE(fileAccessHelper, nullptr);
1216 vector<RootInfo> info;
1217 int result = fileAccessHelper->GetRoots(info);
1218 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1219 for (size_t i = 0; i < info.size(); i++) {
1220 Uri parentUri(info[i].uri);
1221 Uri newDirUriTest1("");
1222 Uri newDirUriTest2("");
1223 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1224 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1225 Uri testUri("");
1226 result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", testUri);
1227 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1228 for (size_t j = i + 1; j < info.size(); j++) {
1229 Uri otherUri(info[j].uri);
1230 result = fileAccessHelper->Mkdir(otherUri, "test2", newDirUriTest2);
1231 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1232 result = fileAccessHelper->Move(testUri, newDirUriTest2, testUri);
1233 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1234 result = fileAccessHelper->Move(testUri, newDirUriTest1, testUri);
1235 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1236 GTEST_LOG_(INFO) << "Move_0011 result:" << result;
1237 result = fileAccessHelper->Delete(newDirUriTest2);
1238 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1239 }
1240 result = fileAccessHelper->Delete(newDirUriTest1);
1241 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1242 }
1243 } catch (...) {
1244 GTEST_LOG_(ERROR) << "external_file_access_Move_0011 occurs an exception.";
1245 }
1246 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0011";
1247 }
1248
MoveTdd(shared_ptr<FileAccessHelper> fahs,Uri sourceFile,Uri targetParent,Uri newFile)1249 static void MoveTdd(shared_ptr<FileAccessHelper> fahs, Uri sourceFile, Uri targetParent, Uri newFile)
1250 {
1251 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_MoveTdd";
1252 int ret = fahs->Move(sourceFile, targetParent, newFile);
1253 if (ret != OHOS::FileAccessFwk::ERR_OK) {
1254 GTEST_LOG_(ERROR) << "MoveTdd get result error, code:" << ret;
1255 return;
1256 }
1257 EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
1258 g_num++;
1259 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_MoveTdd";
1260 }
1261
1262 /**
1263 * @tc.number: user_file_service_external_file_access_Move_0012
1264 * @tc.name: external_file_access_Move_0012
1265 * @tc.desc: Test function of Move interface for SUCCESS which Concurrent.
1266 * @tc.size: MEDIUM
1267 * @tc.type: FUNC
1268 * @tc.level Level 1
1269 * @tc.require: SR000H0386
1270 */
1271 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0012, testing::ext::TestSize.Level1)
1272 {
1273 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0012";
1274 try {
1275 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1276 EXPECT_NE(fileAccessHelper, nullptr);
1277 vector<RootInfo> info;
1278 int result = fileAccessHelper->GetRoots(info);
1279 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1280 for (size_t i = 0; i < info.size(); i++) {
1281 Uri parentUri(info[i].uri);
1282 Uri newDirUriTest1("");
1283 Uri newDirUriTest2("");
1284 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1285 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1286 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1287 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1288 Uri testUri("");
1289 std::string displayName = "test3.txt";
1290 result = fileAccessHelper->CreateFile(newDirUriTest1, displayName, testUri);
1291 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1292 Uri testUri2("");
1293 g_num = 0;
1294 for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
1295 std::thread execthread(MoveTdd, fileAccessHelper, testUri, newDirUriTest2, testUri2);
1296 execthread.join();
1297 }
1298 EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
1299 result = fileAccessHelper->Delete(newDirUriTest1);
1300 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1301 result = fileAccessHelper->Delete(newDirUriTest2);
1302 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1303 }
1304 } catch (...) {
1305 GTEST_LOG_(ERROR) << "external_file_access_Move_0012 occurs an exception.";
1306 }
1307 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0012";
1308 }
1309
1310 /**
1311 * @tc.number: user_file_service_external_file_access_Move_0013
1312 * @tc.name: external_file_access_Move_0013
1313 * @tc.desc: Test function of Move interface for FAILED because of GetProxyByUri failed.
1314 * @tc.size: MEDIUM
1315 * @tc.type: FUNC
1316 * @tc.level Level 1
1317 * @tc.require: SR000H0387
1318 */
1319 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0013, testing::ext::TestSize.Level1)
1320 {
1321 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0013";
1322 try {
1323 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1324 EXPECT_NE(fileAccessHelper, nullptr);
1325 vector<RootInfo> info;
1326 int result = fileAccessHelper->GetRoots(info);
1327 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1328 Uri parentUri(info[0].uri);
1329 Uri newDirUriTest1("");
1330 Uri newDirUriTest2("");
1331 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1332 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1333 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1334 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1335 Uri testUri("");
1336 result = fileAccessHelper->Mkdir(newDirUriTest1, "test", testUri);
1337 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1338 std::string str = newDirUriTest1.ToString();
1339 if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
1340 GTEST_LOG_(ERROR) << "replace BundleName failed.";
1341 EXPECT_TRUE(false);
1342 }
1343 Uri uri(str);
1344 Uri testUri2("");
1345 result = fileAccessHelper->Move(uri, newDirUriTest2, testUri2);
1346 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1347 GTEST_LOG_(INFO) << "Move_0013 result:" << result;
1348 result = fileAccessHelper->Delete(newDirUriTest1);
1349 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1350 result = fileAccessHelper->Delete(newDirUriTest2);
1351 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1352 } catch (...) {
1353 GTEST_LOG_(ERROR) << "external_file_access_Move_0013 occurs an exception.";
1354 }
1355 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0013";
1356 }
1357
1358 /**
1359 * @tc.number: user_file_service_external_file_access_Move_0014
1360 * @tc.name: external_file_access_Move_0014
1361 * @tc.desc: Test function of Move interface for SUCCESS which move file, the file name is chinese.
1362 * @tc.size: MEDIUM
1363 * @tc.type: FUNC
1364 * @tc.level Level 1
1365 * @tc.require: I70SX9
1366 */
1367 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0014, testing::ext::TestSize.Level1)
1368 {
1369 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0014";
1370 try {
1371 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1372 EXPECT_NE(fileAccessHelper, nullptr);
1373 vector<RootInfo> info;
1374 int result = fileAccessHelper->GetRoots(info);
1375 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1376 for (size_t i = 0; i < info.size(); i++) {
1377 Uri parentUri(info[i].uri);
1378 Uri newDirUriTest1("");
1379 Uri newDirUriTest2("");
1380 result = fileAccessHelper->Mkdir(parentUri, "测试目录1", newDirUriTest1);
1381 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1382 EXPECT_EQ(newDirUriTest1.ToString().find("测试目录1"), std::string::npos);
1383 result = fileAccessHelper->Mkdir(parentUri, "测试目录2", newDirUriTest2);
1384 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1385 EXPECT_EQ(newDirUriTest2.ToString().find("测试目录2"), std::string::npos);
1386 Uri testUri("");
1387 result = fileAccessHelper->CreateFile(newDirUriTest1, "移动文件.txt", testUri);
1388 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1389 EXPECT_EQ(testUri.ToString().find("移动文件.txt"), std::string::npos);
1390 Uri testUri2("");
1391 result = fileAccessHelper->Move(testUri, newDirUriTest2, testUri2);
1392 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1393 GTEST_LOG_(INFO) << "Move_0014 result:" << result;
1394 result = fileAccessHelper->Delete(newDirUriTest1);
1395 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1396 result = fileAccessHelper->Delete(newDirUriTest2);
1397 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1398 }
1399 } catch (...) {
1400 GTEST_LOG_(ERROR) << "external_file_access_Move_0014 occurs an exception.";
1401 }
1402 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0014";
1403 }
1404
1405 /**
1406 * @tc.number: user_file_service_external_file_access_Move_0015
1407 * @tc.name: external_file_access_Move_0015
1408 * @tc.desc: Test function of Move interface for SUCCESS which move Multilevel directory folder,
1409 * the folder name is chinese.
1410 * @tc.size: MEDIUM
1411 * @tc.type: FUNC
1412 * @tc.level Level 1
1413 * @tc.require: I70SX9
1414 */
1415 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0015, testing::ext::TestSize.Level1)
1416 {
1417 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0015";
1418 try {
1419 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1420 EXPECT_NE(fileAccessHelper, nullptr);
1421 vector<RootInfo> info;
1422 int result = fileAccessHelper->GetRoots(info);
1423 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1424 for (size_t i = 0; i < info.size(); i++) {
1425 Uri parentUri(info[i].uri);
1426 Uri newDirUriTest1("");
1427 Uri newDirUriTest2("");
1428 result = fileAccessHelper->Mkdir(parentUri, "移动目录", newDirUriTest1);
1429 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1430 EXPECT_EQ(newDirUriTest1.ToString().find("移动目录"), std::string::npos);
1431 result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1432 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1433 Uri testUri2("");
1434 result = fileAccessHelper->Move(newDirUriTest1, newDirUriTest2, testUri2);
1435 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1436 GTEST_LOG_(INFO) << "Move_0015 result:" << result;
1437 result = fileAccessHelper->Delete(newDirUriTest2);
1438 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1439 }
1440 } catch (...) {
1441 GTEST_LOG_(ERROR) << "external_file_access_Move_0015 occurs an exception.";
1442 }
1443 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0015";
1444 }
1445
1446 /**
1447 * @tc.number: user_file_service_external_file_access_Move_0016
1448 * @tc.name: external_file_access_Move_0016
1449 * @tc.desc: Test function of Move interface for SUCCESS which move Multilevel directory folder,
1450 * the folder name is chinese.
1451 * @tc.size: MEDIUM
1452 * @tc.type: FUNC
1453 * @tc.level Level 1
1454 * @tc.require: I70SX9
1455 */
1456 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0016, testing::ext::TestSize.Level1)
1457 {
1458 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0016";
1459 try {
1460 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1461 EXPECT_NE(fileAccessHelper, nullptr);
1462 vector<RootInfo> info;
1463 int result = fileAccessHelper->GetRoots(info);
1464 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1465 for (size_t i = 0; i < info.size(); i++) {
1466 Uri parentUri(info[i].uri);
1467 Uri newDirUriTest1("");
1468 Uri newDirUriTest2("");
1469 result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1470 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1471 result = fileAccessHelper->Mkdir(parentUri, "移动目录", newDirUriTest2);
1472 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1473 Uri testUri2("");
1474 result = fileAccessHelper->Move(newDirUriTest1, newDirUriTest2, testUri2);
1475 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1476 GTEST_LOG_(INFO) << "Move_0016 result:" << result;
1477 result = fileAccessHelper->Delete(newDirUriTest2);
1478 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1479 }
1480 } catch (...) {
1481 GTEST_LOG_(ERROR) << "external_file_access_Move_0016 occurs an exception.";
1482 }
1483 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0016";
1484 }
1485
1486 /**
1487 * @tc.number: user_file_service_external_file_access_creator_0000
1488 * @tc.name: external_file_access_creator_0000
1489 * @tc.desc: Test function of creator interface.
1490 * @tc.desc: create file access helper for SUCCESS.
1491 * @tc.size: MEDIUM
1492 * @tc.type: FUNC
1493 * @tc.level Level 1
1494 * @tc.require: SR000H0386
1495 */
1496 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0000, testing::ext::TestSize.Level1)
1497 {
1498 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0000";
1499 try {
1500 setuid(UID_TRANSFORM_TMP);
1501 std::pair<shared_ptr<FileAccessHelper>, int> helper =
1502 FileAccessHelper::Creator(FileExtensionHelperTest::GetContext());
1503 setuid(UID_DEFAULT);
1504 ASSERT_TRUE(helper.first != nullptr);
1505 bool succ = helper.first->Release();
1506 EXPECT_TRUE(succ);
1507 } catch (...) {
1508 GTEST_LOG_(ERROR) << "external_file_access_creator_0000 occurs an exception.";
1509 }
1510 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0000";
1511 }
1512
1513 /**
1514 * @tc.number: user_file_service_external_file_access_creator_0001
1515 * @tc.name: external_file_access_creator_0001
1516 * @tc.desc: Test function of creator interface.
1517 * @tc.desc: create file access helper for SUCCESS.
1518 * @tc.size: MEDIUM
1519 * @tc.type: FUNC
1520 * @tc.level Level 1
1521 * @tc.require: SR000H0386
1522 */
1523 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0001, testing::ext::TestSize.Level1)
1524 {
1525 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0001";
1526 try {
1527 AAFwk::Want want;
1528 vector<AAFwk::Want> wantVec;
1529 setuid(UID_TRANSFORM_TMP);
1530 int ret = FileAccessHelper::GetRegisteredFileAccessExtAbilityInfo(wantVec);
1531 EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
1532 bool sus = false;
1533 for (size_t i = 0; i < wantVec.size(); i++) {
1534 auto element = wantVec[i].GetElement();
1535 if (element.GetBundleName() == "com.ohos.UserFile.ExternalFileManager" &&
1536 element.GetAbilityName() == "FileExtensionAbility") {
1537 want = wantVec[i];
1538 sus = true;
1539 break;
1540 }
1541 }
1542 EXPECT_TRUE(sus);
1543 vector<AAFwk::Want> wants{want};
1544 std::pair<shared_ptr<FileAccessHelper>, int> helper =
1545 FileAccessHelper::Creator(FileExtensionHelperTest::GetContext(), wants);
1546 setuid(UID_DEFAULT);
1547 ASSERT_TRUE(helper.first != nullptr);
1548 bool succ = helper.first->Release();
1549 EXPECT_TRUE(succ);
1550 } catch (...) {
1551 GTEST_LOG_(ERROR) << "external_file_access_creator_0001 occurs an exception.";
1552 }
1553 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0001";
1554 }
1555
1556 /**
1557 * @tc.number: user_file_service_external_file_access_creator_0002
1558 * @tc.name: external_file_access_creator_0002
1559 * @tc.desc: Test function of creator interface.
1560 * @tc.desc: create file access helper for FAILED.
1561 * @tc.size: MEDIUM
1562 * @tc.type: FUNC
1563 * @tc.level Level 1
1564 * @tc.require: SR000H0386
1565 */
1566 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0002, testing::ext::TestSize.Level1)
1567 {
1568 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0002";
1569 try {
1570 std::shared_ptr<OHOS::AbilityRuntime::Context> context = nullptr;
1571 std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(context);
1572 ASSERT_TRUE(helper.first == nullptr);
1573 } catch (...) {
1574 GTEST_LOG_(ERROR) << "external_file_access_creator_0002 occurs an exception.";
1575 }
1576 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0002";
1577 }
1578
1579 /**
1580 * @tc.number: user_file_service_external_file_access_creator_0003
1581 * @tc.name: external_file_access_creator_0003
1582 * @tc.desc: Test function of creator interface.
1583 * @tc.desc: create file access helper for FAILED.
1584 * @tc.size: MEDIUM
1585 * @tc.type: FUNC
1586 * @tc.level Level 1
1587 * @tc.require: SR000H0386
1588 */
1589 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0003, testing::ext::TestSize.Level1)
1590 {
1591 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0003";
1592 try {
1593 std::vector<AAFwk::Want> wants;
1594 std::shared_ptr<OHOS::AbilityRuntime::Context> context = nullptr;
1595 std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(context, wants);
1596 ASSERT_TRUE(helper.first == nullptr);
1597 } catch (...) {
1598 GTEST_LOG_(ERROR) << "external_file_access_creator_0003 occurs an exception.";
1599 }
1600 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0003";
1601 }
1602
1603 /**
1604 * @tc.number: user_file_service_external_file_access_creator_0004
1605 * @tc.name: external_file_access_creator_0004
1606 * @tc.desc: Test function of creator interface.
1607 * @tc.desc: create file access helper for FAILED.
1608 * @tc.size: MEDIUM
1609 * @tc.type: FUNC
1610 * @tc.level Level 1
1611 * @tc.require: SR000H0386
1612 */
1613 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0004, testing::ext::TestSize.Level1)
1614 {
1615 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0004";
1616 try {
1617 std::vector<AAFwk::Want> wants;
1618 std::pair<shared_ptr<FileAccessHelper>, int> helper =
1619 FileAccessHelper::Creator(FileExtensionHelperTest::GetContext(), wants);
1620 ASSERT_TRUE(helper.first == nullptr);
1621 } catch (...) {
1622 GTEST_LOG_(ERROR) << "external_file_access_creator_0004 occurs an exception.";
1623 }
1624 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0004";
1625 }
1626
1627 /**
1628 * @tc.number: user_file_service_external_file_access_creator_0005
1629 * @tc.name: external_file_access_creator_0005
1630 * @tc.desc: Test function of creator interface.
1631 * @tc.desc: create file access helper for FAILED.
1632 * @tc.size: MEDIUM
1633 * @tc.type: FUNC
1634 * @tc.level Level 1
1635 * @tc.require: SR000H0386
1636 */
1637 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0005, testing::ext::TestSize.Level1)
1638 {
1639 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0005";
1640 try {
1641 AAFwk::Want want;
1642 want.SetElementName("NotExistBundleName", "NotExistAbilityName");
1643 std::vector<AAFwk::Want> wants{want};
1644 std::pair<shared_ptr<FileAccessHelper>, int> helper =
1645 FileAccessHelper::Creator(FileExtensionHelperTest::GetContext(), wants);
1646 ASSERT_TRUE(helper.first == nullptr);
1647 } catch (...) {
1648 GTEST_LOG_(ERROR) << "external_file_access_creator_0005 occurs an exception.";
1649 }
1650 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0005";
1651 }
1652
1653 /**
1654 * @tc.number: user_file_service_external_file_access_creator_0006
1655 * @tc.name: external_file_access_creator_0006
1656 * @tc.desc: Test function of creator interface.
1657 * @tc.desc: create file access helper for FAILED.
1658 * @tc.size: MEDIUM
1659 * @tc.type: FUNC
1660 * @tc.level Level 1
1661 * @tc.require: SR000H0386
1662 */
1663 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0006, testing::ext::TestSize.Level1)
1664 {
1665 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0006";
1666 try {
1667 std::vector<AAFwk::Want> wants;
1668 std::shared_ptr<OHOS::AbilityRuntime::Context> context = nullptr;
1669 std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(context, wants);
1670 ASSERT_TRUE(helper.first == nullptr);
1671 } catch (...) {
1672 GTEST_LOG_(ERROR) << "external_file_access_creator_0006 occurs an exception.";
1673 }
1674 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0006";
1675 }
1676
1677 /**
1678 * @tc.number: user_file_service_external_file_access_creator_0007
1679 * @tc.name: external_file_access_creator_0007
1680 * @tc.desc: Test function of creator interface.
1681 * @tc.desc: create file access helper for FAILED.
1682 * @tc.size: MEDIUM
1683 * @tc.type: FUNC
1684 * @tc.level Level 1
1685 * @tc.require: SR000H0386
1686 */
1687 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0007, testing::ext::TestSize.Level1)
1688 {
1689 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0007";
1690 try {
1691 std::vector<AAFwk::Want> wants;
1692 shared_ptr<FileAccessHelper> helper =
1693 FileAccessHelper::Creator(FileExtensionHelperTest::GetContext()->GetToken(), wants);
1694 ASSERT_TRUE(helper == nullptr);
1695 } catch (...) {
1696 GTEST_LOG_(ERROR) << "external_file_access_creator_0007 occurs an exception.";
1697 }
1698 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0007";
1699 }
1700
1701 /**
1702 * @tc.number: user_file_service_external_file_access_creator_0008
1703 * @tc.name: external_file_access_creator_0008
1704 * @tc.desc: Test function of creator interface.
1705 * @tc.desc: create file access helper for FAILED.
1706 * @tc.size: MEDIUM
1707 * @tc.type: FUNC
1708 * @tc.level Level 1
1709 * @tc.require: SR000H0386
1710 */
1711 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0008, testing::ext::TestSize.Level1)
1712 {
1713 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0008";
1714 try {
1715 AAFwk::Want want;
1716 want.SetElementName("NotExistBundleName", "NotExistAbilityName");
1717 std::vector<AAFwk::Want> wants{want};
1718 shared_ptr<FileAccessHelper> helper =
1719 FileAccessHelper::Creator(FileExtensionHelperTest::GetContext()->GetToken(), wants);
1720 ASSERT_TRUE(helper == nullptr);
1721 } catch (...) {
1722 GTEST_LOG_(ERROR) << "external_file_access_creator_0008 occurs an exception.";
1723 }
1724 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0008";
1725 }
1726 }
1727