• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024-2025 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 #include "file_access_service_client.h"
32 
33 namespace OHOS::FileAccessFwk {
34 using json = nlohmann::json;
35 static int g_num = 0;
36 
37 /**
38  * @tc.number: user_file_service_external_file_access_GetRoots_0000
39  * @tc.name: external_file_access_GetRoots_0000
40  * @tc.desc: Test function of GetRoots interface for SUCCESS.
41  * @tc.size: MEDIUM
42  * @tc.type: FUNC
43  * @tc.level Level 1
44  * @tc.require: SR000H0387
45  */
46 HWTEST_F(FileExtensionHelperTest, external_file_access_GetRoots_0000, testing::ext::TestSize.Level1)
47 {
48     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
49     EXPECT_NE(fileAccessHelper, nullptr);
50     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetRoots_0000";
51     try {
52         vector<RootInfo> info;
53         int result = fileAccessHelper->GetRoots(info);
54         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
55         EXPECT_GT(info.size(), OHOS::FileAccessFwk::ERR_OK);
56         GTEST_LOG_(INFO) << "GetRoots_0000 result:" << info.size() << endl;
57         for (size_t i = 0; i < info.size(); i++) {
58             GTEST_LOG_(INFO) << info[i].uri;
59             GTEST_LOG_(INFO) << info[i].displayName;
60             GTEST_LOG_(INFO) << info[i].deviceFlags;
61             GTEST_LOG_(INFO) << info[i].deviceType;
62             GTEST_LOG_(INFO) << info[i].relativePath;
63         }
64         EXPECT_GE(info.size(), 1);
65     } catch (...) {
66         GTEST_LOG_(ERROR) << "external_file_access_GetRoots_0000 occurs an exception.";
67     }
68     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetRoots_0000";
69 }
70 
TestFileAccess(shared_ptr<FileAccessHelper> fileAccessHelper,Uri & dirUri)71 static void TestFileAccess(shared_ptr<FileAccessHelper> fileAccessHelper, Uri& dirUri)
72 {
73     bool isExist = false;
74     int result;
75 
76     result = fileAccessHelper->Access(dirUri, isExist);
77     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
78     EXPECT_TRUE(isExist);
79 
80     result = fileAccessHelper->Delete(dirUri);
81     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
82 
83     result = fileAccessHelper->Access(dirUri, isExist);
84     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
85     EXPECT_FALSE(isExist);
86 }
87 
88 /**
89  * @tc.number: user_file_service_external_file_access_Access_0000
90  * @tc.name: external_file_access_Access_0000
91  * @tc.desc: Test function of Access interface for SUCCESS.
92  * @tc.size: MEDIUM
93  * @tc.type: FUNC
94  * @tc.level Level 1
95  * @tc.require: SR000H0386
96  */
97 HWTEST_F(FileExtensionHelperTest, external_file_access_Access_0000, testing::ext::TestSize.Level1)
98 {
99     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
100     EXPECT_NE(fileAccessHelper, nullptr);
101     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Access_0000";
102     try {
103         vector<RootInfo> info;
104         int result = fileAccessHelper->GetRoots(info);
105         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
106         for (size_t i = 0; i < info.size(); i++) {
107             Uri parentUri(info[i].uri);
108             GTEST_LOG_(INFO) << parentUri.ToString();
109             Uri newDirUriTest("");
110             result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest);
111             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
112             Uri newFileUri("");
113             result = fileAccessHelper->CreateFile(newDirUriTest, "external_file_access_Access_0000.txt", newFileUri);
114             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
115             TestFileAccess(fileAccessHelper, newDirUriTest);
116         }
117     } catch (...) {
118         GTEST_LOG_(ERROR) << "external_file_access_Access_0000 occurs an exception.";
119     }
120     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Access_0000";
121 }
122 
123 /**
124  * @tc.number: user_file_service_external_file_access_Access_0001
125  * @tc.name: external_file_access_Access_0001
126  * @tc.desc: Test function of Access interface FAILED because of GetProxyByUri failed.
127  * @tc.size: MEDIUM
128  * @tc.type: FUNC
129  * @tc.level Level 1
130  * @tc.require: SR000H0386
131  */
132 HWTEST_F(FileExtensionHelperTest, external_file_access_Access_0001, testing::ext::TestSize.Level1)
133 {
134     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
135     EXPECT_NE(fileAccessHelper, nullptr);
136     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Access_0001";
137     try {
138         vector<RootInfo> info;
139         int result = fileAccessHelper->GetRoots(info);
140         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
141         for (size_t i = 0; i < info.size(); i++) {
142             std::string str = info[i].uri;
143             if (ReplaceBundleName(str, "ohos.com.NotExistBundleName")) {
144                 Uri newDirUriTest(str + "/test.txt");
145                 bool isExist = false;
146                 result = fileAccessHelper->Access(newDirUriTest, isExist);
147                 EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
148                 EXPECT_FALSE(isExist);
149             } else {
150                 EXPECT_TRUE(false);
151             }
152         }
153     } catch (...) {
154         GTEST_LOG_(ERROR) << "external_file_access_Access_0001 occurs an exception.";
155     }
156     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Access_0001";
157 }
158 
159 /**
160  * @tc.number: user_file_service_external_file_access_Access_0002
161  * @tc.name: external_file_access_Access_0002
162  * @tc.desc: Test function of Access interface for SUCCESS, the file and folder name is chinese.
163  * @tc.size: MEDIUM
164  * @tc.type: FUNC
165  * @tc.level Level 1
166  * @tc.require: I70SX9
167  */
168 HWTEST_F(FileExtensionHelperTest, external_file_access_Access_0002, testing::ext::TestSize.Level1)
169 {
170     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
171     EXPECT_NE(fileAccessHelper, nullptr);
172     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Access_0002";
173     try {
174         vector<RootInfo> info;
175         int result = fileAccessHelper->GetRoots(info);
176         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
177         for (size_t i = 0; i < info.size(); i++) {
178             Uri parentUri(info[i].uri);
179             GTEST_LOG_(INFO) << parentUri.ToString();
180             Uri newDirUriTest("");
181             result = fileAccessHelper->Mkdir(parentUri, "访问目录", newDirUriTest);
182             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
183             EXPECT_EQ(newDirUriTest.ToString().find("访问目录"), std::string::npos);
184             Uri newFileUri("");
185             result = fileAccessHelper->CreateFile(newDirUriTest, "访问文件.txt", newFileUri);
186             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
187             EXPECT_EQ(newFileUri.ToString().find("访问文件.txt"), std::string::npos);
188             TestFileAccess(fileAccessHelper, newDirUriTest);
189         }
190     } catch (...) {
191         GTEST_LOG_(ERROR) << "external_file_access_Access_0002 occurs an exception.";
192     }
193     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Access_0002";
194 }
195 
196 /**
197  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0000
198  * @tc.name: external_file_access_GetFileInfoFromUri_0000
199  * @tc.desc: Test function of GetFileInfoFromUri interface.
200  * @tc.desc: convert the root directory uri to fileinfo and call listfile for SUCCESS.
201  * @tc.size: MEDIUM
202  * @tc.type: FUNC
203  * @tc.level Level 1
204  * @tc.require: SR000H0386
205  */
206 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0000, testing::ext::TestSize.Level1)
207 {
208     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
209     EXPECT_NE(fileAccessHelper, nullptr);
210     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0000";
211     try {
212         vector<RootInfo> info;
213         int result = fileAccessHelper->GetRoots(info);
214         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
215         SharedMemoryInfo memInfo;
216         result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
217             memInfo);
218         for (size_t i = 0; i < info.size(); i++) {
219             Uri parentUri(info[i].uri);
220             FileInfo fileinfo;
221             result = fileAccessHelper->GetFileInfoFromUri(parentUri, fileinfo);
222             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
223 
224             int64_t offset = 0;
225             FileFilter filter;
226             result = fileAccessHelper->ListFile(fileinfo, offset, filter, memInfo);
227             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
228             EXPECT_GE(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
229         }
230         FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
231     } catch (...) {
232         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0000 occurs an exception.";
233     }
234     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0000";
235 }
236 
237 /**
238  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0001
239  * @tc.name: external_file_access_GetFileInfoFromUri_0001
240  * @tc.desc: Test function of GetFileInfoFromUri interface.
241  * @tc.desc: convert the general directory uri to fileinfo and call listfile for SUCCESS.
242  * @tc.size: MEDIUM
243  * @tc.type: FUNC
244  * @tc.level Level 1
245  * @tc.require: SR000H0386
246  */
247 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0001, testing::ext::TestSize.Level1)
248 {
249     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
250     EXPECT_NE(fileAccessHelper, nullptr);
251     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0001";
252     try {
253         vector<RootInfo> info;
254         int result = fileAccessHelper->GetRoots(info);
255         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
256         SharedMemoryInfo memInfo;
257         result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
258             memInfo);
259         for (size_t i = 0; i < info.size(); i++) {
260             Uri parentUri(info[i].uri);
261             Uri newDirUriTest("");
262             result = fileAccessHelper->Mkdir(parentUri, "testDir", newDirUriTest);
263             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
264 
265             FileInfo dirInfo;
266             result = fileAccessHelper->GetFileInfoFromUri(newDirUriTest, dirInfo);
267             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
268 
269             int64_t offset = 0;
270             FileFilter filter;
271             result = fileAccessHelper->ListFile(dirInfo, offset, filter, memInfo);
272             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
273             EXPECT_GE(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
274 
275             result = fileAccessHelper->Delete(newDirUriTest);
276             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
277         }
278         FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
279     } catch (...) {
280         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0001 occurs an exception.";
281     }
282     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0001";
283 }
284 
285 /**
286  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0002
287  * @tc.name: external_file_access_GetFileInfoFromUri_0002
288  * @tc.desc: Test function of GetFileInfoFromUri interface.
289  * @tc.desc: convert the general filepath uri to fileinfo and call listfile for ERROR.
290  * @tc.size: MEDIUM
291  * @tc.type: FUNC
292  * @tc.level Level 1
293  * @tc.require: SR000H0386
294  */
295 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0002, testing::ext::TestSize.Level1)
296 {
297     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
298     EXPECT_NE(fileAccessHelper, nullptr);
299     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0002";
300     try {
301         vector<RootInfo> info;
302         int result = fileAccessHelper->GetRoots(info);
303         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
304         SharedMemoryInfo memInfo;
305         result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
306             memInfo);
307         for (size_t i = 0; i < info.size(); i++) {
308             Uri parentUri(info[i].uri);
309             Uri newDirUriTest("");
310             result = fileAccessHelper->Mkdir(parentUri, "testDir", newDirUriTest);
311             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
312             Uri newFileUri("");
313             result = fileAccessHelper->CreateFile(newDirUriTest,
314                 "external_file_access_GetFileInfoFromUri_0002.txt", newFileUri);
315             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
316 
317             FileInfo fileinfo;
318             result = fileAccessHelper->GetFileInfoFromUri(newFileUri, fileinfo);
319             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
320 
321             int64_t offset = 0;
322             FileFilter filter;
323             result = fileAccessHelper->ListFile(fileinfo, offset, filter, memInfo);
324             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
325             EXPECT_EQ(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
326 
327             result = fileAccessHelper->Delete(newDirUriTest);
328             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
329         }
330         FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
331     } catch (...) {
332         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0002 occurs an exception.";
333     }
334     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0002";
335 }
336 
337 /**
338  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0003
339  * @tc.name: external_file_access_GetFileInfoFromUri_0003
340  * @tc.desc: Test function of GetFileInfoFromUri interface.
341  * @tc.desc: convert the root directory uri to fileinfo for CheckUri failed.
342  * @tc.size: MEDIUM
343  * @tc.type: FUNC
344  * @tc.level Level 1
345  * @tc.require: SR000H0386
346  */
347 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0003, testing::ext::TestSize.Level1)
348 {
349     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
350     EXPECT_NE(fileAccessHelper, nullptr);
351     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0003";
352     try {
353         vector<RootInfo> info;
354         int result = fileAccessHelper->GetRoots(info);
355         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
356         for (size_t i = 0; i < info.size(); i++) {
357             FileInfo fileinfo;
358             Uri parentUri(std::string("\?\?\?\?/") + info[i].uri);
359             result = fileAccessHelper->GetFileInfoFromUri(parentUri, fileinfo);
360             EXPECT_EQ(result, OHOS::FileAccessFwk::E_URIS);
361         }
362     } catch (...) {
363         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0003 occurs an exception.";
364     }
365     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0003";
366 }
367 
368 /**
369  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0004
370  * @tc.name: external_file_access_GetFileInfoFromUri_0004
371  * @tc.desc: Test function of GetFileInfoFromUri interface.
372  * @tc.desc: convert the root directory uri to fileinfo failed because of GetProxyByUri failed.
373  * @tc.size: MEDIUM
374  * @tc.type: FUNC
375  * @tc.level Level 1
376  * @tc.require: SR000H0386
377  */
378 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0004, testing::ext::TestSize.Level1)
379 {
380     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
381     EXPECT_NE(fileAccessHelper, nullptr);
382     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0004";
383     try {
384         vector<RootInfo> info;
385         int result = fileAccessHelper->GetRoots(info);
386         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
387         for (size_t i = 0; i < info.size(); i++) {
388             std::string str = info[i].uri;
389             if (ReplaceBundleName(str, "ohos.com.NotExistBundleName")) {
390                 Uri parentUri(str);
391                 FileInfo fileinfo;
392                 result = fileAccessHelper->GetFileInfoFromUri(parentUri, fileinfo);
393                 EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
394             } else {
395                 EXPECT_TRUE(false);
396             }
397         }
398     } catch (...) {
399         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0004 occurs an exception.";
400     }
401     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0004";
402 }
403 
404 /**
405  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0005
406  * @tc.name: external_file_access_GetFileInfoFromUri_0005
407  * @tc.desc: Test function of GetFileInfoFromUri interface.
408  * @tc.desc: convert the invalid uri to fileinfo failed.
409  * @tc.size: MEDIUM
410  * @tc.type: FUNC
411  * @tc.level Level 1
412  * @tc.require: SR000H0386
413  */
414 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0005, testing::ext::TestSize.Level1)
415 {
416     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
417     EXPECT_NE(fileAccessHelper, nullptr);
418     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0005";
419     try {
420         Uri uri("~!@#$%^&*()_");
421         FileInfo fileInfo;
422         int result = fileAccessHelper->GetFileInfoFromUri(uri, fileInfo);
423         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
424 
425         uri = Uri("/");
426         result = fileAccessHelper->GetFileInfoFromUri(uri, fileInfo);
427         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
428 
429         uri = Uri("");
430         result = fileAccessHelper->GetFileInfoFromUri(uri, fileInfo);
431         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
432     } catch (...) {
433         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0005 occurs an exception.";
434     }
435     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0005";
436 }
437 
438 /**
439  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0006
440  * @tc.name: external_file_access_GetFileInfoFromUri_0006
441  * @tc.desc: Test function of GetFileInfoFromUri interface.
442  * @tc.desc: convert the general directory uri to fileinfo and call listfile for SUCCESS, the folder name is chinese.
443  * @tc.size: MEDIUM
444  * @tc.type: FUNC
445  * @tc.level Level 1
446  * @tc.require: I70SX9
447  */
448 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0006, testing::ext::TestSize.Level1)
449 {
450     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
451     EXPECT_NE(fileAccessHelper, nullptr);
452     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0006";
453     try {
454         vector<RootInfo> info;
455         int result = fileAccessHelper->GetRoots(info);
456         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
457         SharedMemoryInfo memInfo;
458         result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
459             memInfo);
460         for (size_t i = 0; i < info.size(); i++) {
461             Uri parentUri(info[i].uri);
462             Uri newDirUriTest("");
463             result = fileAccessHelper->Mkdir(parentUri, "测试目录", newDirUriTest);
464             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
465             EXPECT_EQ(newDirUriTest.ToString().find("测试目录"), std::string::npos);
466 
467             FileInfo dirInfo;
468             result = fileAccessHelper->GetFileInfoFromUri(newDirUriTest, dirInfo);
469             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
470 
471             int64_t offset = 0;
472             FileFilter filter;
473             result = fileAccessHelper->ListFile(dirInfo, offset, filter, memInfo);
474             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
475             EXPECT_GE(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
476 
477             result = fileAccessHelper->Delete(newDirUriTest);
478             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
479         }
480         FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
481     } catch (...) {
482         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0006 occurs an exception.";
483     }
484     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0006";
485 }
486 
487 /**
488  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0007
489  * @tc.name: external_file_access_GetFileInfoFromUri_0007
490  * @tc.desc: Test function of GetFileInfoFromUri interface.
491  * @tc.desc: convert the general filepath uri to fileinfo and call listfile for ERROR, the file name is chinese.
492  * @tc.size: MEDIUM
493  * @tc.type: FUNC
494  * @tc.level Level 1
495  * @tc.require: I70SX9
496  */
497 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0007, testing::ext::TestSize.Level1)
498 {
499     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
500     EXPECT_NE(fileAccessHelper, nullptr);
501     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0007";
502     try {
503         vector<RootInfo> info;
504         int result = fileAccessHelper->GetRoots(info);
505         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
506         SharedMemoryInfo memInfo;
507         result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
508             memInfo);
509         for (size_t i = 0; i < info.size(); i++) {
510             Uri newDirUriTest("");
511             Uri parentUri(info[i].uri);
512             result = fileAccessHelper->Mkdir(parentUri, "测试目录1", newDirUriTest);
513             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
514             EXPECT_EQ(newDirUriTest.ToString().find("测试目录1"), std::string::npos);
515             Uri newFileUri("");
516             result = fileAccessHelper->CreateFile(newDirUriTest, "测试文件1.txt", newFileUri);
517             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
518             EXPECT_EQ(newFileUri.ToString().find("测试文件1.txt"), std::string::npos);
519 
520             FileInfo fileinfo;
521             result = fileAccessHelper->GetFileInfoFromUri(newFileUri, fileinfo);
522             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
523 
524             int64_t offset = 0;
525             FileFilter filter;
526             std::vector<FileInfo> fileInfoVecTemp;
527             result = fileAccessHelper->ListFile(fileinfo, offset, filter, memInfo);
528             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
529             EXPECT_EQ(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
530 
531             result = fileAccessHelper->Delete(newDirUriTest);
532             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
533         }
534         FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
535     } catch (...) {
536         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0007 occurs an exception.";
537     }
538     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0007";
539 }
540 
541 /**
542  * @tc.number: user_file_service_external_file_access_Mkdir_0000
543  * @tc.name: external_file_access_Mkdir_0000
544  * @tc.desc: Test function of Mkdir interface for SUCCESS.
545  * @tc.size: MEDIUM
546  * @tc.type: FUNC
547  * @tc.level Level 1
548  * @tc.require: SR000H0386
549  */
550 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0000, testing::ext::TestSize.Level1)
551 {
552     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
553     EXPECT_NE(fileAccessHelper, nullptr);
554     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0000";
555     try {
556         vector<RootInfo> info;
557         int result = fileAccessHelper->GetRoots(info);
558         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
559         for (size_t i = 0; i < info.size(); i++) {
560             Uri parentUri(info[i].uri);
561             Uri newDirUriTest("");
562             result = fileAccessHelper->Mkdir(parentUri, "external_file_access_Mkdir_0000", newDirUriTest);
563             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
564             GTEST_LOG_(INFO) << "Mkdir_0000 result:" << result;
565             result = fileAccessHelper->Delete(newDirUriTest);
566             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
567         }
568     } catch (...) {
569         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0000 occurs an exception.";
570     }
571     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0000";
572 }
573 
574 /**
575  * @tc.number: user_file_service_external_file_access_Mkdir_0001
576  * @tc.name: external_file_access_Mkdir_0001
577  * @tc.desc: Test function of Mkdir interface for ERROR which parentUri is null.
578  * @tc.size: MEDIUM
579  * @tc.type: FUNC
580  * @tc.level Level 1
581  * @tc.require: SR000H0386
582  */
583 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0001, testing::ext::TestSize.Level1)
584 {
585     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
586     EXPECT_NE(fileAccessHelper, nullptr);
587     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0001";
588     try {
589         Uri newDirUriTest("");
590         Uri parentUri("");
591         int result = fileAccessHelper->Mkdir(parentUri, "external_file_access_Mkdir_0001", newDirUriTest);
592         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
593         GTEST_LOG_(INFO) << "Mkdir_0001 result:" << result;
594     } catch (...) {
595         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0001 occurs an exception.";
596     }
597     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0001";
598 }
599 
600 /**
601  * @tc.number: user_file_service_external_file_access_Mkdir_0002
602  * @tc.name: external_file_access_Mkdir_0002
603  * @tc.desc: Test function of Mkdir interface for ERROR which parentUri is absolute path.
604  * @tc.size: MEDIUM
605  * @tc.type: FUNC
606  * @tc.level Level 1
607  * @tc.require: SR000H0386
608  */
609 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0002, testing::ext::TestSize.Level1)
610 {
611     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
612     EXPECT_NE(fileAccessHelper, nullptr);
613     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0002";
614     try {
615         Uri newDirUriTest("");
616         Uri parentUri("storage/media/100/local/files/Download");
617         int result = fileAccessHelper->Mkdir(parentUri, "external_file_access_Mkdir_0002", newDirUriTest);
618         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
619         GTEST_LOG_(INFO) << "Mkdir_0002 result:" << result;
620     } catch (...) {
621         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0002 occurs an exception.";
622     }
623     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0002";
624 }
625 
626 /**
627  * @tc.number: user_file_service_external_file_access_Mkdir_0003
628  * @tc.name: external_file_access_Mkdir_0003
629  * @tc.desc: Test function of Mkdir interface for ERROR which parentUri is special symbols.
630  * @tc.size: MEDIUM
631  * @tc.type: FUNC
632  * @tc.level Level 1
633  * @tc.require: SR000H0386
634  */
635 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0003, testing::ext::TestSize.Level1)
636 {
637     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
638     EXPECT_NE(fileAccessHelper, nullptr);
639     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0002";
640     try {
641         Uri newDirUriTest("");
642         Uri parentUri("~!@#$%^&*()_");
643         int result = fileAccessHelper->Mkdir(parentUri, "external_file_access_Mkdir_0003", newDirUriTest);
644         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
645         GTEST_LOG_(INFO) << "Mkdir_0003 result:" << result;
646     } catch (...) {
647         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0003 occurs an exception.";
648     }
649     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0003";
650 }
651 
652 /**
653  * @tc.number: user_file_service_external_file_access_Mkdir_0004
654  * @tc.name: external_file_access_Mkdir_0004
655  * @tc.desc: Test function of Mkdir interface for ERROR which displayName is null.
656  * @tc.size: MEDIUM
657  * @tc.type: FUNC
658  * @tc.level Level 1
659  * @tc.require: SR000H0386
660  */
661 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0004, testing::ext::TestSize.Level1)
662 {
663     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
664     EXPECT_NE(fileAccessHelper, nullptr);
665     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0004";
666     try {
667         vector<RootInfo> info;
668         int result = fileAccessHelper->GetRoots(info);
669         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
670         for (size_t i = 0; i < info.size(); i++) {
671             Uri parentUri(info[i].uri);
672             Uri newDirUriTest("");
673             string displayName = "";
674             result = fileAccessHelper->Mkdir(parentUri, displayName, newDirUriTest);
675             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
676             GTEST_LOG_(INFO) << "Mkdir_0004 result:" << result;
677         }
678     } catch (...) {
679         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0004 occurs an exception.";
680     }
681     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0004";
682 }
683 
MkdirTdd(shared_ptr<FileAccessHelper> fahs,Uri uri,std::string displayName,Uri newFile)684 static void MkdirTdd(shared_ptr<FileAccessHelper> fahs, Uri uri, std::string displayName, Uri newFile)
685 {
686     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
687     EXPECT_NE(fileAccessHelper, nullptr);
688     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_MkdirTdd";
689     int ret = fahs->Mkdir(uri, displayName, newFile);
690     if (ret != OHOS::FileAccessFwk::ERR_OK) {
691         GTEST_LOG_(ERROR) << "MkdirTdd get result error, code:" << ret;
692         return;
693     }
694     EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
695     EXPECT_NE(newFile.ToString(), "");
696     g_num++;
697     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_MkdirTdd";
698 }
699 
700 /**
701  * @tc.number: user_file_service_external_file_access_Mkdir_0005
702  * @tc.name: external_file_access_Mkdir_0005
703  * @tc.desc: Test function of Mkdir interface for SUCCESS which Concurrent.
704  * @tc.size: MEDIUM
705  * @tc.type: FUNC
706  * @tc.level Level 1
707  * @tc.require: SR000H0386
708  */
709 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0005, testing::ext::TestSize.Level1)
710 {
711     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
712     EXPECT_NE(fileAccessHelper, nullptr);
713     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0005";
714     try {
715         vector<RootInfo> info;
716         int result = fileAccessHelper->GetRoots(info);
717         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
718         for (size_t i = 0; i < info.size(); i++) {
719             Uri parentUri(info[i].uri);
720             Uri newDirUriTest("");
721             std::string displayName = "test1";
722             g_num = 0;
723             for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
724                 std::thread execthread(MkdirTdd, fileAccessHelper, parentUri, displayName, newDirUriTest);
725                 execthread.join();
726             }
727             EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
728             Uri newDelete(info[i].uri + "/" + displayName);
729             result = fileAccessHelper->Delete(newDelete);
730             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
731         }
732     } catch (...) {
733         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0005 occurs an exception.";
734     }
735     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0005";
736 }
737 
738 /**
739  * @tc.number: user_file_service_external_file_access_Mkdir_0006
740  * @tc.name: external_file_access_Mkdir_0006
741  * @tc.desc: Test function of Mkdir interface for ERROR because of GetProxyByUri failed.
742  * @tc.size: MEDIUM
743  * @tc.type: FUNC
744  * @tc.level Level 1
745  * @tc.require: SR000H0386
746  */
747 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0006, testing::ext::TestSize.Level1)
748 {
749     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
750     EXPECT_NE(fileAccessHelper, nullptr);
751     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0006";
752     try {
753         vector<RootInfo> info;
754         int result = fileAccessHelper->GetRoots(info);
755         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
756         for (size_t i = 0; i < info.size(); i++) {
757             std::string str = info[i].uri;
758             if (ReplaceBundleName(str, "ohos.com.NotExistBundleName")) {
759                 Uri parentUri(str);
760                 Uri newDirUriTest("");
761                 string displayName = "";
762                 result = fileAccessHelper->Mkdir(parentUri, displayName, newDirUriTest);
763                 EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
764                 GTEST_LOG_(INFO) << "Mkdir_0006 result:" << result;
765             } else {
766                 EXPECT_TRUE(false);
767             }
768         }
769     } catch (...) {
770         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0006 occurs an exception.";
771     }
772     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0006";
773 }
774 
775 /**
776  * @tc.number: user_file_service_external_file_access_Mkdir_0007
777  * @tc.name: external_file_access_Mkdir_0007
778  * @tc.desc: Test function of Mkdir interface for SUCCESS,the folder name is chinese.
779  * @tc.size: MEDIUM
780  * @tc.type: FUNC
781  * @tc.level Level 1
782  * @tc.require: I70SX9
783  */
784 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0007, testing::ext::TestSize.Level1)
785 {
786     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
787     EXPECT_NE(fileAccessHelper, nullptr);
788     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0007";
789     try {
790         vector<RootInfo> info;
791         int result = fileAccessHelper->GetRoots(info);
792         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
793         for (size_t i = 0; i < info.size(); i++) {
794             Uri parentUri(info[i].uri);
795             Uri newDirUriTest("");
796             result = fileAccessHelper->Mkdir(parentUri, "新建目录", newDirUriTest);
797             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
798             EXPECT_EQ(newDirUriTest.ToString().find("新建目录"), std::string::npos);
799             GTEST_LOG_(INFO) << "Mkdir_0007 result:" << result;
800             result = fileAccessHelper->Delete(newDirUriTest);
801             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
802         }
803     } catch (...) {
804         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0007 occurs an exception.";
805     }
806     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0007";
807 }
808 
809 /**
810  * @tc.number: user_file_service_external_file_access_Mkdir_0008
811  * @tc.name: external_file_access_Mkdir_0008
812  * @tc.desc: Test function of Mkdir interface for FAIL,the folder name is Documents.
813  * @tc.size: MEDIUM
814  * @tc.type: FUNC
815  * @tc.level Level 1
816  * @tc.require: I7MQMD
817  */
818 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0008, testing::ext::TestSize.Level1)
819 {
820     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
821     EXPECT_NE(fileAccessHelper, nullptr);
822     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0008";
823     try {
824         vector<RootInfo> info;
825         int result = fileAccessHelper->GetRoots(info);
826         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
827         EXPECT_GE(info.size(), 1);
828         Uri parentUri(info[0].uri);
829         Uri newDirUriTest("");
830         result = fileAccessHelper->Mkdir(parentUri, "Documents", newDirUriTest);
831         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
832         result = fileAccessHelper->Mkdir(parentUri, "Download", newDirUriTest);
833         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
834         result = fileAccessHelper->Mkdir(parentUri, "Desktop", newDirUriTest);
835         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
836     } catch (...) {
837         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0008 occurs an exception.";
838     }
839     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0008";
840 }
841 
842 /**
843  * @tc.number: user_file_service_external_file_access_GetConnectInfo_0000
844  * @tc.name: external_file_access_GetConnectInfo_0000
845  * @tc.desc: Test function of GetConnectInfo interface.
846  * @tc.desc: helper invoke GetConnectInfo for FAILED.
847  * @tc.size: MEDIUM
848  * @tc.type: FUNC
849  * @tc.level Level 1
850  * @tc.require: SR000H0386
851  */
852 HWTEST_F(FileExtensionHelperTest, external_file_access_GetConnectInfo_0000, testing::ext::TestSize.Level1)
853 {
854     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
855     EXPECT_NE(fileAccessHelper, nullptr);
856     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetConnectInfo_0000";
857     try {
858         std::shared_ptr<ConnectInfo> connectInfo = fileAccessHelper->GetConnectInfo("NotExistBundleName");
859         ASSERT_TRUE(connectInfo == nullptr);
860     } catch (...) {
861         GTEST_LOG_(ERROR) << "external_file_access_GetConnectInfo_0000 occurs an exception.";
862     }
863     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetConnectInfo_0000";
864 }
865 
866 
867 /**
868  * @tc.number: user_file_service_external_file_access_GetProxyByUri_0000
869  * @tc.name: external_file_access_GetProxyByUri_0000
870  * @tc.desc: Test function of GetProxyByUri interface.
871  * @tc.desc: helper invoke GetProxyByUri for FAILED.
872  * @tc.size: MEDIUM
873  * @tc.type: FUNC
874  * @tc.level Level 1
875  * @tc.require: SR000H0386
876  */
877 HWTEST_F(FileExtensionHelperTest, external_file_access_GetProxyByUri_0000, testing::ext::TestSize.Level1)
878 {
879     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
880     EXPECT_NE(fileAccessHelper, nullptr);
881     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetProxyByUri_0000";
882     try {
883         Uri uri("");
884         sptr<IFileAccessExtBase> proxy = fileAccessHelper->GetProxyByUri(uri);
885         ASSERT_TRUE(proxy == nullptr);
886     } catch (...) {
887         GTEST_LOG_(ERROR) << "external_file_access_GetProxyByUri_0000 occurs an exception.";
888     }
889     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetProxyByUri_0000";
890 }
891 
892 /**
893  * @tc.number: user_file_service_external_file_access_GetProxyByUri_0001
894  * @tc.name: external_file_access_GetProxyByUri_0001
895  * @tc.desc: Test function of GetProxyByUri interface.
896  * @tc.desc: helper invoke GetProxyByUri for FAILED.
897  * @tc.size: MEDIUM
898  * @tc.type: FUNC
899  * @tc.level Level 1
900  * @tc.require: SR000H0386
901  */
902 HWTEST_F(FileExtensionHelperTest, external_file_access_GetProxyByUri_0001, testing::ext::TestSize.Level1)
903 {
904     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
905     EXPECT_NE(fileAccessHelper, nullptr);
906     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetProxyByUri_0001";
907     try {
908         Uri uri("file://com.ohos.UserFile.NotExistBundleName/data/storage/el1/bundle/storage_daemon");
909         sptr<IFileAccessExtBase> proxy = fileAccessHelper->GetProxyByUri(uri);
910         ASSERT_TRUE(proxy == nullptr);
911     } catch (...) {
912         GTEST_LOG_(ERROR) << "external_file_access_GetProxyByUri_0001 occurs an exception.";
913     }
914     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetProxyByUri_0001";
915 }
916 
CheckJson(Uri & newDirUriTest,const std::string displayName,const std::string relativePath,int len,shared_ptr<FileAccessHelper> fileAccessHelper)917 static void CheckJson(Uri& newDirUriTest, const std::string displayName, const std::string relativePath,
918     int len, shared_ptr<FileAccessHelper> fileAccessHelper)
919 {
920     json testJson = {
921         {RELATIVE_PATH, " "},
922         {DISPLAY_NAME, " "},
923         {FILE_SIZE, " "},
924         {DATE_MODIFIED, " "},
925         {DATE_ADDED, " "},
926         {HEIGHT, " "},
927         {WIDTH, " "},
928         {DURATION, " "}
929     };
930     auto testJsonString = testJson.dump();
931     int result = fileAccessHelper->Query(newDirUriTest, testJsonString);
932     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
933     auto jsonObject = json::parse(testJsonString);
934     EXPECT_EQ(jsonObject.at(DISPLAY_NAME), displayName);
935     EXPECT_EQ(jsonObject.at(FILE_SIZE), len);
936     EXPECT_EQ(jsonObject.at(RELATIVE_PATH), relativePath);
937     ASSERT_TRUE(jsonObject.at(DATE_MODIFIED) > 0);
938     ASSERT_TRUE(jsonObject.at(DATE_ADDED) > 0);
939     GTEST_LOG_(INFO) << " result" << testJsonString;
940 }
941 
WriteBuffToFile(shared_ptr<FileAccessHelper> & fileAccessHelper,Uri & fileUri,std::string & buff)942 static void WriteBuffToFile(shared_ptr<FileAccessHelper>& fileAccessHelper, Uri& fileUri, std::string& buff)
943 {
944     int fd = -1;
945     int result = fileAccessHelper->OpenFile(fileUri, WRITE_READ, fd);
946     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
947 
948     ssize_t fileSize = write(fd, buff.c_str(), buff.size());
949     close(fd);
950     EXPECT_EQ(fileSize, buff.size());
951 }
952 
953 /**
954  * @tc.number: user_file_service_external_file_access_Query_0000
955  * @tc.name: external_file_access_Query_0000
956  * @tc.desc: Test function of Query directory for SUCCESS.
957  * @tc.size: MEDIUM
958  * @tc.type: FUNC
959  * @tc.level Level 1
960  * @tc.require: I6S4VV
961  */
962 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0000, testing::ext::TestSize.Level1)
963 {
964     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
965     EXPECT_NE(fileAccessHelper, nullptr);
966     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0000";
967     try {
968         vector<RootInfo> info;
969         int result = fileAccessHelper->GetRoots(info);
970         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
971         Uri parentUri(info[0].uri);
972         GTEST_LOG_(INFO) << parentUri.ToString();
973         Uri newDirUriTest1("");
974         Uri newDirUriTest2("");
975         std::string displayName = "QueryTest1";
976         std::string relativePath = "/storage/Users/currentUser/QueryTest1";
977         result = fileAccessHelper->Mkdir(parentUri, "QueryTest1", newDirUriTest1);
978         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
979         result = fileAccessHelper->Mkdir(newDirUriTest1, "QueryTest2", newDirUriTest2);
980         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
981         Uri newFileUri1("");
982         Uri newFileUri2("");
983         std::string fileName = "external_file_access_Query_00001.txt";
984         result = fileAccessHelper->CreateFile(newDirUriTest1, fileName, newFileUri1);
985         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
986         result = fileAccessHelper->CreateFile(newDirUriTest2, fileName, newFileUri2);
987         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
988         std::string buff = "query test";
989         WriteBuffToFile(fileAccessHelper, newFileUri1, buff);
990         WriteBuffToFile(fileAccessHelper, newFileUri2, buff);
991         int len = buff.size() + buff.size();
992         CheckJson(newDirUriTest1, displayName, relativePath, len, fileAccessHelper);
993         result = fileAccessHelper->Delete(newDirUriTest1);
994         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
995     } catch (...) {
996         GTEST_LOG_(ERROR) << "external_file_access_Query_0000 occurs an exception.";
997     }
998     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0000";
999 }
1000 
1001 /**
1002  * @tc.number: user_file_service_external_file_access_Query_0001
1003  * @tc.name: external_file_access_Query_0001
1004  * @tc.desc: Test function of Query file for SUCCESS.
1005  * @tc.size: MEDIUM
1006  * @tc.type: FUNC
1007  * @tc.level Level 1
1008  * @tc.require: I6S4VV
1009  */
1010 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0001, testing::ext::TestSize.Level1)
1011 {
1012     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1013     EXPECT_NE(fileAccessHelper, nullptr);
1014     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0001";
1015     try {
1016         vector<RootInfo> info;
1017         int result = fileAccessHelper->GetRoots(info);
1018         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1019         Uri parentUri(info[0].uri);
1020         GTEST_LOG_(INFO) << parentUri.ToString();
1021         Uri newDirUriTest("");
1022         result = fileAccessHelper->Mkdir(parentUri, "QueryTest3", newDirUriTest);
1023         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1024         Uri newFileUri("");
1025         std::string displayName = "external_file_access_Query_0001.txt";
1026         std::string relativePath = "/storage/Users/currentUser/QueryTest3/external_file_access_Query_0001.txt";
1027         result = fileAccessHelper->CreateFile(newDirUriTest, displayName, newFileUri);
1028         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1029         int fd = -1;
1030         result = fileAccessHelper->OpenFile(newFileUri, WRITE_READ, fd);
1031         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1032         std::string buff = "query test";
1033         ssize_t fileSize = write(fd, buff.c_str(), buff.size());
1034         close(fd);
1035         EXPECT_EQ(fileSize, buff.size());
1036         CheckJson(newFileUri, displayName, relativePath, buff.size(), fileAccessHelper);
1037         result = fileAccessHelper->Delete(newDirUriTest);
1038         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1039     } catch (...) {
1040         GTEST_LOG_(ERROR) << "external_file_access_Query_0001 occurs an exception.";
1041     }
1042     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0001";
1043 }
1044 
1045 /**
1046  * @tc.number: user_file_service_external_file_access_Query_0002
1047  * @tc.name: external_file_access_Query_0002
1048  * @tc.desc: Test function of Query directory for SUCCESS.
1049  * @tc.size: MEDIUM
1050  * @tc.type: FUNC
1051  * @tc.level Level 1
1052  * @tc.require: I6S4VV
1053  */
1054 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0002, testing::ext::TestSize.Level1)
1055 {
1056     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1057     EXPECT_NE(fileAccessHelper, nullptr);
1058     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0002";
1059     try {
1060         vector<RootInfo> info;
1061         int result = fileAccessHelper->GetRoots(info);
1062         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1063         Uri parentUri(info[0].uri);
1064         GTEST_LOG_(INFO) << parentUri.ToString();
1065         Uri newDirUriTest1("");
1066         Uri newDirUriTest2("");
1067         result = fileAccessHelper->Mkdir(parentUri, "QueryTest4", newDirUriTest1);
1068         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1069         result = fileAccessHelper->Mkdir(newDirUriTest1, "QueryTest5", newDirUriTest2);
1070         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1071         Uri newFileUri1("");
1072         Uri newFileUri2("");
1073         std::string fileName = "external_file_access_Query_00002.txt";
1074         result = fileAccessHelper->CreateFile(newDirUriTest1, fileName, newFileUri1);
1075         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1076         result = fileAccessHelper->CreateFile(newDirUriTest2, fileName, newFileUri2);
1077         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1078         std::string buff = "query test";
1079         WriteBuffToFile(fileAccessHelper, newFileUri1, buff);
1080         WriteBuffToFile(fileAccessHelper, newFileUri2, buff);
1081         json testJson = {
1082             {FILE_SIZE, " "}
1083         };
1084         auto testJsonString = testJson.dump();
1085         result = fileAccessHelper->Query(newDirUriTest1, testJsonString);
1086         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1087         auto jsonObject = json::parse(testJsonString);
1088         EXPECT_EQ(jsonObject.at(FILE_SIZE), buff.size() * 2);
1089         GTEST_LOG_(INFO) << " result" << testJsonString;
1090         result = fileAccessHelper->Delete(newDirUriTest1);
1091         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1092     } catch (...) {
1093         GTEST_LOG_(ERROR) << "external_file_access_Query_0002 occurs an exception.";
1094     }
1095     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0002";
1096 }
1097 
1098 /**
1099  * @tc.number: user_file_service_external_file_access_Query_0003
1100  * @tc.name: external_file_access_Query_0003
1101  * @tc.desc: Test function of Query interface for which is unreadable code.
1102  * @tc.size: MEDIUM
1103  * @tc.type: FUNC
1104  * @tc.level Level 1
1105  * @tc.require: I6S4VV
1106  */
1107 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0003, testing::ext::TestSize.Level1)
1108 {
1109     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1110     EXPECT_NE(fileAccessHelper, nullptr);
1111     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0003";
1112     try {
1113         Uri testUri("&*()*/?");
1114         json testJson = {
1115             {RELATIVE_PATH, " "},
1116             {DISPLAY_NAME, " "}
1117         };
1118         auto testJsonString = testJson.dump();
1119         int result = fileAccessHelper->Query(testUri, testJsonString);
1120         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1121         GTEST_LOG_(INFO) << " result" << testJsonString;
1122     } catch (...) {
1123         GTEST_LOG_(ERROR) << "external_file_access_Query_0003 occurs an exception.";
1124     }
1125     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0003";
1126 }
1127 
1128 /**
1129  * @tc.number: user_file_service_external_file_access_Query_0004
1130  * @tc.name: external_file_access_Query_0004
1131  * @tc.desc: Test function of Query interface for which all column nonexistence.
1132  * @tc.size: MEDIUM
1133  * @tc.type: FUNC
1134  * @tc.level Level 1
1135  * @tc.require: I6S4VV
1136  */
1137 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0004, testing::ext::TestSize.Level1)
1138 {
1139     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1140     EXPECT_NE(fileAccessHelper, nullptr);
1141     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0004";
1142     try {
1143         vector<RootInfo> info;
1144         int result = fileAccessHelper->GetRoots(info);
1145         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1146         Uri parentUri(info[0].uri);
1147         GTEST_LOG_(INFO) << parentUri.ToString();
1148         Uri newDirUriTest("");
1149         result = fileAccessHelper->Mkdir(parentUri, "QueryTest6", newDirUriTest);
1150         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1151         json testJson = {
1152             {"001", " "},
1153             {"#", " "},
1154             {"test", " "},
1155             {"target", " "}
1156         };
1157         auto testJsonString = testJson.dump();
1158         result = fileAccessHelper->Query(newDirUriTest, testJsonString);
1159         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1160         GTEST_LOG_(INFO) << " result" << testJsonString;
1161         result = fileAccessHelper->Delete(newDirUriTest);
1162         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1163     } catch (...) {
1164         GTEST_LOG_(ERROR) << "external_file_access_Query_0004 occurs an exception.";
1165     }
1166     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0004";
1167 }
1168 
1169 /**
1170  * @tc.number: user_file_service_external_file_access_Query_0005
1171  * @tc.name: external_file_access_Query_0005
1172  * @tc.desc: Test function of Query interface for which part of column nonexistence.
1173  * @tc.size: MEDIUM
1174  * @tc.type: FUNC
1175  * @tc.level Level 1
1176  * @tc.require: I6S4VV
1177  */
1178 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0005, testing::ext::TestSize.Level1)
1179 {
1180     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1181     EXPECT_NE(fileAccessHelper, nullptr);
1182     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0005";
1183     try {
1184         vector<RootInfo> info;
1185         int result = fileAccessHelper->GetRoots(info);
1186         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1187         Uri parentUri(info[0].uri);
1188         GTEST_LOG_(INFO) << parentUri.ToString();
1189         Uri newDirUriTest("");
1190         result = fileAccessHelper->Mkdir(parentUri, "QueryTest7", newDirUriTest);
1191         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1192         json testJson = {
1193             {RELATIVE_PATH, " "},
1194             {DISPLAY_NAME, " "},
1195             {"test", " "}
1196         };
1197         auto testJsonString = testJson.dump();
1198         result = fileAccessHelper->Query(newDirUriTest, testJsonString);
1199         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1200         GTEST_LOG_(INFO) << " result" << testJsonString;
1201         result = fileAccessHelper->Delete(newDirUriTest);
1202         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1203     } catch (...) {
1204         GTEST_LOG_(ERROR) << "external_file_access_Query_0005 occurs an exception.";
1205     }
1206     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0005";
1207 }
1208 
1209 /**
1210  * @tc.number: user_file_service_external_file_access_Query_0006
1211  * @tc.name: external_file_access_Query_0006
1212  * @tc.desc: Test function of Query interface for which column is null.
1213  * @tc.size: MEDIUM
1214  * @tc.type: FUNC
1215  * @tc.level Level 1
1216  * @tc.require: I6S4VV
1217  */
1218 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0006, testing::ext::TestSize.Level1)
1219 {
1220     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1221     EXPECT_NE(fileAccessHelper, nullptr);
1222     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0006";
1223     try {
1224         vector<RootInfo> info;
1225         int result = fileAccessHelper->GetRoots(info);
1226         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1227         Uri parentUri(info[0].uri);
1228         GTEST_LOG_(INFO) << parentUri.ToString();
1229         Uri newDirUriTest("");
1230         result = fileAccessHelper->Mkdir(parentUri, "QueryTest8", newDirUriTest);
1231         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1232         json testJson;
1233         auto testJsonString = testJson.dump();
1234         result = fileAccessHelper->Query(newDirUriTest, testJsonString);
1235         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1236         GTEST_LOG_(INFO) << " result" << testJsonString;
1237         result = fileAccessHelper->Delete(newDirUriTest);
1238         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1239     } catch (...) {
1240         GTEST_LOG_(ERROR) << "external_file_access_Query_0006 occurs an exception.";
1241     }
1242     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0006";
1243 }
1244 
1245 /**
1246  * @tc.number: user_file_service_external_file_access_Query_0007
1247  * @tc.name: external_file_access_Query_0007
1248  * @tc.desc: Test function of Query directory for SUCCESS, the folder and file name is chinese.
1249  * @tc.size: MEDIUM
1250  * @tc.type: FUNC
1251  * @tc.level Level 1
1252  * @tc.require: I70SX9
1253  */
1254 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0007, testing::ext::TestSize.Level1)
1255 {
1256     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1257     EXPECT_NE(fileAccessHelper, nullptr);
1258     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0007";
1259     try {
1260         vector<RootInfo> info;
1261         int result = fileAccessHelper->GetRoots(info);
1262         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1263         Uri parentUri(info[0].uri);
1264         GTEST_LOG_(INFO) << parentUri.ToString();
1265         Uri newDirUriTest1("");
1266         Uri newDirUriTest2("");
1267         std::string displayName = "查询目录1";
1268         std::string relativePath = "/storage/Users/currentUser/查询目录1";
1269         result = fileAccessHelper->Mkdir(parentUri, displayName, newDirUriTest1);
1270         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1271         EXPECT_EQ(newDirUriTest1.ToString().find(displayName), std::string::npos);
1272         result = fileAccessHelper->Mkdir(newDirUriTest1, "查询目录2", newDirUriTest2);
1273         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1274         EXPECT_EQ(newDirUriTest2.ToString().find("查询目录2"), std::string::npos);
1275         Uri newFileUri1("");
1276         Uri newFileUri2("");
1277         std::string fileName = "查询文件.txt";
1278         result = fileAccessHelper->CreateFile(newDirUriTest1, fileName, newFileUri1);
1279         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1280         EXPECT_EQ(newFileUri1.ToString().find(fileName), std::string::npos);
1281         result = fileAccessHelper->CreateFile(newDirUriTest2, fileName, newFileUri2);
1282         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1283         EXPECT_EQ(newFileUri2.ToString().find(fileName), std::string::npos);
1284         std::string buff = "query test";
1285         WriteBuffToFile(fileAccessHelper, newFileUri1, buff);
1286         WriteBuffToFile(fileAccessHelper, newFileUri2, buff);
1287         int len = buff.size() + buff.size();
1288         CheckJson(newDirUriTest1, displayName, relativePath, len, fileAccessHelper);
1289         result = fileAccessHelper->Delete(newDirUriTest1);
1290         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1291     } catch (...) {
1292         GTEST_LOG_(ERROR) << "external_file_access_Query_0007 occurs an exception.";
1293     }
1294     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0007";
1295 }
1296 
1297 /**
1298  * @tc.number: user_file_service_external_file_access_GetBundleNameFromPath_0000
1299  * @tc.name: external_file_access_GetBundleNameFromPath_0000
1300  * @tc.desc: Test function of GetBundleNameFromPath interface for SUCCESS.
1301  * @tc.size: MEDIUM
1302  * @tc.type: FUNC
1303  * @tc.level Level 1
1304  * @tc.require: SR000H0386
1305  */
1306 HWTEST_F(FileExtensionHelperTest, external_file_access_GetBundleNameFromPath_0000, testing::ext::TestSize.Level1)
1307 {
1308     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1309     EXPECT_NE(fileAccessHelper, nullptr);
1310     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetBundleNameFromPath_0000";
1311     try {
1312         Uri uri("file://media/some/path");
1313         auto result = fileAccessHelper->GetProxyByUri(uri);
1314         EXPECT_EQ(result, nullptr);
1315     } catch (...) {
1316         GTEST_LOG_(ERROR) << "external_file_access_GetBundleNameFromPath_0000 occurs an exception.";
1317     }
1318     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetBundleNameFromPath_0000";
1319 }
1320 
1321 /**
1322  * @tc.number: user_file_service_external_file_access_Move_item_0000
1323  * @tc.name: external_file_access_Move_item_0000
1324  * @tc.desc: Test function of Move item interface.
1325  * @tc.size: MEDIUM
1326  * @tc.type: FUNC
1327  * @tc.level Level 1
1328  */
1329 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0000, testing::ext::TestSize.Level1)
1330 {
1331     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1332     EXPECT_NE(fileAccessHelper, nullptr);
1333     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0000";
1334     try {
1335         vector<RootInfo> info;
1336         int result = fileAccessHelper->GetRoots(info);
1337         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1338         Uri parentUri(info[0].uri);
1339         Uri newDirUriTest1("");
1340         Uri newDirUriTest2("");
1341         result = fileAccessHelper->Mkdir(parentUri, "test3", newDirUriTest1);
1342         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1343         result = fileAccessHelper->Mkdir(parentUri, "test4", newDirUriTest2);
1344         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1345         Uri testUri("");
1346         result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", testUri);
1347         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1348         std::vector<Result> moveResult;
1349         result = fileAccessHelper->MoveItem(testUri, newDirUriTest2, moveResult, false);
1350         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1351         result = fileAccessHelper->Delete(newDirUriTest1);
1352         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1353         result = fileAccessHelper->Delete(newDirUriTest2);
1354         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1355     } catch (...) {
1356         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0000 occurs an exception.";
1357     }
1358     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0000";
1359 }
1360 
1361 /**
1362 * @tc.number: user_file_service_external_file_access_Move_item_0001
1363 * @tc.name: external_file_access_Move_item_0001
1364 * @tc.desc: Test function of Move item interface.
1365 * @tc.size: MEDIUM
1366 * @tc.type: FUNC
1367 * @tc.level Level 1
1368 */
1369 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0001, testing::ext::TestSize.Level1)
1370 {
1371     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1372     EXPECT_NE(fileAccessHelper, nullptr);
1373     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0001";
1374     try {
1375         vector<RootInfo> info;
1376         int result = fileAccessHelper->GetRoots(info);
1377         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1378         Uri parentUri(info[0].uri);
1379         Uri newDirUriTest1("");
1380         Uri newDirUriTest2("");
1381         result = fileAccessHelper->Mkdir(parentUri, "test5", newDirUriTest1);
1382         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1383         result = fileAccessHelper->Mkdir(parentUri, "test6", newDirUriTest2);
1384         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1385         Uri sourceUri("");
1386         result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", sourceUri);
1387         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1388         Uri targetUri("");
1389         result = fileAccessHelper->CreateFile(newDirUriTest2, "test.txt", targetUri);
1390         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1391         std::vector<Result> moveResult;
1392         result = fileAccessHelper->MoveItem(sourceUri, newDirUriTest2, moveResult, false);
1393         EXPECT_EQ(result, -2);
1394         EXPECT_EQ(moveResult[0].errCode, OHOS::FileAccessFwk::ERR_EXIST);
1395         result = fileAccessHelper->Delete(newDirUriTest1);
1396         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1397         result = fileAccessHelper->Delete(newDirUriTest2);
1398         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1399     } catch (...) {
1400         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0001 occurs an exception.";
1401     }
1402     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0001";
1403 }
1404 
1405 /**
1406 * @tc.number: user_file_service_external_file_access_Move_item_0002
1407 * @tc.name: external_file_access_Move_item_0002
1408 * @tc.desc: Test function of Move item interface.
1409 * @tc.size: MEDIUM
1410 * @tc.type: FUNC
1411 * @tc.level Level 1
1412 */
1413 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0002, testing::ext::TestSize.Level1)
1414 {
1415     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1416     EXPECT_NE(fileAccessHelper, nullptr);
1417     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0002";
1418     try {
1419         vector<RootInfo> info;
1420         int result = fileAccessHelper->GetRoots(info);
1421         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1422         Uri parentUri(info[0].uri);
1423         Uri newDirUriTest1("");
1424         Uri newDirUriTest2("");
1425         result = fileAccessHelper->Mkdir(parentUri, "test7", newDirUriTest1);
1426         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1427         result = fileAccessHelper->Mkdir(parentUri, "test8", newDirUriTest2);
1428         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1429         Uri sourceUri("");
1430         result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", sourceUri);
1431         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1432         Uri targetUri("");
1433         result = fileAccessHelper->CreateFile(newDirUriTest2, "test.txt", targetUri);
1434         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1435         std::vector<Result> moveResult;
1436         result = fileAccessHelper->MoveItem(sourceUri, newDirUriTest2, moveResult, true);
1437         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1438         result = fileAccessHelper->Delete(newDirUriTest1);
1439         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1440         result = fileAccessHelper->Delete(newDirUriTest2);
1441         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1442     } catch (...) {
1443         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0002 occurs an exception.";
1444     }
1445     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0002";
1446 }
1447 
1448 /**
1449 * @tc.number: user_file_service_external_file_access_Move_item_0003
1450 * @tc.name: external_file_access_Move_item_0003
1451 * @tc.desc: Test function of Move item interface.
1452 * @tc.size: MEDIUM
1453 * @tc.type: FUNC
1454 * @tc.level Level 1
1455 */
1456 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0003, testing::ext::TestSize.Level1)
1457 {
1458     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1459     EXPECT_NE(fileAccessHelper, nullptr);
1460     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0003";
1461     try {
1462         vector<RootInfo> info;
1463         int result = fileAccessHelper->GetRoots(info);
1464         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1465         Uri parentUri(info[0].uri);
1466         Uri newDirUriTest1("");
1467         Uri newDirUriTest2("");
1468         result = fileAccessHelper->Mkdir(parentUri, "test9", newDirUriTest1);
1469         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1470         result = fileAccessHelper->Mkdir(parentUri, "test10", newDirUriTest2);
1471         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1472         Uri sourceUri("");
1473         result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", sourceUri);
1474         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1475         Uri targetUri("");
1476         result = fileAccessHelper->CreateFile(newDirUriTest2, "test.txt", targetUri);
1477         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1478         std::vector<Result> moveResult;
1479         result = fileAccessHelper->MoveItem(newDirUriTest1, newDirUriTest2, moveResult, false);
1480         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1481         GTEST_LOG_(INFO) << "Move_0000 result:" << result;
1482         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1483         result = fileAccessHelper->Delete(newDirUriTest2);
1484         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1485     } catch (...) {
1486         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0003 occurs an exception.";
1487     }
1488     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0003";
1489 }
1490 
1491 /**
1492 * @tc.number: user_file_service_external_file_access_Move_item_0004
1493 * @tc.name: external_file_access_Move_item_0004
1494 * @tc.desc: Test function of Move item interface.
1495 * @tc.size: MEDIUM
1496 * @tc.type: FUNC
1497 * @tc.level Level 1
1498 */
1499 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0004, testing::ext::TestSize.Level1)
1500 {
1501     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1502     EXPECT_NE(fileAccessHelper, nullptr);
1503     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0004";
1504     try {
1505         vector<RootInfo> info;
1506         int result = fileAccessHelper->GetRoots(info);
1507         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1508         Uri parentUri(info[0].uri);
1509         Uri newDirUriTest1("");
1510         Uri newDirUriTest2("");
1511         Uri newDirUriTest3("");
1512         result = fileAccessHelper->Mkdir(parentUri, "test3", newDirUriTest1);
1513         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1514         result = fileAccessHelper->Mkdir(parentUri, "test4", newDirUriTest2);
1515         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1516         result = fileAccessHelper->Mkdir(newDirUriTest2, "test3", newDirUriTest3);
1517         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1518         Uri sourceUri("");
1519         result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", sourceUri);
1520         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1521         Uri targetUri("");
1522         result = fileAccessHelper->CreateFile(newDirUriTest3, "test.txt", targetUri);
1523         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1524         std::vector<Result> moveResult;
1525         result = fileAccessHelper->MoveItem(newDirUriTest1, newDirUriTest2, moveResult, false);
1526         EXPECT_EQ(result, -2);
1527         EXPECT_EQ(moveResult[0].errCode, OHOS::FileAccessFwk::ERR_EXIST);
1528         GTEST_LOG_(INFO) << "Move_0000 result:" << result;
1529         result = fileAccessHelper->Delete(newDirUriTest1);
1530         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1531         result = fileAccessHelper->Delete(newDirUriTest2);
1532         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1533     } catch (...) {
1534         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0004 occurs an exception.";
1535     }
1536     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0004";
1537 }
1538 
1539 /**
1540 * @tc.number: user_file_service_external_file_access_Move_item_0005
1541 * @tc.name: external_file_access_Move_item_0005
1542 * @tc.desc: Test function of Move item interface.
1543 * @tc.size: MEDIUM
1544 * @tc.type: FUNC
1545 * @tc.level Level 1
1546 */
1547 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0005, testing::ext::TestSize.Level1)
1548 {
1549     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1550     EXPECT_NE(fileAccessHelper, nullptr);
1551     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0005";
1552     try {
1553         vector<RootInfo> info;
1554         int result = fileAccessHelper->GetRoots(info);
1555         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1556         Uri parentUri(info[0].uri);
1557         Uri newDirUriTest1("");
1558         Uri newDirUriTest2("");
1559         Uri newDirUriTest3("");
1560         result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1561         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1562         result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1563         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1564         result = fileAccessHelper->Mkdir(newDirUriTest2, "test1", newDirUriTest3);
1565         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1566         Uri sourceUri("");
1567         result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", sourceUri);
1568         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1569         Uri targetUri("");
1570         result = fileAccessHelper->CreateFile(newDirUriTest3, "test.txt", targetUri);
1571         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1572         std::vector<Result> moveResult;
1573         result = fileAccessHelper->MoveItem(newDirUriTest1, newDirUriTest2, moveResult, true);
1574         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1575         GTEST_LOG_(INFO) << "Move_0000 result:" << result;
1576         result = fileAccessHelper->Delete(newDirUriTest2);
1577         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1578     } catch (...) {
1579         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0005 occurs an exception.";
1580     }
1581     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0005";
1582 }
1583 
1584 /**
1585 * @tc.number: user_file_service_external_file_access_Move_item_0006
1586 * @tc.name: external_file_access_Move_item_0006
1587 * @tc.desc: Test function of Move item interface.
1588 * @tc.size: MEDIUM
1589 * @tc.type: FUNC
1590 * @tc.level Level 1
1591 */
1592 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0006, testing::ext::TestSize.Level1)
1593 {
1594     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1595     EXPECT_NE(fileAccessHelper, nullptr);
1596     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0006";
1597     try {
1598         vector<RootInfo> info;
1599         int result = fileAccessHelper->GetRoots(info);
1600         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1601         Uri parentUri(info[0].uri);
1602         Uri newDirUriTest1("");
1603         result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1604         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1605         Uri newDirUriTest2("");
1606         result = fileAccessHelper->Mkdir(newDirUriTest1, "test2", newDirUriTest2);
1607         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1608         Uri sourceUri1("");
1609         result = fileAccessHelper->CreateFile(newDirUriTest2, "test.txt", sourceUri1);
1610         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1611         Uri sourceUri2("");
1612         result = fileAccessHelper->CreateFile(newDirUriTest2, "test1.txt", sourceUri2);
1613         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1614         Uri newDirUriTest3("");
1615         result = fileAccessHelper->Mkdir(parentUri, "test3", newDirUriTest3);
1616         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1617         Uri newDirUriTest4("");
1618         result = fileAccessHelper->Mkdir(newDirUriTest3, "test1", newDirUriTest4);
1619         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1620         Uri newDirUriTest5("");
1621         result = fileAccessHelper->Mkdir(newDirUriTest4, "test2", newDirUriTest5);
1622         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1623         Uri targetUri1("");
1624         result = fileAccessHelper->CreateFile(newDirUriTest5, "test.txt", targetUri1);
1625         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1626         std::vector<Result> moveResult;
1627         result = fileAccessHelper->MoveItem(newDirUriTest1, newDirUriTest3, moveResult, false);
1628         EXPECT_EQ(result, -2);
1629         EXPECT_EQ(moveResult[0].errCode, OHOS::FileAccessFwk::ERR_EXIST);
1630         result = fileAccessHelper->Delete(newDirUriTest1);
1631         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1632         result = fileAccessHelper->Delete(newDirUriTest3);
1633         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1634     } catch (...) {
1635         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0006 occurs an exception.";
1636     }
1637     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0006";
1638 }
1639 
1640 /**
1641 * @tc.number: user_file_service_external_file_access_Move_item_0007
1642 * @tc.name: external_file_access_Move_item_0007
1643 * @tc.desc: Test function of Move item interface.
1644 * @tc.size: MEDIUM
1645 * @tc.type: FUNC
1646 * @tc.level Level 1
1647 */
1648 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0007, testing::ext::TestSize.Level1)
1649 {
1650     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1651     EXPECT_NE(fileAccessHelper, nullptr);
1652     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0007";
1653     try {
1654         vector<RootInfo> info;
1655         int result = fileAccessHelper->GetRoots(info);
1656         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1657         Uri parentUri(info[0].uri);
1658         Uri newDirUriTest1("");
1659         result = fileAccessHelper->Mkdir(parentUri, "test3", newDirUriTest1);
1660         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1661         Uri newDirUriTest2("");
1662         result = fileAccessHelper->Mkdir(newDirUriTest1, "test4", newDirUriTest2);
1663         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1664         Uri sourceUri1("");
1665         result = fileAccessHelper->CreateFile(newDirUriTest2, "test.txt", sourceUri1);
1666         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1667         Uri sourceUri2("");
1668         result = fileAccessHelper->CreateFile(newDirUriTest2, "test3.txt", sourceUri2);
1669         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1670         Uri newDirUriTest3("");
1671         result = fileAccessHelper->Mkdir(parentUri, "test5", newDirUriTest3);
1672         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1673         Uri newDirUriTest4("");
1674         result = fileAccessHelper->Mkdir(newDirUriTest3, "test3", newDirUriTest4);
1675         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1676         Uri newDirUriTest5("");
1677         result = fileAccessHelper->Mkdir(newDirUriTest4, "test4", newDirUriTest5);
1678         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1679         Uri targetUri1("");
1680         result = fileAccessHelper->CreateFile(newDirUriTest5, "test.txt", targetUri1);
1681         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1682         std::vector<Result> moveResult;
1683         result = fileAccessHelper->MoveItem(newDirUriTest1, newDirUriTest3, moveResult, true);
1684         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1685         EXPECT_EQ(moveResult.size(), 0);
1686         result = fileAccessHelper->Delete(newDirUriTest3);
1687         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1688     } catch (...) {
1689         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0007 occurs an exception.";
1690     }
1691     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0007";
1692 }
1693 
1694 /**
1695 * @tc.number: user_file_service_external_file_access_Move_item_0008
1696 * @tc.name: external_file_access_Move_item_0008
1697 * @tc.desc: Test function of Move item interface.
1698 * @tc.size: MEDIUM
1699 * @tc.type: FUNC
1700 * @tc.level Level 1
1701 */
1702 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0008, testing::ext::TestSize.Level1)
1703 {
1704     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1705     EXPECT_NE(fileAccessHelper, nullptr);
1706     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0008";
1707     try {
1708         vector<RootInfo> info;
1709         int result = fileAccessHelper->GetRoots(info);
1710         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1711         Uri parentUri(info[0].uri);
1712         Uri newDirUriTest1("");
1713         result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1714         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1715         Uri sourceUri("");
1716         result = fileAccessHelper->CreateFile(newDirUriTest1, "test", sourceUri);
1717         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1718 
1719         Uri newDirUriTest2("");
1720         result = fileAccessHelper->Mkdir(parentUri, "test3", newDirUriTest2);
1721         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1722         Uri newDirUriTest3("");
1723         result = fileAccessHelper->Mkdir(newDirUriTest2, "test", newDirUriTest3);
1724         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1725         std::vector<Result> moveResult;
1726         result = fileAccessHelper->MoveItem(sourceUri, newDirUriTest2, moveResult, true);
1727         EXPECT_EQ(result, -2);
1728         EXPECT_EQ(moveResult.size(), 1);
1729         result = fileAccessHelper->Delete(newDirUriTest1);
1730         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1731         result = fileAccessHelper->Delete(newDirUriTest2);
1732         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1733     } catch (...) {
1734         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0008 occurs an exception.";
1735     }
1736     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0008";
1737 }
1738 
1739 /**
1740 * @tc.number: user_file_service_external_file_access_Move_item_0009
1741 * @tc.name: external_file_access_Move_item_0009
1742 * @tc.desc: Test function of Move item interface.
1743 * @tc.size: MEDIUM
1744 * @tc.type: FUNC
1745 * @tc.level Level 1
1746 */
1747 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0009, testing::ext::TestSize.Level1)
1748 {
1749     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1750     EXPECT_NE(fileAccessHelper, nullptr);
1751     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0009";
1752     try {
1753         vector<RootInfo> info;
1754         int result = fileAccessHelper->GetRoots(info);
1755         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1756 
1757         Uri parentUri(info[0].uri);
1758         Uri newDirUriTest1("");
1759         result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1760         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1761         Uri sourceUri("");
1762         result = fileAccessHelper->Mkdir(newDirUriTest1, "test", sourceUri);
1763         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1764 
1765         Uri newDirUriTest2("");
1766         result = fileAccessHelper->Mkdir(parentUri, "test3", newDirUriTest2);
1767         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1768         Uri targetUri("");
1769         result = fileAccessHelper->CreateFile(newDirUriTest2, "test", targetUri);
1770         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1771         std::vector<Result> moveResult;
1772         result = fileAccessHelper->MoveItem(sourceUri, newDirUriTest2, moveResult, true);
1773         EXPECT_EQ(result, -2);
1774         result = fileAccessHelper->Delete(newDirUriTest1);
1775         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1776         result = fileAccessHelper->Delete(newDirUriTest2);
1777         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1778     } catch (...) {
1779         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0009 occurs an exception.";
1780     }
1781     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0009";
1782 }
1783 
1784 /**
1785 * @tc.number: user_file_service_external_file_access_Move_item_0010
1786 * @tc.name: external_file_access_Move_0007
1787 * @tc.desc: Test function of Move item interface.
1788 * @tc.size: MEDIUM
1789 * @tc.type: FUNC
1790 * @tc.level Level 1
1791 */
1792 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0010, testing::ext::TestSize.Level1)
1793 {
1794     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1795     EXPECT_NE(fileAccessHelper, nullptr);
1796     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0010";
1797     try {
1798         std::vector<Result> moveResult;
1799         vector<RootInfo> info;
1800         int result = fileAccessHelper->GetRoots(info);
1801         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1802         Uri parentUri(info[0].uri);
1803         Uri newDirUriTest1("");
1804         result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1805         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1806         Uri sourceUri(newDirUriTest1.ToString() + "/" + "test");
1807 
1808         Uri newDirUriTest2("");
1809         result = fileAccessHelper->Mkdir(parentUri, "test3", newDirUriTest2);
1810         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1811         result = fileAccessHelper->MoveItem(sourceUri, newDirUriTest2, moveResult, true);
1812         EXPECT_EQ(result, -1);
1813         EXPECT_EQ(moveResult[0].errCode, OHOS::FileAccessFwk::ERR_URI);
1814         result = fileAccessHelper->Delete(newDirUriTest1);
1815         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1816         result = fileAccessHelper->Delete(newDirUriTest2);
1817         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1818     } catch (...) {
1819         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0010 occurs an exception.";
1820     }
1821     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0010";
1822 }
1823 
1824 /**
1825 * @tc.number: user_file_service_external_file_access_Move_item_0011
1826 * @tc.name: external_file_access_Move_item_0011
1827 * @tc.desc: Test function of Move item interface.
1828 * @tc.size: MEDIUM
1829 * @tc.type: FUNC
1830 * @tc.level Level 1
1831 */
1832 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0011, testing::ext::TestSize.Level1)
1833 {
1834     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1835     EXPECT_NE(fileAccessHelper, nullptr);
1836     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0011";
1837     try {
1838         std::vector<Result> moveResult;
1839         vector<RootInfo> info;
1840         int result = fileAccessHelper->GetRoots(info);
1841         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1842         Uri parentUri(info[0].uri);
1843         Uri newDirUriTest1("");
1844         result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1845         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1846         Uri sourceUri("");
1847         result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", sourceUri);
1848         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1849 
1850         Uri newDirUriTest2("");
1851         result = fileAccessHelper->Mkdir(parentUri, "test2", newDirUriTest2);
1852         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1853         Uri targetUri(newDirUriTest2.ToString() + "/" + "test3");
1854         result = fileAccessHelper->MoveItem(sourceUri, targetUri, moveResult, true);
1855         EXPECT_EQ(result, -1);
1856         EXPECT_EQ(moveResult[0].errCode, OHOS::FileAccessFwk::ERR_URI);
1857         result = fileAccessHelper->Delete(newDirUriTest1);
1858         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1859         result = fileAccessHelper->Delete(newDirUriTest2);
1860         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1861     } catch (...) {
1862         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0011 occurs an exception.";
1863     }
1864     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0011";
1865 }
1866 
1867 /**
1868 * @tc.number: user_file_service_external_file_access_Move_item_0012
1869 * @tc.name: external_file_access_Move_item_0012
1870 * @tc.desc: Test function of Move item interface.
1871 * @tc.size: MEDIUM
1872 * @tc.type: FUNC
1873 * @tc.level Level 1
1874 */
1875 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0012, testing::ext::TestSize.Level1)
1876 {
1877     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1878     EXPECT_NE(fileAccessHelper, nullptr);
1879     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0012";
1880     try {
1881         std::vector<Result> moveResult;
1882         vector<RootInfo> info;
1883         int result = fileAccessHelper->GetRoots(info);
1884         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1885         Uri parentUri(info[0].uri);
1886         Uri newDirUriTest1("");
1887         result = fileAccessHelper->Mkdir(parentUri, "测试目录1", newDirUriTest1);
1888         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1889         Uri uri1("");
1890         result = fileAccessHelper->CreateFile(newDirUriTest1, "测试文件.txt", uri1);
1891         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1892         Uri uri2("");
1893         result = fileAccessHelper->CreateFile(newDirUriTest1, "测试目录4", uri2);
1894         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1895 
1896         Uri newDirUriTest2("");
1897         result = fileAccessHelper->Mkdir(parentUri, "测试目录3", newDirUriTest2);
1898         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1899         Uri newDirUriTest3("");
1900         result = fileAccessHelper->Mkdir(newDirUriTest2, "测试目录1", newDirUriTest3);
1901         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1902         Uri newDirUriTest4("");
1903         result = fileAccessHelper->Mkdir(newDirUriTest3, "测试目录4", newDirUriTest4);
1904         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1905         Uri newDirUriTest5("");
1906         result = fileAccessHelper->CreateFile(newDirUriTest3, "测试文件.txt", newDirUriTest5);
1907         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1908 
1909         result = fileAccessHelper->MoveItem(newDirUriTest1, newDirUriTest2, moveResult, false);
1910         EXPECT_EQ(result, -2);
1911         EXPECT_EQ(moveResult[0].errCode, OHOS::FileAccessFwk::ERR_IS_DIR);
1912         EXPECT_EQ(moveResult[1].errCode, OHOS::FileAccessFwk::ERR_EXIST);
1913         result = fileAccessHelper->Delete(newDirUriTest1);
1914         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1915         result = fileAccessHelper->Delete(newDirUriTest2);
1916         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1917     } catch (...) {
1918         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0012 occurs an exception.";
1919     }
1920     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0012";
1921 }
1922 
1923 /**
1924 * @tc.number: user_file_service_external_file_access_Move_item_0013
1925 * @tc.name: external_file_access_Move_item_0013
1926 * @tc.desc: Test function of Move item interface.
1927 * @tc.size: MEDIUM
1928 * @tc.type: FUNC
1929 * @tc.level Level 1
1930 */
1931 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_item_0013, testing::ext::TestSize.Level1)
1932 {
1933     shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1934     EXPECT_NE(fileAccessHelper, nullptr);
1935     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_item_0013";
1936     try {
1937         std::vector<Result> moveResult;
1938         vector<RootInfo> info;
1939         int result = fileAccessHelper->GetRoots(info);
1940         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1941         Uri parentUri(info[0].uri);
1942         Uri newDirUriTest1("");
1943         result = fileAccessHelper->Mkdir(parentUri, "test1", newDirUriTest1);
1944         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1945         Uri uri1("");
1946         result = fileAccessHelper->CreateFile(newDirUriTest1, "test.txt", uri1);
1947         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1948         Uri uri2("");
1949         result = fileAccessHelper->CreateFile(newDirUriTest1, "test4", uri2);
1950         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1951 
1952         Uri newDirUriTest2("");
1953         result = fileAccessHelper->Mkdir(parentUri, "test3", newDirUriTest2);
1954         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1955         Uri newDirUriTest3("");
1956         result = fileAccessHelper->Mkdir(newDirUriTest2, "test1", newDirUriTest3);
1957         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1958         Uri newDirUriTest4("");
1959         result = fileAccessHelper->Mkdir(newDirUriTest3, "test4", newDirUriTest4);
1960         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1961         Uri newDirUriTest5("");
1962         result = fileAccessHelper->Mkdir(newDirUriTest3, "test.txt", newDirUriTest5);
1963         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1964 
1965         result = fileAccessHelper->MoveItem(newDirUriTest1, newDirUriTest2, moveResult, true);
1966         EXPECT_EQ(result, -2);
1967         EXPECT_EQ(moveResult[0].errCode, OHOS::FileAccessFwk::ERR_IS_DIR);
1968         result = fileAccessHelper->Delete(newDirUriTest1);
1969         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1970         result = fileAccessHelper->Delete(newDirUriTest2);
1971         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1972     } catch (...) {
1973         GTEST_LOG_(ERROR) << "external_file_access_Move_item_0013 occurs an exception.";
1974     }
1975     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_item_0013";
1976 }
1977 } // namespace
1978