1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <cstdio>
17 #include <thread>
18 #include <unistd.h>
19
20 #include <gtest/gtest.h>
21 #include <nlohmann/json.hpp>
22
23 #include "external_file_access_test.h"
24 #include "accesstoken_kit.h"
25 #include "context_impl.h"
26 #include "file_access_framework_errno.h"
27 #include "file_info_shared_memory.h"
28 #include "iservice_registry.h"
29 #include "nativetoken_kit.h"
30 #include "token_setproc.h"
31
32 namespace OHOS::FileAccessFwk {
33 static int g_num = 0;
34
35 /**
36 * @tc.number: user_file_service_external_file_access_Copy_0000
37 * @tc.name: external_file_access_Copy_0000
38 * @tc.desc: Test function of Copy interface, copy a file and argument of force is false
39 * @tc.size: MEDIUM
40 * @tc.type: FUNC
41 * @tc.level Level 1
42 * @tc.require: I7QXVD
43 */
44 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0000, testing::ext::TestSize.Level1)
45 {
46 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
47 EXPECT_NE(fileAccessHelper, nullptr);
48 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0000";
49 try {
50 vector<RootInfo> info;
51 int result = fileAccessHelper->GetRoots(info);
52 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
53
54 for (size_t i = 0; i < info.size(); i++) {
55 Uri parentUri(info[i].uri);
56 Uri srcDir("");
57 result = fileAccessHelper->Mkdir(parentUri, "Copy_0000_src", srcDir);
58 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
59 Uri srcFile("");
60 result = fileAccessHelper->CreateFile(srcDir, "a.txt", srcFile);
61 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
62 int fd = -1;
63 result = fileAccessHelper->OpenFile(srcFile, WRITE_READ, fd);
64 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
65 char buff[] = "Copy test content for a.txt";
66 ssize_t srcFileSize = write(fd, buff, sizeof(buff));
67 EXPECT_EQ(srcFileSize, sizeof(buff));
68 close(fd);
69
70 Uri destDir("");
71 result = fileAccessHelper->Mkdir(parentUri, "Copy_0000_dest", destDir);
72 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
73
74 std::vector<Result> copyResult;
75 result = fileAccessHelper->Copy(srcFile, destDir, copyResult, false);
76 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
77 EXPECT_EQ(copyResult.size(), 0);
78
79 Uri destFileUri(destDir.ToString() + "/" + "a.txt");
80 result = fileAccessHelper->OpenFile(destFileUri, WRITE_READ, fd);
81 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
82 ssize_t destFileSize = read(fd, buff, sizeof(buff));
83 EXPECT_EQ(srcFileSize, destFileSize);
84 close(fd);
85
86 result = fileAccessHelper->Delete(srcDir);
87 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
88 result = fileAccessHelper->Delete(destDir);
89 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
90 }
91 } catch (...) {
92 GTEST_LOG_(ERROR) << "external_file_access_Copy_0000 occurs an exception.";
93 }
94 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0000";
95 }
96
97 /**
98 * @tc.number: user_file_service_external_file_access_Copy_0001
99 * @tc.name: external_file_access_Copy_0001
100 * @tc.desc: Test function of Copy interface, copy a directory and argument of force is false
101 * @tc.size: MEDIUM
102 * @tc.type: FUNC
103 * @tc.level Level 1
104 * @tc.require: I7QXVD
105 */
106 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0001, testing::ext::TestSize.Level1)
107 {
108 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
109 EXPECT_NE(fileAccessHelper, nullptr);
110 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0001";
111 try {
112 vector<RootInfo> info;
113 int result = fileAccessHelper->GetRoots(info);
114 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
115 for (size_t i = 0; i < info.size(); i++) {
116 Uri parentUri(info[i].uri);
117 Uri srcDir("");
118 Uri destDir("");
119 result = fileAccessHelper->Mkdir(parentUri, "Copy_0001_src", srcDir);
120 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
121 Uri aFileUri("");
122 result = fileAccessHelper->CreateFile(srcDir, "a.txt", aFileUri);
123 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
124 int fd = -1;
125 result = fileAccessHelper->OpenFile(aFileUri, WRITE_READ, fd);
126 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
127 char buff[] = "Copy test content for a.txt";
128 ssize_t aFileSize = write(fd, buff, sizeof(buff));
129 EXPECT_EQ(aFileSize, sizeof(buff));
130 close(fd);
131 Uri bFileUri("");
132 result = fileAccessHelper->CreateFile(srcDir, "b.txt", bFileUri);
133 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
134 result = fileAccessHelper->Mkdir(parentUri, "Copy_0001_dest", destDir);
135 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
136
137 std::vector<Result> copyResult;
138 result = fileAccessHelper->Copy(srcDir, destDir, copyResult, false);
139 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
140 EXPECT_EQ(copyResult.size(), 0);
141
142 result = fileAccessHelper->Delete(srcDir);
143 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
144 result = fileAccessHelper->Delete(destDir);
145 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
146 }
147 } catch (...) {
148 GTEST_LOG_(ERROR) << "external_file_access_Copy_0001 occurs an exception.";
149 }
150 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0001";
151 }
152
153 /**
154 * @tc.number: user_file_service_external_file_access_Copy_0002
155 * @tc.name: external_file_access_Copy_0002
156 * @tc.desc: Test function of Copy interface, copy a empty directory
157 * @tc.size: MEDIUM
158 * @tc.type: FUNC
159 * @tc.level Level 1
160 * @tc.require: I7QXVD
161 */
162 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0002, testing::ext::TestSize.Level1)
163 {
164 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
165 EXPECT_NE(fileAccessHelper, nullptr);
166 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0002";
167 try {
168 vector<RootInfo> info;
169 int result = fileAccessHelper->GetRoots(info);
170 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
171 for (size_t i = 0; i < info.size(); i++) {
172 Uri parentUri(info[i].uri);
173 Uri srcDir("");
174 result = fileAccessHelper->Mkdir(parentUri, "Copy_0002_src", srcDir);
175 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
176 Uri destDir("");
177 result = fileAccessHelper->Mkdir(parentUri, "Copy_0002_dest", destDir);
178 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
179
180 std::vector<Result> copyResult;
181 result = fileAccessHelper->Copy(srcDir, destDir, copyResult, false);
182 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
183 EXPECT_EQ(copyResult.size(), 0);
184
185 result = fileAccessHelper->Delete(srcDir);
186 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
187 result = fileAccessHelper->Delete(destDir);
188 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
189 }
190 } catch (...) {
191 GTEST_LOG_(ERROR) << "external_file_access_Copy_0002 occurs an exception.";
192 }
193 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0002";
194 }
195
196 /**
197 * @tc.number: user_file_service_external_file_access_Copy_0003
198 * @tc.name: external_file_access_Copy_0003
199 * @tc.desc: Test function of Copy interface, copy a file with the same name and argument of force is true
200 * @tc.size: MEDIUM
201 * @tc.type: FUNC
202 * @tc.level Level 1
203 * @tc.require: I7QXVD
204 */
205 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0003, testing::ext::TestSize.Level1)
206 {
207 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
208 EXPECT_NE(fileAccessHelper, nullptr);
209 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0003";
210 try {
211 vector<RootInfo> info;
212 int result = fileAccessHelper->GetRoots(info);
213 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
214 for (size_t i = 0; i < info.size(); i++) {
215 Uri parentUri(info[i].uri);
216 Uri srcDir("");
217 result = fileAccessHelper->Mkdir(parentUri, "Copy_0003_src", srcDir);
218 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
219 Uri srcFile("");
220 result = fileAccessHelper->CreateFile(srcDir, "b.txt", srcFile);
221 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
222 int fd = -1;
223 result = fileAccessHelper->OpenFile(srcFile, WRITE_READ, fd);
224 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
225 char buff[] = "Copy test content for b.txt";
226 ssize_t srcFileSize = write(fd, buff, sizeof(buff));
227 EXPECT_EQ(srcFileSize, sizeof(buff));
228 close(fd);
229
230 Uri destDir("");
231 result = fileAccessHelper->Mkdir(parentUri, "Copy_0003_dest", destDir);
232 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
233 Uri existFile("");
234 result = fileAccessHelper->CreateFile(destDir, "b.txt", existFile);
235 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
236
237 std::vector<Result> copyResult;
238 result = fileAccessHelper->Copy(srcFile, destDir, copyResult, true);
239 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
240 EXPECT_EQ(copyResult.size(), 0);
241
242 result = fileAccessHelper->OpenFile(existFile, WRITE_READ, fd);
243 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
244 ssize_t destFileSize = read(fd, buff, sizeof(buff));
245 EXPECT_EQ(srcFileSize, destFileSize);
246 close(fd);
247
248 result = fileAccessHelper->Delete(srcDir);
249 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
250 result = fileAccessHelper->Delete(destDir);
251 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
252 }
253 } catch (...) {
254 GTEST_LOG_(ERROR) << "external_file_access_Copy_0003 occurs an exception.";
255 }
256 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0003";
257 }
258
259 /**
260 * @tc.number: user_file_service_external_file_access_Copy_0004
261 * @tc.name: external_file_access_Copy_0004
262 * @tc.desc: Test function of Copy interface, copy a file with the same name and argument of force is false
263 * @tc.size: MEDIUM
264 * @tc.type: FUNC
265 * @tc.level Level 1
266 * @tc.require: I7QXVD
267 */
268 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0004, testing::ext::TestSize.Level1)
269 {
270 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
271 EXPECT_NE(fileAccessHelper, nullptr);
272 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0004";
273 try {
274 vector<RootInfo> info;
275 int result = fileAccessHelper->GetRoots(info);
276 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
277 for (size_t i = 0; i < info.size(); i++) {
278 Uri parentUri(info[i].uri);
279 Uri srcDir("");
280 result = fileAccessHelper->Mkdir(parentUri, "Copy_0004_src", srcDir);
281 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
282 Uri srcFile("");
283 result = fileAccessHelper->CreateFile(srcDir, "c.txt", srcFile);
284 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
285 int fd = -1;
286 result = fileAccessHelper->OpenFile(srcFile, WRITE_READ, fd);
287 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
288 char buff[] = "Copy test content for c.txt";
289 ssize_t srcFileSize = write(fd, buff, sizeof(buff));
290 EXPECT_EQ(srcFileSize, sizeof(buff));
291 close(fd);
292
293 Uri destDir("");
294 result = fileAccessHelper->Mkdir(parentUri, "Copy_0004_dest", destDir);
295 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
296 Uri existFile("");
297 result = fileAccessHelper->CreateFile(destDir, "c.txt", existFile);
298 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
299
300 std::vector<Result> copyResult;
301 result = fileAccessHelper->Copy(srcFile, destDir, copyResult, false);
302 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
303 EXPECT_EQ(copyResult.size(), 1);
304
305 result = fileAccessHelper->OpenFile(existFile, WRITE_READ, fd);
306 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
307 ssize_t destFileSize = read(fd, buff, sizeof(buff));
308 EXPECT_EQ(destFileSize, 0);
309 close(fd);
310
311 result = fileAccessHelper->Delete(srcDir);
312 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
313 result = fileAccessHelper->Delete(destDir);
314 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
315 }
316 } catch (...) {
317 GTEST_LOG_(ERROR) << "external_file_access_Copy_0004 occurs an exception.";
318 }
319 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0004";
320 }
321
322 /**
323 * @tc.number: user_file_service_external_file_access_Copy_0005
324 * @tc.name: external_file_access_Copy_0005
325 * @tc.desc: Test function of Copy interface, copy a file with the same name and no force argument
326 * @tc.size: MEDIUM
327 * @tc.type: FUNC
328 * @tc.level Level 1
329 * @tc.require: I7QXVD
330 */
331 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0005, testing::ext::TestSize.Level1)
332 {
333 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
334 EXPECT_NE(fileAccessHelper, nullptr);
335 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0005";
336 try {
337 vector<RootInfo> info;
338 int result = fileAccessHelper->GetRoots(info);
339 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
340 for (size_t i = 0; i < info.size(); i++) {
341 Uri parentUri(info[i].uri);
342 Uri srcDir("");
343 result = fileAccessHelper->Mkdir(parentUri, "Copy_0005_src", srcDir);
344 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
345 Uri srcFile("");
346 result = fileAccessHelper->CreateFile(srcDir, "d.txt", srcFile);
347 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
348 int fd = -1;
349 result = fileAccessHelper->OpenFile(srcFile, WRITE_READ, fd);
350 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
351 char buff[] = "Copy test content for d.txt";
352 ssize_t srcFileSize = write(fd, buff, sizeof(buff));
353 EXPECT_EQ(srcFileSize, sizeof(buff));
354 close(fd);
355
356 Uri destDir("");
357 result = fileAccessHelper->Mkdir(parentUri, "Copy_0005_dest", destDir);
358 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
359 Uri existFile("");
360 result = fileAccessHelper->CreateFile(destDir, "d.txt", existFile);
361 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
362
363 std::vector<Result> copyResult;
364 result = fileAccessHelper->Copy(srcFile, destDir, copyResult);
365 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
366 EXPECT_GT(copyResult.size(), 0);
367
368 result = fileAccessHelper->OpenFile(existFile, WRITE_READ, fd);
369 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
370 ssize_t destFileSize = read(fd, buff, sizeof(buff));
371 EXPECT_EQ(destFileSize, 0);
372 close(fd);
373
374 result = fileAccessHelper->Delete(srcDir);
375 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
376 result = fileAccessHelper->Delete(destDir);
377 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
378 }
379 } catch (...) {
380 GTEST_LOG_(ERROR) << "external_file_access_Copy_0005 occurs an exception.";
381 }
382 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0005";
383 }
384
ReadyToCopy06(Uri & parentUri,Uri & srcDir,const char * buff,int len,shared_ptr<FileAccessHelper> fileAccessHelper)385 static int ReadyToCopy06(Uri& parentUri, Uri& srcDir, const char* buff, int len,
386 shared_ptr<FileAccessHelper> fileAccessHelper)
387 {
388 int result = fileAccessHelper->Mkdir(parentUri, "Copy_0006_src", srcDir);
389 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
390 Uri aFileUri("");
391 result = fileAccessHelper->CreateFile(srcDir, "a.txt", aFileUri);
392 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
393 Uri bFileUri("");
394 result = fileAccessHelper->CreateFile(srcDir, "b.txt", bFileUri);
395 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
396 int fd = -1;
397 result = fileAccessHelper->OpenFile(bFileUri, WRITE_READ, fd);
398 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
399
400 ssize_t srcFileSize = write(fd, buff, len);
401 EXPECT_EQ(srcFileSize, len);
402 close(fd);
403 return srcFileSize;
404 }
405
406 /**
407 * @tc.number: user_file_service_external_file_access_Copy_0006
408 * @tc.name: external_file_access_Copy_0006
409 * @tc.desc: Test function of Copy interface, copy a directory with the same name and argument of force is true
410 * @tc.size: MEDIUM
411 * @tc.type: FUNC
412 * @tc.level Level 1
413 * @tc.require: I7QXVD
414 */
415 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0006, testing::ext::TestSize.Level1)
416 {
417 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
418 EXPECT_NE(fileAccessHelper, nullptr);
419 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0006";
420 try {
421 vector<RootInfo> info;
422 int result = fileAccessHelper->GetRoots(info);
423 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
424 char buff[] = "Copy test content for b.txt";
425 for (size_t i = 0; i < info.size(); i++) {
426 Uri srcDir("");
427 Uri parentUri(info[i].uri);
428 int srcFileSize = ReadyToCopy06(parentUri, srcDir, buff, sizeof(buff), fileAccessHelper);
429
430 Uri bFileUri("");
431 Uri destDir("");
432 result = fileAccessHelper->Mkdir(parentUri, "Copy_0006_dest", destDir);
433 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
434 Uri destSrcDir("");
435 result = fileAccessHelper->Mkdir(destDir, "Copy_0006_src", destSrcDir);
436 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
437 result = fileAccessHelper->CreateFile(destSrcDir, "b.txt", bFileUri);
438 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
439
440 std::vector<Result> copyResult;
441 result = fileAccessHelper->Copy(srcDir, destDir, copyResult, true);
442 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
443 EXPECT_EQ(copyResult.size(), 0);
444
445 int fd = -1;
446 result = fileAccessHelper->OpenFile(bFileUri, WRITE_READ, fd);
447 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
448 ssize_t destFileSize = read(fd, buff, sizeof(buff));
449 EXPECT_EQ(destFileSize, srcFileSize);
450 close(fd);
451
452 result = fileAccessHelper->Delete(srcDir);
453 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
454 result = fileAccessHelper->Delete(destDir);
455 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
456 }
457 } catch (...) {
458 GTEST_LOG_(ERROR) << "external_file_access_Copy_0006 occurs an exception.";
459 }
460 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0006";
461 }
462
463 /**
464 * @tc.number: user_file_service_external_file_access_Copy_0007
465 * @tc.name: external_file_access_Copy_0007
466 * @tc.desc: Test function of Copy interface, copy a directory with the same name and argument of force is false
467 * @tc.size: MEDIUM
468 * @tc.type: FUNC
469 * @tc.level Level 1
470 * @tc.require: I7QXVD
471 */
472 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0007, testing::ext::TestSize.Level1)
473 {
474 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
475 EXPECT_NE(fileAccessHelper, nullptr);
476 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0007";
477 try {
478 vector<RootInfo> info;
479 int result = fileAccessHelper->GetRoots(info);
480 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
481 for (size_t i = 0; i < info.size(); i++) {
482 Uri parentUri(info[i].uri);
483 Uri srcDir("");
484 result = fileAccessHelper->Mkdir(parentUri, "Copy_0007_src", srcDir);
485 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
486 Uri bFileUri("");
487 result = fileAccessHelper->CreateFile(srcDir, "a.txt", bFileUri);
488 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
489 result = fileAccessHelper->CreateFile(srcDir, "b.txt", bFileUri);
490 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
491 int fd = -1;
492 result = fileAccessHelper->OpenFile(bFileUri, WRITE_READ, fd);
493 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
494 char buff[] = "Copy test content for b.txt";
495 ssize_t bFileSize = write(fd, buff, sizeof(buff));
496 EXPECT_EQ(bFileSize, sizeof(buff));
497 close(fd);
498
499 Uri destDir("");
500 result = fileAccessHelper->Mkdir(parentUri, "Copy_0007_dest", destDir);
501 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
502 Uri destSrcDir("");
503 result = fileAccessHelper->Mkdir(destDir, "Copy_0007_src", destSrcDir);
504 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
505 Uri destFileUri("");
506 result = fileAccessHelper->CreateFile(destSrcDir, "b.txt", destFileUri);
507 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
508
509 std::vector<Result> copyResult;
510 result = fileAccessHelper->Copy(srcDir, destDir, copyResult, false);
511 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
512 EXPECT_EQ(copyResult.size(), 1);
513 EXPECT_EQ(copyResult[0].sourceUri, bFileUri.ToString());
514 EXPECT_EQ(copyResult[0].destUri, destFileUri.ToString());
515
516 result = fileAccessHelper->Delete(srcDir);
517 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
518 result = fileAccessHelper->Delete(destDir);
519 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
520 }
521 } catch (...) {
522 GTEST_LOG_(ERROR) << "external_file_access_Copy_0007 occurs an exception.";
523 }
524 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0007";
525 }
526
527 /**
528 * @tc.number: user_file_service_external_file_access_Copy_0008
529 * @tc.name: external_file_access_Copy_0008
530 * @tc.desc: Test function of Copy interface, copy a directory with the same name and no force argument
531 * @tc.size: MEDIUM
532 * @tc.type: FUNC
533 * @tc.level Level 1
534 * @tc.require: I7QXVD
535 */
536 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0008, testing::ext::TestSize.Level1)
537 {
538 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
539 EXPECT_NE(fileAccessHelper, nullptr);
540 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0008";
541 try {
542 vector<RootInfo> info;
543 int result = fileAccessHelper->GetRoots(info);
544 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
545 for (size_t i = 0; i < info.size(); i++) {
546 Uri parentUri(info[i].uri);
547 Uri srcDir("");
548 result = fileAccessHelper->Mkdir(parentUri, "Copy_0008_src", srcDir);
549 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
550 Uri aFileUri("");
551 result = fileAccessHelper->CreateFile(srcDir, "a.txt", aFileUri);
552 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
553 Uri bFileUri("");
554 result = fileAccessHelper->CreateFile(srcDir, "b.txt", bFileUri);
555 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
556
557 Uri destDir("");
558 result = fileAccessHelper->Mkdir(parentUri, "Copy_0008_dest", destDir);
559 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
560 Uri destSrcDir("");
561 result = fileAccessHelper->Mkdir(destDir, "Copy_0008_src", destSrcDir);
562 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
563 result = fileAccessHelper->CreateFile(destSrcDir, "b.txt", bFileUri);
564 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
565
566 std::vector<Result> copyResult;
567 result = fileAccessHelper->Copy(srcDir, destDir, copyResult);
568 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
569 EXPECT_EQ(copyResult.size(), 1);
570
571 result = fileAccessHelper->Delete(srcDir);
572 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
573 result = fileAccessHelper->Delete(destDir);
574 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
575 }
576 } catch (...) {
577 GTEST_LOG_(ERROR) << "external_file_access_Copy_0008 occurs an exception.";
578 }
579 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0008";
580 }
581
ReadyToCopy09(Uri & parentUri,Uri & srcDir,const char * buff,int len,shared_ptr<FileAccessHelper> fileAccessHelper)582 static int ReadyToCopy09(Uri& parentUri, Uri& srcDir, const char* buff, int len,
583 shared_ptr<FileAccessHelper> fileAccessHelper)
584 {
585 int result = fileAccessHelper->Mkdir(parentUri, "Copy_0009_src", srcDir);
586 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
587 Uri aFileUri("");
588 result = fileAccessHelper->CreateFile(srcDir, "c.txt", aFileUri);
589 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
590 Uri bFileUri("");
591 result = fileAccessHelper->CreateFile(srcDir, "d.txt", bFileUri);
592 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
593 int fd = -1;
594 result = fileAccessHelper->OpenFile(bFileUri, WRITE_READ, fd);
595 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
596 ssize_t srcFileSize = write(fd, buff, len);
597 EXPECT_EQ(srcFileSize, len);
598 close(fd);
599
600 return srcFileSize;
601 }
602
603 /**
604 * @tc.number: user_file_service_external_file_access_Copy_0009
605 * @tc.name: external_file_access_Copy_0009
606 * @tc.desc: Test function of Copy interface, copy directory and file between different disks
607 * @tc.size: MEDIUM
608 * @tc.type: FUNC
609 * @tc.level Level 1
610 * @tc.require: I7QXVD
611 */
612 HWTEST_F(FileExtensionHelperTest, external_file_access_Copy_0009, testing::ext::TestSize.Level1)
613 {
614 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
615 EXPECT_NE(fileAccessHelper, nullptr);
616 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Copy_0009";
617 try {
618 vector<RootInfo> info;
619 int result = fileAccessHelper->GetRoots(info);
620 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
621 char buff[] = "Copy test content for b.txt";
622 for (size_t i = 0; i < info.size(); i++) {
623 Uri parentUri(info[i].uri);
624 Uri srcDir("");
625 int srcFileSize = ReadyToCopy09(parentUri, srcDir, buff, sizeof(buff), fileAccessHelper);
626
627 for (size_t j = i + 1; j < info.size(); j++) {
628 Uri targetUri(info[j].uri);
629 Uri destDir("");
630 Uri bFileUri("");
631 result = fileAccessHelper->Mkdir(targetUri, "Copy_0009_dest", destDir);
632 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
633 Uri destSrcDir("");
634 result = fileAccessHelper->Mkdir(destDir, "Copy_0009_src", destSrcDir);
635 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
636 result = fileAccessHelper->CreateFile(destSrcDir, "d.txt", bFileUri);
637 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
638
639 std::vector<Result> copyResult;
640 result = fileAccessHelper->Copy(srcDir, destDir, copyResult, true);
641 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
642 EXPECT_EQ(copyResult.size(), 0);
643
644 int fd = -1;
645 result = fileAccessHelper->OpenFile(bFileUri, WRITE_READ, fd);
646 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
647 ssize_t destFileSize = read(fd, buff, sizeof(buff));
648 EXPECT_EQ(destFileSize, srcFileSize);
649 close(fd);
650
651 result = fileAccessHelper->Delete(destDir);
652 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
653 }
654 result = fileAccessHelper->Delete(srcDir);
655 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
656 }
657 } catch (...) {
658 GTEST_LOG_(ERROR) << "external_file_access_Copy_0009 occurs an exception.";
659 }
660 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Copy_0009";
661 }
662
663 /**
664 * @tc.number: user_file_service_external_file_access_Rename_0000
665 * @tc.name: external_file_access_Rename_0000
666 * @tc.desc: Test function of Rename interface for SUCCESS which rename file.
667 * @tc.size: MEDIUM
668 * @tc.type: FUNC
669 * @tc.level Level 1
670 * @tc.require: SR000H0387
671 */
672 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0000, testing::ext::TestSize.Level1)
673 {
674 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
675 EXPECT_NE(fileAccessHelper, nullptr);
676 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0000";
677 try {
678 vector<RootInfo> info;
679 int result = fileAccessHelper->GetRoots(info);
680 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
681 for (size_t i = 0; i < info.size(); i++) {
682 Uri parentUri(info[i].uri);
683 Uri newDirUriTest("");
684 result = fileAccessHelper->Mkdir(parentUri, "test7", newDirUriTest);
685 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
686 Uri testUri("");
687 result = fileAccessHelper->CreateFile(newDirUriTest, "test.txt", testUri);
688 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
689 Uri renameUri("");
690 result = fileAccessHelper->Rename(testUri, "test2.txt", renameUri);
691 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
692 GTEST_LOG_(INFO) << "Rename_0000 result:" << result;
693 result = fileAccessHelper->Delete(newDirUriTest);
694 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
695 }
696 } catch (...) {
697 GTEST_LOG_(ERROR) << "external_file_access_Rename_0000 occurs an exception.";
698 }
699 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0000";
700 }
701
702 /**
703 * @tc.number: user_file_service_external_file_access_Rename_0001
704 * @tc.name: external_file_access_Rename_0001
705 * @tc.desc: Test function of Rename interface for SUCCESS which rename folder.
706 * @tc.size: MEDIUM
707 * @tc.type: FUNC
708 * @tc.level Level 1
709 * @tc.require: SR000H0387
710 */
711 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0001, testing::ext::TestSize.Level1)
712 {
713 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
714 EXPECT_NE(fileAccessHelper, nullptr);
715 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0001";
716 try {
717 vector<RootInfo> info;
718 int result = fileAccessHelper->GetRoots(info);
719 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
720 for (size_t i = 0; i < info.size(); i++) {
721 Uri parentUri(info[i].uri);
722 Uri newDirUriTest("");
723 result = fileAccessHelper->Mkdir(parentUri, "test8", newDirUriTest);
724 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
725 Uri renameUri("");
726 result = fileAccessHelper->Rename(newDirUriTest, "testRename", renameUri);
727 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
728 GTEST_LOG_(INFO) << "Rename_0001 result:" << result;
729 result = fileAccessHelper->Delete(renameUri);
730 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
731 }
732 } catch (...) {
733 GTEST_LOG_(ERROR) << "external_file_access_Rename_0001 occurs an exception.";
734 }
735 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0001";
736 }
737
738 /**
739 * @tc.number: user_file_service_external_file_access_Rename_0002
740 * @tc.name: external_file_access_Rename_0002
741 * @tc.desc: Test function of Rename interface for ERROR which sourceFileUri is null.
742 * @tc.size: MEDIUM
743 * @tc.type: FUNC
744 * @tc.level Level 1
745 * @tc.require: SR000H0387
746 */
747 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0002, testing::ext::TestSize.Level1)
748 {
749 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
750 EXPECT_NE(fileAccessHelper, nullptr);
751 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0002";
752 try {
753 Uri renameUri("");
754 Uri sourceFileUri("");
755 int result = fileAccessHelper->Rename(sourceFileUri, "testRename.txt", renameUri);
756 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
757 GTEST_LOG_(INFO) << "Rename_0002 result:" << result;
758 } catch (...) {
759 GTEST_LOG_(ERROR) << "external_file_access_Rename_0002 occurs an exception.";
760 }
761 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0002";
762 }
763
764 /**
765 * @tc.number: user_file_service_external_file_access_Rename_0003
766 * @tc.name: external_file_access_Rename_0003
767 * @tc.desc: Test function of Rename interface for ERROR which sourceFileUri is absolute path.
768 * @tc.size: MEDIUM
769 * @tc.type: FUNC
770 * @tc.level Level 1
771 * @tc.require: SR000H0387
772 */
773 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0003, testing::ext::TestSize.Level1)
774 {
775 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
776 EXPECT_NE(fileAccessHelper, nullptr);
777 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0003";
778 try {
779 vector<RootInfo> info;
780 int result = fileAccessHelper->GetRoots(info);
781 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
782 for (size_t i = 0; i < info.size(); i++) {
783 Uri parentUri(info[i].uri);
784 Uri newDirUriTest("");
785 result = fileAccessHelper->Mkdir(parentUri, "test9", newDirUriTest);
786 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
787 Uri testUri("");
788 result = fileAccessHelper->CreateFile(newDirUriTest, "test.txt", testUri);
789 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
790 Uri renameUri("");
791 Uri sourceFileUri("storage/media/100/local/files/Download/test9/test.txt");
792 result = fileAccessHelper->Rename(sourceFileUri, "testRename.txt", renameUri);
793 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
794 GTEST_LOG_(INFO) << "Rename_0003 result:" << result;
795 result = fileAccessHelper->Delete(newDirUriTest);
796 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
797 }
798 } catch (...) {
799 GTEST_LOG_(ERROR) << "external_file_access_Rename_0003 occurs an exception.";
800 }
801 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0003";
802 }
803
804 /**
805 * @tc.number: user_file_service_external_file_access_Rename_0004
806 * @tc.name: external_file_access_Rename_0004
807 * @tc.desc: Test function of Rename interface for ERROR which sourceFileUri is special symbols.
808 * @tc.size: MEDIUM
809 * @tc.type: FUNC
810 * @tc.level Level 1
811 * @tc.require: SR000H0387
812 */
813 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0004, testing::ext::TestSize.Level1)
814 {
815 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
816 EXPECT_NE(fileAccessHelper, nullptr);
817 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0004";
818 try {
819 Uri renameUri("");
820 Uri sourceFileUri("~!@#$%^&*()_");
821 int result = fileAccessHelper->Rename(sourceFileUri, "testRename.txt", renameUri);
822 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
823 GTEST_LOG_(INFO) << "Rename_0004 result:" << result;
824 } catch (...) {
825 GTEST_LOG_(ERROR) << "external_file_access_Rename_0004 occurs an exception.";
826 }
827 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0004";
828 }
829
830 /**
831 * @tc.number: user_file_service_external_file_access_Rename_0005
832 * @tc.name: external_file_access_Rename_0005
833 * @tc.desc: Test function of Rename interface for ERROR which displayName is null.
834 * @tc.size: MEDIUM
835 * @tc.type: FUNC
836 * @tc.level Level 1
837 * @tc.require: SR000H0387
838 */
839 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0005, testing::ext::TestSize.Level1)
840 {
841 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
842 EXPECT_NE(fileAccessHelper, nullptr);
843 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0005";
844 try {
845 vector<RootInfo> info;
846 int result = fileAccessHelper->GetRoots(info);
847 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
848 for (size_t i = 0; i < info.size(); i++) {
849 Uri parentUri(info[i].uri);
850 Uri newDirUriTest("");
851 result = fileAccessHelper->Mkdir(parentUri, "test10", newDirUriTest);
852 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
853 Uri testUri("");
854 result = fileAccessHelper->CreateFile(newDirUriTest, "test.txt", testUri);
855 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
856 Uri renameUri("");
857 result = fileAccessHelper->Rename(testUri, "", renameUri);
858 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
859 GTEST_LOG_(INFO) << "Rename_0005 result:" << result;
860 result = fileAccessHelper->Delete(newDirUriTest);
861 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
862 }
863 } catch (...) {
864 GTEST_LOG_(ERROR) << "external_file_access_Rename_0005 occurs an exception.";
865 }
866 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0005";
867 }
868
RenameTdd(shared_ptr<FileAccessHelper> fahs,Uri sourceFile,std::string displayName,Uri newFile)869 static void RenameTdd(shared_ptr<FileAccessHelper> fahs, Uri sourceFile, std::string displayName, Uri newFile)
870 {
871 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
872 EXPECT_NE(fileAccessHelper, nullptr);
873 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_RenameTdd";
874 int ret = fahs->Rename(sourceFile, displayName, newFile);
875 if (ret != OHOS::FileAccessFwk::ERR_OK) {
876 GTEST_LOG_(ERROR) << "RenameTdd get result error, code:" << ret;
877 return;
878 }
879 EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
880 g_num++;
881 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_RenameTdd";
882 }
883
884 /**
885 * @tc.number: user_file_service_external_file_access_Rename_0006
886 * @tc.name: external_file_access_Rename_0006
887 * @tc.desc: Test function of Rename interface for SUCCESS which Concurrent.
888 * @tc.size: MEDIUM
889 * @tc.type: FUNC
890 * @tc.level Level 1
891 * @tc.require: SR000H0386
892 */
893 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0006, testing::ext::TestSize.Level1)
894 {
895 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
896 EXPECT_NE(fileAccessHelper, nullptr);
897 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0006";
898 try {
899 vector<RootInfo> info;
900 int result = fileAccessHelper->GetRoots(info);
901 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
902 for (size_t i = 0; i < info.size(); i++) {
903 Uri parentUri(info[i].uri);
904 Uri newDirUriTest("");
905 result = fileAccessHelper->Mkdir(parentUri, "test11", newDirUriTest);
906 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
907 Uri testUri("");
908 std::string displayName1 = "test1.txt";
909 std::string displayName2 = "test2.txt";
910 Uri renameUri("");
911 result = fileAccessHelper->CreateFile(newDirUriTest, displayName1, testUri);
912 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
913 g_num = 0;
914 for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
915 std::thread execthread(RenameTdd, fileAccessHelper, testUri, displayName2, renameUri);
916 execthread.join();
917 }
918 EXPECT_EQ(g_num, ACTUAL_SUCCESS_THREADS_NUMBER);
919 result = fileAccessHelper->Delete(newDirUriTest);
920 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
921 }
922 } catch (...) {
923 GTEST_LOG_(ERROR) << "external_file_access_Rename_0006 occurs an exception.";
924 }
925 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0006";
926 }
927
928 /**
929 * @tc.number: user_file_service_external_file_access_Rename_0007
930 * @tc.name: external_file_access_Rename_0007
931 * @tc.desc: Test function of Rename interface for ERROR because of GetProxyByUri failed.
932 * @tc.size: MEDIUM
933 * @tc.type: FUNC
934 * @tc.level Level 1
935 * @tc.require: SR000H0387
936 */
937 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0007, testing::ext::TestSize.Level1)
938 {
939 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
940 EXPECT_NE(fileAccessHelper, nullptr);
941 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0007";
942 try {
943 vector<RootInfo> info;
944 int result = fileAccessHelper->GetRoots(info);
945 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
946 for (size_t i = 0; i < info.size(); i++) {
947 Uri parentUri(info[i].uri);
948 Uri newDirUriTest("");
949 result = fileAccessHelper->Mkdir(parentUri, "test12", newDirUriTest);
950 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
951
952 std::string str = newDirUriTest.ToString();
953 if (ReplaceBundleName(str, "ohos.com.NotExistBundleName")) {
954 Uri testUri(str);
955 Uri renameUri("");
956 result = fileAccessHelper->Rename(testUri, "test.txt", renameUri);
957 EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
958 GTEST_LOG_(INFO) << "Rename_0007 result:" << result;
959 result = fileAccessHelper->Delete(newDirUriTest);
960 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
961 } else {
962 EXPECT_TRUE(false);
963 }
964 }
965 } catch (...) {
966 GTEST_LOG_(ERROR) << "external_file_access_Rename_0007 occurs an exception.";
967 }
968 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0007";
969 }
970
971 /**
972 * @tc.number: user_file_service_external_file_access_Rename_0008
973 * @tc.name: external_file_access_Rename_0008
974 * @tc.desc: Test function of Rename interface for SUCCESS which rename file, the display name is chinese.
975 * @tc.size: MEDIUM
976 * @tc.type: FUNC
977 * @tc.level Level 1
978 * @tc.require: I70SX9
979 */
980 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0008, testing::ext::TestSize.Level1)
981 {
982 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
983 EXPECT_NE(fileAccessHelper, nullptr);
984 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0008";
985 try {
986 vector<RootInfo> info;
987 int result = fileAccessHelper->GetRoots(info);
988 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
989 for (size_t i = 0; i < info.size(); i++) {
990 Uri parentUri(info[i].uri);
991 Uri newDirUriTest("");
992 result = fileAccessHelper->Mkdir(parentUri, "测试目录2", newDirUriTest);
993 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
994 EXPECT_EQ(newDirUriTest.ToString().find("测试目录2"), std::string::npos);
995 Uri testUri("");
996 result = fileAccessHelper->CreateFile(newDirUriTest, "test.txt", testUri);
997 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
998 Uri renameUri("");
999 result = fileAccessHelper->Rename(testUri, "测试文件.txt", renameUri);
1000 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1001 EXPECT_EQ(renameUri.ToString().find("测试文件.txt"), std::string::npos);
1002 GTEST_LOG_(INFO) << "Rename_0008 result:" << result;
1003 result = fileAccessHelper->Delete(newDirUriTest);
1004 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1005 }
1006 } catch (...) {
1007 GTEST_LOG_(ERROR) << "external_file_access_Rename_0008 occurs an exception.";
1008 }
1009 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0008";
1010 }
1011
1012 /**
1013 * @tc.number: user_file_service_external_file_access_Rename_0009
1014 * @tc.name: external_file_access_Rename_0009
1015 * @tc.desc: Test function of Rename interface for SUCCESS which rename folder, the display name is chinese.
1016 * @tc.size: MEDIUM
1017 * @tc.type: FUNC
1018 * @tc.level Level 1
1019 * @tc.require: I70SX9
1020 */
1021 HWTEST_F(FileExtensionHelperTest, external_file_access_Rename_0009, testing::ext::TestSize.Level1)
1022 {
1023 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1024 EXPECT_NE(fileAccessHelper, nullptr);
1025 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_Rename_0009";
1026 try {
1027 vector<RootInfo> info;
1028 int result = fileAccessHelper->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 = fileAccessHelper->Mkdir(parentUri, "test13", newDirUriTest);
1034 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1035 Uri testUri("");
1036 result = fileAccessHelper->CreateFile(newDirUriTest, "test.txt", testUri);
1037 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1038 Uri renameUri("");
1039 result = fileAccessHelper->Rename(newDirUriTest, "重命名目录", renameUri);
1040 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1041 EXPECT_EQ(renameUri.ToString().find("重命名目录"), std::string::npos);
1042 GTEST_LOG_(INFO) << "Rename_0009 result:" << result;
1043 result = fileAccessHelper->Delete(renameUri);
1044 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1045 }
1046 } catch (...) {
1047 GTEST_LOG_(ERROR) << "external_file_access_Rename_0009 occurs an exception.";
1048 }
1049 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_Rename_0009";
1050 }
1051
1052 /**
1053 * @tc.number: user_file_service_external_file_access_ListFile_0000
1054 * @tc.name: external_file_access_ListFile_0000
1055 * @tc.desc: Test function of ListFile interface for SUCCESS.
1056 * @tc.size: MEDIUM
1057 * @tc.type: FUNC
1058 * @tc.level Level 1
1059 * @tc.require: SR000H0387
1060 */
1061 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0000, testing::ext::TestSize.Level1)
1062 {
1063 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1064 EXPECT_NE(fileAccessHelper, nullptr);
1065 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0000";
1066 try {
1067 vector<RootInfo> info;
1068 int result = fileAccessHelper->GetRoots(info);
1069 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1070 for (size_t i = 0; i < info.size(); i++) {
1071 Uri parentUri(info[i].uri);
1072 Uri newDirUriTest("");
1073 result = fileAccessHelper->Mkdir(parentUri, "test14", newDirUriTest);
1074 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1075 Uri testUri("");
1076 result = fileAccessHelper->CreateFile(newDirUriTest, "external_file_access_ListFile_0000.txt", testUri);
1077 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1078 FileInfo fileInfo;
1079 fileInfo.uri = newDirUriTest.ToString();
1080 int64_t offset = 0;
1081 FileFilter filter;
1082 SharedMemoryInfo memInfo;
1083 result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1084 memInfo);
1085 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1086 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1087 EXPECT_GT(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
1088 result = fileAccessHelper->Delete(newDirUriTest);
1089 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1090 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1091 }
1092 } catch (...) {
1093 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0000 occurs an exception.";
1094 }
1095 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0000";
1096 }
1097
1098 /**
1099 * @tc.number: user_file_service_external_file_access_ListFile_0001
1100 * @tc.name: external_file_access_ListFile_0001
1101 * @tc.desc: Test function of ListFile interface for ERROR which Uri is nullptr.
1102 * @tc.size: MEDIUM
1103 * @tc.type: FUNC
1104 * @tc.level Level 1
1105 * @tc.require: SR000H0387
1106 */
1107 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0001, testing::ext::TestSize.Level1)
1108 {
1109 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1110 EXPECT_NE(fileAccessHelper, nullptr);
1111 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0001";
1112 try {
1113 Uri sourceFileUri("");
1114 FileInfo fileInfo;
1115 fileInfo.uri = sourceFileUri.ToString();
1116 int64_t offset = 0;
1117 FileFilter filter;
1118 SharedMemoryInfo memInfo;
1119 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1120 memInfo);
1121 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1122 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1123 EXPECT_EQ(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
1124 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1125 } catch (...) {
1126 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0001 occurs an exception.";
1127 }
1128 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0001";
1129 }
1130
1131 /**
1132 * @tc.number: user_file_service_external_file_access_ListFile_0002
1133 * @tc.name: external_file_access_ListFile_0002
1134 * @tc.desc: Test function of ListFile interface for ERROR which sourceFileUri is absolute path.
1135 * @tc.size: MEDIUM
1136 * @tc.type: FUNC
1137 * @tc.level Level 1
1138 * @tc.require: SR000H0387
1139 */
1140 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0002, testing::ext::TestSize.Level1)
1141 {
1142 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1143 EXPECT_NE(fileAccessHelper, nullptr);
1144 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0002";
1145 try {
1146 vector<RootInfo> info;
1147 int result = fileAccessHelper->GetRoots(info);
1148 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1149 for (size_t i = 0; i < info.size(); i++) {
1150 Uri parentUri(info[i].uri);
1151 Uri newDirUriTest("");
1152 result = fileAccessHelper->Mkdir(parentUri, "test15", newDirUriTest);
1153 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1154 Uri testUri("");
1155 result = fileAccessHelper->CreateFile(newDirUriTest, "test.txt", testUri);
1156 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1157 Uri sourceFileUri("storage/media/100/local/files/Download/test15/test.txt");
1158 FileInfo fileInfo;
1159 fileInfo.uri = sourceFileUri.ToString();
1160 Uri sourceFile(fileInfo.uri);
1161 int64_t offset = 0;
1162 FileFilter filter;
1163 SharedMemoryInfo memInfo;
1164 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List",
1165 DEFAULT_CAPACITY_200KB, memInfo);
1166 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1167 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1168 EXPECT_EQ(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
1169 result = fileAccessHelper->Delete(newDirUriTest);
1170 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1171 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1172 }
1173 } catch (...) {
1174 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0002 occurs an exception.";
1175 }
1176 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0002";
1177 }
1178
1179 /**
1180 * @tc.number: user_file_service_external_file_access_ListFile_0003
1181 * @tc.name: external_file_access_ListFile_0003
1182 * @tc.desc: Test function of ListFile interface for ERROR which sourceFileUri is special symbols.
1183 * @tc.size: MEDIUM
1184 * @tc.type: FUNC
1185 * @tc.level Level 1
1186 * @tc.require: SR000H0387
1187 */
1188 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0003, testing::ext::TestSize.Level1)
1189 {
1190 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1191 EXPECT_NE(fileAccessHelper, nullptr);
1192 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0003";
1193 try {
1194 Uri sourceFileUri("~!@#$%^&*()_");
1195 FileInfo fileInfo;
1196 fileInfo.uri = sourceFileUri.ToString();
1197 Uri sourceFile(fileInfo.uri);
1198 int64_t offset = 0;
1199 FileFilter filter;
1200 SharedMemoryInfo memInfo;
1201 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1202 memInfo);
1203 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1204 EXPECT_NE(result, OHOS::FileAccessFwk::ERR_OK);
1205 EXPECT_EQ(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
1206 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1207 } catch (...) {
1208 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0003 occurs an exception.";
1209 }
1210 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0003";
1211 }
1212
ListFileTdd(FileInfo fileInfo,int offset,FileFilter filter,SharedMemoryInfo & memInfo)1213 static void ListFileTdd(FileInfo fileInfo, int offset, FileFilter filter,
1214 SharedMemoryInfo &memInfo)
1215 {
1216 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1217 EXPECT_NE(fileAccessHelper, nullptr);
1218 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFileTdd";
1219 int ret = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1220 if (ret != OHOS::FileAccessFwk::ERR_OK) {
1221 GTEST_LOG_(ERROR) << "ListFile get result error, code:" << ret;
1222 return;
1223 }
1224 EXPECT_EQ(ret, OHOS::FileAccessFwk::ERR_OK);
1225 g_num++;
1226 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFileTdd";
1227 }
1228
1229 /**
1230 * @tc.number: user_file_service_external_file_access_ListFile_0004
1231 * @tc.name: external_file_access_ListFile_0004
1232 * @tc.desc: Test function of ListFile interface for SUCCESS which Concurrent.
1233 * @tc.size: MEDIUM
1234 * @tc.type: FUNC
1235 * @tc.level Level 1
1236 * @tc.require: SR000H0386
1237 */
1238 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0004, testing::ext::TestSize.Level1)
1239 {
1240 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1241 EXPECT_NE(fileAccessHelper, nullptr);
1242 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0004";
1243 try {
1244 vector<RootInfo> info;
1245 int result = fileAccessHelper->GetRoots(info);
1246 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1247 for (size_t i = 0; i < info.size(); i++) {
1248 Uri parentUri(info[i].uri);
1249 Uri newDirUriTest("");
1250 result = fileAccessHelper->Mkdir(parentUri, "test16", newDirUriTest);
1251 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1252 Uri testUri("");
1253 result = fileAccessHelper->CreateFile(newDirUriTest, "external_file_access_ListFile_0004.txt", testUri);
1254 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1255 FileInfo fileInfo;
1256 fileInfo.uri = newDirUriTest.ToString();
1257 int offset = 0;
1258 FileFilter filter;
1259 g_num = 0;
1260 SharedMemoryInfo memInfo;
1261 result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1262 memInfo);
1263 for (int j = 0; j < INIT_THREADS_NUMBER; j++) {
1264 std::thread execthread(ListFileTdd, fileInfo, offset, filter, std::ref(memInfo));
1265 execthread.join();
1266 }
1267 EXPECT_EQ(g_num, INIT_THREADS_NUMBER);
1268 result = fileAccessHelper->Delete(newDirUriTest);
1269 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1270 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1271 }
1272 } catch (...) {
1273 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0004 occurs an exception.";
1274 }
1275 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0004";
1276 }
1277
1278 /**
1279 * @tc.number: user_file_service_external_file_access_ListFile_0005
1280 * @tc.name: external_file_access_ListFile_0005
1281 * @tc.desc: Test function of ListFile interface for ERROR because of GetProxyByUri failed.
1282 * @tc.size: MEDIUM
1283 * @tc.type: FUNC
1284 * @tc.level Level 1
1285 * @tc.require: SR000H0387
1286 */
1287 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0005, testing::ext::TestSize.Level1)
1288 {
1289 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1290 EXPECT_NE(fileAccessHelper, nullptr);
1291 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0005";
1292 try {
1293 vector<RootInfo> info;
1294 int result = fileAccessHelper->GetRoots(info);
1295 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1296 for (size_t i = 0; i < info.size(); i++) {
1297 Uri parentUri(info[i].uri);
1298 Uri newDirUriTest("");
1299 result = fileAccessHelper->Mkdir(parentUri, "test17", newDirUriTest);
1300 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1301 Uri testUri("");
1302 result = fileAccessHelper->CreateFile(newDirUriTest, "test.txt", testUri);
1303 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1304
1305 std::string str = testUri.ToString();
1306 if (ReplaceBundleName(str, "ohos.com.NotExistBundleName")) {
1307 FileInfo fileInfo;
1308 fileInfo.uri = str;
1309 int64_t offset = 0;
1310 FileFilter filter;
1311 SharedMemoryInfo memInfo;
1312 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List",
1313 DEFAULT_CAPACITY_200KB, memInfo);
1314 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1315 EXPECT_EQ(result, OHOS::FileAccessFwk::E_IPCS);
1316 result = fileAccessHelper->Delete(newDirUriTest);
1317 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1318 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1319 } else {
1320 EXPECT_TRUE(false);
1321 }
1322 }
1323 } catch (...) {
1324 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0005 occurs an exception.";
1325 }
1326 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0005";
1327 }
1328
1329 /**
1330 * @tc.number: user_file_service_external_file_access_ListFile_0006
1331 * @tc.name: external_file_access_ListFile_0006
1332 * @tc.desc: Test function of ListFile interface for SUCCESS, the folder and file name is chinese.
1333 * @tc.size: MEDIUM
1334 * @tc.type: FUNC
1335 * @tc.level Level 1
1336 * @tc.require: I70SX9
1337 */
1338 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0006, testing::ext::TestSize.Level1)
1339 {
1340 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1341 EXPECT_NE(fileAccessHelper, nullptr);
1342 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0006";
1343 try {
1344 vector<RootInfo> info;
1345 int result = fileAccessHelper->GetRoots(info);
1346 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1347 for (size_t i = 0; i < info.size(); i++) {
1348 Uri parentUri(info[i].uri);
1349 Uri newDirUriTest("");
1350 result = fileAccessHelper->Mkdir(parentUri, "测试目录0006", newDirUriTest);
1351 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1352 EXPECT_EQ(newDirUriTest.ToString().find("测试目录0006"), std::string::npos);
1353 Uri testUri("");
1354 result = fileAccessHelper->CreateFile(newDirUriTest, "测试文件.txt", testUri);
1355 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1356 EXPECT_EQ(testUri.ToString().find("测试文件.txt"), std::string::npos);
1357 FileInfo fileInfo;
1358 fileInfo.uri = newDirUriTest.ToString();
1359 int64_t offset = 0;
1360 FileFilter filter;
1361 SharedMemoryInfo memInfo;
1362 result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List",
1363 DEFAULT_CAPACITY_200KB, memInfo);
1364 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1365 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1366 EXPECT_GT(memInfo.Size(), OHOS::FileAccessFwk::ERR_OK);
1367 result = fileAccessHelper->Delete(newDirUriTest);
1368 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1369 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1370 }
1371 } catch (...) {
1372 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0006 occurs an exception.";
1373 }
1374 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0006";
1375 }
1376
WriteData(Uri & uri,shared_ptr<FileAccessHelper> fileAccessHelper)1377 static void WriteData(Uri &uri, shared_ptr<FileAccessHelper> fileAccessHelper)
1378 {
1379 int fd = -1;
1380 std::string buff = "extenal_file_access_test";
1381 int result = fileAccessHelper->OpenFile(uri, WRITE_READ, fd);
1382 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1383 ssize_t fileSize = write(fd, buff.c_str(), buff.size());
1384 close(fd);
1385 EXPECT_EQ(fileSize, buff.size());
1386 }
1387
GetTime()1388 static double GetTime()
1389 {
1390 struct timespec t{};
1391 t.tv_sec = 0;
1392 t.tv_nsec = 0;
1393 clock_gettime(CLOCK_REALTIME, &t);
1394 return static_cast<double>(t.tv_sec);
1395 }
1396
InitListFile(Uri newDirUriTest,const std::string & caseNumber,shared_ptr<FileAccessHelper> fileAccessHelper,const bool & needSleep=false)1397 static double InitListFile(Uri newDirUriTest, const std::string &caseNumber,
1398 shared_ptr<FileAccessHelper> fileAccessHelper, const bool &needSleep = false)
1399 {
1400 Uri testUri1("");
1401 int result = fileAccessHelper->CreateFile(newDirUriTest,
1402 "external_file_access_ListFile_" + caseNumber + ".txt", testUri1);
1403 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1404 Uri testUri2("");
1405 result = fileAccessHelper->CreateFile(newDirUriTest,
1406 "external_file_access_ListFile_" + caseNumber + ".docx", testUri2);
1407 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1408 Uri testUri3("");
1409 double time = GetTime();
1410 if (needSleep) {
1411 sleep(SLEEP_TIME);
1412 }
1413 result = fileAccessHelper->CreateFile(newDirUriTest,
1414 "external_file_access_ListFile_01_" + caseNumber + ".txt", testUri3);
1415 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1416 Uri testUri4("");
1417 result = fileAccessHelper->CreateFile(newDirUriTest,
1418 "external_file_access_ListFile_01_" + caseNumber + ".docx", testUri4);
1419 WriteData(testUri4, fileAccessHelper);
1420 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1421 Uri testUri5("");
1422 result = fileAccessHelper->CreateFile(newDirUriTest,
1423 "external_file_access_ListFile_01_" + caseNumber + "_01.docx", testUri5);
1424 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1425 return time;
1426 }
1427
ListFileFilter7(Uri newDirUriTest,shared_ptr<FileAccessHelper> fileAccessHelper)1428 static void ListFileFilter7(Uri newDirUriTest, shared_ptr<FileAccessHelper> fileAccessHelper)
1429 {
1430 FileInfo fileInfo;
1431 fileInfo.uri = newDirUriTest.ToString();
1432 int64_t offset = 4;
1433 SharedMemoryInfo memInfo;
1434 FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
1435 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1436 memInfo);
1437 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1438 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1439 EXPECT_EQ(memInfo.Size(), FILE_COUNT_1);
1440 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1441 }
1442
1443 /**
1444 * @tc.number: user_file_service_external_file_access_ListFile_0007
1445 * @tc.name: external_file_access_ListFile_0007
1446 * @tc.desc: Test function of ListFile for Success, filter is File Extensions.
1447 * @tc.size: MEDIUM
1448 * @tc.type: FUNC
1449 * @tc.level Level 1
1450 * @tc.require: I79CSX
1451 */
1452 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0007, testing::ext::TestSize.Level1)
1453 {
1454 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1455 EXPECT_NE(fileAccessHelper, nullptr);
1456 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0007";
1457 try {
1458 vector<RootInfo> info;
1459 int result = fileAccessHelper->GetRoots(info);
1460 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1461 for (size_t i = 0; i < info.size(); i++) {
1462 Uri parentUri(info[i].uri);
1463 Uri newDirUriTest("");
1464 result = fileAccessHelper->Mkdir(parentUri, "listfile007", newDirUriTest);
1465 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1466 InitListFile(newDirUriTest, "0007", fileAccessHelper);
1467 ListFileFilter7(newDirUriTest, fileAccessHelper);
1468 result = fileAccessHelper->Delete(newDirUriTest);
1469 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1470 }
1471 } catch (...) {
1472 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0007 occurs an exception.";
1473 }
1474 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0007";
1475 }
1476
InitListFileFolder(Uri newDirUriTest,const std::string & caseNumber,shared_ptr<FileAccessHelper> fileAccessHelper,const bool & needSleep=false)1477 static double InitListFileFolder(Uri newDirUriTest, const std::string &caseNumber,
1478 shared_ptr<FileAccessHelper> fileAccessHelper, const bool &needSleep = false)
1479 {
1480 double time = InitListFile(newDirUriTest, caseNumber, fileAccessHelper, needSleep);
1481 Uri folderUri("");
1482 int result = fileAccessHelper->Mkdir(newDirUriTest, "test" + caseNumber, folderUri);
1483 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1484 Uri testUri6("");
1485 result = fileAccessHelper->CreateFile(folderUri,
1486 "external_file_access_ListFile_01_" + caseNumber + "_02.docx", testUri6);
1487 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1488 return time;
1489 }
1490
ShowInfo(SharedMemoryInfo & memInfo,const std::string & caseNumber)1491 static void ShowInfo(SharedMemoryInfo &memInfo, const std::string &caseNumber)
1492 {
1493 FileAccessFwk::FileInfo fileInfo;
1494 for (size_t i = 0; i < memInfo.Size(); i++) {
1495 FileAccessFwk::SharedMemoryOperation::ReadFileInfo(fileInfo, memInfo);
1496 GTEST_LOG_(INFO) << caseNumber << ", uri:" << fileInfo.uri << endl;
1497 }
1498 }
1499
ListFileFilter8(Uri newDirUriTest,shared_ptr<FileAccessHelper> fileAccessHelper)1500 static void ListFileFilter8(Uri newDirUriTest, shared_ptr<FileAccessHelper> fileAccessHelper)
1501 {
1502 FileInfo fileInfo;
1503 fileInfo.uri = newDirUriTest.ToString();
1504 int64_t offset = 0;
1505 SharedMemoryInfo memInfo;
1506 FileFilter filter({}, {}, {}, -1, 0, false, true);
1507 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1508 memInfo);
1509 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1510 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1511 EXPECT_EQ(memInfo.Size(), FILE_COUNT_6);
1512 ShowInfo(memInfo, "external_file_access_ListFile_0008");
1513 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1514 }
1515
1516 /**
1517 * @tc.number: user_file_service_external_file_access_ListFile_0008
1518 * @tc.name: external_file_access_ListFile_0008
1519 * @tc.desc: Test function of ListFile for Success, filter is filesize >= 0
1520 * @tc.size: MEDIUM
1521 * @tc.type: FUNC
1522 * @tc.level Level 1
1523 * @tc.require: I79CSX
1524 */
1525 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0008, testing::ext::TestSize.Level1)
1526 {
1527 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1528 EXPECT_NE(fileAccessHelper, nullptr);
1529 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0008";
1530 try {
1531 vector<RootInfo> info;
1532 int result = fileAccessHelper->GetRoots(info);
1533 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1534 for (size_t i = 0; i < info.size(); i++) {
1535 Uri parentUri(info[i].uri);
1536 Uri newDirUriTest("");
1537 result = fileAccessHelper->Mkdir(parentUri, "listfile008", newDirUriTest);
1538 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1539 InitListFileFolder(newDirUriTest, "0008", fileAccessHelper);
1540 ListFileFilter8(newDirUriTest, fileAccessHelper);
1541 result = fileAccessHelper->Delete(newDirUriTest);
1542 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1543 }
1544 } catch (...) {
1545 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0008 occurs an exception.";
1546 }
1547 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0008";
1548 }
1549
ListFileFilter9(Uri newDirUriTest,shared_ptr<FileAccessHelper> fileAccessHelper)1550 static void ListFileFilter9(Uri newDirUriTest, shared_ptr<FileAccessHelper> fileAccessHelper)
1551 {
1552 FileInfo fileInfo;
1553 fileInfo.uri = newDirUriTest.ToString();
1554 int64_t offset = 0;
1555 SharedMemoryInfo memInfo;
1556 FileFilter filter;
1557 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1558 memInfo);
1559 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1560 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1561 EXPECT_EQ(memInfo.Size(), FILE_COUNT_6);
1562 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1563 }
1564
1565 /**
1566 * @tc.number: user_file_service_external_file_access_ListFile_0009
1567 * @tc.name: external_file_access_ListFile_0009
1568 * @tc.desc: Test function of ListFile for Success, filter is offset from 0 and maxCount is 1000
1569 * @tc.size: MEDIUM
1570 * @tc.type: FUNC
1571 * @tc.level Level 1
1572 * @tc.require: I79CSX
1573 */
1574 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0009, testing::ext::TestSize.Level1)
1575 {
1576 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1577 EXPECT_NE(fileAccessHelper, nullptr);
1578 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0008";
1579 try {
1580 vector<RootInfo> info;
1581 int result = fileAccessHelper->GetRoots(info);
1582 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1583 for (size_t i = 0; i < info.size(); i++) {
1584 Uri parentUri(info[i].uri);
1585 Uri newDirUriTest("");
1586 result = fileAccessHelper->Mkdir(parentUri, "listfile009", newDirUriTest);
1587 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1588 InitListFileFolder(newDirUriTest, "0009", fileAccessHelper);
1589 ListFileFilter9(newDirUriTest, fileAccessHelper);
1590 result = fileAccessHelper->Delete(newDirUriTest);
1591 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1592 }
1593 } catch (...) {
1594 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0009 occurs an exception.";
1595 }
1596 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0009";
1597 }
1598
ListFileFilter10(Uri newDirUriTest,const double & time,shared_ptr<FileAccessHelper> fileAccessHelper)1599 static void ListFileFilter10(Uri newDirUriTest, const double &time, shared_ptr<FileAccessHelper> fileAccessHelper)
1600 {
1601 FileInfo fileInfo;
1602 fileInfo.uri = newDirUriTest.ToString();
1603 int64_t offset = 0;
1604 SharedMemoryInfo memInfo;
1605 FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
1606 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1607 memInfo);
1608 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1609 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1610 EXPECT_EQ(memInfo.Size(), FILE_COUNT_5);
1611
1612 FileFilter filter1({".txt", ".docx"}, {"0010.txt", "0010.docx"}, {}, -1, -1, false, true);
1613 result = fileAccessHelper->ListFile(fileInfo, offset, filter1, memInfo);
1614 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1615 EXPECT_EQ(memInfo.Size(), FILE_COUNT_4);
1616
1617 FileFilter filter2({".txt", ".docx"}, {"0010.txt", "0010.docx"}, {}, 0, 0, false, true);
1618 result = fileAccessHelper->ListFile(fileInfo, offset, filter2, memInfo);
1619 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1620 EXPECT_EQ(memInfo.Size(), FILE_COUNT_1);
1621
1622 FileFilter filter3({".txt", ".docx"}, {"0010.txt", "0010.docx"}, {}, -1, time, false, true);
1623 result = fileAccessHelper->ListFile(fileInfo, offset, filter3, memInfo);
1624 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1625 EXPECT_EQ(memInfo.Size(), FILE_COUNT_2);
1626
1627 double nowTime = GetTime();
1628 FileFilter filter4({".txt", ".docx"}, {"0010.txt", "0010.docx"}, {}, -1, nowTime, false, true);
1629 result = fileAccessHelper->ListFile(fileInfo, offset, filter4, memInfo);
1630 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1631 EXPECT_EQ(memInfo.Size(), 0);
1632 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1633 }
1634
1635 /**
1636 * @tc.number: user_file_service_external_file_access_ListFile_0010
1637 * @tc.name: external_file_access_ListFile_0010
1638 * @tc.desc: Test function of ListFile interface for SUCCESS, filter is filename, extension, file size, modify time
1639 * @tc.size: MEDIUM
1640 * @tc.type: FUNC
1641 * @tc.level Level 1
1642 * @tc.require: I79CSX
1643 */
1644 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0010, testing::ext::TestSize.Level1)
1645 {
1646 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1647 EXPECT_NE(fileAccessHelper, nullptr);
1648 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0010";
1649 try {
1650 vector<RootInfo> info;
1651 int result = fileAccessHelper->GetRoots(info);
1652 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1653 for (size_t i = 0; i < info.size(); i++) {
1654 Uri parentUri(info[i].uri);
1655 Uri newDirUriTest("");
1656 result = fileAccessHelper->Mkdir(parentUri, "listfile0010", newDirUriTest);
1657 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1658 double time = InitListFile(newDirUriTest, "0010", fileAccessHelper, true);
1659 ListFileFilter10(newDirUriTest, time, fileAccessHelper);
1660 result = fileAccessHelper->Delete(newDirUriTest);
1661 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1662 }
1663 } catch (...) {
1664 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0010 occurs an exception.";
1665 }
1666 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0010";
1667 }
1668
ListFileFilter11(Uri newDirUriTest,const double & time,shared_ptr<FileAccessHelper> fileAccessHelper)1669 static void ListFileFilter11(Uri newDirUriTest, const double &time, shared_ptr<FileAccessHelper> fileAccessHelper)
1670 {
1671 FileInfo fileInfo;
1672 fileInfo.uri = newDirUriTest.ToString();
1673 int64_t offset = 0;
1674 SharedMemoryInfo memInfo;
1675 int result = FileAccessFwk::SharedMemoryOperation::CreateSharedMemory("FileInfo List", DEFAULT_CAPACITY_200KB,
1676 memInfo);
1677 FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
1678 result = fileAccessHelper->ListFile(fileInfo, offset, filter, memInfo);
1679 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1680 EXPECT_EQ(memInfo.Size(), FILE_COUNT_6);
1681
1682 FileFilter filter1({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, -1, -1, false, true);
1683 result = fileAccessHelper->ListFile(fileInfo, offset, filter1, memInfo);
1684 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1685 EXPECT_EQ(memInfo.Size(), FILE_COUNT_4);
1686
1687 FileFilter filter2({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, 0, 0, false, true);
1688 result = fileAccessHelper->ListFile(fileInfo, offset, filter2, memInfo);
1689 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1690 EXPECT_EQ(memInfo.Size(), FILE_COUNT_1);
1691
1692 FileFilter filter3({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, -1, time, false, true);
1693 result = fileAccessHelper->ListFile(fileInfo, offset, filter3, memInfo);
1694 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1695 EXPECT_EQ(memInfo.Size(), FILE_COUNT_2);
1696
1697 double nowTime = GetTime();
1698 FileFilter filter4({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, -1, nowTime, false, true);
1699 result = fileAccessHelper->ListFile(fileInfo, offset, filter4, memInfo);
1700 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1701 EXPECT_EQ(memInfo.Size(), 0);
1702 FileAccessFwk::SharedMemoryOperation::DestroySharedMemory(memInfo);
1703 }
1704
1705 /**
1706 * @tc.number: user_file_service_external_file_access_ListFile_0011
1707 * @tc.name: external_file_access_ListFile_0011
1708 * @tc.desc: Test function of ListFile interface for SUCCESS, for filename is Chinese
1709 * @tc.size: MEDIUM
1710 * @tc.type: FUNC
1711 * @tc.level Level 1
1712 * @tc.require: I79CSX
1713 */
1714 HWTEST_F(FileExtensionHelperTest, external_file_access_ListFile_0011, testing::ext::TestSize.Level1)
1715 {
1716 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1717 EXPECT_NE(fileAccessHelper, nullptr);
1718 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ListFile_0011";
1719 try {
1720 vector<RootInfo> info;
1721 int result = fileAccessHelper->GetRoots(info);
1722 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1723 for (size_t i = 0; i < info.size(); i++) {
1724 Uri parentUri(info[i].uri);
1725 Uri newDirUriTest("");
1726 result = fileAccessHelper->Mkdir(parentUri, "listfile测试", newDirUriTest);
1727 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1728 double time = InitListFileFolder(newDirUriTest, "测试", fileAccessHelper, true);
1729 ListFileFilter11(newDirUriTest, time, fileAccessHelper);
1730 result = fileAccessHelper->Delete(newDirUriTest);
1731 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1732 }
1733 } catch (...) {
1734 GTEST_LOG_(ERROR) << "external_file_access_ListFile_0011 occurs an exception.";
1735 }
1736 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ListFile_0011";
1737 }
1738
InitScanFile(Uri newDirUriTest,const std::string & caseNumber,shared_ptr<FileAccessHelper> fileAccessHelper,const bool & needSleep=false)1739 static double InitScanFile(Uri newDirUriTest, const std::string &caseNumber,
1740 shared_ptr<FileAccessHelper> fileAccessHelper, const bool &needSleep = false)
1741 {
1742 Uri forlderUriTest("");
1743 int result = fileAccessHelper->Mkdir(newDirUriTest, "test" + caseNumber, forlderUriTest);
1744 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1745
1746 Uri testUri1("");
1747 result = fileAccessHelper->CreateFile(newDirUriTest,
1748 "external_file_access_ScanFile_" + caseNumber + ".txt", testUri1);
1749 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1750 Uri testUri2("");
1751 result = fileAccessHelper->CreateFile(newDirUriTest,
1752 "external_file_access_ScanFile_" + caseNumber + ".docx", testUri2);
1753 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1754 double time = GetTime();
1755 if (needSleep) {
1756 sleep(SLEEP_TIME);
1757 }
1758 Uri testUri3("");
1759 result = fileAccessHelper->CreateFile(forlderUriTest,
1760 "external_file_access_ScanFile_01_" + caseNumber + ".txt", testUri3);
1761 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1762 Uri testUri4("");
1763 result = fileAccessHelper->CreateFile(forlderUriTest,
1764 "external_file_access_ScanFile_01_" + caseNumber + ".docx", testUri4);
1765 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1766 WriteData(testUri4, fileAccessHelper);
1767 Uri testUri5("");
1768 result = fileAccessHelper->CreateFile(forlderUriTest,
1769 "external_file_access_ScanFile_01_" + caseNumber + "_01.docx", testUri5);
1770 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1771 return time;
1772 }
1773
ScanFileFilter0(Uri newDirUriTest,const double & time,shared_ptr<FileAccessHelper> fileAccessHelper)1774 static void ScanFileFilter0(Uri newDirUriTest, const double &time, shared_ptr<FileAccessHelper> fileAccessHelper)
1775 {
1776 FileInfo fileInfo;
1777 fileInfo.uri = newDirUriTest.ToString();
1778 int64_t offset = 0;
1779 int64_t maxCount = 1000;
1780 std::vector<FileInfo> fileInfoVec;
1781 FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
1782 int result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1783 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1784 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_5);
1785
1786 FileFilter filter1({".txt", ".docx"}, {"0000.txt", "0000.docx"}, {}, -1, -1, false, true);
1787 result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter1, fileInfoVec);
1788 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1789 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_4);
1790
1791 FileFilter filter2({".txt", ".docx"}, {"0000.txt", "0000.docx"}, {}, 0, 0, false, true);
1792 result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter2, fileInfoVec);
1793 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1794 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_1);
1795
1796 FileFilter filter3({".txt", ".docx"}, {"0000.txt", "0000.docx"}, {}, -1, time, false, true);
1797 result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter3, fileInfoVec);
1798 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1799 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_2);
1800
1801 double nowTime = GetTime();
1802 FileFilter filter4({".txt", ".docx"}, {"0000.txt", "0000.docx"}, {}, -1, nowTime, false, true);
1803 result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter4, fileInfoVec);
1804 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1805 EXPECT_EQ(fileInfoVec.size(), 0);
1806 }
1807
1808 /**
1809 * @tc.number: user_file_service_external_file_access_ScanFile_0000
1810 * @tc.name: external_file_access_ScanFile_0000
1811 * @tc.desc: Test function of ScanFile interface for SUCCESS, filter is filename, extension, file size, modify time
1812 * @tc.size: MEDIUM
1813 * @tc.type: FUNC
1814 * @tc.level Level 1
1815 * @tc.require: I79CSX
1816 */
1817 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0000, testing::ext::TestSize.Level1)
1818 {
1819 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1820 EXPECT_NE(fileAccessHelper, nullptr);
1821 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ScanFile_0000";
1822 try {
1823 vector<RootInfo> info;
1824 int result = fileAccessHelper->GetRoots(info);
1825 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1826 for (size_t i = 0; i < info.size(); i++) {
1827 Uri parentUri(info[i].uri);
1828 Uri newDirUriTest("");
1829 result = fileAccessHelper->Mkdir(parentUri, "scanfile0000", newDirUriTest);
1830 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1831 double time = InitScanFile(newDirUriTest, "0000", fileAccessHelper, true);
1832 ScanFileFilter0(newDirUriTest, time, fileAccessHelper);
1833 result = fileAccessHelper->Delete(newDirUriTest);
1834 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1835 }
1836 } catch (...) {
1837 GTEST_LOG_(ERROR) << "external_file_access_ScanFile_0000 occurs an exception.";
1838 }
1839 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ScanFile_0000";
1840 }
1841
ScanFileFilter1(Uri newDirUriTest,shared_ptr<FileAccessHelper> fileAccessHelper)1842 static void ScanFileFilter1(Uri newDirUriTest, shared_ptr<FileAccessHelper> fileAccessHelper)
1843 {
1844 FileInfo fileInfo;
1845 fileInfo.uri = newDirUriTest.ToString();
1846 int64_t offset = 0;
1847 int64_t maxCount = 1000;
1848 std::vector<FileInfo> fileInfoVec;
1849 FileFilter filter;
1850 int result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1851 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1852 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_5);
1853 }
1854
1855 /**
1856 * @tc.number: user_file_service_external_file_access_ScanFile_0001
1857 * @tc.name: external_file_access_ScanFile_0001
1858 * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is offset from 0 to maxcount
1859 * @tc.size: MEDIUM
1860 * @tc.type: FUNC
1861 * @tc.level Level 1
1862 * @tc.require: I79CSX
1863 */
1864 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0001, testing::ext::TestSize.Level1)
1865 {
1866 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1867 EXPECT_NE(fileAccessHelper, nullptr);
1868 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ScanFile_0001";
1869 try {
1870 vector<RootInfo> info;
1871 int result = fileAccessHelper->GetRoots(info);
1872 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1873 for (size_t i = 0; i < info.size(); i++) {
1874 Uri parentUri(info[i].uri);
1875 Uri newDirUriTest("");
1876 result = fileAccessHelper->Mkdir(parentUri, "scanfile0001", newDirUriTest);
1877 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1878 InitScanFile(newDirUriTest, "0001", fileAccessHelper);
1879 ScanFileFilter1(newDirUriTest, fileAccessHelper);
1880 result = fileAccessHelper->Delete(newDirUriTest);
1881 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1882 }
1883 } catch (...) {
1884 GTEST_LOG_(ERROR) << "external_file_access_ScanFile_0001 occurs an exception.";
1885 }
1886 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ScanFile_0001";
1887 }
1888
ScanFileFilter2(Uri newDirUriTest,shared_ptr<FileAccessHelper> fileAccessHelper)1889 static void ScanFileFilter2(Uri newDirUriTest, shared_ptr<FileAccessHelper> fileAccessHelper)
1890 {
1891 FileInfo fileInfo;
1892 fileInfo.uri = newDirUriTest.ToString();
1893 int64_t offset = 3;
1894 int64_t maxCount = 3;
1895 std::vector<FileInfo> fileInfoVec;
1896 FileFilter filter({".txt", ".docx"}, {}, {}, -1, -1, false, true);
1897 int result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1898 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1899 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_2);
1900 }
1901
1902 /**
1903 * @tc.number: user_file_service_external_file_access_ScanFile_0002
1904 * @tc.name: external_file_access_ScanFile_0002
1905 * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is extenstion offset maxCount
1906 * @tc.size: MEDIUM
1907 * @tc.type: FUNC
1908 * @tc.level Level 1
1909 * @tc.require: I79CSX
1910 */
1911 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0002, testing::ext::TestSize.Level1)
1912 {
1913 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1914 EXPECT_NE(fileAccessHelper, nullptr);
1915 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ScanFile_0002";
1916 try {
1917 vector<RootInfo> info;
1918 int result = fileAccessHelper->GetRoots(info);
1919 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1920 for (size_t i = 0; i < info.size(); i++) {
1921 Uri parentUri(info[i].uri);
1922 Uri newDirUriTest("");
1923 result = fileAccessHelper->Mkdir(parentUri, "scanfile0002", newDirUriTest);
1924 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1925 InitScanFile(newDirUriTest, "0002", fileAccessHelper);
1926 ScanFileFilter2(newDirUriTest, fileAccessHelper);
1927 result = fileAccessHelper->Delete(newDirUriTest);
1928 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1929 }
1930 } catch (...) {
1931 GTEST_LOG_(ERROR) << "external_file_access_ScanFile_0002 occurs an exception.";
1932 }
1933 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ScanFile_0002";
1934 }
1935
ScanFileFilter3(Uri newDirUriTest,const double & time,shared_ptr<FileAccessHelper> fileAccessHelper)1936 static void ScanFileFilter3(Uri newDirUriTest, const double &time, shared_ptr<FileAccessHelper> fileAccessHelper)
1937 {
1938 FileInfo fileInfo;
1939 fileInfo.uri = newDirUriTest.ToString();
1940 int64_t offset = 0;
1941 int64_t maxCount = 1000;
1942 std::vector<FileInfo> fileInfoVec;
1943 FileFilter filter({}, {}, {}, -1, time, false, true);
1944 int result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1945 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1946 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_3);
1947 }
1948
1949 /**
1950 * @tc.number: user_file_service_external_file_access_ScanFile_0003
1951 * @tc.name: external_file_access_ScanFile_0003
1952 * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is modify time
1953 * @tc.size: MEDIUM
1954 * @tc.type: FUNC
1955 * @tc.level Level 1
1956 * @tc.require: I79CSX
1957 */
1958 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0003, testing::ext::TestSize.Level1)
1959 {
1960 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
1961 EXPECT_NE(fileAccessHelper, nullptr);
1962 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin external_file_access_ScanFile_0003";
1963 try {
1964 vector<RootInfo> info;
1965 int result = fileAccessHelper->GetRoots(info);
1966 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1967 for (size_t i = 0; i < info.size(); i++) {
1968 Uri parentUri(info[i].uri);
1969 Uri newDirUriTest("");
1970 result = fileAccessHelper->Mkdir(parentUri, "scanfile0003", newDirUriTest);
1971 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1972 double time = InitScanFile(newDirUriTest, "0003", fileAccessHelper, true);
1973 ScanFileFilter3(newDirUriTest, time, fileAccessHelper);
1974 result = fileAccessHelper->Delete(newDirUriTest);
1975 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1976 }
1977 } catch (...) {
1978 GTEST_LOG_(ERROR) << "external_file_access_ScanFile_0003 occurs an exception.";
1979 }
1980 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end external_file_access_ScanFile_0003";
1981 }
1982
ScanFileFilter4(Uri newDirUriTest,shared_ptr<FileAccessHelper> fileAccessHelper)1983 static void ScanFileFilter4(Uri newDirUriTest, shared_ptr<FileAccessHelper> fileAccessHelper)
1984 {
1985 FileInfo fileInfo;
1986 fileInfo.uri = newDirUriTest.ToString();
1987 int64_t offset = 0;
1988 int64_t maxCount = 1000;
1989 std::vector<FileInfo> fileInfoVec;
1990 FileFilter filter;
1991 int result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1992 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
1993 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_5);
1994 }
1995
1996 /**
1997 * @tc.number: user_file_service_external_file_access_ScanFile_0004
1998 * @tc.name: external_file_access_ScanFile_0004
1999 * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is offset from 0 to maxCount
2000 * @tc.size: MEDIUM
2001 * @tc.type: FUNC
2002 * @tc.level Level 1
2003 * @tc.require: I79CSX
2004 */
2005 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0004, testing::ext::TestSize.Level1)
2006 {
2007 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
2008 EXPECT_NE(fileAccessHelper, nullptr);
2009 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin user_file_service_external_file_access_ScanFile_0004";
2010 try {
2011 vector<RootInfo> info;
2012 int result = fileAccessHelper->GetRoots(info);
2013 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2014 for (size_t i = 0; i < info.size(); i++) {
2015 Uri parentUri(info[i].uri);
2016 Uri newDirUriTest("");
2017 result = fileAccessHelper->Mkdir(parentUri, "scanfile0004", newDirUriTest);
2018 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2019 InitScanFile(newDirUriTest, "0004", fileAccessHelper);
2020 ScanFileFilter4(newDirUriTest, fileAccessHelper);
2021 result = fileAccessHelper->Delete(newDirUriTest);
2022 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2023 }
2024 } catch (...) {
2025 GTEST_LOG_(ERROR) << "user_file_service_external_file_access_ScanFile_0004 occurs an exception.";
2026 }
2027 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end user_file_service_external_file_access_ScanFile_0004";
2028 }
2029
ScanFileFilter5(Uri newDirUriTest,shared_ptr<FileAccessHelper> fileAccessHelper)2030 static void ScanFileFilter5(Uri newDirUriTest, shared_ptr<FileAccessHelper> fileAccessHelper)
2031 {
2032 FileInfo fileInfo;
2033 fileInfo.uri = newDirUriTest.ToString();
2034 int64_t offset = 0;
2035 int64_t maxCount = 1000;
2036 std::vector<FileInfo> fileInfoVec;
2037 FileFilter filter({".txt", ".docx"}, {"测试.txt", "测试.docx"}, {}, -1, -1, false, true);
2038 int result = fileAccessHelper->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
2039 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2040 EXPECT_EQ(fileInfoVec.size(), FILE_COUNT_4);
2041 }
2042
2043 /**
2044 * @tc.number: user_file_service_external_file_access_ScanFile_0005
2045 * @tc.name: external_file_access_ScanFile_0005
2046 * @tc.desc: Test function of ScanFile interface for SUCCESS, the filter is Chinese filename
2047 * @tc.size: MEDIUM
2048 * @tc.type: FUNC
2049 * @tc.level Level 1
2050 * @tc.require: I79CSX
2051 */
2052 HWTEST_F(FileExtensionHelperTest, external_file_access_ScanFile_0005, testing::ext::TestSize.Level1)
2053 {
2054 shared_ptr<FileAccessHelper> fileAccessHelper = FileExtensionHelperTest::GetFileAccessHelper();
2055 EXPECT_NE(fileAccessHelper, nullptr);
2056 GTEST_LOG_(INFO) << "FileExtensionHelperTest-begin user_file_service_external_file_access_ScanFile_0005";
2057 try {
2058 vector<RootInfo> info;
2059 int result = fileAccessHelper->GetRoots(info);
2060 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2061 for (size_t i = 0; i < info.size(); i++) {
2062 Uri parentUri(info[i].uri);
2063 Uri newDirUriTest("");
2064 result = fileAccessHelper->Mkdir(parentUri, "scanfile测试", newDirUriTest);
2065 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2066 InitScanFile(newDirUriTest, "测试", fileAccessHelper);
2067 ScanFileFilter5(newDirUriTest, fileAccessHelper);
2068 result = fileAccessHelper->Delete(newDirUriTest);
2069 EXPECT_EQ(result, OHOS::FileAccessFwk::ERR_OK);
2070 }
2071 } catch (...) {
2072 GTEST_LOG_(ERROR) << "user_file_service_external_file_access_ScanFile_0005 occurs an exception.";
2073 }
2074 GTEST_LOG_(INFO) << "FileExtensionHelperTest-end user_file_service_external_file_access_ScanFile_0005";
2075 }
2076 } // namespace
2077