• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "accesstoken_kit.h"
24 #include "context_impl.h"
25 #include "file_access_framework_errno.h"
26 #include "iservice_registry.h"
27 #include "nativetoken_kit.h"
28 #include "token_setproc.h"
29 
30 #define private public
31 #include "file_access_helper.h"
32 #undef private
33 
34 namespace {
35 using namespace std;
36 using namespace OHOS;
37 using namespace FileAccessFwk;
38 using json = nlohmann::json;
39 const int ABILITY_ID = 5003;
40 const int INIT_THREADS_NUMBER = 4;
41 const int ACTUAL_SUCCESS_THREADS_NUMBER = 1;
42 shared_ptr<FileAccessHelper> g_fah = nullptr;
43 int g_num = 0;
44 const int UID_TRANSFORM_TMP = 20000000;
45 const int UID_DEFAULT = 0;
46 shared_ptr<OHOS::AbilityRuntime::Context> g_context = nullptr;
47 const int FILE_COUNT_1 = 1;
48 const int FILE_COUNT_2 = 2;
49 const int FILE_COUNT_3 = 3;
50 const int FILE_COUNT_4 = 4;
51 const int FILE_COUNT_5 = 5;
52 const int FILE_COUNT_6 = 6;
53 
SetNativeToken()54 void SetNativeToken()
55 {
56     uint64_t tokenId;
57     const char **perms = new const char *[1];
58     perms[0] = "ohos.permission.FILE_ACCESS_MANAGER";
59     NativeTokenInfoParams infoInstance = {
60         .dcapsNum = 0,
61         .permsNum = 1,
62         .aclsNum = 0,
63         .dcaps = nullptr,
64         .perms = perms,
65         .acls = nullptr,
66         .aplStr = "system_core",
67     };
68 
69     infoInstance.processName = "SetUpTestCase";
70     tokenId = GetAccessTokenId(&infoInstance);
71     const uint64_t systemAppMask = (static_cast<uint64_t>(1) << 32);
72     tokenId |= systemAppMask;
73     SetSelfTokenID(tokenId);
74     OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
75     delete[] perms;
76 }
77 
78 class FileExtensionHelperTest : public testing::Test {
79 public:
SetUpTestCase(void)80     static void SetUpTestCase(void)
81     {
82         cout << "FileExtensionHelperTest code test" << endl;
83         SetNativeToken();
84         auto saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
85         auto remoteObj = saManager->GetSystemAbility(ABILITY_ID);
86         g_context = make_shared<OHOS::AbilityRuntime::ContextImpl>();
87         g_context->SetToken(remoteObj);
88         AAFwk::Want want;
89         vector<AAFwk::Want> wantVec;
90         setuid(UID_TRANSFORM_TMP);
91         int ret = FileAccessHelper::GetRegisteredFileAccessExtAbilityInfo(wantVec);
92         EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
93         bool sus = false;
94         for (size_t i = 0; i < wantVec.size(); i++) {
95             auto element = wantVec[i].GetElement();
96             if (element.GetBundleName() == "com.ohos.UserFile.ExternalFileManager" &&
97                 element.GetAbilityName() == "FileExtensionAbility") {
98                 want = wantVec[i];
99                 sus = true;
100                 break;
101             }
102         }
103         EXPECT_TRUE(sus);
104         vector<AAFwk::Want> wants{want};
105         g_fah = FileAccessHelper::Creator(remoteObj, wants);
106         if (g_fah == nullptr) {
107             GTEST_LOG_(ERROR) << "external_file_access_test g_fah is nullptr";
108             exit(1);
109         }
110         setuid(UID_DEFAULT);
111     }
TearDownTestCase()112     static void TearDownTestCase()
113     {
114         g_fah->Release();
115         g_fah = nullptr;
116     };
SetUp()117     void SetUp(){};
TearDown()118     void TearDown(){};
119 };
120 
121 /**
122  * @tc.number: user_file_service_external_file_access_OpenFile_0000
123  * @tc.name: external_file_access_OpenFile_0000
124  * @tc.desc: Test function of OpenFile interface for SUCCESS.
125  * @tc.size: MEDIUM
126  * @tc.type: FUNC
127  * @tc.level Level 1
128  * @tc.require: SR000H0386
129  */
130 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0000, testing::ext::TestSize.Level1)
131 {
132     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0000";
133     try {
134         vector<RootInfo> info;
135         int result = g_fah->GetRoots(info);
136         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
137         for (size_t i = 0; i < info.size(); i++) {
138             Uri parentUri(info[i].uri);
139             GTEST_LOG_(INFO) << parentUri.ToString();
140             Uri newDirUriTest1("");
141             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
142             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
143             Uri newFileUri("");
144             result = g_fah->CreateFile(newDirUriTest1, "external_file_access_OpenFile_0000.txt", newFileUri);
145             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
146             int fd;
147             result = g_fah->OpenFile(newFileUri, WRITE_READ, fd);
148             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
149             GTEST_LOG_(INFO) << "OpenFile_0000 result:" << result;
150             close(fd);
151             result = g_fah->Delete(newDirUriTest1);
152             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
153         }
154     } catch (...) {
155         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0000 occurs an exception.";
156     }
157     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0000";
158 }
159 
160 /**
161  * @tc.number: user_file_service_external_file_access_OpenFile_0001
162  * @tc.name: external_file_access_OpenFile_0001
163  * @tc.desc: Test function of OpenFile interface for ERROR which Uri is null.
164  * @tc.size: MEDIUM
165  * @tc.type: FUNC
166  * @tc.level Level 1
167  * @tc.require: SR000H0386
168  */
169 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0001, testing::ext::TestSize.Level1)
170 {
171     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0001";
172     try {
173         Uri uri("");
174         int fd;
175         int result = g_fah->OpenFile(uri, WRITE_READ, fd);
176         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
177         GTEST_LOG_(INFO) << "OpenFile_0001 result:" << result;
178     } catch (...) {
179         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0001 occurs an exception.";
180     }
181     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0001";
182 }
183 
184 /**
185  * @tc.number: user_file_service_external_file_access_OpenFile_0002
186  * @tc.name: external_file_access_OpenFile_0002
187  * @tc.desc: Test function of OpenFile interface for ERROR which Uri is absolute path.
188  * @tc.size: MEDIUM
189  * @tc.type: FUNC
190  * @tc.level Level 1
191  * @tc.require: SR000H0386
192  */
193 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0002, testing::ext::TestSize.Level1)
194 {
195     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0002";
196     try {
197         vector<RootInfo> info;
198         int result = g_fah->GetRoots(info);
199         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
200         for (size_t i = 0; i < info.size(); i++) {
201             Uri parentUri(info[i].uri);
202             Uri newFileUri("");
203             result = g_fah->CreateFile(parentUri, "external_file_access_OpenFile_0002.txt", newFileUri);
204             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
205             Uri uri("storage/media/100/local/files/Download/external_file_access_OpenFile_0002.txt");
206             int fd;
207             result = g_fah->OpenFile(uri, WRITE_READ, fd);
208             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
209             GTEST_LOG_(INFO) << "OpenFile_0002 result:" << result;
210             result = g_fah->Delete(newFileUri);
211             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
212         }
213     } catch (...) {
214         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0002 occurs an exception.";
215     }
216     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0002";
217 }
218 
219 /**
220  * @tc.number: user_file_service_external_file_access_OpenFile_0003
221  * @tc.name: external_file_access_OpenFile_0003
222  * @tc.desc: Test function of OpenFile interface for ERROR which Uri is special symbols.
223  * @tc.size: MEDIUM
224  * @tc.type: FUNC
225  * @tc.level Level 1
226  * @tc.require: SR000H0386
227  */
228 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0003, testing::ext::TestSize.Level1)
229 {
230     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0003";
231     try {
232         Uri uri("~!@#$%^&*()_");
233         int fd;
234         int result = g_fah->OpenFile(uri, WRITE_READ, fd);
235         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
236         GTEST_LOG_(INFO) << "OpenFile_0003 result:" << result;
237     } catch (...) {
238         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0003 occurs an exception.";
239     }
240     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0003";
241 }
242 
243 /**
244  * @tc.number: user_file_service_external_file_access_OpenFile_0004
245  * @tc.name: external_file_access_OpenFile_0004
246  * @tc.desc: Test function of OpenFile interface for ERROR which flag is -1.
247  * @tc.size: MEDIUM
248  * @tc.type: FUNC
249  * @tc.level Level 1
250  * @tc.require: SR000H0386
251  */
252 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0004, testing::ext::TestSize.Level1)
253 {
254     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0004";
255     try {
256         vector<RootInfo> info;
257         int result = g_fah->GetRoots(info);
258         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
259         for (size_t i = 0; i < info.size(); i++) {
260             Uri parentUri(info[i].uri);
261             Uri newFileUri("");
262             result = g_fah->CreateFile(parentUri, "external_file_access_OpenFile_0004.txt", newFileUri);
263             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
264             int fd;
265             int flag = -1;
266             result = g_fah->OpenFile(newFileUri, flag, fd);
267             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
268             GTEST_LOG_(INFO) << "OpenFile_0004 result:" << result;
269             result = g_fah->Delete(newFileUri);
270             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
271         }
272     } catch (...) {
273         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0004 occurs an exception.";
274     }
275     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0004";
276 }
277 
278 /**
279  * @tc.number: user_file_service_external_file_access_OpenFile_0005
280  * @tc.name: external_file_access_OpenFile_0005
281  * @tc.desc: Test function of OpenFile interface for SUCCESS which flag is 0.
282  * @tc.size: MEDIUM
283  * @tc.type: FUNC
284  * @tc.level Level 1
285  * @tc.require: SR000H0386
286  */
287 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0005, testing::ext::TestSize.Level1)
288 {
289     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0005";
290     try {
291         vector<RootInfo> info;
292         int result = g_fah->GetRoots(info);
293         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
294         for (size_t i = 0; i < info.size(); i++) {
295             Uri parentUri(info[i].uri);
296             Uri newFileUri("");
297             result = g_fah->CreateFile(parentUri, "external_file_access_OpenFile_0005.txt", newFileUri);
298             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
299             int fd;
300             result = g_fah->OpenFile(newFileUri, READ, fd);
301             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
302             GTEST_LOG_(INFO) << "OpenFile_0005 result:" << result;
303             close(fd);
304             result = g_fah->Delete(newFileUri);
305             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
306         }
307     } catch (...) {
308         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0005 occurs an exception.";
309     }
310     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0005";
311 }
312 
313 /**
314  * @tc.number: user_file_service_external_file_access_OpenFile_0006
315  * @tc.name: external_file_access_OpenFile_0006
316  * @tc.desc: Test function of OpenFile interface for SUCCESS which flag is 1.
317  * @tc.size: MEDIUM
318  * @tc.type: FUNC
319  * @tc.level Level 1
320  * @tc.require: SR000H0386
321  */
322 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0006, testing::ext::TestSize.Level1)
323 {
324     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0006";
325     try {
326         vector<RootInfo> info;
327         int result = g_fah->GetRoots(info);
328         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
329         for (size_t i = 0; i < info.size(); i++) {
330             Uri parentUri(info[i].uri);
331             Uri newFileUri("");
332             result = g_fah->CreateFile(parentUri, "external_file_access_OpenFile_0006.txt", newFileUri);
333             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
334             int fd;
335             result = g_fah->OpenFile(newFileUri, WRITE, fd);
336             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
337             GTEST_LOG_(INFO) << "OpenFile_0006 result:" << result;
338             close(fd);
339             result = g_fah->Delete(newFileUri);
340             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
341         }
342     } catch (...) {
343         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0006 occurs an exception.";
344     }
345     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0006";
346 }
347 
348 /**
349  * @tc.number: user_file_service_external_file_access_OpenFile_0007
350  * @tc.name: external_file_access_OpenFile_0007
351  * @tc.desc: Test function of OpenFile interface for SUCCESS which flag is 2.
352  * @tc.size: MEDIUM
353  * @tc.type: FUNC
354  * @tc.level Level 1
355  * @tc.require: SR000H0386
356  */
357 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0007, testing::ext::TestSize.Level1)
358 {
359     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0007";
360     try {
361         vector<RootInfo> info;
362         int result = g_fah->GetRoots(info);
363         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
364         for (size_t i = 0; i < info.size(); i++) {
365             Uri parentUri(info[i].uri);
366             Uri newFileUri("");
367             result = g_fah->CreateFile(parentUri, "external_file_access_OpenFile_0007.txt", newFileUri);
368             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
369             int fd;
370             result = g_fah->OpenFile(newFileUri, WRITE_READ, fd);
371             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
372             GTEST_LOG_(INFO) << "OpenFile_0007 result:" << result;
373             close(fd);
374             result = g_fah->Delete(newFileUri);
375             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
376         }
377     } catch (...) {
378         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0007 occurs an exception.";
379     }
380     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0007";
381 }
382 
OpenFileTdd(shared_ptr<FileAccessHelper> fahs,Uri uri,int flag,int fd)383 static void OpenFileTdd(shared_ptr<FileAccessHelper> fahs, Uri uri, int flag, int fd)
384 {
385     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFileTdd";
386     int ret = fahs->OpenFile(uri, flag, fd);
387     if (ret != OHOS::FileAccessFwk::ERR_OK) {
388         GTEST_LOG_(ERROR) << "OpenFile get result error, code:" << ret;
389         return;
390     }
391     EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
392     EXPECT_GE(fd, OHOS::FileAccessFwk::ERR_OK);
393     g_num++;
394     close(fd);
395     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFileTdd";
396 }
397 
398 /**
399  * @tc.number: user_file_service_external_file_access_OpenFile_0008
400  * @tc.name: external_file_access_OpenFile_0008
401  * @tc.desc: Test function of OpenFile interface for SUCCESS which Concurrent.
402  * @tc.size: MEDIUM
403  * @tc.type: FUNC
404  * @tc.level Level 1
405  * @tc.require: SR000H0386
406  */
407 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0008, testing::ext::TestSize.Level1)
408 {
409     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0008";
410     try {
411         vector<RootInfo> info;
412         int result = g_fah->GetRoots(info);
413         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
414         for (size_t i = 0; i < info.size(); i++) {
415             Uri parentUri(info[i].uri);
416             Uri newFileUri("");
417             int fd;
418             std::string displayName = "test1.txt";
419             g_num = 0;
420             result = g_fah->CreateFile(parentUri, displayName, newFileUri);
421             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
422             for (size_t j = 0; j < INIT_THREADS_NUMBER; j++) {
423                 std::thread execthread(OpenFileTdd, g_fah, newFileUri, WRITE_READ, fd);
424                 execthread.join();
425             }
426             EXPECT_EQ(g_num, INIT_THREADS_NUMBER);
427             result = g_fah->Delete(newFileUri);
428             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
429         }
430     } catch (...) {
431         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0008 occurs an exception.";
432     }
433     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0008";
434 }
435 
ReplaceBundleNameFromPath(std::string & path,const std::string & newName)436 static bool ReplaceBundleNameFromPath(std::string &path, const std::string &newName)
437 {
438     Uri uri(path);
439     std::string scheme = uri.GetScheme();
440     if (scheme == FILE_SCHEME_NAME) {
441         std::string curName = uri.GetAuthority();
442         if (curName.empty()) {
443             return false;
444         }
445         path.replace(path.find(curName), curName.length(), newName);
446         return true;
447     }
448 
449     std::string tPath = uri.GetPath();
450     if (tPath.empty()) {
451         GTEST_LOG_(INFO) << "Uri path error.";
452         return false;
453     }
454 
455     if (tPath.front() != '/') {
456         GTEST_LOG_(INFO) << "Uri path format error.";
457         return false;
458     }
459 
460     auto index = tPath.substr(1).find_first_of("/");
461     auto bundleName = tPath.substr(1, index);
462     if (bundleName.empty()) {
463         GTEST_LOG_(INFO) << "bundleName empty.";
464         return false;
465     }
466 
467     path.replace(path.find(bundleName), bundleName.length(), newName);
468     return true;
469 }
470 
471 /**
472  * @tc.number: user_file_service_external_file_access_OpenFile_0009
473  * @tc.name: external_file_access_OpenFile_0009
474  * @tc.desc: Test function of OpenFile interface for FAILED because of GetProxyByUri failed.
475  * @tc.size: MEDIUM
476  * @tc.type: FUNC
477  * @tc.level Level 1
478  * @tc.require: SR000H0386
479  */
480 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0009, testing::ext::TestSize.Level1)
481 {
482     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0009";
483     try {
484         vector<RootInfo> info;
485         int result = g_fah->GetRoots(info);
486         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
487         for (size_t i = 0; i < info.size(); i++) {
488             std::string str = info[i].uri;
489             if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
490                 GTEST_LOG_(ERROR) << "replace BundleName failed.";
491                 EXPECT_TRUE(false);
492             }
493             int fd;
494             Uri newFileUri(str + "/NotExistFile.txt");
495             result = g_fah->OpenFile(newFileUri, WRITE_READ, fd);
496             EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
497             GTEST_LOG_(INFO) << "OpenFile_0009 result:" << result;
498         }
499     } catch (...) {
500         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0009 occurs an exception.";
501     }
502     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0009";
503 }
504 
505 /**
506  * @tc.number: user_file_service_external_file_access_OpenFile_0010
507  * @tc.name: external_file_access_OpenFile_0010
508  * @tc.desc: Test function of OpenFile interface for SUCCESS, the file name is chinese.
509  * @tc.size: MEDIUM
510  * @tc.type: FUNC
511  * @tc.level Level 1
512  * @tc.require: I70SX9
513  */
514 HWTEST_F(FileExtensionHelperTest, external_file_access_OpenFile_0010, testing::ext::TestSize.Level1)
515 {
516     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_OpenFile_0010";
517     try {
518         vector<RootInfo> info;
519         int result = g_fah->GetRoots(info);
520         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
521         for (size_t i = 0; i < info.size(); i++) {
522             Uri parentUri(info[i].uri);
523             GTEST_LOG_(INFO) << parentUri.ToString();
524             Uri newDirUriTest1("");
525             result = g_fah->Mkdir(parentUri, "测试目录", newDirUriTest1);
526             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
527             EXPECT_EQ(newDirUriTest1.ToString().find("测试目录"), std::string::npos);
528             Uri newFileUri("");
529             result = g_fah->CreateFile(newDirUriTest1, "打开文件.txt", newFileUri);
530             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
531             EXPECT_EQ(newFileUri.ToString().find("打开文件.txt"), std::string::npos);
532             int fd;
533             result = g_fah->OpenFile(newFileUri, WRITE_READ, fd);
534             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
535             GTEST_LOG_(INFO) << "OpenFile_0010 result:" << result;
536             close(fd);
537             result = g_fah->Delete(newDirUriTest1);
538             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
539         }
540     } catch (...) {
541         GTEST_LOG_(ERROR) << "external_file_access_OpenFile_0010 occurs an exception.";
542     }
543     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_OpenFile_0010";
544 }
545 
546 /**
547  * @tc.number: user_file_service_external_file_access_CreateFile_0000
548  * @tc.name: external_file_access_CreateFile_0000
549  * @tc.desc: Test function of CreateFile interface for SUCCESS.
550  * @tc.size: MEDIUM
551  * @tc.type: FUNC
552  * @tc.level Level 1
553  * @tc.require: SR000H0386
554  */
555 HWTEST_F(FileExtensionHelperTest, external_file_access_CreateFile_0000, testing::ext::TestSize.Level1)
556 {
557     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFile_0000";
558     try {
559         vector<RootInfo> info;
560         int result = g_fah->GetRoots(info);
561         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
562         for (size_t i = 0; i < info.size(); i++) {
563             Uri parentUri(info[i].uri);
564             Uri newFileUri("");
565             result = g_fah->CreateFile(parentUri, "external_file_access_CreateFile_0000.txt", newFileUri);
566             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
567             GTEST_LOG_(INFO) << "CreateFile_0000 result:" << result;
568             result = g_fah->Delete(newFileUri);
569             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
570         }
571     } catch (...) {
572         GTEST_LOG_(ERROR) << "external_file_access_CreateFile_0000 occurs an exception.";
573     }
574     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFile_0000";
575 }
576 
577 /**
578  * @tc.number: user_file_service_external_file_access_CreateFile_0001
579  * @tc.name: external_file_access_CreateFile_0001
580  * @tc.desc: Test function of CreateFile interface for ERROR which parentUri is null.
581  * @tc.size: MEDIUM
582  * @tc.type: FUNC
583  * @tc.level Level 1
584  * @tc.require: SR000H0386
585  */
586 HWTEST_F(FileExtensionHelperTest, external_file_access_CreateFile_0001, testing::ext::TestSize.Level1)
587 {
588     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFile_0001";
589     try {
590         Uri newFileUri("");
591         Uri parentUri("");
592         int result = g_fah->CreateFile(parentUri, "external_file_access_CreateFile_0001.txt", newFileUri);
593         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
594         GTEST_LOG_(INFO) << "CreateFile_0001 result:" << result;
595     } catch (...) {
596         GTEST_LOG_(ERROR) << "external_file_access_CreateFile_0001 occurs an exception.";
597     }
598     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFile_0001";
599 }
600 
601 /**
602  * @tc.number: user_file_service_external_file_access_CreateFile_0002
603  * @tc.name: external_file_access_CreateFile_0002
604  * @tc.desc: Test function of CreateFile interface for ERROR which parentUri is absolute path.
605  * @tc.size: MEDIUM
606  * @tc.type: FUNC
607  * @tc.level Level 1
608  * @tc.require: SR000H0386
609  */
610 HWTEST_F(FileExtensionHelperTest, external_file_access_CreateFile_0002, testing::ext::TestSize.Level1)
611 {
612     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFile_0002";
613     try {
614         Uri newFileUri("");
615         Uri parentUri("storage/media/100/local/files/Download");
616         int result = g_fah->CreateFile(parentUri, "external_file_access_CreateFile_0002.txt", newFileUri);
617         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
618         GTEST_LOG_(INFO) << "CreateFile_0002 result:" << result;
619     } catch (...) {
620         GTEST_LOG_(ERROR) << "external_file_access_CreateFile_0002 occurs an exception.";
621     }
622     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFile_0002";
623 }
624 
625 /**
626  * @tc.number: user_file_service_external_file_access_CreateFile_0003
627  * @tc.name: external_file_access_CreateFile_0003
628  * @tc.desc: Test function of CreateFile interface for ERROR which parentUri is special symbols.
629  * @tc.size: MEDIUM
630  * @tc.type: FUNC
631  * @tc.level Level 1
632  * @tc.require: SR000H0386
633  */
634 HWTEST_F(FileExtensionHelperTest, external_file_access_CreateFile_0003, testing::ext::TestSize.Level1)
635 {
636     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFile_0002";
637     try {
638         Uri newFileUri("");
639         Uri parentUri("~!@#$%^&*()_");
640         int result = g_fah->CreateFile(parentUri, "external_file_access_CreateFile_0003.txt", newFileUri);
641         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
642         GTEST_LOG_(INFO) << "CreateFile_0003 result:" << result;
643     } catch (...) {
644         GTEST_LOG_(ERROR) << "external_file_access_CreateFile_0003 occurs an exception.";
645     }
646     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFile_0003";
647 }
648 
649 /**
650  * @tc.number: user_file_service_external_file_access_CreateFile_0004
651  * @tc.name: external_file_access_CreateFile_0004
652  * @tc.desc: Test function of CreateFile interface for ERROR which displayName is null.
653  * @tc.size: MEDIUM
654  * @tc.type: FUNC
655  * @tc.level Level 1
656  * @tc.require: SR000H0386
657  */
658 HWTEST_F(FileExtensionHelperTest, external_file_access_CreateFile_0004, testing::ext::TestSize.Level1)
659 {
660     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFile_0004";
661     try {
662         vector<RootInfo> info;
663         int result = g_fah->GetRoots(info);
664         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
665         for (size_t i = 0; i < info.size(); i++) {
666             Uri parentUri(info[i].uri);
667             Uri newFileUri("");
668             string displayName = "";
669             result = g_fah->CreateFile(parentUri, displayName, newFileUri);
670             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
671             GTEST_LOG_(INFO) << "CreateFile_0004 result:" << result;
672         }
673     } catch (...) {
674         GTEST_LOG_(ERROR) << "external_file_access_CreateFile_0004 occurs an exception.";
675     }
676     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFile_0004";
677 }
678 
CreateFileTdd(shared_ptr<FileAccessHelper> fahs,Uri uri,std::string displayName,Uri newFile)679 static void CreateFileTdd(shared_ptr<FileAccessHelper> fahs, Uri uri, std::string displayName, Uri newFile)
680 {
681     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFileTdd";
682     int ret = fahs->CreateFile(uri, displayName, newFile);
683     if (ret != OHOS::FileAccessFwk::ERR_OK) {
684         GTEST_LOG_(ERROR) << "CreateFileTdd get result error, code:" << ret;
685         return;
686     }
687     EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
688     EXPECT_NE(newFile.ToString(), "");
689     g_num++;
690     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFileTdd";
691 }
692 
693 /**
694  * @tc.number: user_file_service_external_file_access_CreateFile_0005
695  * @tc.name: external_file_access_CreateFile_0005
696  * @tc.desc: Test function of CreateFile interface for ERROR which Concurrent.
697  * @tc.size: MEDIUM
698  * @tc.type: FUNC
699  * @tc.level Level 1
700  * @tc.require: SR000H0386
701  */
702 HWTEST_F(FileExtensionHelperTest, external_file_access_CreateFile_0005, testing::ext::TestSize.Level1)
703 {
704     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFile_0005";
705     try {
706         vector<RootInfo> info;
707         int result = g_fah->GetRoots(info);
708         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
709         for (size_t i = 0; i < info.size(); i++) {
710             Uri parentUri(info[i].uri);
711             Uri newFileUri("");
712             std::string displayName = "test1.txt";
713             g_num = 0;
714             for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
715                 std::thread execthread(CreateFileTdd, g_fah, parentUri, displayName, newFileUri);
716                 execthread.join();
717             }
718             EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
719             Uri newDelete(info[i].uri + "/" + displayName);
720             result = g_fah->Delete(newDelete);
721             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
722         }
723     } catch (...) {
724         GTEST_LOG_(ERROR) << "external_file_access_CreateFile_0005 occurs an exception.";
725     }
726     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFile_0005";
727 }
728 
729 /**
730  * @tc.number: user_file_service_external_file_access_CreateFile_0006
731  * @tc.name: external_file_access_CreateFile_0006
732  * @tc.desc: Test function of CreateFile interface for ERROR because of GetProxyByUri failed.
733  * @tc.size: MEDIUM
734  * @tc.type: FUNC
735  * @tc.level Level 1
736  * @tc.require: SR000H0386
737  */
738 HWTEST_F(FileExtensionHelperTest, external_file_access_CreateFile_0006, testing::ext::TestSize.Level1)
739 {
740     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFile_0006";
741     try {
742         vector<RootInfo> info;
743         int result = g_fah->GetRoots(info);
744         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
745         for (size_t i = 0; i < info.size(); i++) {
746             std::string str = info[i].uri;
747             if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
748                 GTEST_LOG_(ERROR) << "replace BundleName failed.";
749                 EXPECT_TRUE(false);
750             }
751             Uri parentUri(str);
752             Uri newFileUri("");
753             string displayName = "test.txt";
754             result = g_fah->CreateFile(parentUri, displayName, newFileUri);
755             EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
756             GTEST_LOG_(INFO) << "CreateFile_0006 result:" << result;
757         }
758     } catch (...) {
759         GTEST_LOG_(ERROR) << "external_file_access_CreateFile_0006 occurs an exception.";
760     }
761     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFile_0006";
762 }
763 
764 /**
765  * @tc.number: user_file_service_external_file_access_CreateFile_0007
766  * @tc.name: external_file_access_CreateFile_0007
767  * @tc.desc: Test function of CreateFile interface for SUCCESS, the file name is chinese.
768  * @tc.size: MEDIUM
769  * @tc.type: FUNC
770  * @tc.level Level 1
771  * @tc.require: I70SX9
772  */
773 HWTEST_F(FileExtensionHelperTest, external_file_access_CreateFile_0007, testing::ext::TestSize.Level1)
774 {
775     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_CreateFile_0007";
776     try {
777         vector<RootInfo> info;
778         int result = g_fah->GetRoots(info);
779         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
780         for (size_t i = 0; i < info.size(); i++) {
781             Uri parentUri(info[i].uri);
782             Uri newFileUri("");
783             result = g_fah->CreateFile(parentUri, "新建文件.txt", newFileUri);
784             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
785             EXPECT_EQ(newFileUri.ToString().find("新建文件.txt"), std::string::npos);
786             GTEST_LOG_(INFO) << "CreateFile_0007 result:" << result;
787             result = g_fah->Delete(newFileUri);
788             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
789         }
790     } catch (...) {
791         GTEST_LOG_(ERROR) << "external_file_access_CreateFile_0007 occurs an exception.";
792     }
793     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_CreateFile_0007";
794 }
795 
796 /**
797  * @tc.number: user_file_service_external_file_access_Mkdir_0000
798  * @tc.name: external_file_access_Mkdir_0000
799  * @tc.desc: Test function of Mkdir interface for SUCCESS.
800  * @tc.size: MEDIUM
801  * @tc.type: FUNC
802  * @tc.level Level 1
803  * @tc.require: SR000H0386
804  */
805 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0000, testing::ext::TestSize.Level1)
806 {
807     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0000";
808     try {
809         vector<RootInfo> info;
810         int result = g_fah->GetRoots(info);
811         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
812         for (size_t i = 0; i < info.size(); i++) {
813             Uri parentUri(info[i].uri);
814             Uri newDirUriTest("");
815             result = g_fah->Mkdir(parentUri, "external_file_access_Mkdir_0000", newDirUriTest);
816             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
817             GTEST_LOG_(INFO) << "Mkdir_0000 result:" << result;
818             result = g_fah->Delete(newDirUriTest);
819             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
820         }
821     } catch (...) {
822         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0000 occurs an exception.";
823     }
824     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0000";
825 }
826 
827 /**
828  * @tc.number: user_file_service_external_file_access_Mkdir_0001
829  * @tc.name: external_file_access_Mkdir_0001
830  * @tc.desc: Test function of Mkdir interface for ERROR which parentUri is null.
831  * @tc.size: MEDIUM
832  * @tc.type: FUNC
833  * @tc.level Level 1
834  * @tc.require: SR000H0386
835  */
836 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0001, testing::ext::TestSize.Level1)
837 {
838     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0001";
839     try {
840         Uri newDirUriTest("");
841         Uri parentUri("");
842         int result = g_fah->Mkdir(parentUri, "external_file_access_Mkdir_0001", newDirUriTest);
843         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
844         GTEST_LOG_(INFO) << "Mkdir_0001 result:" << result;
845     } catch (...) {
846         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0001 occurs an exception.";
847     }
848     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0001";
849 }
850 
851 /**
852  * @tc.number: user_file_service_external_file_access_Mkdir_0002
853  * @tc.name: external_file_access_Mkdir_0002
854  * @tc.desc: Test function of Mkdir interface for ERROR which parentUri is absolute path.
855  * @tc.size: MEDIUM
856  * @tc.type: FUNC
857  * @tc.level Level 1
858  * @tc.require: SR000H0386
859  */
860 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0002, testing::ext::TestSize.Level1)
861 {
862     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0002";
863     try {
864         Uri newDirUriTest("");
865         Uri parentUri("storage/media/100/local/files/Download");
866         int result = g_fah->Mkdir(parentUri, "external_file_access_Mkdir_0002", newDirUriTest);
867         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
868         GTEST_LOG_(INFO) << "Mkdir_0002 result:" << result;
869     } catch (...) {
870         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0002 occurs an exception.";
871     }
872     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0002";
873 }
874 
875 /**
876  * @tc.number: user_file_service_external_file_access_Mkdir_0003
877  * @tc.name: external_file_access_Mkdir_0003
878  * @tc.desc: Test function of Mkdir interface for ERROR which parentUri is special symbols.
879  * @tc.size: MEDIUM
880  * @tc.type: FUNC
881  * @tc.level Level 1
882  * @tc.require: SR000H0386
883  */
884 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0003, testing::ext::TestSize.Level1)
885 {
886     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0002";
887     try {
888         Uri newDirUriTest("");
889         Uri parentUri("~!@#$%^&*()_");
890         int result = g_fah->Mkdir(parentUri, "external_file_access_Mkdir_0003", newDirUriTest);
891         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
892         GTEST_LOG_(INFO) << "Mkdir_0003 result:" << result;
893     } catch (...) {
894         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0003 occurs an exception.";
895     }
896     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0003";
897 }
898 
899 /**
900  * @tc.number: user_file_service_external_file_access_Mkdir_0004
901  * @tc.name: external_file_access_Mkdir_0004
902  * @tc.desc: Test function of Mkdir interface for ERROR which displayName is null.
903  * @tc.size: MEDIUM
904  * @tc.type: FUNC
905  * @tc.level Level 1
906  * @tc.require: SR000H0386
907  */
908 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0004, testing::ext::TestSize.Level1)
909 {
910     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0004";
911     try {
912         vector<RootInfo> info;
913         int result = g_fah->GetRoots(info);
914         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
915         for (size_t i = 0; i < info.size(); i++) {
916             Uri parentUri(info[i].uri);
917             Uri newDirUriTest("");
918             string displayName = "";
919             result = g_fah->Mkdir(parentUri, displayName, newDirUriTest);
920             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
921             GTEST_LOG_(INFO) << "Mkdir_0004 result:" << result;
922         }
923     } catch (...) {
924         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0004 occurs an exception.";
925     }
926     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0004";
927 }
928 
MkdirTdd(shared_ptr<FileAccessHelper> fahs,Uri uri,std::string displayName,Uri newFile)929 static void MkdirTdd(shared_ptr<FileAccessHelper> fahs, Uri uri, std::string displayName, Uri newFile)
930 {
931     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_MkdirTdd";
932     int ret = fahs->Mkdir(uri, displayName, newFile);
933     if (ret != OHOS::FileAccessFwk::ERR_OK) {
934         GTEST_LOG_(ERROR) << "MkdirTdd get result error, code:" << ret;
935         return;
936     }
937     EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
938     EXPECT_NE(newFile.ToString(), "");
939     g_num++;
940     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_MkdirTdd";
941 }
942 
943 /**
944  * @tc.number: user_file_service_external_file_access_Mkdir_0005
945  * @tc.name: external_file_access_Mkdir_0005
946  * @tc.desc: Test function of Mkdir interface for SUCCESS which Concurrent.
947  * @tc.size: MEDIUM
948  * @tc.type: FUNC
949  * @tc.level Level 1
950  * @tc.require: SR000H0386
951  */
952 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0005, testing::ext::TestSize.Level1)
953 {
954     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0005";
955     try {
956         vector<RootInfo> info;
957         int result = g_fah->GetRoots(info);
958         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
959         for (size_t i = 0; i < info.size(); i++) {
960             Uri parentUri(info[i].uri);
961             Uri newDirUriTest("");
962             std::string displayName = "test1";
963             g_num = 0;
964             for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
965                 std::thread execthread(MkdirTdd, g_fah, parentUri, displayName, newDirUriTest);
966                 execthread.join();
967             }
968             EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
969             Uri newDelete(info[i].uri + "/" + displayName);
970             result = g_fah->Delete(newDelete);
971             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
972         }
973     } catch (...) {
974         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0005 occurs an exception.";
975     }
976     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0005";
977 }
978 
979 /**
980  * @tc.number: user_file_service_external_file_access_Mkdir_0006
981  * @tc.name: external_file_access_Mkdir_0006
982  * @tc.desc: Test function of Mkdir interface for ERROR because of GetProxyByUri failed.
983  * @tc.size: MEDIUM
984  * @tc.type: FUNC
985  * @tc.level Level 1
986  * @tc.require: SR000H0386
987  */
988 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0006, testing::ext::TestSize.Level1)
989 {
990     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0006";
991     try {
992         vector<RootInfo> info;
993         int result = g_fah->GetRoots(info);
994         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
995         for (size_t i = 0; i < info.size(); i++) {
996             std::string str = info[i].uri;
997             if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
998                 GTEST_LOG_(ERROR) << "replace BundleName failed.";
999                 EXPECT_TRUE(false);
1000             }
1001             Uri parentUri(str);
1002             Uri newDirUriTest("");
1003             string displayName = "";
1004             result = g_fah->Mkdir(parentUri, displayName, newDirUriTest);
1005             EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
1006             GTEST_LOG_(INFO) << "Mkdir_0006 result:" << result;
1007         }
1008     } catch (...) {
1009         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0006 occurs an exception.";
1010     }
1011     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0006";
1012 }
1013 
1014 /**
1015  * @tc.number: user_file_service_external_file_access_Mkdir_0007
1016  * @tc.name: external_file_access_Mkdir_0007
1017  * @tc.desc: Test function of Mkdir interface for SUCCESS,the folder name is chinese.
1018  * @tc.size: MEDIUM
1019  * @tc.type: FUNC
1020  * @tc.level Level 1
1021  * @tc.require: I70SX9
1022  */
1023 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0007, testing::ext::TestSize.Level1)
1024 {
1025     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0007";
1026     try {
1027         vector<RootInfo> info;
1028         int result = g_fah->GetRoots(info);
1029         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1030         for (size_t i = 0; i < info.size(); i++) {
1031             Uri parentUri(info[i].uri);
1032             Uri newDirUriTest("");
1033             result = g_fah->Mkdir(parentUri, "新建目录", newDirUriTest);
1034             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1035             EXPECT_EQ(newDirUriTest.ToString().find("新建目录"), std::string::npos);
1036             GTEST_LOG_(INFO) << "Mkdir_0007 result:" << result;
1037             result = g_fah->Delete(newDirUriTest);
1038             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1039         }
1040     } catch (...) {
1041         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0007 occurs an exception.";
1042     }
1043     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0007";
1044 }
1045 
1046 /**
1047  * @tc.number: user_file_service_external_file_access_Mkdir_0008
1048  * @tc.name: external_file_access_Mkdir_0008
1049  * @tc.desc: Test function of Mkdir interface for FAIL,the folder name is Documents.
1050  * @tc.size: MEDIUM
1051  * @tc.type: FUNC
1052  * @tc.level Level 1
1053  * @tc.require: I7MQMD
1054  */
1055 HWTEST_F(FileExtensionHelperTest, external_file_access_Mkdir_0008, testing::ext::TestSize.Level1)
1056 {
1057     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Mkdir_0008";
1058     try {
1059         vector<RootInfo> info;
1060         int result = g_fah->GetRoots(info);
1061         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1062         EXPECT_GE(info.size(), 2);
1063         Uri parentUri(info[0].uri);
1064         Uri newDirUriTest("");
1065         result = g_fah->Mkdir(parentUri, "Documents", newDirUriTest);
1066         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1067         result = g_fah->Mkdir(parentUri, "Download", newDirUriTest);
1068         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1069         result = g_fah->Mkdir(parentUri, "Desktop", newDirUriTest);
1070         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1071     } catch (...) {
1072         GTEST_LOG_(ERROR) << "external_file_access_Mkdir_0008 occurs an exception.";
1073     }
1074     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Mkdir_0008";
1075 }
1076 
1077 /**
1078  * @tc.number: user_file_service_external_file_access_Delete_0000
1079  * @tc.name: external_file_access_Delete_0000
1080  * @tc.desc: Test function of Delete interface for SUCCESS which delete file.
1081  * @tc.size: MEDIUM
1082  * @tc.type: FUNC
1083  * @tc.level Level 1
1084  * @tc.require: SR000H0386
1085  */
1086 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0000, testing::ext::TestSize.Level1)
1087 {
1088     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0000";
1089     try {
1090         vector<RootInfo> info;
1091         int result = g_fah->GetRoots(info);
1092         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1093         for (size_t i = 0; i < info.size(); i++) {
1094             Uri parentUri(info[i].uri);
1095             Uri newDirUriTest("");
1096             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
1097             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1098             Uri newFileUri("");
1099             result = g_fah->CreateFile(newDirUriTest, "external_file_access_Delete_0000.txt", newFileUri);
1100             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1101             result = g_fah->Delete(newFileUri);
1102             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1103             GTEST_LOG_(INFO) << "Delete_0000 result:" << result;
1104             result = g_fah->Delete(newDirUriTest);
1105             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1106         }
1107     } catch (...) {
1108         GTEST_LOG_(ERROR) << "external_file_access_Delete_0000 occurs an exception.";
1109     }
1110     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0000";
1111 }
1112 
1113 /**
1114  * @tc.number: user_file_service_external_file_access_Delete_0001
1115  * @tc.name: external_file_access_Delete_0001
1116  * @tc.desc: Test function of Delete interface for SUCCESS which delete folder.
1117  * @tc.size: MEDIUM
1118  * @tc.type: FUNC
1119  * @tc.level Level 1
1120  * @tc.require: SR000H0386
1121  */
1122 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0001, testing::ext::TestSize.Level1)
1123 {
1124     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0001";
1125     try {
1126         vector<RootInfo> info;
1127         int result = g_fah->GetRoots(info);
1128         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1129         for (size_t i = 0; i < info.size(); i++) {
1130             Uri parentUri(info[i].uri);
1131             Uri newDirUriTest("");
1132             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
1133             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1134             result = g_fah->Delete(newDirUriTest);
1135             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1136             GTEST_LOG_(INFO) << "Delete_0001 result:" << result;
1137         }
1138     } catch (...) {
1139         GTEST_LOG_(ERROR) << "external_file_access_Delete_0001 occurs an exception.";
1140     }
1141     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0001";
1142 }
1143 
1144 /**
1145  * @tc.number: user_file_service_external_file_access_Delete_0002
1146  * @tc.name: external_file_access_Delete_0002
1147  * @tc.desc: Test function of Delete interface for ERROR which selectFileUri is null.
1148  * @tc.size: MEDIUM
1149  * @tc.type: FUNC
1150  * @tc.level Level 1
1151  * @tc.require: SR000H0386
1152  */
1153 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0002, testing::ext::TestSize.Level1)
1154 {
1155     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0002";
1156     try {
1157         Uri selectFileUri("");
1158         int result = g_fah->Delete(selectFileUri);
1159         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1160         GTEST_LOG_(INFO) << "Delete_0002 result:" << result;
1161     } catch (...) {
1162         GTEST_LOG_(ERROR) << "external_file_access_Delete_0002 occurs an exception.";
1163     }
1164     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0002";
1165 }
1166 
1167 /**
1168  * @tc.number: user_file_service_external_file_access_Delete_0003
1169  * @tc.name: external_file_access_Delete_0003
1170  * @tc.desc: Test function of Delete interface for ERROR which selectFileUri is absolute path.
1171  * @tc.size: MEDIUM
1172  * @tc.type: FUNC
1173  * @tc.level Level 1
1174  * @tc.require: SR000H0386
1175  */
1176 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0003, testing::ext::TestSize.Level1)
1177 {
1178     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0003";
1179     try {
1180         vector<RootInfo> info;
1181         int result = g_fah->GetRoots(info);
1182         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1183         for (size_t i = 0; i < info.size(); i++) {
1184             Uri parentUri(info[i].uri);
1185             Uri newDirUriTest("");
1186             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
1187             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1188             Uri selectFileUri("storage/media/100/local/files/Download/test");
1189             result = g_fah->Delete(selectFileUri);
1190             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1191             result = g_fah->Delete(newDirUriTest);
1192             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1193             GTEST_LOG_(INFO) << "Delete_0003 result:" << result;
1194         }
1195     } catch (...) {
1196         GTEST_LOG_(ERROR) << "external_file_access_Delete_0003 occurs an exception.";
1197     }
1198     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0003";
1199 }
1200 
1201 /**
1202  * @tc.number: user_file_service_external_file_access_Delete_0004
1203  * @tc.name: external_file_access_Delete_0004
1204  * @tc.desc: Test function of Delete interface for ERROR which selectFileUri is special symbols.
1205  * @tc.size: MEDIUM
1206  * @tc.type: FUNC
1207  * @tc.level Level 1
1208  * @tc.require: SR000H0386
1209  */
1210 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0004, testing::ext::TestSize.Level1)
1211 {
1212     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0004";
1213     try {
1214         Uri selectFileUri("!@#$%^&*()");
1215         int result = g_fah->Delete(selectFileUri);
1216         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1217         GTEST_LOG_(INFO) << "Delete_0004 result:" << result;
1218     } catch (...) {
1219         GTEST_LOG_(ERROR) << "external_file_access_Delete_0004 occurs an exception.";
1220     }
1221     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0004";
1222 }
1223 
DeleteTdd(shared_ptr<FileAccessHelper> fahs,Uri selectFile)1224 static void DeleteTdd(shared_ptr<FileAccessHelper> fahs, Uri selectFile)
1225 {
1226     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_DeleteTdd";
1227     int ret = fahs->Delete(selectFile);
1228     if (ret != OHOS::FileAccessFwk::ERR_OK) {
1229         GTEST_LOG_(ERROR) << "DeleteTdd get result error, code:" << ret;
1230         return;
1231     }
1232     EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
1233     g_num++;
1234     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_DeleteTdd";
1235 }
1236 
1237 /**
1238  * @tc.number: user_file_service_external_file_access_Delete_0005
1239  * @tc.name: external_file_access_Delete_0005
1240  * @tc.desc: Test function of Delete interface for SUCCESS which Concurrent.
1241  * @tc.size: MEDIUM
1242  * @tc.type: FUNC
1243  * @tc.level Level 1
1244  * @tc.require: SR000H0386
1245  */
1246 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0005, testing::ext::TestSize.Level1)
1247 {
1248     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0005";
1249     try {
1250         vector<RootInfo> info;
1251         int result = g_fah->GetRoots(info);
1252         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1253         for (size_t i = 0; i < info.size(); i++) {
1254             Uri parentUri(info[i].uri);
1255             Uri newDirUriTest("");
1256             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
1257             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1258             Uri newFileUri("");
1259             std::string displayName = "test1.txt";
1260             result = g_fah->CreateFile(newDirUriTest, displayName, newFileUri);
1261             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1262             g_num = 0;
1263             for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
1264                 std::thread execthread(DeleteTdd, g_fah, newFileUri);
1265                 execthread.join();
1266             }
1267             EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
1268             result = g_fah->Delete(newDirUriTest);
1269             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1270         }
1271     } catch (...) {
1272         GTEST_LOG_(ERROR) << "external_file_access_Delete_0005 occurs an exception.";
1273     }
1274     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0005";
1275 }
1276 
1277 /**
1278  * @tc.number: user_file_service_external_file_access_Delete_0006
1279  * @tc.name: external_file_access_Delete_0006
1280  * @tc.desc: Test function of Delete interface for ERROR because of GetProxyByUri failed.
1281  * @tc.size: MEDIUM
1282  * @tc.type: FUNC
1283  * @tc.level Level 1
1284  * @tc.require: SR000H0386
1285  */
1286 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0006, testing::ext::TestSize.Level1)
1287 {
1288     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0006";
1289     try {
1290         vector<RootInfo> info;
1291         int result = g_fah->GetRoots(info);
1292         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1293         for (size_t i = 0; i < info.size(); i++) {
1294             std::string str = info[i].uri;
1295             if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
1296                 GTEST_LOG_(ERROR) << "replace BundleName failed.";
1297                 EXPECT_TRUE(false);
1298             }
1299             Uri selectFileUri(str);
1300             int result = g_fah->Delete(selectFileUri);
1301             EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
1302             GTEST_LOG_(INFO) << "Delete_0006 result:" << result;
1303         }
1304     } catch (...) {
1305         GTEST_LOG_(ERROR) << "external_file_access_Delete_0006 occurs an exception.";
1306     }
1307     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0006";
1308 }
1309 
1310 /**
1311  * @tc.number: user_file_service_external_file_access_Delete_0007
1312  * @tc.name: external_file_access_Delete_0007
1313  * @tc.desc: Test function of Delete interface for SUCCESS which delete file, the file name is chinese.
1314  * @tc.size: MEDIUM
1315  * @tc.type: FUNC
1316  * @tc.level Level 1
1317  * @tc.require: I70SX9
1318  */
1319 HWTEST_F(FileExtensionHelperTest, external_file_access_Delete_0007, testing::ext::TestSize.Level1)
1320 {
1321     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Delete_0007";
1322     try {
1323         vector<RootInfo> info;
1324         int result = g_fah->GetRoots(info);
1325         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1326         for (size_t i = 0; i < info.size(); i++) {
1327             Uri parentUri(info[i].uri);
1328             Uri newDirUriTest("");
1329             result = g_fah->Mkdir(parentUri, "测试目录", newDirUriTest);
1330             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1331             EXPECT_EQ(newDirUriTest.ToString().find("测试目录"), std::string::npos);
1332             Uri newFileUri("");
1333             result = g_fah->CreateFile(newDirUriTest, "删除文件.txt", newFileUri);
1334             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1335             EXPECT_EQ(newFileUri.ToString().find("删除文件.txt"), std::string::npos);
1336             result = g_fah->Delete(newFileUri);
1337             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1338             GTEST_LOG_(INFO) << "Delete_0007 result:" << result;
1339             result = g_fah->Delete(newDirUriTest);
1340             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1341         }
1342     } catch (...) {
1343         GTEST_LOG_(ERROR) << "external_file_access_Delete_0007 occurs an exception.";
1344     }
1345     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Delete_0007";
1346 }
1347 
1348 /**
1349  * @tc.number: user_file_service_external_file_access_Move_0000
1350  * @tc.name: external_file_access_Move_0000
1351  * @tc.desc: Test function of Move interface for SUCCESS which move file.
1352  * @tc.size: MEDIUM
1353  * @tc.type: FUNC
1354  * @tc.level Level 1
1355  * @tc.require: SR000H0387
1356  */
1357 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0000, testing::ext::TestSize.Level1)
1358 {
1359     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0000";
1360     try {
1361         vector<RootInfo> info;
1362         int result = g_fah->GetRoots(info);
1363         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1364         for (size_t i = 0; i < info.size(); i++) {
1365             Uri parentUri(info[i].uri);
1366             Uri newDirUriTest1("");
1367             Uri newDirUriTest2("");
1368             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1369             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1370             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1371             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1372             Uri testUri("");
1373             result = g_fah->CreateFile(newDirUriTest1, "test.txt", testUri);
1374             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1375             Uri testUri2("");
1376             result = g_fah->Move(testUri, newDirUriTest2, testUri2);
1377             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1378             GTEST_LOG_(INFO) << "Move_0000 result:" << result;
1379             result = g_fah->Delete(newDirUriTest1);
1380             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1381             result = g_fah->Delete(newDirUriTest2);
1382             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1383         }
1384     } catch (...) {
1385         GTEST_LOG_(ERROR) << "external_file_access_Move_0000 occurs an exception.";
1386     }
1387     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0000";
1388 }
1389 
1390 /**
1391  * @tc.number: user_file_service_external_file_access_Move_0001
1392  * @tc.name: external_file_access_Move_0001
1393  * @tc.desc: Test function of Move interface for SUCCESS which move folder.
1394  * @tc.size: MEDIUM
1395  * @tc.type: FUNC
1396  * @tc.level Level 1
1397  * @tc.require: SR000H0387
1398  */
1399 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0001, testing::ext::TestSize.Level1)
1400 {
1401     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0001";
1402     try {
1403         vector<RootInfo> info;
1404         int result = g_fah->GetRoots(info);
1405         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1406         for (size_t i = 0; i < info.size(); i++) {
1407             Uri parentUri(info[i].uri);
1408             Uri newDirUriTest1("");
1409             Uri newDirUriTest2("");
1410             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1411             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1412             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1413             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1414             Uri testUri("");
1415             result = g_fah->CreateFile(newDirUriTest1, "test.txt", testUri);
1416             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1417             Uri testUri2("");
1418             result = g_fah->Move(newDirUriTest1, newDirUriTest2, testUri2);
1419             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1420             GTEST_LOG_(INFO) << "Move_0001 result:" << result;
1421             result = g_fah->Delete(newDirUriTest2);
1422             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1423         }
1424     } catch (...) {
1425         GTEST_LOG_(ERROR) << "external_file_access_Move_0001 occurs an exception.";
1426     }
1427     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0001";
1428 }
1429 
1430 /**
1431  * @tc.number: user_file_service_external_file_access_Move_0002
1432  * @tc.name: external_file_access_Move_0002
1433  * @tc.desc: Test function of Move interface for ERROR which sourceFileUri is null.
1434  * @tc.size: MEDIUM
1435  * @tc.type: FUNC
1436  * @tc.level Level 1
1437  * @tc.require: SR000H0387
1438  */
1439 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0002, testing::ext::TestSize.Level1)
1440 {
1441     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0002";
1442     try {
1443         vector<RootInfo> info;
1444         int result = g_fah->GetRoots(info);
1445         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1446         for (size_t i = 0; i < info.size(); i++) {
1447             Uri parentUri(info[i].uri);
1448             Uri newDirUriTest("");
1449             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
1450             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1451             Uri testUri("");
1452             Uri sourceFileUri("");
1453             result = g_fah->Move(sourceFileUri, newDirUriTest, testUri);
1454             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1455             GTEST_LOG_(INFO) << "Move_0002 result:" << result;
1456             result = g_fah->Delete(newDirUriTest);
1457             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1458         }
1459     } catch (...) {
1460         GTEST_LOG_(ERROR) << "external_file_access_Move_0002 occurs an exception.";
1461     }
1462     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0002";
1463 }
1464 
1465 /**
1466  * @tc.number: user_file_service_external_file_access_Move_0003
1467  * @tc.name: external_file_access_Move_0003
1468  * @tc.desc: Test function of Move interface for ERROR which sourceFileUri is absolute path.
1469  * @tc.size: MEDIUM
1470  * @tc.type: FUNC
1471  * @tc.level Level 1
1472  * @tc.require: SR000H0386
1473  */
1474 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0003, testing::ext::TestSize.Level1)
1475 {
1476     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0003";
1477     try {
1478         vector<RootInfo> info;
1479         int result = g_fah->GetRoots(info);
1480         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1481         for (size_t i = 0; i < info.size(); i++) {
1482             Uri parentUri(info[i].uri);
1483             Uri newDirUriTest1("");
1484             Uri newDirUriTest2("");
1485             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1486             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1487             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1488             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1489             Uri testUri("");
1490             result = g_fah->CreateFile(newDirUriTest1, "test.txt", testUri);
1491             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1492             Uri testUri2("");
1493             Uri sourceFileUri("storage/media/100/local/files/Download/test1/test.txt");
1494             result = g_fah->Move(sourceFileUri, newDirUriTest2, testUri2);
1495             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1496             GTEST_LOG_(INFO) << "Move_0003 result:" << result;
1497             result = g_fah->Delete(newDirUriTest1);
1498             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1499             result = g_fah->Delete(newDirUriTest2);
1500             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1501         }
1502     } catch (...) {
1503         GTEST_LOG_(ERROR) << "external_file_access_Move_0003 occurs an exception.";
1504     }
1505     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0003";
1506 }
1507 
1508 /**
1509  * @tc.number: user_file_service_external_file_access_Move_0004
1510  * @tc.name: external_file_access_Move_0004
1511  * @tc.desc: Test function of Move interface for ERROR which sourceFileUri is special symbols.
1512  * @tc.size: MEDIUM
1513  * @tc.type: FUNC
1514  * @tc.level Level 1
1515  * @tc.require: SR000H0387
1516  */
1517 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0004, testing::ext::TestSize.Level1)
1518 {
1519     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0004";
1520     try {
1521         vector<RootInfo> info;
1522         int result = g_fah->GetRoots(info);
1523         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1524         for (size_t i = 0; i < info.size(); i++) {
1525             Uri parentUri(info[i].uri);
1526             Uri newDirUriTest("");
1527             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
1528             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1529             Uri testUri("");
1530             Uri sourceFileUri("~!@#$%^&*()_");
1531             result = g_fah->Move(sourceFileUri, newDirUriTest, testUri);
1532             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1533             GTEST_LOG_(INFO) << "Move_0004 result:" << result;
1534             result = g_fah->Delete(newDirUriTest);
1535             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1536         }
1537     } catch (...) {
1538         GTEST_LOG_(ERROR) << "external_file_access_Move_0004 occurs an exception.";
1539     }
1540     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0004";
1541 }
1542 
1543 /**
1544  * @tc.number: user_file_service_external_file_access_Move_0005
1545  * @tc.name: external_file_access_Move_0005
1546  * @tc.desc: Test function of Move interface for ERROR which targetParentUri is null.
1547  * @tc.size: MEDIUM
1548  * @tc.type: FUNC
1549  * @tc.level Level 1
1550  * @tc.require: SR000H0387
1551  */
1552 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0005, testing::ext::TestSize.Level1)
1553 {
1554     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0005";
1555     try {
1556         vector<RootInfo> info;
1557         int result = g_fah->GetRoots(info);
1558         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1559         for (size_t i = 0; i < info.size(); i++) {
1560             Uri parentUri(info[i].uri);
1561             Uri newDirUriTest("");
1562             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest);
1563             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1564             Uri testUri("");
1565             result = g_fah->CreateFile(newDirUriTest, "test.txt", testUri);
1566             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1567             Uri testUri2("");
1568             Uri targetParentUri("");
1569             result = g_fah->Move(testUri, targetParentUri, testUri2);
1570             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1571             GTEST_LOG_(INFO) << "Move_0005 result:" << result;
1572             result = g_fah->Delete(newDirUriTest);
1573             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1574         }
1575     } catch (...) {
1576         GTEST_LOG_(ERROR) << "external_file_access_Move_0005 occurs an exception.";
1577     }
1578     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0005";
1579 }
1580 
1581 /**
1582  * @tc.number: user_file_service_external_file_access_Move_0006
1583  * @tc.name: external_file_access_Move_0006
1584  * @tc.desc: Test function of Move interface for ERROR which targetParentUri is absolute path.
1585  * @tc.size: MEDIUM
1586  * @tc.type: FUNC
1587  * @tc.level Level 1
1588  * @tc.require: SR000H0387
1589  */
1590 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0006, testing::ext::TestSize.Level1)
1591 {
1592     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0006";
1593     try {
1594         vector<RootInfo> info;
1595         int result = g_fah->GetRoots(info);
1596         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1597         for (size_t i = 0; i < info.size(); i++) {
1598             Uri parentUri(info[i].uri);
1599             Uri newDirUriTest1("");
1600             Uri newDirUriTest2("");
1601             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1602             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1603             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1604             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1605             Uri testUri("");
1606             result = g_fah->CreateFile(newDirUriTest1, "test.txt", testUri);
1607             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1608             Uri testUri2("");
1609             Uri targetParentUri("storage/media/100/local/files/Download/test2");
1610             result = g_fah->Move(testUri, targetParentUri, testUri2);
1611             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1612             GTEST_LOG_(INFO) << "Move_0006 result:" << result;
1613             result = g_fah->Delete(newDirUriTest1);
1614             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1615             result = g_fah->Delete(newDirUriTest2);
1616             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1617         }
1618     } catch (...) {
1619         GTEST_LOG_(ERROR) << "external_file_access_Move_0006 occurs an exception.";
1620     }
1621     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0006";
1622 }
1623 
1624 /**
1625  * @tc.number: user_file_service_external_file_access_Move_0007
1626  * @tc.name: external_file_access_Move_0007
1627  * @tc.desc: Test function of Move interface for ERROR which targetParentUri is special symbols.
1628  * @tc.size: MEDIUM
1629  * @tc.type: FUNC
1630  * @tc.level Level 1
1631  * @tc.require: SR000H0387
1632  */
1633 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0007, testing::ext::TestSize.Level1)
1634 {
1635     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0007";
1636     try {
1637         vector<RootInfo> info;
1638         int result = g_fah->GetRoots(info);
1639         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1640         for (size_t i = 0; i < info.size(); i++) {
1641             Uri parentUri(info[i].uri);
1642             Uri newDirUriTest1("");
1643             Uri newDirUriTest2("");
1644             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1645             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1646             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1647             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1648             Uri testUri("");
1649             result = g_fah->CreateFile(newDirUriTest1, "test.txt", testUri);
1650             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1651             Uri testUri2("");
1652             Uri targetParentUri("~!@#$^%&*()_");
1653             result = g_fah->Move(testUri, targetParentUri, testUri2);
1654             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1655             GTEST_LOG_(INFO) << "Move_0007 result:" << result;
1656             result = g_fah->Delete(newDirUriTest1);
1657             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1658             result = g_fah->Delete(newDirUriTest2);
1659             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1660         }
1661     } catch (...) {
1662         GTEST_LOG_(ERROR) << "external_file_access_Move_0007 occurs an exception.";
1663     }
1664     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0007";
1665 }
1666 
1667 /**
1668  * @tc.number: user_file_service_external_file_access_Move_0008
1669  * @tc.name: external_file_access_Move_0008
1670  * @tc.desc: Test function of Move interface for SUCCESS which move empty folder.
1671  * @tc.size: MEDIUM
1672  * @tc.type: FUNC
1673  * @tc.level Level 1
1674  * @tc.require: SR000H0387
1675  */
1676 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0008, testing::ext::TestSize.Level1)
1677 {
1678     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0008";
1679     try {
1680         vector<RootInfo> info;
1681         int result = g_fah->GetRoots(info);
1682         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1683         for (size_t i = 0; i < info.size(); i++) {
1684             Uri parentUri(info[i].uri);
1685             Uri newDirUriTest1("");
1686             Uri newDirUriTest2("");
1687             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1688             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1689             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1690             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1691             Uri testUri("");
1692             result = g_fah->Move(newDirUriTest1, newDirUriTest2, testUri);
1693             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1694             GTEST_LOG_(INFO) << "Move_0008 result:" << result;
1695             result = g_fah->Delete(newDirUriTest2);
1696             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1697         }
1698     } catch (...) {
1699         GTEST_LOG_(ERROR) << "external_file_access_Move_0008 occurs an exception.";
1700     }
1701     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0008";
1702 }
1703 
1704 /**
1705  * @tc.number: user_file_service_external_file_access_Move_0009
1706  * @tc.name: external_file_access_Move_0009
1707  * @tc.desc: Test function of Move interface for SUCCESS which move more file in folder.
1708  * @tc.size: MEDIUM
1709  * @tc.type: FUNC
1710  * @tc.level Level 1
1711  * @tc.require: SR000H0387
1712  */
1713 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0009, testing::ext::TestSize.Level1)
1714 {
1715     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0009";
1716     try {
1717         vector<RootInfo> info;
1718         int result = g_fah->GetRoots(info);
1719         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1720         for (size_t i = 0; i < info.size(); i++) {
1721             Uri parentUri(info[i].uri);
1722             Uri newDirUriTest1("");
1723             Uri newDirUriTest2("");
1724             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1725             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1726             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1727             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1728             Uri testUri("");
1729             size_t fileNumbers = 2000;
1730             for (size_t j = 0; j < fileNumbers; j++) {
1731                 string fileName = "test" + ToString(j) + ".txt";
1732                 result = g_fah->CreateFile(newDirUriTest1, fileName, testUri);
1733                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1734             }
1735             Uri testUri2("");
1736             result = g_fah->Move(newDirUriTest1, newDirUriTest2, testUri2);
1737             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1738             GTEST_LOG_(INFO) << "Move_0009 result:" << result;
1739             result = g_fah->Delete(newDirUriTest2);
1740             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1741         }
1742     } catch (...) {
1743         GTEST_LOG_(ERROR) << "external_file_access_Move_0009 occurs an exception.";
1744     }
1745     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0009";
1746 }
1747 
1748 /**
1749  * @tc.number: user_file_service_external_file_access_Move_0010
1750  * @tc.name: external_file_access_Move_0010
1751  * @tc.desc: Test function of Move interface for SUCCESS which move Multilevel directory folder.
1752  * @tc.size: MEDIUM
1753  * @tc.type: FUNC
1754  * @tc.level Level 1
1755  * @tc.require: SR000H0387
1756  */
1757 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0010, testing::ext::TestSize.Level1)
1758 {
1759     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0010";
1760     try {
1761         vector<RootInfo> info;
1762         int result = g_fah->GetRoots(info);
1763         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1764         for (size_t i = 0; i < info.size(); i++) {
1765             Uri parentUri(info[i].uri);
1766             Uri newDirUriTest1("");
1767             Uri newDirUriTest2("");
1768             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1769             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1770             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1771             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1772             Uri testUri("");
1773             result = g_fah->Mkdir(newDirUriTest1, "test", testUri);
1774             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1775             size_t directoryNumbers = 64;
1776             for (size_t j = 0; j < directoryNumbers; j++) {
1777                 result = g_fah->Mkdir(testUri, "test", testUri);
1778                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1779             }
1780             Uri testUri2("");
1781             result = g_fah->Move(newDirUriTest1, newDirUriTest2, testUri2);
1782             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1783             GTEST_LOG_(INFO) << "Move_0010 result:" << result;
1784             result = g_fah->Delete(newDirUriTest2);
1785             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1786         }
1787     } catch (...) {
1788         GTEST_LOG_(ERROR) << "external_file_access_Move_0010 occurs an exception.";
1789     }
1790     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0010";
1791 }
1792 
1793 /**
1794  * @tc.number: user_file_service_external_file_access_Move_0011
1795  * @tc.name: external_file_access_Move_0011
1796  * @tc.desc: Test function of Move interface for SUCCESS which move other equipment file.
1797  * @tc.size: MEDIUM
1798  * @tc.type: FUNC
1799  * @tc.level Level 1
1800  * @tc.require: SR000H0387
1801  */
1802 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0011, testing::ext::TestSize.Level1)
1803 {
1804     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0011";
1805     try {
1806         vector<RootInfo> info;
1807         int result = g_fah->GetRoots(info);
1808         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1809         for (size_t i = 0; i < info.size(); i++) {
1810             Uri parentUri(info[i].uri);
1811             Uri newDirUriTest1("");
1812             Uri newDirUriTest2("");
1813             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1814             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1815             Uri testUri("");
1816             result = g_fah->CreateFile(newDirUriTest1, "test.txt", testUri);
1817             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1818             for (size_t j = i + 1; j < info.size(); j++) {
1819                 Uri otherUri(info[j].uri);
1820                 result = g_fah->Mkdir(otherUri, "test2", newDirUriTest2);
1821                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1822                 result = g_fah->Move(testUri, newDirUriTest2, testUri);
1823                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1824                 result = g_fah->Move(testUri, newDirUriTest1, testUri);
1825                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1826                 GTEST_LOG_(INFO) << "Move_0011 result:" << result;
1827                 result = g_fah->Delete(newDirUriTest2);
1828                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1829             }
1830             result = g_fah->Delete(newDirUriTest1);
1831             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1832         }
1833     } catch (...) {
1834         GTEST_LOG_(ERROR) << "external_file_access_Move_0011 occurs an exception.";
1835     }
1836     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0011";
1837 }
1838 
MoveTdd(shared_ptr<FileAccessHelper> fahs,Uri sourceFile,Uri targetParent,Uri newFile)1839 static void MoveTdd(shared_ptr<FileAccessHelper> fahs, Uri sourceFile, Uri targetParent, Uri newFile)
1840 {
1841     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_MoveTdd";
1842     int ret = fahs->Move(sourceFile, targetParent, newFile);
1843     if (ret != OHOS::FileAccessFwk::ERR_OK) {
1844         GTEST_LOG_(ERROR) << "MoveTdd get result error, code:" << ret;
1845         return;
1846     }
1847     EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
1848     g_num++;
1849     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_MoveTdd";
1850 }
1851 
1852 /**
1853  * @tc.number: user_file_service_external_file_access_Move_0012
1854  * @tc.name: external_file_access_Move_0012
1855  * @tc.desc: Test function of Move interface for SUCCESS which Concurrent.
1856  * @tc.size: MEDIUM
1857  * @tc.type: FUNC
1858  * @tc.level Level 1
1859  * @tc.require: SR000H0386
1860  */
1861 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0012, testing::ext::TestSize.Level1)
1862 {
1863     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0012";
1864     try {
1865         vector<RootInfo> info;
1866         int result = g_fah->GetRoots(info);
1867         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1868         for (size_t i = 0; i < info.size(); i++) {
1869             Uri parentUri(info[i].uri);
1870             Uri newDirUriTest1("");
1871             Uri newDirUriTest2("");
1872             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1873             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1874             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1875             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1876             Uri testUri("");
1877             std::string displayName = "test3.txt";
1878             result = g_fah->CreateFile(newDirUriTest1, displayName, testUri);
1879             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1880             Uri testUri2("");
1881             g_num = 0;
1882             for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
1883                 std::thread execthread(MoveTdd, g_fah, testUri, newDirUriTest2, testUri2);
1884                 execthread.join();
1885             }
1886             EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
1887             result = g_fah->Delete(newDirUriTest1);
1888             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1889             result = g_fah->Delete(newDirUriTest2);
1890             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1891         }
1892     } catch (...) {
1893         GTEST_LOG_(ERROR) << "external_file_access_Move_0012 occurs an exception.";
1894     }
1895     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0012";
1896 }
1897 
1898 /**
1899  * @tc.number: user_file_service_external_file_access_Move_0013
1900  * @tc.name: external_file_access_Move_0013
1901  * @tc.desc: Test function of Move interface for FAILED because of GetProxyByUri failed.
1902  * @tc.size: MEDIUM
1903  * @tc.type: FUNC
1904  * @tc.level Level 1
1905  * @tc.require: SR000H0387
1906  */
1907 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0013, testing::ext::TestSize.Level1)
1908 {
1909     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0013";
1910     try {
1911         vector<RootInfo> info;
1912         int result = g_fah->GetRoots(info);
1913         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1914         Uri parentUri(info[0].uri);
1915         Uri newDirUriTest1("");
1916         Uri newDirUriTest2("");
1917         result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
1918         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1919         result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
1920         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1921         Uri testUri("");
1922         result = g_fah->Mkdir(newDirUriTest1, "test", testUri);
1923         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1924         std::string str = newDirUriTest1.ToString();
1925         if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
1926             GTEST_LOG_(ERROR) << "replace BundleName failed.";
1927             EXPECT_TRUE(false);
1928         }
1929         Uri uri(str);
1930         Uri testUri2("");
1931         result = g_fah->Move(uri, newDirUriTest2, testUri2);
1932         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1933         GTEST_LOG_(INFO) << "Move_0013 result:" << result;
1934         result = g_fah->Delete(newDirUriTest1);
1935         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1936         result = g_fah->Delete(newDirUriTest2);
1937         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1938     } catch (...) {
1939         GTEST_LOG_(ERROR) << "external_file_access_Move_0013 occurs an exception.";
1940     }
1941     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0013";
1942 }
1943 
1944 /**
1945  * @tc.number: user_file_service_external_file_access_Move_0014
1946  * @tc.name: external_file_access_Move_0014
1947  * @tc.desc: Test function of Move interface for SUCCESS which move file, the file name is chinese.
1948  * @tc.size: MEDIUM
1949  * @tc.type: FUNC
1950  * @tc.level Level 1
1951  * @tc.require: I70SX9
1952  */
1953 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0014, testing::ext::TestSize.Level1)
1954 {
1955     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0014";
1956     try {
1957         vector<RootInfo> info;
1958         int result = g_fah->GetRoots(info);
1959         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1960         for (size_t i = 0; i < info.size(); i++) {
1961             Uri parentUri(info[i].uri);
1962             Uri newDirUriTest1("");
1963             Uri newDirUriTest2("");
1964             result = g_fah->Mkdir(parentUri, "测试目录1", newDirUriTest1);
1965             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1966             EXPECT_EQ(newDirUriTest1.ToString().find("测试目录1"), std::string::npos);
1967             result = g_fah->Mkdir(parentUri, "测试目录2", newDirUriTest2);
1968             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1969             EXPECT_EQ(newDirUriTest2.ToString().find("测试目录2"), std::string::npos);
1970             Uri testUri("");
1971             result = g_fah->CreateFile(newDirUriTest1, "移动文件.txt", testUri);
1972             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1973             EXPECT_EQ(testUri.ToString().find("移动文件.txt"), std::string::npos);
1974             Uri testUri2("");
1975             result = g_fah->Move(testUri, newDirUriTest2, testUri2);
1976             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1977             GTEST_LOG_(INFO) << "Move_0014 result:" << result;
1978             result = g_fah->Delete(newDirUriTest1);
1979             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1980             result = g_fah->Delete(newDirUriTest2);
1981             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1982         }
1983     } catch (...) {
1984         GTEST_LOG_(ERROR) << "external_file_access_Move_0014 occurs an exception.";
1985     }
1986     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0014";
1987 }
1988 
1989 /**
1990  * @tc.number: user_file_service_external_file_access_Move_0015
1991  * @tc.name: external_file_access_Move_0015
1992  * @tc.desc: Test function of Move interface for SUCCESS which move Multilevel directory folder,
1993  *           the folder name is chinese.
1994  * @tc.size: MEDIUM
1995  * @tc.type: FUNC
1996  * @tc.level Level 1
1997  * @tc.require: I70SX9
1998  */
1999 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0015, testing::ext::TestSize.Level1)
2000 {
2001     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0015";
2002     try {
2003         vector<RootInfo> info;
2004         int result = g_fah->GetRoots(info);
2005         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2006         for (size_t i = 0; i < info.size(); i++) {
2007             Uri parentUri(info[i].uri);
2008             Uri newDirUriTest1("");
2009             Uri newDirUriTest2("");
2010             result = g_fah->Mkdir(parentUri, "移动目录", newDirUriTest1);
2011             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2012             EXPECT_EQ(newDirUriTest1.ToString().find("移动目录"), std::string::npos);
2013             result = g_fah->Mkdir(parentUri, "test2", newDirUriTest2);
2014             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2015             Uri testUri2("");
2016             result = g_fah->Move(newDirUriTest1, newDirUriTest2, testUri2);
2017             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2018             GTEST_LOG_(INFO) << "Move_0015 result:" << result;
2019             result = g_fah->Delete(newDirUriTest2);
2020             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2021         }
2022     } catch (...) {
2023         GTEST_LOG_(ERROR) << "external_file_access_Move_0015 occurs an exception.";
2024     }
2025     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0015";
2026 }
2027 
2028 /**
2029  * @tc.number: user_file_service_external_file_access_Move_0016
2030  * @tc.name: external_file_access_Move_0016
2031  * @tc.desc: Test function of Move interface for SUCCESS which move Multilevel directory folder,
2032  *           the folder name is chinese.
2033  * @tc.size: MEDIUM
2034  * @tc.type: FUNC
2035  * @tc.level Level 1
2036  * @tc.require: I70SX9
2037  */
2038 HWTEST_F(FileExtensionHelperTest, external_file_access_Move_0016, testing::ext::TestSize.Level1)
2039 {
2040     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Move_0016";
2041     try {
2042         vector<RootInfo> info;
2043         int result = g_fah->GetRoots(info);
2044         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2045         for (size_t i = 0; i < info.size(); i++) {
2046             Uri parentUri(info[i].uri);
2047             Uri newDirUriTest1("");
2048             Uri newDirUriTest2("");
2049             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest1);
2050             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2051             result = g_fah->Mkdir(parentUri, "移动目录", newDirUriTest2);
2052             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2053             Uri testUri2("");
2054             result = g_fah->Move(newDirUriTest1, newDirUriTest2, testUri2);
2055             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2056             GTEST_LOG_(INFO) << "Move_0016 result:" << result;
2057             result = g_fah->Delete(newDirUriTest2);
2058             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2059         }
2060     } catch (...) {
2061         GTEST_LOG_(ERROR) << "external_file_access_Move_0016 occurs an exception.";
2062     }
2063     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Move_0016";
2064 }
2065 
2066 /**
2067  * @tc.number: user_file_service_external_file_access_Copy_0000
2068  * @tc.name: external_file_access_Copy_0000
2069  * @tc.desc: Test function of Copy interface, copy a file and argument of force is false
2070  * @tc.size: MEDIUM
2071  * @tc.type: FUNC
2072  * @tc.level Level 1
2073  * @tc.require: I7QXVD
2074  */
2075 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0000, testing::ext::TestSize.Level1)
2076 {
2077     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0000";
2078     try {
2079         vector<RootInfo> info;
2080         int result = g_fah->GetRoots(info);
2081         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2082 
2083         for (size_t i = 0; i < info.size(); i++) {
2084             Uri parentUri(info[i].uri);
2085             Uri srcDir("");
2086             result = g_fah->Mkdir(parentUri, "Copy_0000_src", srcDir);
2087             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2088             Uri srcFile("");
2089             result = g_fah->CreateFile(srcDir, "a.txt", srcFile);
2090             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2091             int fd = -1;
2092             result = g_fah->OpenFile(srcFile, WRITE_READ, fd);
2093             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2094             char buff[] = "Copy test content for a.txt";
2095             ssize_t srcFileSize = write(fd, buff, sizeof(buff));
2096             EXPECT_EQ(srcFileSize, sizeof(buff));
2097             close(fd);
2098 
2099             Uri destDir("");
2100             result = g_fah->Mkdir(parentUri, "Copy_0000_dest", destDir);
2101             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2102 
2103             std::vector<CopyResult> copyResult;
2104             result = g_fah->Copy(srcFile, destDir, copyResult, false);
2105             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2106             EXPECT_EQ(copyResult.size(), 0);
2107 
2108             Uri destFileUri(destDir.ToString() + "/" + "a.txt");
2109             result = g_fah->OpenFile(destFileUri, WRITE_READ, fd);
2110             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2111             ssize_t destFileSize = read(fd, buff, sizeof(buff));
2112             EXPECT_EQ(srcFileSize, destFileSize);
2113             close(fd);
2114 
2115             result = g_fah->Delete(srcDir);
2116             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2117             result = g_fah->Delete(destDir);
2118             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2119         }
2120     } catch (...) {
2121         GTEST_LOG_(ERROR) << "external_file_access_Copy_0000 occurs an exception.";
2122     }
2123     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0000";
2124 }
2125 
2126 /**
2127  * @tc.number: user_file_service_external_file_access_Copy_0001
2128  * @tc.name: external_file_access_Copy_0001
2129  * @tc.desc: Test function of Copy interface, copy a directory and argument of force is false
2130  * @tc.size: MEDIUM
2131  * @tc.type: FUNC
2132  * @tc.level Level 1
2133  * @tc.require: I7QXVD
2134  */
2135 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0001, testing::ext::TestSize.Level1)
2136 {
2137     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0001";
2138     try {
2139         vector<RootInfo> info;
2140         int result = g_fah->GetRoots(info);
2141         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2142         for (size_t i = 0; i < info.size(); i++) {
2143             Uri parentUri(info[i].uri);
2144             Uri srcDir("");
2145             Uri destDir("");
2146             result = g_fah->Mkdir(parentUri, "Copy_0001_src", srcDir);
2147             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2148             Uri aFileUri("");
2149             result = g_fah->CreateFile(srcDir, "a.txt", aFileUri);
2150             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2151             int fd = -1;
2152             result = g_fah->OpenFile(aFileUri, WRITE_READ, fd);
2153             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2154             char buff[] = "Copy test content for a.txt";
2155             ssize_t aFileSize = write(fd, buff, sizeof(buff));
2156             EXPECT_EQ(aFileSize, sizeof(buff));
2157             close(fd);
2158             Uri bFileUri("");
2159             result = g_fah->CreateFile(srcDir, "b.txt", bFileUri);
2160             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2161             result = g_fah->Mkdir(parentUri, "Copy_0001_dest", destDir);
2162             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2163 
2164             std::vector<CopyResult> copyResult;
2165             result = g_fah->Copy(srcDir, destDir, copyResult, false);
2166             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2167             EXPECT_EQ(copyResult.size(), 0);
2168 
2169             result = g_fah->Delete(srcDir);
2170             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2171             result = g_fah->Delete(destDir);
2172             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2173         }
2174     } catch (...) {
2175         GTEST_LOG_(ERROR) << "external_file_access_Copy_0001 occurs an exception.";
2176     }
2177     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0001";
2178 }
2179 
2180 /**
2181  * @tc.number: user_file_service_external_file_access_Copy_0002
2182  * @tc.name: external_file_access_Copy_0002
2183  * @tc.desc: Test function of Copy interface, copy a empty directory
2184  * @tc.size: MEDIUM
2185  * @tc.type: FUNC
2186  * @tc.level Level 1
2187  * @tc.require: I7QXVD
2188  */
2189 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0002, testing::ext::TestSize.Level1)
2190 {
2191     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0002";
2192     try {
2193         vector<RootInfo> info;
2194         int result = g_fah->GetRoots(info);
2195         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2196         for (size_t i = 0; i < info.size(); i++) {
2197             Uri parentUri(info[i].uri);
2198             Uri srcDir("");
2199             result = g_fah->Mkdir(parentUri, "Copy_0002_src", srcDir);
2200             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2201             Uri destDir("");
2202             result = g_fah->Mkdir(parentUri, "Copy_0002_dest", destDir);
2203             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2204 
2205             std::vector<CopyResult> copyResult;
2206             result = g_fah->Copy(srcDir, destDir, copyResult, false);
2207             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2208             EXPECT_EQ(copyResult.size(), 0);
2209 
2210             result = g_fah->Delete(srcDir);
2211             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2212             result = g_fah->Delete(destDir);
2213             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2214         }
2215     } catch (...) {
2216         GTEST_LOG_(ERROR) << "external_file_access_Copy_0002 occurs an exception.";
2217     }
2218     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0002";
2219 }
2220 
2221 /**
2222  * @tc.number: user_file_service_external_file_access_Copy_0003
2223  * @tc.name: external_file_access_Copy_0003
2224  * @tc.desc: Test function of Copy interface, copy a file with the same name and argument of force is true
2225  * @tc.size: MEDIUM
2226  * @tc.type: FUNC
2227  * @tc.level Level 1
2228  * @tc.require: I7QXVD
2229  */
2230 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0003, testing::ext::TestSize.Level1)
2231 {
2232     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0003";
2233     try {
2234         vector<RootInfo> info;
2235         int result = g_fah->GetRoots(info);
2236         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2237         for (size_t i = 0; i < info.size(); i++) {
2238             Uri parentUri(info[i].uri);
2239             Uri srcDir("");
2240             result = g_fah->Mkdir(parentUri, "Copy_0003_src", srcDir);
2241             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2242             Uri srcFile("");
2243             result = g_fah->CreateFile(srcDir, "a.txt", srcFile);
2244             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2245             int fd = -1;
2246             result = g_fah->OpenFile(srcFile, WRITE_READ, fd);
2247             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2248             char buff[] = "Copy test content for a.txt";
2249             ssize_t srcFileSize = write(fd, buff, sizeof(buff));
2250             EXPECT_EQ(srcFileSize, sizeof(buff));
2251             close(fd);
2252 
2253             Uri destDir("");
2254             result = g_fah->Mkdir(parentUri, "Copy_0003_dest", destDir);
2255             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2256             Uri existFile("");
2257             result = g_fah->CreateFile(destDir, "a.txt", existFile);
2258             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2259 
2260             std::vector<CopyResult> copyResult;
2261             result = g_fah->Copy(srcFile, destDir, copyResult, true);
2262             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2263             EXPECT_EQ(copyResult.size(), 0);
2264 
2265             result = g_fah->OpenFile(existFile, WRITE_READ, fd);
2266             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2267             ssize_t destFileSize = read(fd, buff, sizeof(buff));
2268             EXPECT_EQ(srcFileSize, destFileSize);
2269             close(fd);
2270 
2271             result = g_fah->Delete(srcDir);
2272             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2273             result = g_fah->Delete(destDir);
2274             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2275         }
2276     } catch (...) {
2277         GTEST_LOG_(ERROR) << "external_file_access_Copy_0003 occurs an exception.";
2278     }
2279     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0003";
2280 }
2281 
2282 /**
2283  * @tc.number: user_file_service_external_file_access_Copy_0004
2284  * @tc.name: external_file_access_Copy_0004
2285  * @tc.desc: Test function of Copy interface, copy a file with the same name and argument of force is false
2286  * @tc.size: MEDIUM
2287  * @tc.type: FUNC
2288  * @tc.level Level 1
2289  * @tc.require: I7QXVD
2290  */
2291 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0004, testing::ext::TestSize.Level1)
2292 {
2293     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0004";
2294     try {
2295         vector<RootInfo> info;
2296         int result = g_fah->GetRoots(info);
2297         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2298         for (size_t i = 0; i < info.size(); i++) {
2299             Uri parentUri(info[i].uri);
2300             Uri srcDir("");
2301             result = g_fah->Mkdir(parentUri, "Copy_0004_src", srcDir);
2302             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2303             Uri srcFile("");
2304             result = g_fah->CreateFile(srcDir, "a.txt", srcFile);
2305             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2306             int fd = -1;
2307             result = g_fah->OpenFile(srcFile, WRITE_READ, fd);
2308             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2309             char buff[] = "Copy test content for a.txt";
2310             ssize_t srcFileSize = write(fd, buff, sizeof(buff));
2311             EXPECT_EQ(srcFileSize, sizeof(buff));
2312             close(fd);
2313 
2314             Uri destDir("");
2315             result = g_fah->Mkdir(parentUri, "Copy_0004_dest", destDir);
2316             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2317             Uri existFile("");
2318             result = g_fah->CreateFile(destDir, "a.txt", existFile);
2319             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2320 
2321             std::vector<CopyResult> copyResult;
2322             result = g_fah->Copy(srcFile, destDir, copyResult, false);
2323             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
2324             EXPECT_EQ(copyResult.size(), 1);
2325 
2326             result = g_fah->OpenFile(existFile, WRITE_READ, fd);
2327             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2328             ssize_t destFileSize = read(fd, buff, sizeof(buff));
2329             EXPECT_EQ(destFileSize, 0);
2330             close(fd);
2331 
2332             result = g_fah->Delete(srcDir);
2333             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2334             result = g_fah->Delete(destDir);
2335             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2336         }
2337     } catch (...) {
2338         GTEST_LOG_(ERROR) << "external_file_access_Copy_0004 occurs an exception.";
2339     }
2340     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0004";
2341 }
2342 
2343 /**
2344  * @tc.number: user_file_service_external_file_access_Copy_0005
2345  * @tc.name: external_file_access_Copy_0005
2346  * @tc.desc: Test function of Copy interface, copy a file with the same name and no force argument
2347  * @tc.size: MEDIUM
2348  * @tc.type: FUNC
2349  * @tc.level Level 1
2350  * @tc.require: I7QXVD
2351  */
2352 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0005, testing::ext::TestSize.Level1)
2353 {
2354     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0005";
2355     try {
2356         vector<RootInfo> info;
2357         int result = g_fah->GetRoots(info);
2358         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2359         for (size_t i = 0; i < info.size(); i++) {
2360             Uri parentUri(info[i].uri);
2361             Uri srcDir("");
2362             result = g_fah->Mkdir(parentUri, "Copy_0005_src", srcDir);
2363             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2364             Uri srcFile("");
2365             result = g_fah->CreateFile(srcDir, "a.txt", srcFile);
2366             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2367             int fd = -1;
2368             result = g_fah->OpenFile(srcFile, WRITE_READ, fd);
2369             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2370             char buff[] = "Copy test content for a.txt";
2371             ssize_t srcFileSize = write(fd, buff, sizeof(buff));
2372             EXPECT_EQ(srcFileSize, sizeof(buff));
2373             close(fd);
2374 
2375             Uri destDir("");
2376             result = g_fah->Mkdir(parentUri, "Copy_0005_dest", destDir);
2377             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2378             Uri existFile("");
2379             result = g_fah->CreateFile(destDir, "a.txt", existFile);
2380             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2381 
2382             std::vector<CopyResult> copyResult;
2383             result = g_fah->Copy(srcFile, destDir, copyResult);
2384             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
2385             EXPECT_GT(copyResult.size(), 0);
2386 
2387             result = g_fah->OpenFile(existFile, WRITE_READ, fd);
2388             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2389             ssize_t destFileSize = read(fd, buff, sizeof(buff));
2390             EXPECT_EQ(destFileSize, 0);
2391             close(fd);
2392 
2393             result = g_fah->Delete(srcDir);
2394             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2395             result = g_fah->Delete(destDir);
2396             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2397         }
2398     } catch (...) {
2399         GTEST_LOG_(ERROR) << "external_file_access_Copy_0005 occurs an exception.";
2400     }
2401     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0005";
2402 }
2403 
2404 /**
2405  * @tc.number: user_file_service_external_file_access_Copy_0006
2406  * @tc.name: external_file_access_Copy_0006
2407  * @tc.desc: Test function of Copy interface, copy a directory with the same name and argument of force is true
2408  * @tc.size: MEDIUM
2409  * @tc.type: FUNC
2410  * @tc.level Level 1
2411  * @tc.require: I7QXVD
2412  */
2413 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0006, testing::ext::TestSize.Level1)
2414 {
2415     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0006";
2416     try {
2417         vector<RootInfo> info;
2418         int result = g_fah->GetRoots(info);
2419         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2420         for (size_t i = 0; i < info.size(); i++) {
2421             Uri parentUri(info[i].uri);
2422             Uri srcDir("");
2423             result = g_fah->Mkdir(parentUri, "Copy_0006_src", srcDir);
2424             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2425             Uri aFileUri("");
2426             result = g_fah->CreateFile(srcDir, "a.txt", aFileUri);
2427             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2428             Uri bFileUri("");
2429             result = g_fah->CreateFile(srcDir, "b.txt", bFileUri);
2430             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2431             int fd = -1;
2432             result = g_fah->OpenFile(bFileUri, WRITE_READ, fd);
2433             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2434             char buff[] = "Copy test content for b.txt";
2435             ssize_t srcFileSize = write(fd, buff, sizeof(buff));
2436             EXPECT_EQ(srcFileSize, sizeof(buff));
2437             close(fd);
2438 
2439             Uri destDir("");
2440             result = g_fah->Mkdir(parentUri, "Copy_0006_dest", destDir);
2441             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2442             Uri destSrcDir("");
2443             result = g_fah->Mkdir(destDir, "Copy_0006_src", destSrcDir);
2444             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2445             result = g_fah->CreateFile(destSrcDir, "b.txt", bFileUri);
2446             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2447 
2448             std::vector<CopyResult> copyResult;
2449             result = g_fah->Copy(srcDir, destDir, copyResult, true);
2450             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2451             EXPECT_EQ(copyResult.size(), 0);
2452 
2453             result = g_fah->OpenFile(bFileUri, WRITE_READ, fd);
2454             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2455             ssize_t destFileSize = read(fd, buff, sizeof(buff));
2456             EXPECT_EQ(destFileSize, srcFileSize);
2457             close(fd);
2458 
2459             result = g_fah->Delete(srcDir);
2460             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2461             result = g_fah->Delete(destDir);
2462             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2463         }
2464     } catch (...) {
2465         GTEST_LOG_(ERROR) << "external_file_access_Copy_0006 occurs an exception.";
2466     }
2467     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0006";
2468 }
2469 
2470 /**
2471  * @tc.number: user_file_service_external_file_access_Copy_0007
2472  * @tc.name: external_file_access_Copy_0007
2473  * @tc.desc: Test function of Copy interface, copy a directory with the same name and argument of force is false
2474  * @tc.size: MEDIUM
2475  * @tc.type: FUNC
2476  * @tc.level Level 1
2477  * @tc.require: I7QXVD
2478  */
2479 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0007, testing::ext::TestSize.Level1)
2480 {
2481     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0007";
2482     try {
2483         vector<RootInfo> info;
2484         int result = g_fah->GetRoots(info);
2485         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2486         for (size_t i = 0; i < info.size(); i++) {
2487             Uri parentUri(info[i].uri);
2488             Uri srcDir("");
2489             result = g_fah->Mkdir(parentUri, "Copy_0007_src", srcDir);
2490             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2491             Uri aFileUri("");
2492             result = g_fah->CreateFile(srcDir, "a.txt", aFileUri);
2493             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2494             Uri bFileUri("");
2495             result = g_fah->CreateFile(srcDir, "b.txt", bFileUri);
2496             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2497             int fd = -1;
2498             result = g_fah->OpenFile(bFileUri, WRITE_READ, fd);
2499             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2500             char buff[] = "Copy test content for b.txt";
2501             ssize_t bFileSize = write(fd, buff, sizeof(buff));
2502             EXPECT_EQ(bFileSize, sizeof(buff));
2503             close(fd);
2504 
2505             Uri destDir("");
2506             result = g_fah->Mkdir(parentUri, "Copy_0007_dest", destDir);
2507             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2508             Uri destSrcDir("");
2509             result = g_fah->Mkdir(destDir, "Copy_0007_src", destSrcDir);
2510             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2511             Uri destFileUri("");
2512             result = g_fah->CreateFile(destSrcDir, "b.txt", destFileUri);
2513             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2514 
2515             std::vector<CopyResult> copyResult;
2516             result = g_fah->Copy(srcDir, destDir, copyResult, false);
2517             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
2518             EXPECT_EQ(copyResult.size(), 1);
2519             EXPECT_EQ(copyResult[0].sourceUri, bFileUri.ToString());
2520             EXPECT_EQ(copyResult[0].destUri, destFileUri.ToString());
2521 
2522             result = g_fah->Delete(srcDir);
2523             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2524             result = g_fah->Delete(destDir);
2525             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2526         }
2527     } catch (...) {
2528         GTEST_LOG_(ERROR) << "external_file_access_Copy_0007 occurs an exception.";
2529     }
2530     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0007";
2531 }
2532 
2533 /**
2534  * @tc.number: user_file_service_external_file_access_Copy_0008
2535  * @tc.name: external_file_access_Copy_0008
2536  * @tc.desc: Test function of Copy interface, copy a directory with the same name and no force argument
2537  * @tc.size: MEDIUM
2538  * @tc.type: FUNC
2539  * @tc.level Level 1
2540  * @tc.require: I7QXVD
2541  */
2542 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0008, testing::ext::TestSize.Level1)
2543 {
2544     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0008";
2545     try {
2546         vector<RootInfo> info;
2547         int result = g_fah->GetRoots(info);
2548         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2549         for (size_t i = 0; i < info.size(); i++) {
2550             Uri parentUri(info[i].uri);
2551             Uri srcDir("");
2552             result = g_fah->Mkdir(parentUri, "Copy_0008_src", srcDir);
2553             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2554             Uri aFileUri("");
2555             result = g_fah->CreateFile(srcDir, "a.txt", aFileUri);
2556             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2557             Uri bFileUri("");
2558             result = g_fah->CreateFile(srcDir, "b.txt", bFileUri);
2559             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2560 
2561             Uri destDir("");
2562             result = g_fah->Mkdir(parentUri, "Copy_0008_dest", destDir);
2563             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2564             Uri destSrcDir("");
2565             result = g_fah->Mkdir(destDir, "Copy_0008_src", destSrcDir);
2566             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2567             result = g_fah->CreateFile(destSrcDir, "b.txt", bFileUri);
2568             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2569 
2570             std::vector<CopyResult> copyResult;
2571             result = g_fah->Copy(srcDir, destDir, copyResult);
2572             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
2573             EXPECT_EQ(copyResult.size(), 1);
2574 
2575             result = g_fah->Delete(srcDir);
2576             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2577             result = g_fah->Delete(destDir);
2578             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2579         }
2580     } catch (...) {
2581         GTEST_LOG_(ERROR) << "external_file_access_Copy_0008 occurs an exception.";
2582     }
2583     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0008";
2584 }
2585 
2586 /**
2587  * @tc.number: user_file_service_external_file_access_Copy_0009
2588  * @tc.name: external_file_access_Copy_0009
2589  * @tc.desc: Test function of Copy interface, copy directory and file between different disks
2590  * @tc.size: MEDIUM
2591  * @tc.type: FUNC
2592  * @tc.level Level 1
2593  * @tc.require: I7QXVD
2594  */
2595 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0009, testing::ext::TestSize.Level1)
2596 {
2597     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0009";
2598     try {
2599         vector<RootInfo> info;
2600         int result = g_fah->GetRoots(info);
2601         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2602         for (size_t i = 0; i < info.size(); i++) {
2603             Uri parentUri(info[i].uri);
2604             Uri srcDir("");
2605             result = g_fah->Mkdir(parentUri, "Copy_0009_src", srcDir);
2606             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2607             Uri aFileUri("");
2608             result = g_fah->CreateFile(srcDir, "a.txt", aFileUri);
2609             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2610             Uri bFileUri("");
2611             result = g_fah->CreateFile(srcDir, "b.txt", bFileUri);
2612             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2613             int fd = -1;
2614             result = g_fah->OpenFile(bFileUri, WRITE_READ, fd);
2615             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2616             char buff[] = "Copy test content for b.txt";
2617             ssize_t srcFileSize = write(fd, buff, sizeof(buff));
2618             EXPECT_EQ(srcFileSize, sizeof(buff));
2619             close(fd);
2620 
2621             for (size_t j = i + 1; j < info.size(); j++) {
2622                 Uri targetUri(info[j].uri);
2623                 Uri destDir("");
2624                 result = g_fah->Mkdir(targetUri, "Copy_0009_dest", destDir);
2625                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2626                 Uri destSrcDir("");
2627                 result = g_fah->Mkdir(destDir, "Copy_0009_src", destSrcDir);
2628                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2629                 result = g_fah->CreateFile(destSrcDir, "b.txt", bFileUri);
2630                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2631 
2632                 std::vector<CopyResult> copyResult;
2633                 result = g_fah->Copy(srcDir, destDir, copyResult, true);
2634                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2635                 EXPECT_EQ(copyResult.size(), 0);
2636 
2637                 result = g_fah->OpenFile(bFileUri, WRITE_READ, fd);
2638                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2639                 ssize_t destFileSize = read(fd, buff, sizeof(buff));
2640                 EXPECT_EQ(destFileSize, srcFileSize);
2641                 close(fd);
2642 
2643                 result = g_fah->Delete(destDir);
2644                 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2645             }
2646             result = g_fah->Delete(srcDir);
2647             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2648         }
2649     } catch (...) {
2650         GTEST_LOG_(ERROR) << "external_file_access_Copy_0009 occurs an exception.";
2651     }
2652     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0009";
2653 }
2654 
2655 /**
2656  * @tc.number: user_file_service_external_file_access_Rename_0000
2657  * @tc.name: external_file_access_Rename_0000
2658  * @tc.desc: Test function of Rename interface for SUCCESS which rename file.
2659  * @tc.size: MEDIUM
2660  * @tc.type: FUNC
2661  * @tc.level Level 1
2662  * @tc.require: SR000H0387
2663  */
2664 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0000, testing::ext::TestSize.Level1)
2665 {
2666     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0000";
2667     try {
2668         vector<RootInfo> info;
2669         int result = g_fah->GetRoots(info);
2670         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2671         for (size_t i = 0; i < info.size(); i++) {
2672             Uri parentUri(info[i].uri);
2673             Uri newDirUriTest("");
2674             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
2675             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2676             Uri testUri("");
2677             result = g_fah->CreateFile(newDirUriTest, "test.txt", testUri);
2678             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2679             Uri renameUri("");
2680             result = g_fah->Rename(testUri, "test2.txt", renameUri);
2681             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2682             GTEST_LOG_(INFO) << "Rename_0000 result:" << result;
2683             result = g_fah->Delete(newDirUriTest);
2684             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2685         }
2686     } catch (...) {
2687         GTEST_LOG_(ERROR) << "external_file_access_Rename_0000 occurs an exception.";
2688     }
2689     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0000";
2690 }
2691 
2692 /**
2693  * @tc.number: user_file_service_external_file_access_Rename_0001
2694  * @tc.name: external_file_access_Rename_0001
2695  * @tc.desc: Test function of Rename interface for SUCCESS which rename folder.
2696  * @tc.size: MEDIUM
2697  * @tc.type: FUNC
2698  * @tc.level Level 1
2699  * @tc.require: SR000H0387
2700  */
2701 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0001, testing::ext::TestSize.Level1)
2702 {
2703     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0001";
2704     try {
2705         vector<RootInfo> info;
2706         int result = g_fah->GetRoots(info);
2707         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2708         for (size_t i = 0; i < info.size(); i++) {
2709             Uri parentUri(info[i].uri);
2710             Uri newDirUriTest("");
2711             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
2712             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2713             Uri renameUri("");
2714             result = g_fah->Rename(newDirUriTest, "testRename", renameUri);
2715             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2716             GTEST_LOG_(INFO) << "Rename_0001 result:" << result;
2717             result = g_fah->Delete(renameUri);
2718             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2719         }
2720     } catch (...) {
2721         GTEST_LOG_(ERROR) << "external_file_access_Rename_0001 occurs an exception.";
2722     }
2723     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0001";
2724 }
2725 
2726 /**
2727  * @tc.number: user_file_service_external_file_access_Rename_0002
2728  * @tc.name: external_file_access_Rename_0002
2729  * @tc.desc: Test function of Rename interface for ERROR which sourceFileUri is null.
2730  * @tc.size: MEDIUM
2731  * @tc.type: FUNC
2732  * @tc.level Level 1
2733  * @tc.require: SR000H0387
2734  */
2735 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0002, testing::ext::TestSize.Level1)
2736 {
2737     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0002";
2738     try {
2739         Uri renameUri("");
2740         Uri sourceFileUri("");
2741         int result = g_fah->Rename(sourceFileUri, "testRename.txt", renameUri);
2742         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
2743         GTEST_LOG_(INFO) << "Rename_0002 result:" << result;
2744     } catch (...) {
2745         GTEST_LOG_(ERROR) << "external_file_access_Rename_0002 occurs an exception.";
2746     }
2747     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0002";
2748 }
2749 
2750 /**
2751  * @tc.number: user_file_service_external_file_access_Rename_0003
2752  * @tc.name: external_file_access_Rename_0003
2753  * @tc.desc: Test function of Rename interface for ERROR which sourceFileUri is absolute path.
2754  * @tc.size: MEDIUM
2755  * @tc.type: FUNC
2756  * @tc.level Level 1
2757  * @tc.require: SR000H0387
2758  */
2759 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0003, testing::ext::TestSize.Level1)
2760 {
2761     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0003";
2762     try {
2763         vector<RootInfo> info;
2764         int result = g_fah->GetRoots(info);
2765         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2766         for (size_t i = 0; i < info.size(); i++) {
2767             Uri parentUri(info[i].uri);
2768             Uri newDirUriTest("");
2769             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
2770             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2771             Uri testUri("");
2772             result = g_fah->CreateFile(newDirUriTest, "test.txt", testUri);
2773             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2774             Uri renameUri("");
2775             Uri sourceFileUri("storage/media/100/local/files/Download/test/test.txt");
2776             result = g_fah->Rename(sourceFileUri, "testRename.txt", renameUri);
2777             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
2778             GTEST_LOG_(INFO) << "Rename_0003 result:" << result;
2779             result = g_fah->Delete(newDirUriTest);
2780             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2781         }
2782     } catch (...) {
2783         GTEST_LOG_(ERROR) << "external_file_access_Rename_0003 occurs an exception.";
2784     }
2785     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0003";
2786 }
2787 
2788 /**
2789  * @tc.number: user_file_service_external_file_access_Rename_0004
2790  * @tc.name: external_file_access_Rename_0004
2791  * @tc.desc: Test function of Rename interface for ERROR which sourceFileUri is special symbols.
2792  * @tc.size: MEDIUM
2793  * @tc.type: FUNC
2794  * @tc.level Level 1
2795  * @tc.require: SR000H0387
2796  */
2797 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0004, testing::ext::TestSize.Level1)
2798 {
2799     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0004";
2800     try {
2801         Uri renameUri("");
2802         Uri sourceFileUri("~!@#$%^&*()_");
2803         int result = g_fah->Rename(sourceFileUri, "testRename.txt", renameUri);
2804         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
2805         GTEST_LOG_(INFO) << "Rename_0004 result:" << result;
2806     } catch (...) {
2807         GTEST_LOG_(ERROR) << "external_file_access_Rename_0004 occurs an exception.";
2808     }
2809     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0004";
2810 }
2811 
2812 /**
2813  * @tc.number: user_file_service_external_file_access_Rename_0005
2814  * @tc.name: external_file_access_Rename_0005
2815  * @tc.desc: Test function of Rename interface for ERROR which displayName is null.
2816  * @tc.size: MEDIUM
2817  * @tc.type: FUNC
2818  * @tc.level Level 1
2819  * @tc.require: SR000H0387
2820  */
2821 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0005, testing::ext::TestSize.Level1)
2822 {
2823     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0005";
2824     try {
2825         vector<RootInfo> info;
2826         int result = g_fah->GetRoots(info);
2827         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2828         for (size_t i = 0; i < info.size(); i++) {
2829             Uri parentUri(info[i].uri);
2830             Uri newDirUriTest("");
2831             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
2832             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2833             Uri testUri("");
2834             result = g_fah->CreateFile(newDirUriTest, "test.txt", testUri);
2835             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2836             Uri renameUri("");
2837             result = g_fah->Rename(testUri, "", renameUri);
2838             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
2839             GTEST_LOG_(INFO) << "Rename_0005 result:" << result;
2840             result = g_fah->Delete(newDirUriTest);
2841             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2842         }
2843     } catch (...) {
2844         GTEST_LOG_(ERROR) << "external_file_access_Rename_0005 occurs an exception.";
2845     }
2846     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0005";
2847 }
2848 
RenameTdd(shared_ptr<FileAccessHelper> fahs,Uri sourceFile,std::string displayName,Uri newFile)2849 static void RenameTdd(shared_ptr<FileAccessHelper> fahs, Uri sourceFile, std::string displayName, Uri newFile)
2850 {
2851     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_RenameTdd";
2852     int ret = fahs->Rename(sourceFile, displayName, newFile);
2853     if (ret != OHOS::FileAccessFwk::ERR_OK) {
2854         GTEST_LOG_(ERROR) << "RenameTdd get result error, code:" << ret;
2855         return;
2856     }
2857     EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
2858     g_num++;
2859     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_RenameTdd";
2860 }
2861 
2862 /**
2863  * @tc.number: user_file_service_external_file_access_Rename_0006
2864  * @tc.name: external_file_access_Rename_0006
2865  * @tc.desc: Test function of Rename interface for SUCCESS which Concurrent.
2866  * @tc.size: MEDIUM
2867  * @tc.type: FUNC
2868  * @tc.level Level 1
2869  * @tc.require: SR000H0386
2870  */
2871 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0006, testing::ext::TestSize.Level1)
2872 {
2873     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0006";
2874     try {
2875         vector<RootInfo> info;
2876         int result = g_fah->GetRoots(info);
2877         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2878         for (size_t i = 0; i < info.size(); i++) {
2879             Uri parentUri(info[i].uri);
2880             Uri newDirUriTest("");
2881             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
2882             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2883             Uri testUri("");
2884             std::string displayName1 = "test1.txt";
2885             std::string displayName2 = "test2.txt";
2886             Uri renameUri("");
2887             result = g_fah->CreateFile(newDirUriTest, displayName1, testUri);
2888             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2889             g_num = 0;
2890             for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
2891                 std::thread execthread(RenameTdd, g_fah, testUri, displayName2, renameUri);
2892                 execthread.join();
2893             }
2894             EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
2895             result = g_fah->Delete(newDirUriTest);
2896             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2897         }
2898     } catch (...) {
2899         GTEST_LOG_(ERROR) << "external_file_access_Rename_0006 occurs an exception.";
2900     }
2901     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0006";
2902 }
2903 
2904 /**
2905  * @tc.number: user_file_service_external_file_access_Rename_0007
2906  * @tc.name: external_file_access_Rename_0007
2907  * @tc.desc: Test function of Rename interface for ERROR because of GetProxyByUri failed.
2908  * @tc.size: MEDIUM
2909  * @tc.type: FUNC
2910  * @tc.level Level 1
2911  * @tc.require: SR000H0387
2912  */
2913 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0007, testing::ext::TestSize.Level1)
2914 {
2915     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0007";
2916     try {
2917         vector<RootInfo> info;
2918         int result = g_fah->GetRoots(info);
2919         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2920         for (size_t i = 0; i < info.size(); i++) {
2921             Uri parentUri(info[i].uri);
2922             Uri newDirUriTest("");
2923             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
2924             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2925 
2926             std::string str = newDirUriTest.ToString();
2927             if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
2928                 GTEST_LOG_(ERROR) << "replace BundleName failed.";
2929                 EXPECT_TRUE(false);
2930             }
2931             Uri testUri(str);
2932             Uri renameUri("");
2933             result = g_fah->Rename(testUri, "test.txt", renameUri);
2934             EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
2935             GTEST_LOG_(INFO) << "Rename_0007 result:" << result;
2936             result = g_fah->Delete(newDirUriTest);
2937             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2938         }
2939     } catch (...) {
2940         GTEST_LOG_(ERROR) << "external_file_access_Rename_0007 occurs an exception.";
2941     }
2942     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0007";
2943 }
2944 
2945 /**
2946  * @tc.number: user_file_service_external_file_access_Rename_0008
2947  * @tc.name: external_file_access_Rename_0008
2948  * @tc.desc: Test function of Rename interface for SUCCESS which rename file, the display name is chinese.
2949  * @tc.size: MEDIUM
2950  * @tc.type: FUNC
2951  * @tc.level Level 1
2952  * @tc.require: I70SX9
2953  */
2954 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0008, testing::ext::TestSize.Level1)
2955 {
2956     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0008";
2957     try {
2958         vector<RootInfo> info;
2959         int result = g_fah->GetRoots(info);
2960         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2961         for (size_t i = 0; i < info.size(); i++) {
2962             Uri parentUri(info[i].uri);
2963             Uri newDirUriTest("");
2964             result = g_fah->Mkdir(parentUri, "测试目录", newDirUriTest);
2965             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2966             EXPECT_EQ(newDirUriTest.ToString().find("测试目录"), std::string::npos);
2967             Uri testUri("");
2968             result = g_fah->CreateFile(newDirUriTest, "test.txt", testUri);
2969             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2970             Uri renameUri("");
2971             result = g_fah->Rename(testUri, "测试文件.txt", renameUri);
2972             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2973             EXPECT_EQ(renameUri.ToString().find("测试文件.txt"), std::string::npos);
2974             GTEST_LOG_(INFO) << "Rename_0008 result:" << result;
2975             result = g_fah->Delete(newDirUriTest);
2976             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2977         }
2978     } catch (...) {
2979         GTEST_LOG_(ERROR) << "external_file_access_Rename_0008 occurs an exception.";
2980     }
2981     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0008";
2982 }
2983 
2984 /**
2985  * @tc.number: user_file_service_external_file_access_Rename_0009
2986  * @tc.name: external_file_access_Rename_0009
2987  * @tc.desc: Test function of Rename interface for SUCCESS which rename folder, the display name is chinese.
2988  * @tc.size: MEDIUM
2989  * @tc.type: FUNC
2990  * @tc.level Level 1
2991  * @tc.require: I70SX9
2992  */
2993 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0009, testing::ext::TestSize.Level1)
2994 {
2995     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0009";
2996     try {
2997         vector<RootInfo> info;
2998         int result = g_fah->GetRoots(info);
2999         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3000         for (size_t i = 0; i < info.size(); i++) {
3001             Uri parentUri(info[i].uri);
3002             Uri newDirUriTest("");
3003             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
3004             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3005             Uri testUri("");
3006             result = g_fah->CreateFile(newDirUriTest, "test.txt", testUri);
3007             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3008             Uri renameUri("");
3009             result = g_fah->Rename(newDirUriTest, "重命名目录", renameUri);
3010             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3011             EXPECT_EQ(renameUri.ToString().find("重命名目录"), std::string::npos);
3012             GTEST_LOG_(INFO) << "Rename_0009 result:" << result;
3013             result = g_fah->Delete(renameUri);
3014             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3015         }
3016     } catch (...) {
3017         GTEST_LOG_(ERROR) << "external_file_access_Rename_0009 occurs an exception.";
3018     }
3019     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0009";
3020 }
3021 
3022 /**
3023  * @tc.number: user_file_service_external_file_access_ListFile_0000
3024  * @tc.name: external_file_access_ListFile_0000
3025  * @tc.desc: Test function of ListFile interface for SUCCESS.
3026  * @tc.size: MEDIUM
3027  * @tc.type: FUNC
3028  * @tc.level Level 1
3029  * @tc.require: SR000H0387
3030  */
3031 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0000, testing::ext::TestSize.Level1)
3032 {
3033     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0000";
3034     try {
3035         vector<RootInfo> info;
3036         int result = g_fah->GetRoots(info);
3037         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3038         for (size_t i = 0; i < info.size(); i++) {
3039             Uri parentUri(info[i].uri);
3040             Uri newDirUriTest("");
3041             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
3042             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3043             Uri testUri("");
3044             result = g_fah->CreateFile(newDirUriTest, "external_file_access_ListFile_0000.txt", testUri);
3045             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3046             FileInfo fileInfo;
3047             fileInfo.uri = newDirUriTest.ToString();
3048             int64_t offset = 0;
3049             int64_t maxCount = 1000;
3050             std::vector<FileInfo> fileInfoVec;
3051             FileFilter filter;
3052             result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3053             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3054             EXPECT_GT(fileInfoVec.size(), OHOS::FileAccessFwk::ERR_OK);
3055             result = g_fah->Delete(newDirUriTest);
3056             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3057         }
3058     } catch (...) {
3059         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0000 occurs an exception.";
3060     }
3061     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0000";
3062 }
3063 
3064 /**
3065  * @tc.number: user_file_service_external_file_access_ListFile_0001
3066  * @tc.name: external_file_access_ListFile_0001
3067  * @tc.desc: Test function of ListFile interface for ERROR which Uri is nullptr.
3068  * @tc.size: MEDIUM
3069  * @tc.type: FUNC
3070  * @tc.level Level 1
3071  * @tc.require: SR000H0387
3072  */
3073 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0001, testing::ext::TestSize.Level1)
3074 {
3075     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0001";
3076     try {
3077         Uri sourceFileUri("");
3078         FileInfo fileInfo;
3079         fileInfo.uri = sourceFileUri.ToString();
3080         int64_t offset = 0;
3081         int64_t maxCount = 1000;
3082         std::vector<FileInfo> fileInfoVec;
3083         FileFilter filter;
3084         int result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3085         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
3086         EXPECT_EQ(fileInfoVec.size(), OHOS::FileAccessFwk::ERR_OK);
3087     } catch (...) {
3088         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0001 occurs an exception.";
3089     }
3090     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0001";
3091 }
3092 
3093 /**
3094  * @tc.number: user_file_service_external_file_access_ListFile_0002
3095  * @tc.name: external_file_access_ListFile_0002
3096  * @tc.desc: Test function of ListFile interface for ERROR which sourceFileUri is absolute path.
3097  * @tc.size: MEDIUM
3098  * @tc.type: FUNC
3099  * @tc.level Level 1
3100  * @tc.require: SR000H0387
3101  */
3102 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0002, testing::ext::TestSize.Level1)
3103 {
3104     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0002";
3105     try {
3106         vector<RootInfo> info;
3107         int result = g_fah->GetRoots(info);
3108         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3109         for (size_t i = 0; i < info.size(); i++) {
3110             Uri parentUri(info[i].uri);
3111             Uri newDirUriTest("");
3112             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
3113             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3114             Uri testUri("");
3115             result = g_fah->CreateFile(newDirUriTest, "test.txt", testUri);
3116             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3117             Uri sourceFileUri("storage/media/100/local/files/Download/test/test.txt");
3118             FileInfo fileInfo;
3119             fileInfo.uri = sourceFileUri.ToString();
3120             Uri sourceFile(fileInfo.uri);
3121             int64_t offset = 0;
3122             int64_t maxCount = 1000;
3123             std::vector<FileInfo> fileInfoVec;
3124             FileFilter filter;
3125             result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3126             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
3127             EXPECT_EQ(fileInfoVec.size(), OHOS::FileAccessFwk::ERR_OK);
3128             result = g_fah->Delete(newDirUriTest);
3129             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3130         }
3131     } catch (...) {
3132         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0002 occurs an exception.";
3133     }
3134     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0002";
3135 }
3136 
3137 /**
3138  * @tc.number: user_file_service_external_file_access_ListFile_0003
3139  * @tc.name: external_file_access_ListFile_0003
3140  * @tc.desc: Test function of ListFile interface for ERROR which sourceFileUri is special symbols.
3141  * @tc.size: MEDIUM
3142  * @tc.type: FUNC
3143  * @tc.level Level 1
3144  * @tc.require: SR000H0387
3145  */
3146 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0003, testing::ext::TestSize.Level1)
3147 {
3148     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0003";
3149     try {
3150         Uri sourceFileUri("~!@#$%^&*()_");
3151         FileInfo fileInfo;
3152         fileInfo.uri = sourceFileUri.ToString();
3153         Uri sourceFile(fileInfo.uri);
3154         int64_t offset = 0;
3155         int64_t maxCount = 1000;
3156         std::vector<FileInfo> fileInfoVec;
3157         FileFilter filter;
3158         int result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3159         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
3160         EXPECT_EQ(fileInfoVec.size(), OHOS::FileAccessFwk::ERR_OK);
3161     } catch (...) {
3162         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0003 occurs an exception.";
3163     }
3164     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0003";
3165 }
3166 
ListFileTdd(FileInfo fileInfo,int offset,int maxCount,FileFilter filter,std::vector<FileInfo> fileInfoVec)3167 static void ListFileTdd(FileInfo fileInfo, int offset, int maxCount, FileFilter filter,
3168     std::vector<FileInfo> fileInfoVec)
3169 {
3170     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFileTdd";
3171     int ret = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3172     if (ret != OHOS::FileAccessFwk::ERR_OK) {
3173         GTEST_LOG_(ERROR) << "ListFile get result error, code:" << ret;
3174         return;
3175     }
3176     EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
3177     g_num++;
3178     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFileTdd";
3179 }
3180 
3181 /**
3182  * @tc.number: user_file_service_external_file_access_ListFile_0004
3183  * @tc.name: external_file_access_ListFile_0004
3184  * @tc.desc: Test function of ListFile interface for SUCCESS which Concurrent.
3185  * @tc.size: MEDIUM
3186  * @tc.type: FUNC
3187  * @tc.level Level 1
3188  * @tc.require: SR000H0386
3189  */
3190 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0004, testing::ext::TestSize.Level1)
3191 {
3192     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0004";
3193     try {
3194         vector<RootInfo> info;
3195         int result = g_fah->GetRoots(info);
3196         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3197         for (size_t i = 0; i < info.size(); i++) {
3198             Uri parentUri(info[i].uri);
3199             Uri newDirUriTest("");
3200             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
3201             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3202             Uri testUri("");
3203             result = g_fah->CreateFile(newDirUriTest, "external_file_access_ListFile_0004.txt", testUri);
3204             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3205             FileInfo fileInfo;
3206             fileInfo.uri = newDirUriTest.ToString();
3207             int offset = 0;
3208             int maxCount = 1000;
3209             std::vector<FileInfo> fileInfoVec;
3210             FileFilter filter;
3211             g_num = 0;
3212             for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
3213                 std::thread execthread(ListFileTdd, fileInfo, offset, maxCount, filter, fileInfoVec);
3214                 execthread.join();
3215             }
3216             EXPECT_EQ(g_num, INIT_THREADS_NUMBER);
3217             result = g_fah->Delete(newDirUriTest);
3218             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3219         }
3220     } catch (...) {
3221         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0004 occurs an exception.";
3222     }
3223     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0004";
3224 }
3225 
3226 /**
3227  * @tc.number: user_file_service_external_file_access_ListFile_0005
3228  * @tc.name: external_file_access_ListFile_0005
3229  * @tc.desc: Test function of ListFile interface for ERROR because of GetProxyByUri failed.
3230  * @tc.size: MEDIUM
3231  * @tc.type: FUNC
3232  * @tc.level Level 1
3233  * @tc.require: SR000H0387
3234  */
3235 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0005, testing::ext::TestSize.Level1)
3236 {
3237     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0005";
3238     try {
3239         vector<RootInfo> info;
3240         int result = g_fah->GetRoots(info);
3241         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3242         for (size_t i = 0; i < info.size(); i++) {
3243             Uri parentUri(info[i].uri);
3244             Uri newDirUriTest("");
3245             result = g_fah->Mkdir(parentUri, "test", newDirUriTest);
3246             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3247             Uri testUri("");
3248             result = g_fah->CreateFile(newDirUriTest, "test.txt", testUri);
3249             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3250 
3251             std::string str = testUri.ToString();
3252             if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
3253                 GTEST_LOG_(ERROR) << "replace BundleName failed.";
3254                 EXPECT_TRUE(false);
3255             }
3256             FileInfo fileInfo;
3257             fileInfo.uri = str;
3258             int64_t offset = 0;
3259             int64_t maxCount = 1000;
3260             std::vector<FileInfo> fileInfoVec;
3261             FileFilter filter;
3262             result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3263             EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
3264             result = g_fah->Delete(newDirUriTest);
3265             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3266         }
3267     } catch (...) {
3268         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0005 occurs an exception.";
3269     }
3270     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0005";
3271 }
3272 
3273 /**
3274  * @tc.number: user_file_service_external_file_access_ListFile_0006
3275  * @tc.name: external_file_access_ListFile_0006
3276  * @tc.desc: Test function of ListFile interface for SUCCESS, the folder and file name is chinese.
3277  * @tc.size: MEDIUM
3278  * @tc.type: FUNC
3279  * @tc.level Level 1
3280  * @tc.require: I70SX9
3281  */
3282 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0006, testing::ext::TestSize.Level1)
3283 {
3284     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0006";
3285     try {
3286         vector<RootInfo> info;
3287         int result = g_fah->GetRoots(info);
3288         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3289         for (size_t i = 0; i < info.size(); i++) {
3290             Uri parentUri(info[i].uri);
3291             Uri newDirUriTest("");
3292             result = g_fah->Mkdir(parentUri, "测试目录", newDirUriTest);
3293             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3294             EXPECT_EQ(newDirUriTest.ToString().find("测试目录"), std::string::npos);
3295             Uri testUri("");
3296             result = g_fah->CreateFile(newDirUriTest, "测试文件.txt", testUri);
3297             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3298             EXPECT_EQ(testUri.ToString().find("测试文件.txt"), std::string::npos);
3299             FileInfo fileInfo;
3300             fileInfo.uri = newDirUriTest.ToString();
3301             int64_t offset = 0;
3302             int64_t maxCount = 1000;
3303             std::vector<FileInfo> fileInfoVec;
3304             FileFilter filter;
3305             result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3306             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3307             EXPECT_GT(fileInfoVec.size(), OHOS::FileAccessFwk::ERR_OK);
3308             result = g_fah->Delete(newDirUriTest);
3309             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3310         }
3311     } catch (...) {
3312         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0006 occurs an exception.";
3313     }
3314     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0006";
3315 }
3316 
3317 
WriteData(Uri & uri)3318 static void WriteData(Uri &uri)
3319 {
3320     int fd = -1;
3321     std::string buff = "extenal_file_access_test";
3322     int result = g_fah->OpenFile(uri, WRITE_READ, fd);
3323     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3324     ssize_t fileSize = write(fd, buff.c_str(), buff.size());
3325     close(fd);
3326     EXPECT_EQ(fileSize, buff.size());
3327 }
3328 
GetTime()3329 static double GetTime()
3330 {
3331     struct timespec t{};
3332     t.tv_sec = 0;
3333     t.tv_nsec = 0;
3334     clock_gettime(CLOCK_REALTIME, &t);
3335     return static_cast<double>(t.tv_sec);
3336 }
3337 
InitListFile(Uri newDirUriTest,const std::string & caseNumber,const bool & needSleep=false)3338 static double InitListFile(Uri newDirUriTest, const std::string &caseNumber, const bool &needSleep = false)
3339 {
3340     Uri testUri1("");
3341     int result = g_fah->CreateFile(newDirUriTest, "external_file_access_ListFile_" + caseNumber + ".txt", testUri1);
3342     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3343     Uri testUri2("");
3344     result = g_fah->CreateFile(newDirUriTest, "external_file_access_ListFile_" + caseNumber + ".docx", testUri2);
3345     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3346     Uri testUri3("");
3347     double time = GetTime();
3348     if (needSleep) {
3349       sleep(2);
3350     }
3351     result = g_fah->CreateFile(newDirUriTest, "external_file_access_ListFile_01_" + caseNumber + ".txt", testUri3);
3352     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3353     Uri testUri4("");
3354     result = g_fah->CreateFile(newDirUriTest, "external_file_access_ListFile_01_" + caseNumber +  ".docx", testUri4);
3355     WriteData(testUri4);
3356     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3357     Uri testUri5("");
3358     result = g_fah->CreateFile(newDirUriTest, "external_file_access_ListFile_01_" + caseNumber + "_01.docx", testUri5);
3359     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3360     return time;
3361 }
3362 
ListFileFilter7(Uri newDirUriTest)3363 static void ListFileFilter7(Uri newDirUriTest)
3364 {
3365     FileInfo fileInfo;
3366     fileInfo.uri = newDirUriTest.ToString();
3367     int64_t offset = 4;
3368     int64_t maxCount = 1;
3369     std::vector<FileInfo> fileInfoVec;
3370     FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
3371     int result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3372     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3373     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_1);
3374 }
3375 
3376 /**
3377  * @tc.number: user_file_service_external_file_access_ListFile_0007
3378  * @tc.name: external_file_access_ListFile_0007
3379  * @tc.desc: Test function of ListFile for Success, filter is File Extensions.
3380  * @tc.size: MEDIUM
3381  * @tc.type: FUNC
3382  * @tc.level Level 1
3383  * @tc.require: I79CSX
3384  */
3385 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0007, testing::ext::TestSize.Level1)
3386 {
3387     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0007";
3388     try {
3389         vector<RootInfo> info;
3390         int result = g_fah->GetRoots(info);
3391         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3392         for (size_t i = 0; i < info.size(); i++) {
3393             Uri parentUri(info[i].uri);
3394             Uri newDirUriTest("");
3395             result = g_fah->Mkdir(parentUri, "listfile007", newDirUriTest);
3396             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3397             InitListFile(newDirUriTest, "0007");
3398             ListFileFilter7(newDirUriTest);
3399             result = g_fah->Delete(newDirUriTest);
3400             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3401         }
3402     } catch (...) {
3403         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0007 occurs an exception.";
3404     }
3405     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0007";
3406 }
3407 
InitListFileFolder(Uri newDirUriTest,const std::string & caseNumber,const bool & needSleep=false)3408 static double InitListFileFolder(Uri newDirUriTest, const std::string &caseNumber, const bool &needSleep = false)
3409 {
3410     double time = InitListFile(newDirUriTest, caseNumber, needSleep);
3411     Uri folderUri("");
3412     int result = g_fah->Mkdir(newDirUriTest, "test" + caseNumber, folderUri);
3413     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3414     Uri testUri6("");
3415     result = g_fah->CreateFile(folderUri, "external_file_access_ListFile_01_" + caseNumber + "_02.docx", testUri6);
3416     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3417     return time;
3418 }
3419 
ShowInfo(const std::vector<FileInfo> & fileInfoVec,const std::string & caseNumber)3420 static void ShowInfo(const std::vector<FileInfo> &fileInfoVec, const std::string &caseNumber)
3421 {
3422     for (auto fileInfo : fileInfoVec) {
3423         GTEST_LOG_(INFO) << caseNumber << ", uri:" << fileInfo.uri << endl;
3424     }
3425 }
3426 
ListFileFilter8(Uri newDirUriTest)3427 static void ListFileFilter8(Uri newDirUriTest)
3428 {
3429     FileInfo fileInfo;
3430     fileInfo.uri = newDirUriTest.ToString();
3431     int64_t offset = 0;
3432     int64_t maxCount = 1000;
3433     std::vector<FileInfo> fileInfoVec;
3434     FileFilter filter({}, {}, {}, -1, 0, false, true);
3435     int result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3436     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3437     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_6);
3438     ShowInfo(fileInfoVec, "external_file_access_ListFile_0008");
3439 }
3440 
3441 /**
3442  * @tc.number: user_file_service_external_file_access_ListFile_0008
3443  * @tc.name: external_file_access_ListFile_0008
3444  * @tc.desc: Test function of ListFile for Success, filter is filesize >= 0
3445  * @tc.size: MEDIUM
3446  * @tc.type: FUNC
3447  * @tc.level Level 1
3448  * @tc.require: I79CSX
3449  */
3450 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0008, testing::ext::TestSize.Level1)
3451 {
3452     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0008";
3453     try {
3454         vector<RootInfo> info;
3455         int result = g_fah->GetRoots(info);
3456         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3457         for (size_t i = 0; i < info.size(); i++) {
3458             Uri parentUri(info[i].uri);
3459             Uri newDirUriTest("");
3460             result = g_fah->Mkdir(parentUri, "listfile008", newDirUriTest);
3461             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3462             InitListFileFolder(newDirUriTest, "0008");
3463             ListFileFilter8(newDirUriTest);
3464             result = g_fah->Delete(newDirUriTest);
3465             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3466         }
3467     } catch (...) {
3468         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0008 occurs an exception.";
3469     }
3470     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0008";
3471 }
3472 
ListFileFilter9(Uri newDirUriTest)3473 static void ListFileFilter9(Uri newDirUriTest)
3474 {
3475     FileInfo fileInfo;
3476     fileInfo.uri = newDirUriTest.ToString();
3477     int64_t offset = 0;
3478     int64_t maxCount = 1000;
3479     std::vector<FileInfo> fileInfoVec;
3480     FileFilter filter;
3481     int result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3482     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3483     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_6);
3484 }
3485 
3486 /**
3487  * @tc.number: user_file_service_external_file_access_ListFile_0009
3488  * @tc.name: external_file_access_ListFile_0009
3489  * @tc.desc: Test function of ListFile for Success, filter is offset from 0 and maxCount is 1000
3490  * @tc.size: MEDIUM
3491  * @tc.type: FUNC
3492  * @tc.level Level 1
3493  * @tc.require: I79CSX
3494  */
3495 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0009, testing::ext::TestSize.Level1)
3496 {
3497     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0008";
3498     try {
3499         vector<RootInfo> info;
3500         int result = g_fah->GetRoots(info);
3501         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3502         for (size_t i = 0; i < info.size(); i++) {
3503             Uri parentUri(info[i].uri);
3504             Uri newDirUriTest("");
3505             result = g_fah->Mkdir(parentUri, "listfile009", newDirUriTest);
3506             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3507             InitListFileFolder(newDirUriTest, "0009");
3508             ListFileFilter9(newDirUriTest);
3509             result = g_fah->Delete(newDirUriTest);
3510             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3511         }
3512     } catch (...) {
3513         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0009 occurs an exception.";
3514     }
3515     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0009";
3516 }
3517 
ListFileFilter10(Uri newDirUriTest,const double & time)3518 static void ListFileFilter10(Uri newDirUriTest, const double &time)
3519 {
3520     FileInfo fileInfo;
3521     fileInfo.uri = newDirUriTest.ToString();
3522     int64_t offset = 0;
3523     int64_t maxCount = 1000;
3524     std::vector<FileInfo> fileInfoVec;
3525     FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
3526     int result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3527     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3528     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_5);
3529 
3530     FileFilter filter1({".txt", ".docx"}, {"0010.txt", "0010.docx"}, {}, -1, -1, false, true);
3531     result = g_fah->ListFile(fileInfo, offset, maxCount, filter1, fileInfoVec);
3532     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3533     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_4);
3534 
3535     FileFilter filter2({".txt", ".docx"}, {"0010.txt", "0010.docx"}, {}, 0, 0, false, true);
3536     result = g_fah->ListFile(fileInfo, offset, maxCount, filter2, fileInfoVec);
3537     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3538     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_1);
3539 
3540     FileFilter filter3({".txt", ".docx"}, {"0010.txt", "0010.docx"}, {}, -1, time, false, true);
3541     result = g_fah->ListFile(fileInfo, offset, maxCount, filter3, fileInfoVec);
3542     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3543     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_2);
3544 
3545     double nowTime = GetTime();
3546     FileFilter filter4({".txt", ".docx"}, {"0010.txt", "0010.docx"}, {}, -1, nowTime, false, true);
3547     result = g_fah->ListFile(fileInfo, offset, maxCount, filter4, fileInfoVec);
3548     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3549     EXPECT_EQ(fileInfoVec.size(), 0);
3550 }
3551 
3552 /**
3553  * @tc.number: user_file_service_external_file_access_ListFile_0010
3554  * @tc.name: external_file_access_ListFile_0010
3555  * @tc.desc: Test function of ListFile interface for SUCCESS, filter is filename, extension, file size, modify time
3556  * @tc.size: MEDIUM
3557  * @tc.type: FUNC
3558  * @tc.level Level 1
3559  * @tc.require: I79CSX
3560  */
3561 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0010, testing::ext::TestSize.Level1)
3562 {
3563     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0010";
3564     try {
3565         vector<RootInfo> info;
3566         int result = g_fah->GetRoots(info);
3567         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3568         for (size_t i = 0; i < info.size(); i++) {
3569             Uri parentUri(info[i].uri);
3570             Uri newDirUriTest("");
3571             result = g_fah->Mkdir(parentUri, "listfile0010", newDirUriTest);
3572             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3573             double time = InitListFile(newDirUriTest, "0010", true);
3574             ListFileFilter10(newDirUriTest, time);
3575             result = g_fah->Delete(newDirUriTest);
3576             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3577         }
3578     } catch (...) {
3579         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0010 occurs an exception.";
3580     }
3581     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0010";
3582 }
3583 
ListFileFilter11(Uri newDirUriTest,const double & time)3584 static void ListFileFilter11(Uri newDirUriTest, const double &time)
3585 {
3586     FileInfo fileInfo;
3587     fileInfo.uri = newDirUriTest.ToString();
3588     int64_t offset = 0;
3589     int64_t maxCount = 1000;
3590     std::vector<FileInfo> fileInfoVec;
3591     FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
3592     int result = g_fah->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3593     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3594     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_6);
3595 
3596     FileFilter filter1({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, -1, -1, false, true);
3597     result = g_fah->ListFile(fileInfo, offset, maxCount, filter1, fileInfoVec);
3598     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3599     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_4);
3600 
3601     FileFilter filter2({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, 0, 0, false, true);
3602     result = g_fah->ListFile(fileInfo, offset, maxCount, filter2, fileInfoVec);
3603     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3604     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_1);
3605 
3606     FileFilter filter3({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, -1, time, false, true);
3607     result = g_fah->ListFile(fileInfo, offset, maxCount, filter3, fileInfoVec);
3608     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3609     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_2);
3610 
3611     double nowTime = GetTime();
3612     FileFilter filter4({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, -1, nowTime, false, true);
3613     result = g_fah->ListFile(fileInfo, offset, maxCount, filter4, fileInfoVec);
3614     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3615     EXPECT_EQ(fileInfoVec.size(), 0);
3616 }
3617 
3618 /**
3619  * @tc.number: user_file_service_external_file_access_ListFile_0011
3620  * @tc.name: external_file_access_ListFile_0011
3621  * @tc.desc: Test function of ListFile interface for SUCCESS, for filename is Chinese
3622  * @tc.size: MEDIUM
3623  * @tc.type: FUNC
3624  * @tc.level Level 1
3625  * @tc.require: I79CSX
3626  */
3627 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0011, testing::ext::TestSize.Level1)
3628 {
3629     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0011";
3630     try {
3631         vector<RootInfo> info;
3632         int result = g_fah->GetRoots(info);
3633         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3634         for (size_t i = 0; i < info.size(); i++) {
3635             Uri parentUri(info[i].uri);
3636             Uri newDirUriTest("");
3637             result = g_fah->Mkdir(parentUri, "listfile测试", newDirUriTest);
3638             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3639             double time = InitListFileFolder(newDirUriTest, "测试", true);
3640             ListFileFilter11(newDirUriTest, time);
3641             result = g_fah->Delete(newDirUriTest);
3642             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3643         }
3644     } catch (...) {
3645         GTEST_LOG_(ERROR) << "external_file_access_ListFile_0011 occurs an exception.";
3646     }
3647     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0011";
3648 }
3649 
InitScanFile(Uri newDirUriTest,const std::string & caseNumber,const bool & needSleep=false)3650 static double InitScanFile(Uri newDirUriTest, const std::string &caseNumber, const bool &needSleep = false)
3651 {
3652     Uri forlderUriTest("");
3653     int result = g_fah->Mkdir(newDirUriTest, "test" + caseNumber, forlderUriTest);
3654     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3655 
3656     Uri testUri1("");
3657     result = g_fah->CreateFile(newDirUriTest, "external_file_access_ScanFile_" + caseNumber + ".txt", testUri1);
3658     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3659     Uri testUri2("");
3660     result = g_fah->CreateFile(newDirUriTest, "external_file_access_ScanFile_" + caseNumber + ".docx", testUri2);
3661     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3662     double time = GetTime();
3663     if (needSleep) {
3664       sleep(2);
3665     }
3666     Uri testUri3("");
3667     result = g_fah->CreateFile(forlderUriTest, "external_file_access_ScanFile_01_" + caseNumber + ".txt", testUri3);
3668     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3669     Uri testUri4("");
3670     result = g_fah->CreateFile(forlderUriTest, "external_file_access_ScanFile_01_" + caseNumber + ".docx", testUri4);
3671     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3672     WriteData(testUri4);
3673     Uri testUri5("");
3674     result = g_fah->CreateFile(forlderUriTest, "external_file_access_ScanFile_01_" + caseNumber + "_01.docx", testUri5);
3675     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3676     return time;
3677 }
3678 
ScanFileFilter0(Uri newDirUriTest,const double & time)3679 static void ScanFileFilter0(Uri newDirUriTest, const double &time)
3680 {
3681     FileInfo fileInfo;
3682     fileInfo.uri = newDirUriTest.ToString();
3683     int64_t offset = 0;
3684     int64_t maxCount = 1000;
3685     std::vector<FileInfo> fileInfoVec;
3686     FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
3687     int result = g_fah->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3688     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3689     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_5);
3690 
3691     FileFilter filter1({".txt", ".docx"}, {"0000.txt", "0000.docx"}, {}, -1, -1, false, true);
3692     result = g_fah->ScanFile(fileInfo, offset, maxCount, filter1, fileInfoVec);
3693     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3694     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_4);
3695 
3696     FileFilter filter2({".txt", ".docx"}, {"0000.txt", "0000.docx"}, {}, 0, 0, false, true);
3697     result = g_fah->ScanFile(fileInfo, offset, maxCount, filter2, fileInfoVec);
3698     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3699     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_1);
3700 
3701     FileFilter filter3({".txt", ".docx"}, {"0000.txt", "0000.docx"}, {}, -1, time, false, true);
3702     result = g_fah->ScanFile(fileInfo, offset, maxCount, filter3, fileInfoVec);
3703     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3704     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_2);
3705 
3706     double nowTime = GetTime();
3707     FileFilter filter4({".txt", ".docx"}, {"0000.txt", "0000.docx"}, {}, -1, nowTime, false, true);
3708     result = g_fah->ScanFile(fileInfo, offset, maxCount, filter4, fileInfoVec);
3709     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3710     EXPECT_EQ(fileInfoVec.size(), 0);
3711 }
3712 
3713 /**
3714  * @tc.number: user_file_service_external_file_access_ScanFile_0000
3715  * @tc.name: external_file_access_ScanFile_0000
3716  * @tc.desc: Test function of ScanFile interface for SUCCESS, filter is filename, extension, file size, modify time
3717  * @tc.size: MEDIUM
3718  * @tc.type: FUNC
3719  * @tc.level Level 1
3720  * @tc.require: I79CSX
3721  */
3722 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0000, testing::ext::TestSize.Level1)
3723 {
3724     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ScanFile_0000";
3725     try {
3726         vector<RootInfo> info;
3727         int result = g_fah->GetRoots(info);
3728         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3729         for (size_t i = 0; i < info.size(); i++) {
3730             Uri parentUri(info[i].uri);
3731             Uri newDirUriTest("");
3732             result = g_fah->Mkdir(parentUri, "scanfile0000", newDirUriTest);
3733             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3734             double time = InitScanFile(newDirUriTest, "0000", true);
3735             ScanFileFilter0(newDirUriTest, time);
3736             result = g_fah->Delete(newDirUriTest);
3737             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3738         }
3739     } catch (...) {
3740         GTEST_LOG_(ERROR) << "external_file_access_ScanFile_0000 occurs an exception.";
3741     }
3742     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ScanFile_0000";
3743 }
3744 
ScanFileFilter1(Uri newDirUriTest)3745 static void ScanFileFilter1(Uri newDirUriTest)
3746 {
3747     FileInfo fileInfo;
3748     fileInfo.uri = newDirUriTest.ToString();
3749     int64_t offset = 0;
3750     int64_t maxCount = 1000;
3751     std::vector<FileInfo> fileInfoVec;
3752     FileFilter filter;
3753     int result = g_fah->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3754     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3755     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_5);
3756 }
3757 
3758 /**
3759  * @tc.number: user_file_service_external_file_access_ScanFile_0001
3760  * @tc.name: external_file_access_ScanFile_0001
3761  * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is offset from 0 to maxcount
3762  * @tc.size: MEDIUM
3763  * @tc.type: FUNC
3764  * @tc.level Level 1
3765  * @tc.require: I79CSX
3766  */
3767 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0001, testing::ext::TestSize.Level1)
3768 {
3769     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ScanFile_0001";
3770     try {
3771         vector<RootInfo> info;
3772         int result = g_fah->GetRoots(info);
3773         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3774         for (size_t i = 0; i < info.size(); i++) {
3775             Uri parentUri(info[i].uri);
3776             Uri newDirUriTest("");
3777             result = g_fah->Mkdir(parentUri, "scanfile0001", newDirUriTest);
3778             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3779             InitScanFile(newDirUriTest, "0001");
3780             ScanFileFilter1(newDirUriTest);
3781             result = g_fah->Delete(newDirUriTest);
3782             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3783         }
3784     } catch (...) {
3785         GTEST_LOG_(ERROR) << "external_file_access_ScanFile_0001 occurs an exception.";
3786     }
3787     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ScanFile_0001";
3788 }
3789 
ScanFileFilter2(Uri newDirUriTest)3790 static void ScanFileFilter2(Uri newDirUriTest)
3791 {
3792     FileInfo fileInfo;
3793     fileInfo.uri = newDirUriTest.ToString();
3794     int64_t offset = 3;
3795     int64_t maxCount = 3;
3796     std::vector<FileInfo> fileInfoVec;
3797     FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
3798     int result = g_fah->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3799     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3800     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_2);
3801 }
3802 
3803 /**
3804  * @tc.number: user_file_service_external_file_access_ScanFile_0002
3805  * @tc.name: external_file_access_ScanFile_0002
3806  * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is extenstion offset maxCount
3807  * @tc.size: MEDIUM
3808  * @tc.type: FUNC
3809  * @tc.level Level 1
3810  * @tc.require: I79CSX
3811  */
3812 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0002, testing::ext::TestSize.Level1)
3813 {
3814     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ScanFile_0002";
3815     try {
3816         vector<RootInfo> info;
3817         int result = g_fah->GetRoots(info);
3818         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3819         for (size_t i = 0; i < info.size(); i++) {
3820             Uri parentUri(info[i].uri);
3821             Uri newDirUriTest("");
3822             result = g_fah->Mkdir(parentUri, "scanfile0002", newDirUriTest);
3823             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3824             InitScanFile(newDirUriTest, "0002");
3825             ScanFileFilter2(newDirUriTest);
3826             result = g_fah->Delete(newDirUriTest);
3827             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3828         }
3829     } catch (...) {
3830         GTEST_LOG_(ERROR) << "external_file_access_ScanFile_0002 occurs an exception.";
3831     }
3832     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ScanFile_0002";
3833 }
3834 
ScanFileFilter3(Uri newDirUriTest,const double & time)3835 static void ScanFileFilter3(Uri newDirUriTest, const double &time)
3836 {
3837     FileInfo fileInfo;
3838     fileInfo.uri = newDirUriTest.ToString();
3839     int64_t offset = 0;
3840     int64_t maxCount = 1000;
3841     std::vector<FileInfo> fileInfoVec;
3842     FileFilter filter({}, {}, {}, -1, time, false, true);
3843     int result = g_fah->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3844     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3845     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_3);
3846 }
3847 
3848 /**
3849  * @tc.number: user_file_service_external_file_access_ScanFile_0003
3850  * @tc.name: external_file_access_ScanFile_0003
3851  * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is modify time
3852  * @tc.size: MEDIUM
3853  * @tc.type: FUNC
3854  * @tc.level Level 1
3855  * @tc.require: I79CSX
3856  */
3857 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0003, testing::ext::TestSize.Level1)
3858 {
3859     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ScanFile_0003";
3860     try {
3861         vector<RootInfo> info;
3862         int result = g_fah->GetRoots(info);
3863         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3864         for (size_t i = 0; i < info.size(); i++) {
3865             Uri parentUri(info[i].uri);
3866             Uri newDirUriTest("");
3867             result = g_fah->Mkdir(parentUri, "scanfile0003", newDirUriTest);
3868             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3869             double time = InitScanFile(newDirUriTest, "0003", true);
3870             ScanFileFilter3(newDirUriTest, time);
3871             result = g_fah->Delete(newDirUriTest);
3872             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3873         }
3874     } catch (...) {
3875         GTEST_LOG_(ERROR) << "external_file_access_ScanFile_0003 occurs an exception.";
3876     }
3877     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ScanFile_0003";
3878 }
3879 
ScanFileFilter4(Uri newDirUriTest)3880 static void ScanFileFilter4(Uri newDirUriTest)
3881 {
3882     FileInfo fileInfo;
3883     fileInfo.uri = newDirUriTest.ToString();
3884     int64_t offset = 0;
3885     int64_t maxCount = 1000;
3886     std::vector<FileInfo> fileInfoVec;
3887     FileFilter filter;
3888     int result = g_fah->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3889     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3890     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_5);
3891 }
3892 
3893 /**
3894  * @tc.number: user_file_service_external_file_access_ScanFile_0004
3895  * @tc.name: external_file_access_ScanFile_0004
3896  * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is offset from 0 to maxCount
3897  * @tc.size: MEDIUM
3898  * @tc.type: FUNC
3899  * @tc.level Level 1
3900  * @tc.require: I79CSX
3901  */
3902 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0004, testing::ext::TestSize.Level1)
3903 {
3904     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin user_file_service_external_file_access_ScanFile_0004";
3905     try {
3906         vector<RootInfo> info;
3907         int result = g_fah->GetRoots(info);
3908         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3909         for (size_t i = 0; i < info.size(); i++) {
3910             Uri parentUri(info[i].uri);
3911             Uri newDirUriTest("");
3912             result = g_fah->Mkdir(parentUri, "scanfile0004", newDirUriTest);
3913             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3914             InitScanFile(newDirUriTest, "0004");
3915             ScanFileFilter4(newDirUriTest);
3916             result = g_fah->Delete(newDirUriTest);
3917             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3918         }
3919     } catch (...) {
3920         GTEST_LOG_(ERROR) << "user_file_service_external_file_access_ScanFile_0004 occurs an exception.";
3921     }
3922     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end user_file_service_external_file_access_ScanFile_0004";
3923 }
3924 
ScanFileFilter5(Uri newDirUriTest)3925 static void ScanFileFilter5(Uri newDirUriTest)
3926 {
3927     FileInfo fileInfo;
3928     fileInfo.uri = newDirUriTest.ToString();
3929     int64_t offset = 0;
3930     int64_t maxCount = 1000;
3931     std::vector<FileInfo> fileInfoVec;
3932     FileFilter filter({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, -1, -1, false, true);
3933     int result = g_fah->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
3934     EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3935     EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_4);
3936 }
3937 
3938 /**
3939  * @tc.number: user_file_service_external_file_access_ScanFile_0005
3940  * @tc.name: external_file_access_ScanFile_0005
3941  * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is Chinese filename
3942  * @tc.size: MEDIUM
3943  * @tc.type: FUNC
3944  * @tc.level Level 1
3945  * @tc.require: I79CSX
3946  */
3947 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0005, testing::ext::TestSize.Level1)
3948 {
3949     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin user_file_service_external_file_access_ScanFile_0005";
3950     try {
3951         vector<RootInfo> info;
3952         int result = g_fah->GetRoots(info);
3953         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3954         for (size_t i = 0; i < info.size(); i++) {
3955             Uri parentUri(info[i].uri);
3956             Uri newDirUriTest("");
3957             result = g_fah->Mkdir(parentUri, "scanfile测试", newDirUriTest);
3958             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3959             InitScanFile(newDirUriTest, "测试");
3960             ScanFileFilter5(newDirUriTest);
3961             result = g_fah->Delete(newDirUriTest);
3962             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3963         }
3964     } catch (...) {
3965         GTEST_LOG_(ERROR) << "user_file_service_external_file_access_ScanFile_0005 occurs an exception.";
3966     }
3967     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end user_file_service_external_file_access_ScanFile_0005";
3968 }
3969 
3970 /**
3971  * @tc.number: user_file_service_external_file_access_GetRoots_0000
3972  * @tc.name: external_file_access_GetRoots_0000
3973  * @tc.desc: Test function of GetRoots interface for SUCCESS.
3974  * @tc.size: MEDIUM
3975  * @tc.type: FUNC
3976  * @tc.level Level 1
3977  * @tc.require: SR000H0387
3978  */
3979 HWTEST_F(FileExtensionHelperTest, external_file_access_GetRoots_0000, testing::ext::TestSize.Level1)
3980 {
3981     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetRoots_0000";
3982     try {
3983         vector<RootInfo> info;
3984         int result = g_fah->GetRoots(info);
3985         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
3986         EXPECT_GT(info.size(), OHOS::FileAccessFwk::ERR_OK);
3987         GTEST_LOG_(INFO) << "GetRoots_0000 result:" << info.size() << endl;
3988         for (size_t i = 0; i < info.size(); i++) {
3989             GTEST_LOG_(INFO) << info[i].uri;
3990             GTEST_LOG_(INFO) << info[i].displayName;
3991             GTEST_LOG_(INFO) << info[i].deviceFlags;
3992             GTEST_LOG_(INFO) << info[i].deviceType;
3993             GTEST_LOG_(INFO) << info[i].relativePath;
3994         }
3995         EXPECT_GE(info.size(), 2);
3996     } catch (...) {
3997         GTEST_LOG_(ERROR) << "external_file_access_GetRoots_0000 occurs an exception.";
3998     }
3999     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetRoots_0000";
4000 }
4001 
4002 /**
4003  * @tc.number: user_file_service_external_file_access_Access_0000
4004  * @tc.name: external_file_access_Access_0000
4005  * @tc.desc: Test function of Access interface for SUCCESS.
4006  * @tc.size: MEDIUM
4007  * @tc.type: FUNC
4008  * @tc.level Level 1
4009  * @tc.require: SR000H0386
4010  */
4011 HWTEST_F(FileExtensionHelperTest, external_file_access_Access_0000, testing::ext::TestSize.Level1)
4012 {
4013     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Access_0000";
4014     try {
4015         vector<RootInfo> info;
4016         int result = g_fah->GetRoots(info);
4017         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4018         for (size_t i = 0; i < info.size(); i++) {
4019             Uri parentUri(info[i].uri);
4020             GTEST_LOG_(INFO) << parentUri.ToString();
4021             Uri newDirUriTest("");
4022             result = g_fah->Mkdir(parentUri, "test1", newDirUriTest);
4023             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4024             Uri newFileUri("");
4025             result = g_fah->CreateFile(newDirUriTest, "external_file_access_Access_0000.txt", newFileUri);
4026             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4027             bool isExist = false;
4028             result = g_fah->Access(newDirUriTest, isExist);
4029             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4030             EXPECT_TRUE(isExist);
4031             result = g_fah->Access(newFileUri, isExist);
4032             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4033             EXPECT_TRUE(isExist);
4034             result = g_fah->Delete(newDirUriTest);
4035             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4036             result = g_fah->Access(newDirUriTest, isExist);
4037             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4038             EXPECT_FALSE(isExist);
4039         }
4040     } catch (...) {
4041         GTEST_LOG_(ERROR) << "external_file_access_Access_0000 occurs an exception.";
4042     }
4043     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Access_0000";
4044 }
4045 
4046 /**
4047  * @tc.number: user_file_service_external_file_access_Access_0001
4048  * @tc.name: external_file_access_Access_0001
4049  * @tc.desc: Test function of Access interface FAILED because of GetProxyByUri failed.
4050  * @tc.size: MEDIUM
4051  * @tc.type: FUNC
4052  * @tc.level Level 1
4053  * @tc.require: SR000H0386
4054  */
4055 HWTEST_F(FileExtensionHelperTest, external_file_access_Access_0001, testing::ext::TestSize.Level1)
4056 {
4057     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Access_0001";
4058     try {
4059         vector<RootInfo> info;
4060         int result = g_fah->GetRoots(info);
4061         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4062         for (size_t i = 0; i < info.size(); i++) {
4063             std::string str = info[i].uri;
4064             if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
4065                 GTEST_LOG_(ERROR) << "replace BundleName failed.";
4066                 EXPECT_TRUE(false);
4067             }
4068             Uri newDirUriTest(str + "/test.txt");
4069             bool isExist = false;
4070             result = g_fah->Access(newDirUriTest, isExist);
4071             EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
4072             EXPECT_FALSE(isExist);
4073         }
4074     } catch (...) {
4075         GTEST_LOG_(ERROR) << "external_file_access_Access_0001 occurs an exception.";
4076     }
4077     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Access_0001";
4078 }
4079 
4080 /**
4081  * @tc.number: user_file_service_external_file_access_Access_0002
4082  * @tc.name: external_file_access_Access_0002
4083  * @tc.desc: Test function of Access interface for SUCCESS, the file and folder name is chinese.
4084  * @tc.size: MEDIUM
4085  * @tc.type: FUNC
4086  * @tc.level Level 1
4087  * @tc.require: I70SX9
4088  */
4089 HWTEST_F(FileExtensionHelperTest, external_file_access_Access_0002, testing::ext::TestSize.Level1)
4090 {
4091     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Access_0002";
4092     try {
4093         vector<RootInfo> info;
4094         int result = g_fah->GetRoots(info);
4095         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4096         for (size_t i = 0; i < info.size(); i++) {
4097             Uri parentUri(info[i].uri);
4098             GTEST_LOG_(INFO) << parentUri.ToString();
4099             Uri newDirUriTest("");
4100             result = g_fah->Mkdir(parentUri, "访问目录", newDirUriTest);
4101             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4102             EXPECT_EQ(newDirUriTest.ToString().find("访问目录"), std::string::npos);
4103             Uri newFileUri("");
4104             result = g_fah->CreateFile(newDirUriTest, "访问文件.txt", newFileUri);
4105             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4106             EXPECT_EQ(newFileUri.ToString().find("访问文件.txt"), std::string::npos);
4107             bool isExist = false;
4108             result = g_fah->Access(newDirUriTest, isExist);
4109             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4110             EXPECT_TRUE(isExist);
4111             result = g_fah->Access(newFileUri, isExist);
4112             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4113             EXPECT_TRUE(isExist);
4114             result = g_fah->Delete(newDirUriTest);
4115             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4116             result = g_fah->Access(newDirUriTest, isExist);
4117             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4118             EXPECT_FALSE(isExist);
4119         }
4120     } catch (...) {
4121         GTEST_LOG_(ERROR) << "external_file_access_Access_0002 occurs an exception.";
4122     }
4123     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Access_0002";
4124 }
4125 
4126 /**
4127  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0000
4128  * @tc.name: external_file_access_GetFileInfoFromUri_0000
4129  * @tc.desc: Test function of GetFileInfoFromUri interface.
4130  * @tc.desc: convert the root directory uri to fileinfo and call listfile for SUCCESS.
4131  * @tc.size: MEDIUM
4132  * @tc.type: FUNC
4133  * @tc.level Level 1
4134  * @tc.require: SR000H0386
4135  */
4136 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0000, testing::ext::TestSize.Level1)
4137 {
4138     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0000";
4139     try {
4140         vector<RootInfo> info;
4141         int result = g_fah->GetRoots(info);
4142         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4143         for (size_t i = 0; i < info.size(); i++) {
4144             Uri parentUri(info[i].uri);
4145             FileInfo fileinfo;
4146             result = g_fah->GetFileInfoFromUri(parentUri, fileinfo);
4147             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4148 
4149             int64_t offset = 0;
4150             int64_t maxCount = 1000;
4151             FileFilter filter;
4152             std::vector<FileInfo> fileInfoVecTemp;
4153             result = g_fah->ListFile(fileinfo, offset, maxCount, filter, fileInfoVecTemp);
4154             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4155             EXPECT_GE(fileInfoVecTemp.size(), OHOS::FileAccessFwk::ERR_OK);
4156         }
4157     } catch (...) {
4158         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0000 occurs an exception.";
4159     }
4160     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0000";
4161 }
4162 
4163 /**
4164  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0001
4165  * @tc.name: external_file_access_GetFileInfoFromUri_0001
4166  * @tc.desc: Test function of GetFileInfoFromUri interface.
4167  * @tc.desc: convert the general directory uri to fileinfo and call listfile for SUCCESS.
4168  * @tc.size: MEDIUM
4169  * @tc.type: FUNC
4170  * @tc.level Level 1
4171  * @tc.require: SR000H0386
4172  */
4173 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0001, testing::ext::TestSize.Level1)
4174 {
4175     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0001";
4176     try {
4177         vector<RootInfo> info;
4178         int result = g_fah->GetRoots(info);
4179         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4180         for (size_t i = 0; i < info.size(); i++) {
4181             Uri parentUri(info[i].uri);
4182             Uri newDirUriTest("");
4183             result = g_fah->Mkdir(parentUri, "testDir", newDirUriTest);
4184             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4185 
4186             FileInfo dirInfo;
4187             result = g_fah->GetFileInfoFromUri(newDirUriTest, dirInfo);
4188             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4189 
4190             int64_t offset = 0;
4191             int64_t maxCount = 1000;
4192             FileFilter filter;
4193             std::vector<FileInfo> fileInfoVec;
4194             result = g_fah->ListFile(dirInfo, offset, maxCount, filter, fileInfoVec);
4195             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4196             EXPECT_GE(fileInfoVec.size(), OHOS::FileAccessFwk::ERR_OK);
4197 
4198             result = g_fah->Delete(newDirUriTest);
4199             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4200         }
4201     } catch (...) {
4202         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0001 occurs an exception.";
4203     }
4204     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0001";
4205 }
4206 
4207 /**
4208  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0002
4209  * @tc.name: external_file_access_GetFileInfoFromUri_0002
4210  * @tc.desc: Test function of GetFileInfoFromUri interface.
4211  * @tc.desc: convert the general filepath uri to fileinfo and call listfile for ERROR.
4212  * @tc.size: MEDIUM
4213  * @tc.type: FUNC
4214  * @tc.level Level 1
4215  * @tc.require: SR000H0386
4216  */
4217 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0002, testing::ext::TestSize.Level1)
4218 {
4219     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0002";
4220     try {
4221         vector<RootInfo> info;
4222         int result = g_fah->GetRoots(info);
4223         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4224         for (size_t i = 0; i < info.size(); i++) {
4225             Uri parentUri(info[i].uri);
4226             Uri newDirUriTest("");
4227             result = g_fah->Mkdir(parentUri, "testDir", newDirUriTest);
4228             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4229             Uri newFileUri("");
4230             result = g_fah->CreateFile(newDirUriTest, "external_file_access_GetFileInfoFromUri_0002.txt", newFileUri);
4231             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4232 
4233             FileInfo fileinfo;
4234             result = g_fah->GetFileInfoFromUri(newFileUri, fileinfo);
4235             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4236 
4237             int64_t offset = 0;
4238             int64_t maxCount = 1000;
4239             FileFilter filter;
4240             std::vector<FileInfo> fileInfoVecTemp;
4241             result = g_fah->ListFile(fileinfo, offset, maxCount, filter, fileInfoVecTemp);
4242             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
4243             EXPECT_EQ(fileInfoVecTemp.size(), OHOS::FileAccessFwk::ERR_OK);
4244 
4245             result = g_fah->Delete(newDirUriTest);
4246             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4247         }
4248     } catch (...) {
4249         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0002 occurs an exception.";
4250     }
4251     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0002";
4252 }
4253 
4254 /**
4255  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0003
4256  * @tc.name: external_file_access_GetFileInfoFromUri_0003
4257  * @tc.desc: Test function of GetFileInfoFromUri interface.
4258  * @tc.desc: convert the root directory uri to fileinfo for CheckUri failed.
4259  * @tc.size: MEDIUM
4260  * @tc.type: FUNC
4261  * @tc.level Level 1
4262  * @tc.require: SR000H0386
4263  */
4264 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0003, testing::ext::TestSize.Level1)
4265 {
4266     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0003";
4267     try {
4268         vector<RootInfo> info;
4269         int result = g_fah->GetRoots(info);
4270         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4271         for (size_t i = 0; i < info.size(); i++) {
4272             Uri parentUri(std::string("\?\?\?\?/") + info[i].uri);
4273             FileInfo fileinfo;
4274             result = g_fah->GetFileInfoFromUri(parentUri, fileinfo);
4275             EXPECT_EQ(result, OHOS::FileAccessFwk::E_URIS);
4276         }
4277     } catch (...) {
4278         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0003 occurs an exception.";
4279     }
4280     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0003";
4281 }
4282 
4283 /**
4284  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0004
4285  * @tc.name: external_file_access_GetFileInfoFromUri_0004
4286  * @tc.desc: Test function of GetFileInfoFromUri interface.
4287  * @tc.desc: convert the root directory uri to fileinfo failed because of GetProxyByUri failed.
4288  * @tc.size: MEDIUM
4289  * @tc.type: FUNC
4290  * @tc.level Level 1
4291  * @tc.require: SR000H0386
4292  */
4293 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0004, testing::ext::TestSize.Level1)
4294 {
4295     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0004";
4296     try {
4297         vector<RootInfo> info;
4298         int result = g_fah->GetRoots(info);
4299         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4300         for (size_t i = 0; i < info.size(); i++) {
4301             std::string str = info[i].uri;
4302             if (!ReplaceBundleNameFromPath(str, "ohos.com.NotExistBundleName")) {
4303                 GTEST_LOG_(ERROR) << "replace BundleName failed.";
4304                 EXPECT_TRUE(false);
4305             }
4306             Uri parentUri(str);
4307             FileInfo fileinfo;
4308             result = g_fah->GetFileInfoFromUri(parentUri, fileinfo);
4309             EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
4310         }
4311     } catch (...) {
4312         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0004 occurs an exception.";
4313     }
4314     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0004";
4315 }
4316 
4317 /**
4318  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0005
4319  * @tc.name: external_file_access_GetFileInfoFromUri_0005
4320  * @tc.desc: Test function of GetFileInfoFromUri interface.
4321  * @tc.desc: convert the invalid uri to fileinfo failed.
4322  * @tc.size: MEDIUM
4323  * @tc.type: FUNC
4324  * @tc.level Level 1
4325  * @tc.require: SR000H0386
4326  */
4327 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0005, testing::ext::TestSize.Level1)
4328 {
4329     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0005";
4330     try {
4331         Uri uri("~!@#$%^&*()_");
4332         FileInfo fileInfo;
4333         int result = g_fah->GetFileInfoFromUri(uri, fileInfo);
4334         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
4335 
4336         uri = Uri("/");
4337         result = g_fah->GetFileInfoFromUri(uri, fileInfo);
4338         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
4339 
4340         uri = Uri("");
4341         result = g_fah->GetFileInfoFromUri(uri, fileInfo);
4342         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
4343     } catch (...) {
4344         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0005 occurs an exception.";
4345     }
4346     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0005";
4347 }
4348 
4349 /**
4350  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0006
4351  * @tc.name: external_file_access_GetFileInfoFromUri_0006
4352  * @tc.desc: Test function of GetFileInfoFromUri interface.
4353  * @tc.desc: convert the general directory uri to fileinfo and call listfile for SUCCESS, the folder name is chinese.
4354  * @tc.size: MEDIUM
4355  * @tc.type: FUNC
4356  * @tc.level Level 1
4357  * @tc.require: I70SX9
4358  */
4359 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0006, testing::ext::TestSize.Level1)
4360 {
4361     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0006";
4362     try {
4363         vector<RootInfo> info;
4364         int result = g_fah->GetRoots(info);
4365         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4366         for (size_t i = 0; i < info.size(); i++) {
4367             Uri parentUri(info[i].uri);
4368             Uri newDirUriTest("");
4369             result = g_fah->Mkdir(parentUri, "测试目录", newDirUriTest);
4370             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4371             EXPECT_EQ(newDirUriTest.ToString().find("测试目录"), std::string::npos);
4372 
4373             FileInfo dirInfo;
4374             result = g_fah->GetFileInfoFromUri(newDirUriTest, dirInfo);
4375             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4376 
4377             int64_t offset = 0;
4378             int64_t maxCount = 1000;
4379             FileFilter filter;
4380             std::vector<FileInfo> fileInfoVec;
4381             result = g_fah->ListFile(dirInfo, offset, maxCount, filter, fileInfoVec);
4382             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4383             EXPECT_GE(fileInfoVec.size(), OHOS::FileAccessFwk::ERR_OK);
4384 
4385             result = g_fah->Delete(newDirUriTest);
4386             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4387         }
4388     } catch (...) {
4389         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0006 occurs an exception.";
4390     }
4391     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0006";
4392 }
4393 
4394 /**
4395  * @tc.number: user_file_service_external_file_access_GetFileInfoFromUri_0007
4396  * @tc.name: external_file_access_GetFileInfoFromUri_0007
4397  * @tc.desc: Test function of GetFileInfoFromUri interface.
4398  * @tc.desc: convert the general filepath uri to fileinfo and call listfile for ERROR, the file name is chinese.
4399  * @tc.size: MEDIUM
4400  * @tc.type: FUNC
4401  * @tc.level Level 1
4402  * @tc.require: I70SX9
4403  */
4404 HWTEST_F(FileExtensionHelperTest, external_file_access_GetFileInfoFromUri_0007, testing::ext::TestSize.Level1)
4405 {
4406     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetFileInfoFromUri_0007";
4407     try {
4408         vector<RootInfo> info;
4409         int result = g_fah->GetRoots(info);
4410         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4411         for (size_t i = 0; i < info.size(); i++) {
4412             Uri parentUri(info[i].uri);
4413             Uri newDirUriTest("");
4414             result = g_fah->Mkdir(parentUri, "测试目录", newDirUriTest);
4415             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4416             EXPECT_EQ(newDirUriTest.ToString().find("测试目录"), std::string::npos);
4417             Uri newFileUri("");
4418             result = g_fah->CreateFile(newDirUriTest, "测试文件.txt", newFileUri);
4419             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4420             EXPECT_EQ(newFileUri.ToString().find("测试文件.txt"), std::string::npos);
4421 
4422             FileInfo fileinfo;
4423             result = g_fah->GetFileInfoFromUri(newFileUri, fileinfo);
4424             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4425 
4426             int64_t offset = 0;
4427             int64_t maxCount = 1000;
4428             FileFilter filter;
4429             std::vector<FileInfo> fileInfoVecTemp;
4430             result = g_fah->ListFile(fileinfo, offset, maxCount, filter, fileInfoVecTemp);
4431             EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
4432             EXPECT_EQ(fileInfoVecTemp.size(), OHOS::FileAccessFwk::ERR_OK);
4433 
4434             result = g_fah->Delete(newDirUriTest);
4435             EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4436         }
4437     } catch (...) {
4438         GTEST_LOG_(ERROR) << "external_file_access_GetFileInfoFromUri_0007 occurs an exception.";
4439     }
4440     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetFileInfoFromUri_0007";
4441 }
4442 
4443 /**
4444  * @tc.number: user_file_service_external_file_access_creator_0000
4445  * @tc.name: external_file_access_creator_0000
4446  * @tc.desc: Test function of creator interface.
4447  * @tc.desc: create file access helper for SUCCESS.
4448  * @tc.size: MEDIUM
4449  * @tc.type: FUNC
4450  * @tc.level Level 1
4451  * @tc.require: SR000H0386
4452  */
4453 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0000, testing::ext::TestSize.Level1)
4454 {
4455     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0000";
4456     try {
4457         setuid(UID_TRANSFORM_TMP);
4458         std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(g_context);
4459         setuid(UID_DEFAULT);
4460         ASSERT_TRUE(helper.first != nullptr);
4461         bool succ = helper.first->Release();
4462         EXPECT_TRUE(succ);
4463     } catch (...) {
4464         GTEST_LOG_(ERROR) << "external_file_access_creator_0000 occurs an exception.";
4465     }
4466     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0000";
4467 }
4468 
4469 /**
4470  * @tc.number: user_file_service_external_file_access_creator_0001
4471  * @tc.name: external_file_access_creator_0001
4472  * @tc.desc: Test function of creator interface.
4473  * @tc.desc: create file access helper for SUCCESS.
4474  * @tc.size: MEDIUM
4475  * @tc.type: FUNC
4476  * @tc.level Level 1
4477  * @tc.require: SR000H0386
4478  */
4479 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0001, testing::ext::TestSize.Level1)
4480 {
4481     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0001";
4482     try {
4483         AAFwk::Want want;
4484         vector<AAFwk::Want> wantVec;
4485         setuid(UID_TRANSFORM_TMP);
4486         int ret = FileAccessHelper::GetRegisteredFileAccessExtAbilityInfo(wantVec);
4487         EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
4488         bool sus = false;
4489         for (size_t i = 0; i < wantVec.size(); i++) {
4490             auto element = wantVec[i].GetElement();
4491             if (element.GetBundleName() == "com.ohos.UserFile.ExternalFileManager" &&
4492                 element.GetAbilityName() == "FileExtensionAbility") {
4493                 want = wantVec[i];
4494                 sus = true;
4495                 break;
4496             }
4497         }
4498         EXPECT_TRUE(sus);
4499         vector<AAFwk::Want> wants{want};
4500         std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(g_context, wants);
4501         setuid(UID_DEFAULT);
4502         ASSERT_TRUE(helper.first != nullptr);
4503         bool succ = helper.first->Release();
4504         EXPECT_TRUE(succ);
4505     } catch (...) {
4506         GTEST_LOG_(ERROR) << "external_file_access_creator_0001 occurs an exception.";
4507     }
4508     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0001";
4509 }
4510 
4511 /**
4512  * @tc.number: user_file_service_external_file_access_creator_0002
4513  * @tc.name: external_file_access_creator_0002
4514  * @tc.desc: Test function of creator interface.
4515  * @tc.desc: create file access helper for FAILED.
4516  * @tc.size: MEDIUM
4517  * @tc.type: FUNC
4518  * @tc.level Level 1
4519  * @tc.require: SR000H0386
4520  */
4521 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0002, testing::ext::TestSize.Level1)
4522 {
4523     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0002";
4524     try {
4525         std::shared_ptr<OHOS::AbilityRuntime::Context> context = nullptr;
4526         std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(context);
4527         ASSERT_TRUE(helper.first == nullptr);
4528     } catch (...) {
4529         GTEST_LOG_(ERROR) << "external_file_access_creator_0002 occurs an exception.";
4530     }
4531     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0002";
4532 }
4533 
4534 /**
4535  * @tc.number: user_file_service_external_file_access_creator_0003
4536  * @tc.name: external_file_access_creator_0003
4537  * @tc.desc: Test function of creator interface.
4538  * @tc.desc: create file access helper for FAILED.
4539  * @tc.size: MEDIUM
4540  * @tc.type: FUNC
4541  * @tc.level Level 1
4542  * @tc.require: SR000H0386
4543  */
4544 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0003, testing::ext::TestSize.Level1)
4545 {
4546     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0003";
4547     try {
4548         std::vector<AAFwk::Want> wants;
4549         std::shared_ptr<OHOS::AbilityRuntime::Context> context = nullptr;
4550         std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(context, wants);
4551         ASSERT_TRUE(helper.first == nullptr);
4552     } catch (...) {
4553         GTEST_LOG_(ERROR) << "external_file_access_creator_0003 occurs an exception.";
4554     }
4555     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0003";
4556 }
4557 
4558 /**
4559  * @tc.number: user_file_service_external_file_access_creator_0004
4560  * @tc.name: external_file_access_creator_0004
4561  * @tc.desc: Test function of creator interface.
4562  * @tc.desc: create file access helper for FAILED.
4563  * @tc.size: MEDIUM
4564  * @tc.type: FUNC
4565  * @tc.level Level 1
4566  * @tc.require: SR000H0386
4567  */
4568 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0004, testing::ext::TestSize.Level1)
4569 {
4570     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0004";
4571     try {
4572         std::vector<AAFwk::Want> wants;
4573         std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(g_context, wants);
4574         ASSERT_TRUE(helper.first == nullptr);
4575     } catch (...) {
4576         GTEST_LOG_(ERROR) << "external_file_access_creator_0004 occurs an exception.";
4577     }
4578     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0004";
4579 }
4580 
4581 /**
4582  * @tc.number: user_file_service_external_file_access_creator_0005
4583  * @tc.name: external_file_access_creator_0005
4584  * @tc.desc: Test function of creator interface.
4585  * @tc.desc: create file access helper for FAILED.
4586  * @tc.size: MEDIUM
4587  * @tc.type: FUNC
4588  * @tc.level Level 1
4589  * @tc.require: SR000H0386
4590  */
4591 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0005, testing::ext::TestSize.Level1)
4592 {
4593     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0005";
4594     try {
4595         AAFwk::Want want;
4596         want.SetElementName("NotExistBundleName", "NotExistAbilityName");
4597         std::vector<AAFwk::Want> wants{want};
4598         std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(g_context, wants);
4599         ASSERT_TRUE(helper.first == nullptr);
4600     } catch (...) {
4601         GTEST_LOG_(ERROR) << "external_file_access_creator_0005 occurs an exception.";
4602     }
4603     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0005";
4604 }
4605 
4606 /**
4607  * @tc.number: user_file_service_external_file_access_creator_0006
4608  * @tc.name: external_file_access_creator_0006
4609  * @tc.desc: Test function of creator interface.
4610  * @tc.desc: create file access helper for FAILED.
4611  * @tc.size: MEDIUM
4612  * @tc.type: FUNC
4613  * @tc.level Level 1
4614  * @tc.require: SR000H0386
4615  */
4616 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0006, testing::ext::TestSize.Level1)
4617 {
4618     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0006";
4619     try {
4620         std::vector<AAFwk::Want> wants;
4621         std::shared_ptr<OHOS::AbilityRuntime::Context> context = nullptr;
4622         std::pair<shared_ptr<FileAccessHelper>, int> helper = FileAccessHelper::Creator(context, wants);
4623         ASSERT_TRUE(helper.first == nullptr);
4624     } catch (...) {
4625         GTEST_LOG_(ERROR) << "external_file_access_creator_0006 occurs an exception.";
4626     }
4627     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0006";
4628 }
4629 
4630 /**
4631  * @tc.number: user_file_service_external_file_access_creator_0007
4632  * @tc.name: external_file_access_creator_0007
4633  * @tc.desc: Test function of creator interface.
4634  * @tc.desc: create file access helper for FAILED.
4635  * @tc.size: MEDIUM
4636  * @tc.type: FUNC
4637  * @tc.level Level 1
4638  * @tc.require: SR000H0386
4639  */
4640 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0007, testing::ext::TestSize.Level1)
4641 {
4642     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0007";
4643     try {
4644         std::vector<AAFwk::Want> wants;
4645         shared_ptr<FileAccessHelper> helper = FileAccessHelper::Creator(g_context->GetToken(), wants);
4646         ASSERT_TRUE(helper == nullptr);
4647     } catch (...) {
4648         GTEST_LOG_(ERROR) << "external_file_access_creator_0007 occurs an exception.";
4649     }
4650     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0007";
4651 }
4652 
4653 /**
4654  * @tc.number: user_file_service_external_file_access_creator_0008
4655  * @tc.name: external_file_access_creator_0008
4656  * @tc.desc: Test function of creator interface.
4657  * @tc.desc: create file access helper for FAILED.
4658  * @tc.size: MEDIUM
4659  * @tc.type: FUNC
4660  * @tc.level Level 1
4661  * @tc.require: SR000H0386
4662  */
4663 HWTEST_F(FileExtensionHelperTest, external_file_access_creator_0008, testing::ext::TestSize.Level1)
4664 {
4665     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_creator_0008";
4666     try {
4667         AAFwk::Want want;
4668         want.SetElementName("NotExistBundleName", "NotExistAbilityName");
4669         std::vector<AAFwk::Want> wants{want};
4670         shared_ptr<FileAccessHelper> helper = FileAccessHelper::Creator(g_context->GetToken(), wants);
4671         ASSERT_TRUE(helper == nullptr);
4672     } catch (...) {
4673         GTEST_LOG_(ERROR) << "external_file_access_creator_0008 occurs an exception.";
4674     }
4675     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_creator_0008";
4676 }
4677 
4678 /**
4679  * @tc.number: user_file_service_external_file_access_GetConnectInfo_0000
4680  * @tc.name: external_file_access_GetConnectInfo_0000
4681  * @tc.desc: Test function of GetConnectInfo interface.
4682  * @tc.desc: helper invoke GetConnectInfo for FAILED.
4683  * @tc.size: MEDIUM
4684  * @tc.type: FUNC
4685  * @tc.level Level 1
4686  * @tc.require: SR000H0386
4687  */
4688 HWTEST_F(FileExtensionHelperTest, external_file_access_GetConnectInfo_0000, testing::ext::TestSize.Level1)
4689 {
4690     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetConnectInfo_0000";
4691     try {
4692         std::shared_ptr<ConnectInfo> connectInfo = g_fah->GetConnectInfo("NotExistBundleName");
4693         ASSERT_TRUE(connectInfo == nullptr);
4694     } catch (...) {
4695         GTEST_LOG_(ERROR) << "external_file_access_GetConnectInfo_0000 occurs an exception.";
4696     }
4697     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetConnectInfo_0000";
4698 }
4699 
4700 /**
4701  * @tc.number: user_file_service_external_file_access_GetKeyOfWants_0000
4702  * @tc.name: external_file_access_GetKeyOfWants_0000
4703  * @tc.desc: Test function of GetKeyOfWants interface.
4704  * @tc.desc: helper invoke GetKeyOfWants for FAILED.
4705  * @tc.size: MEDIUM
4706  * @tc.type: FUNC
4707  * @tc.level Level 1
4708  * @tc.require: SR000H0386
4709  */
4710 HWTEST_F(FileExtensionHelperTest, external_file_access_GetKeyOfWants_0000, testing::ext::TestSize.Level1)
4711 {
4712     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetKeyOfWants_0000";
4713     try {
4714         AAFwk::Want want;
4715         want.SetElementName("NotExistBundleName", "NotExistAbilityName");
4716         std::string key = g_fah->GetKeyOfWants(want);
4717         ASSERT_TRUE(key.empty());
4718     } catch (...) {
4719         GTEST_LOG_(ERROR) << "external_file_access_GetKeyOfWants_0000 occurs an exception.";
4720     }
4721     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetKeyOfWants_0000";
4722 }
4723 
4724 /**
4725  * @tc.number: user_file_service_external_file_access_GetProxyByUri_0000
4726  * @tc.name: external_file_access_GetProxyByUri_0000
4727  * @tc.desc: Test function of GetProxyByUri interface.
4728  * @tc.desc: helper invoke GetProxyByUri for FAILED.
4729  * @tc.size: MEDIUM
4730  * @tc.type: FUNC
4731  * @tc.level Level 1
4732  * @tc.require: SR000H0386
4733  */
4734 HWTEST_F(FileExtensionHelperTest, external_file_access_GetProxyByUri_0000, testing::ext::TestSize.Level1)
4735 {
4736     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetProxyByUri_0000";
4737     try {
4738         Uri uri("");
4739         sptr<IFileAccessExtBase> proxy = g_fah->GetProxyByUri(uri);
4740         ASSERT_TRUE(proxy == nullptr);
4741     } catch (...) {
4742         GTEST_LOG_(ERROR) << "external_file_access_GetProxyByUri_0000 occurs an exception.";
4743     }
4744     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetProxyByUri_0000";
4745 }
4746 
4747 /**
4748  * @tc.number: user_file_service_external_file_access_GetProxyByUri_0001
4749  * @tc.name: external_file_access_GetProxyByUri_0001
4750  * @tc.desc: Test function of GetProxyByUri interface.
4751  * @tc.desc: helper invoke GetProxyByUri for FAILED.
4752  * @tc.size: MEDIUM
4753  * @tc.type: FUNC
4754  * @tc.level Level 1
4755  * @tc.require: SR000H0386
4756  */
4757 HWTEST_F(FileExtensionHelperTest, external_file_access_GetProxyByUri_0001, testing::ext::TestSize.Level1)
4758 {
4759     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_GetProxyByUri_0001";
4760     try {
4761         Uri uri("file://com.ohos.UserFile.NotExistBundleName/data/storage/el1/bundle/storage_daemon");
4762         sptr<IFileAccessExtBase> proxy = g_fah->GetProxyByUri(uri);
4763         ASSERT_TRUE(proxy == nullptr);
4764     } catch (...) {
4765         GTEST_LOG_(ERROR) << "external_file_access_GetProxyByUri_0001 occurs an exception.";
4766     }
4767     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_GetProxyByUri_0001";
4768 }
4769 
4770 /**
4771  * @tc.number: user_file_service_external_file_access_Query_0000
4772  * @tc.name: external_file_access_Query_0000
4773  * @tc.desc: Test function of Query directory for SUCCESS.
4774  * @tc.size: MEDIUM
4775  * @tc.type: FUNC
4776  * @tc.level Level 1
4777  * @tc.require: I6S4VV
4778  */
4779 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0000, testing::ext::TestSize.Level1)
4780 {
4781     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0000";
4782     try {
4783         vector<RootInfo> info;
4784         int result = g_fah->GetRoots(info);
4785         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4786         Uri parentUri(info[0].uri);
4787         GTEST_LOG_(INFO) << parentUri.ToString();
4788         Uri newDirUriTest1("");
4789         Uri newDirUriTest2("");
4790         std::string displayName = "QueryTest1";
4791         std::string relativePath = "/storage/Users/currentUser/QueryTest1";
4792         result = g_fah->Mkdir(parentUri, "QueryTest1", newDirUriTest1);
4793         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4794         result = g_fah->Mkdir(newDirUriTest1, "QueryTest2", newDirUriTest2);
4795         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4796         Uri newFileUri1("");
4797         Uri newFileUri2("");
4798         std::string fileName = "external_file_access_Query_00001.txt";
4799         result = g_fah->CreateFile(newDirUriTest1, fileName, newFileUri1);
4800         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4801         result = g_fah->CreateFile(newDirUriTest2, fileName, newFileUri2);
4802         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4803         int fd = -1;
4804         std::string buff = "query test";
4805         result = g_fah->OpenFile(newFileUri1, WRITE_READ, fd);
4806         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4807         ssize_t fileSize = write(fd, buff.c_str(), buff.size());
4808         close(fd);
4809         EXPECT_EQ(fileSize, buff.size());
4810         result = g_fah->OpenFile(newFileUri2, WRITE_READ, fd);
4811         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4812         fileSize = write(fd, buff.c_str(), buff.size());
4813         close(fd);
4814         EXPECT_EQ(fileSize, buff.size());
4815         json testJson = {
4816             {RELATIVE_PATH, " "},
4817             {DISPLAY_NAME, " "},
4818             {FILE_SIZE, " "},
4819             {DATE_MODIFIED, " "},
4820             {DATE_ADDED, " "},
4821             {HEIGHT, " "},
4822             {WIDTH, " "},
4823             {DURATION, " "}
4824         };
4825         auto testJsonString = testJson.dump();
4826         result = g_fah->Query(newDirUriTest1, testJsonString);
4827         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4828         auto jsonObject = json::parse(testJsonString);
4829         EXPECT_EQ(jsonObject.at(DISPLAY_NAME), displayName);
4830         EXPECT_EQ(jsonObject.at(FILE_SIZE), buff.size() * 2);
4831         EXPECT_EQ(jsonObject.at(RELATIVE_PATH), relativePath);
4832         ASSERT_TRUE(jsonObject.at(DATE_MODIFIED) > 0);
4833         ASSERT_TRUE(jsonObject.at(DATE_ADDED) > 0);
4834         GTEST_LOG_(INFO) << " result" << testJsonString;
4835         result = g_fah->Delete(newDirUriTest1);
4836         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4837     } catch (...) {
4838         GTEST_LOG_(ERROR) << "external_file_access_Query_0000 occurs an exception.";
4839     }
4840     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0000";
4841 }
4842 
4843 /**
4844  * @tc.number: user_file_service_external_file_access_Query_0001
4845  * @tc.name: external_file_access_Query_0001
4846  * @tc.desc: Test function of Query file for SUCCESS.
4847  * @tc.size: MEDIUM
4848  * @tc.type: FUNC
4849  * @tc.level Level 1
4850  * @tc.require: I6S4VV
4851  */
4852 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0001, testing::ext::TestSize.Level1)
4853 {
4854     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0001";
4855     try {
4856         vector<RootInfo> info;
4857         int result = g_fah->GetRoots(info);
4858         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4859         Uri parentUri(info[0].uri);
4860         GTEST_LOG_(INFO) << parentUri.ToString();
4861         Uri newDirUriTest("");
4862         result = g_fah->Mkdir(parentUri, "QueryTest3", newDirUriTest);
4863         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4864         Uri newFileUri("");
4865         std::string displayName = "external_file_access_Query_0001.txt";
4866         std::string relativePath = "/storage/Users/currentUser/QueryTest3/external_file_access_Query_0001.txt";
4867         result = g_fah->CreateFile(newDirUriTest, displayName, newFileUri);
4868         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4869         int fd = -1;
4870         result = g_fah->OpenFile(newFileUri, WRITE_READ, fd);
4871         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4872         std::string buff = "query test";
4873         ssize_t fileSize = write(fd, buff.c_str(), buff.size());
4874         close(fd);
4875         EXPECT_EQ(fileSize, buff.size());
4876         json testJson = {
4877             {RELATIVE_PATH, " "},
4878             {DISPLAY_NAME, " "},
4879             {FILE_SIZE, " "},
4880             {DATE_MODIFIED, " "},
4881             {DATE_ADDED, " "},
4882             {HEIGHT, " "},
4883             {WIDTH, " "},
4884             {DURATION, " "}
4885         };
4886         auto testJsonString = testJson.dump();
4887         result = g_fah->Query(newFileUri, testJsonString);
4888         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4889         auto jsonObject = json::parse(testJsonString);
4890         EXPECT_EQ(jsonObject.at(DISPLAY_NAME), displayName);
4891         EXPECT_EQ(jsonObject.at(FILE_SIZE), buff.size());
4892         EXPECT_EQ(jsonObject.at(RELATIVE_PATH), relativePath);
4893         ASSERT_TRUE(jsonObject.at(DATE_MODIFIED) > 0);
4894         ASSERT_TRUE(jsonObject.at(DATE_ADDED) > 0);
4895         GTEST_LOG_(INFO) << " result" << testJsonString;
4896         result = g_fah->Delete(newDirUriTest);
4897         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4898     } catch (...) {
4899         GTEST_LOG_(ERROR) << "external_file_access_Query_0001 occurs an exception.";
4900     }
4901     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0001";
4902 }
4903 
4904 /**
4905  * @tc.number: user_file_service_external_file_access_Query_0002
4906  * @tc.name: external_file_access_Query_0002
4907  * @tc.desc: Test function of Query directory for SUCCESS.
4908  * @tc.size: MEDIUM
4909  * @tc.type: FUNC
4910  * @tc.level Level 1
4911  * @tc.require: I6S4VV
4912  */
4913 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0002, testing::ext::TestSize.Level1)
4914 {
4915     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0002";
4916     try {
4917         vector<RootInfo> info;
4918         int result = g_fah->GetRoots(info);
4919         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4920         Uri parentUri(info[0].uri);
4921         GTEST_LOG_(INFO) << parentUri.ToString();
4922         Uri newDirUriTest1("");
4923         Uri newDirUriTest2("");
4924         result = g_fah->Mkdir(parentUri, "QueryTest4", newDirUriTest1);
4925         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4926         result = g_fah->Mkdir(newDirUriTest1, "QueryTest5", newDirUriTest2);
4927         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4928         Uri newFileUri1("");
4929         Uri newFileUri2("");
4930         std::string fileName = "external_file_access_Query_00001.txt";
4931         result = g_fah->CreateFile(newDirUriTest1, fileName, newFileUri1);
4932         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4933         result = g_fah->CreateFile(newDirUriTest2, fileName, newFileUri2);
4934         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4935         int fd = -1;
4936         std::string buff = "query test";
4937         result = g_fah->OpenFile(newFileUri1, WRITE_READ, fd);
4938         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4939         ssize_t fileSize = write(fd, buff.c_str(), buff.size());
4940         close(fd);
4941         EXPECT_EQ(fileSize, buff.size());
4942         result = g_fah->OpenFile(newFileUri2, WRITE_READ, fd);
4943         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4944         fileSize = write(fd, buff.c_str(), buff.size());
4945         close(fd);
4946         EXPECT_EQ(fileSize, buff.size());
4947         json testJson = {
4948             {FILE_SIZE, " "}
4949         };
4950         auto testJsonString = testJson.dump();
4951         result = g_fah->Query(newDirUriTest1, testJsonString);
4952         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4953         auto jsonObject = json::parse(testJsonString);
4954         EXPECT_EQ(jsonObject.at(FILE_SIZE), buff.size() * 2);
4955         GTEST_LOG_(INFO) << " result" << testJsonString;
4956         result = g_fah->Delete(newDirUriTest1);
4957         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
4958     } catch (...) {
4959         GTEST_LOG_(ERROR) << "external_file_access_Query_0002 occurs an exception.";
4960     }
4961     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0002";
4962 }
4963 
4964 /**
4965  * @tc.number: user_file_service_external_file_access_Query_0003
4966  * @tc.name: external_file_access_Query_0003
4967  * @tc.desc: Test function of Query interface for which is unreadable code.
4968  * @tc.size: MEDIUM
4969  * @tc.type: FUNC
4970  * @tc.level Level 1
4971  * @tc.require: I6S4VV
4972  */
4973 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0003, testing::ext::TestSize.Level1)
4974 {
4975     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0003";
4976     try {
4977         Uri testUri("&*()*/?");
4978         json testJson = {
4979             {RELATIVE_PATH, " "},
4980             {DISPLAY_NAME, " "}
4981         };
4982         auto testJsonString = testJson.dump();
4983         int result = g_fah->Query(testUri, testJsonString);
4984         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
4985         GTEST_LOG_(INFO) << " result" << testJsonString;
4986     } catch (...) {
4987         GTEST_LOG_(ERROR) << "external_file_access_Query_0003 occurs an exception.";
4988     }
4989     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0003";
4990 }
4991 
4992 /**
4993  * @tc.number: user_file_service_external_file_access_Query_0004
4994  * @tc.name: external_file_access_Query_0004
4995  * @tc.desc: Test function of Query interface for which all column nonexistence.
4996  * @tc.size: MEDIUM
4997  * @tc.type: FUNC
4998  * @tc.level Level 1
4999  * @tc.require: I6S4VV
5000  */
5001 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0004, testing::ext::TestSize.Level1)
5002 {
5003     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0004";
5004     try {
5005         vector<RootInfo> info;
5006         int result = g_fah->GetRoots(info);
5007         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5008         Uri parentUri(info[0].uri);
5009         GTEST_LOG_(INFO) << parentUri.ToString();
5010         Uri newDirUriTest("");
5011         result = g_fah->Mkdir(parentUri, "QueryTest6", newDirUriTest);
5012         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5013         json testJson = {
5014             {"001", " "},
5015             {"#", " "},
5016             {"test", " "},
5017             {"target", " "}
5018         };
5019         auto testJsonString = testJson.dump();
5020         result = g_fah->Query(newDirUriTest, testJsonString);
5021         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
5022         GTEST_LOG_(INFO) << " result" << testJsonString;
5023         result = g_fah->Delete(newDirUriTest);
5024         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5025     } catch (...) {
5026         GTEST_LOG_(ERROR) << "external_file_access_Query_0004 occurs an exception.";
5027     }
5028     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0004";
5029 }
5030 
5031 /**
5032  * @tc.number: user_file_service_external_file_access_Query_0005
5033  * @tc.name: external_file_access_Query_0005
5034  * @tc.desc: Test function of Query interface for which part of column nonexistence.
5035  * @tc.size: MEDIUM
5036  * @tc.type: FUNC
5037  * @tc.level Level 1
5038  * @tc.require: I6S4VV
5039  */
5040 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0005, testing::ext::TestSize.Level1)
5041 {
5042     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0005";
5043     try {
5044         vector<RootInfo> info;
5045         int result = g_fah->GetRoots(info);
5046         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5047         Uri parentUri(info[0].uri);
5048         GTEST_LOG_(INFO) << parentUri.ToString();
5049         Uri newDirUriTest("");
5050         result = g_fah->Mkdir(parentUri, "QueryTest7", newDirUriTest);
5051         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5052         json testJson = {
5053             {RELATIVE_PATH, " "},
5054             {DISPLAY_NAME, " "},
5055             {"test", " "}
5056         };
5057         auto testJsonString = testJson.dump();
5058         result = g_fah->Query(newDirUriTest, testJsonString);
5059         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
5060         GTEST_LOG_(INFO) << " result" << testJsonString;
5061         result = g_fah->Delete(newDirUriTest);
5062         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5063     } catch (...) {
5064         GTEST_LOG_(ERROR) << "external_file_access_Query_0005 occurs an exception.";
5065     }
5066     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0005";
5067 }
5068 
5069 /**
5070  * @tc.number: user_file_service_external_file_access_Query_0006
5071  * @tc.name: external_file_access_Query_0006
5072  * @tc.desc: Test function of Query interface for which column is null.
5073  * @tc.size: MEDIUM
5074  * @tc.type: FUNC
5075  * @tc.level Level 1
5076  * @tc.require: I6S4VV
5077  */
5078 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0006, testing::ext::TestSize.Level1)
5079 {
5080     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0006";
5081     try {
5082         vector<RootInfo> info;
5083         int result = g_fah->GetRoots(info);
5084         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5085         Uri parentUri(info[0].uri);
5086         GTEST_LOG_(INFO) << parentUri.ToString();
5087         Uri newDirUriTest("");
5088         result = g_fah->Mkdir(parentUri, "QueryTest8", newDirUriTest);
5089         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5090         json testJson;
5091         auto testJsonString = testJson.dump();
5092         result = g_fah->Query(newDirUriTest, testJsonString);
5093         EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
5094         GTEST_LOG_(INFO) << " result" << testJsonString;
5095         result = g_fah->Delete(newDirUriTest);
5096         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5097     } catch (...) {
5098         GTEST_LOG_(ERROR) << "external_file_access_Query_0006 occurs an exception.";
5099     }
5100     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0006";
5101 }
5102 
5103 /**
5104  * @tc.number: user_file_service_external_file_access_Query_0007
5105  * @tc.name: external_file_access_Query_0007
5106  * @tc.desc: Test function of Query directory for SUCCESS, the folder and file name is chinese.
5107  * @tc.size: MEDIUM
5108  * @tc.type: FUNC
5109  * @tc.level Level 1
5110  * @tc.require: I70SX9
5111  */
5112 HWTEST_F(FileExtensionHelperTest, external_file_access_Query_0007, testing::ext::TestSize.Level1)
5113 {
5114     GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Query_0007";
5115     try {
5116         vector<RootInfo> info;
5117         int result = g_fah->GetRoots(info);
5118         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5119         Uri parentUri(info[0].uri);
5120         GTEST_LOG_(INFO) << parentUri.ToString();
5121         Uri newDirUriTest1("");
5122         Uri newDirUriTest2("");
5123         std::string displayName = "查询目录1";
5124         std::string relativePath = "/storage/Users/currentUser/查询目录1";
5125         result = g_fah->Mkdir(parentUri, displayName, newDirUriTest1);
5126         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5127         EXPECT_EQ(newDirUriTest1.ToString().find(displayName), std::string::npos);
5128         result = g_fah->Mkdir(newDirUriTest1, "查询目录2", newDirUriTest2);
5129         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5130         EXPECT_EQ(newDirUriTest2.ToString().find("查询目录2"), std::string::npos);
5131         Uri newFileUri1("");
5132         Uri newFileUri2("");
5133         std::string fileName = "查询文件.txt";
5134         result = g_fah->CreateFile(newDirUriTest1, fileName, newFileUri1);
5135         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5136         EXPECT_EQ(newFileUri1.ToString().find(fileName), std::string::npos);
5137         result = g_fah->CreateFile(newDirUriTest2, fileName, newFileUri2);
5138         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5139         EXPECT_EQ(newFileUri2.ToString().find(fileName), std::string::npos);
5140         int fd = -1;
5141         std::string buff = "query test";
5142         result = g_fah->OpenFile(newFileUri1, WRITE_READ, fd);
5143         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5144         ssize_t fileSize = write(fd, buff.c_str(), buff.size());
5145         close(fd);
5146         EXPECT_EQ(fileSize, buff.size());
5147         result = g_fah->OpenFile(newFileUri2, WRITE_READ, fd);
5148         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5149         fileSize = write(fd, buff.c_str(), buff.size());
5150         close(fd);
5151         EXPECT_EQ(fileSize, buff.size());
5152         json testJson = {
5153             {RELATIVE_PATH, " "},
5154             {DISPLAY_NAME, " "},
5155             {FILE_SIZE, " "},
5156             {DATE_MODIFIED, " "},
5157             {DATE_ADDED, " "},
5158             {HEIGHT, " "},
5159             {WIDTH, " "},
5160             {DURATION, " "}
5161         };
5162         auto testJsonString = testJson.dump();
5163         result = g_fah->Query(newDirUriTest1, testJsonString);
5164         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5165         auto jsonObject = json::parse(testJsonString);
5166         EXPECT_EQ(jsonObject.at(DISPLAY_NAME), displayName);
5167         EXPECT_EQ(jsonObject.at(FILE_SIZE), buff.size() * 2);
5168         EXPECT_EQ(jsonObject.at(RELATIVE_PATH), relativePath);
5169         ASSERT_TRUE(jsonObject.at(DATE_MODIFIED) > 0);
5170         ASSERT_TRUE(jsonObject.at(DATE_ADDED) > 0);
5171         GTEST_LOG_(INFO) << " result" << testJsonString;
5172         result = g_fah->Delete(newDirUriTest1);
5173         EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
5174     } catch (...) {
5175         GTEST_LOG_(ERROR) << "external_file_access_Query_0007 occurs an exception.";
5176     }
5177     GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Query_0007";
5178 }
5179 } // namespace
5180