• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022-2023 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 #define MLOG_TAG "FileExtUnitTest"
16 
17 #include "medialibrary_fileext_test.h"
18 
19 #include <regex>
20 
21 #include "file_asset.h"
22 #include "get_self_permissions.h"
23 #include "js_runtime.h"
24 #include "medialibrary_command.h"
25 #include "media_file_ext_ability.h"
26 #include "media_file_extention_utils.h"
27 #include "media_log.h"
28 #include "medialibrary_client_errno.h"
29 #include "medialibrary_db_const.h"
30 #include "medialibrary_errno.h"
31 #include "medialibrary_photo_operations.h"
32 #include "medialibrary_unittest_utils.h"
33 #include "scanner_utils.h"
34 #include "securec.h"
35 #include "uri.h"
36 #include "values_bucket.h"
37 
38 using namespace std;
39 using namespace OHOS;
40 using namespace testing::ext;
41 using namespace FileAccessFwk;
42 
43 namespace OHOS {
44 namespace Media {
45 namespace {
46     shared_ptr<FileAsset> g_pictures = nullptr;
47     shared_ptr<FileAsset> g_camera = nullptr;
48     shared_ptr<FileAsset> g_videos = nullptr;
49     shared_ptr<FileAsset> g_audios = nullptr;
50     shared_ptr<FileAsset> g_documents = nullptr;
51     shared_ptr<FileAsset> g_download = nullptr;
52     shared_ptr<MediaFileExtAbility> mediaFileExtAbility = nullptr;
53     const string DISTRIBUTED_PREFIX =
54         "datashare://1d3cb099659d53b3ee15faaab3c00a8ff983382ebc8b01aabde039ed084e167b/media/";
55     const string COMMON_PREFIX = "datashare:///media/";
56     const string ROOT_URI = "root";
57     const string COMMON_URI = "file/1";
58     const string INVALID_URI = "file/test";
59     const string INVALID_FILE_NAME = "te/st.jpg";
60     const string INVALID_DIR_NAME = "te/st";
61 
62     // Unordered set contains list supported audio formats
63     const std::unordered_set<std::string> SUPPORTED_AUDIO_FORMATS_SET {
64         AUDIO_CONTAINER_TYPE_AAC,
65         AUDIO_CONTAINER_TYPE_MP3,
66         AUDIO_CONTAINER_TYPE_FLAC,
67         AUDIO_CONTAINER_TYPE_WAV,
68         AUDIO_CONTAINER_TYPE_OGG,
69         AUDIO_CONTAINER_TYPE_M4A
70     };
71 
72     // Unordered set contains list supported video formats
73     const std::unordered_set<std::string> SUPPORTED_VIDEO_FORMATS_SET {
74         VIDEO_CONTAINER_TYPE_MP4,
75         VIDEO_CONTAINER_TYPE_3GP,
76         VIDEO_CONTAINER_TYPE_MPG,
77         VIDEO_CONTAINER_TYPE_MOV,
78         VIDEO_CONTAINER_TYPE_WEBM,
79         VIDEO_CONTAINER_TYPE_MKV,
80         VIDEO_CONTAINER_TYPE_H264,
81         VIDEO_CONTAINER_TYPE_MPEG,
82         VIDEO_CONTAINER_TYPE_TS,
83         VIDEO_CONTAINER_TYPE_M4V,
84         VIDEO_CONTAINER_TYPE_3G2
85     };
86 
87     // Unordered set contains list supported image formats
88     const std::unordered_set<std::string> SUPPORTED_IMAGE_FORMATS_SET {
89         IMAGE_CONTAINER_TYPE_BMP,
90         IMAGE_CONTAINER_TYPE_BM,
91         IMAGE_CONTAINER_TYPE_GIF,
92         IMAGE_CONTAINER_TYPE_JPG,
93         IMAGE_CONTAINER_TYPE_JPEG,
94         IMAGE_CONTAINER_TYPE_JPE,
95         IMAGE_CONTAINER_TYPE_PNG,
96         IMAGE_CONTAINER_TYPE_WEBP,
97         IMAGE_CONTAINER_TYPE_RAW,
98         IMAGE_CONTAINER_TYPE_SVG,
99         IMAGE_CONTAINER_TYPE_HEIF
100     };
101 } // namespace
102 
103 class ArkJsRuntime : public AbilityRuntime::JsRuntime {
104 public:
ArkJsRuntime()105     ArkJsRuntime() {};
106 
~ArkJsRuntime()107     ~ArkJsRuntime() {};
108 
StartDebugMode(const DebugOption debugOption)109     void StartDebugMode(const DebugOption debugOption) {};
FinishPreload()110     void FinishPreload() {};
LoadRepairPatch(const string & patchFile,const string & baseFile)111     bool LoadRepairPatch(const string& patchFile, const string& baseFile)
112     {
113         return true;
114     };
NotifyHotReloadPage()115     bool NotifyHotReloadPage()
116     {
117         return true;
118     };
UnLoadRepairPatch(const string & patchFile)119     bool UnLoadRepairPatch(const string& patchFile)
120     {
121         return true;
122     };
RunScript(const string & path,const string & hapPath,bool useCommonChunk=false)123     bool RunScript(const string& path, const string& hapPath, bool useCommonChunk = false)
124     {
125         return true;
126     };
127 };
128 
SetUpTestCase(void)129 void MediaLibraryFileExtUnitTest::SetUpTestCase(void)
130 {
131     MediaLibraryUnitTestUtils::Init();
132 
133     ArkJsRuntime runtime;
134     mediaFileExtAbility = make_shared<MediaFileExtAbility>(runtime);
135 
136     vector<string> perms = { "ohos.permission.MEDIA_LOCATION" };
137     uint64_t tokenId = 0;
138     PermissionUtilsUnitTest::SetAccessTokenPermission("MediaLibraryFileExtUnitTest", perms, tokenId);
139     ASSERT_TRUE(tokenId != 0);
140 }
141 
TearDownTestCase(void)142 void MediaLibraryFileExtUnitTest::TearDownTestCase(void)
143 {
144     MEDIA_ERR_LOG("TearDownTestCase start");
145     if (mediaFileExtAbility != nullptr) {
146         mediaFileExtAbility = nullptr;
147     }
148     MEDIA_INFO_LOG("TearDownTestCase end");
149 }
150 
SetUp()151 void MediaLibraryFileExtUnitTest::SetUp()
152 {
153     MediaLibraryUnitTestUtils::CleanTestFiles();
154     MediaLibraryUnitTestUtils::InitRootDirs();
155     g_pictures = MediaLibraryUnitTestUtils::GetRootAsset(TEST_PICTURES);
156     g_camera = MediaLibraryUnitTestUtils::GetRootAsset(TEST_CAMERA);
157     g_videos = MediaLibraryUnitTestUtils::GetRootAsset(TEST_VIDEOS);
158     g_audios =  MediaLibraryUnitTestUtils::GetRootAsset(TEST_AUDIOS);
159     g_documents =  MediaLibraryUnitTestUtils::GetRootAsset(TEST_DOCUMENTS);
160     g_download = MediaLibraryUnitTestUtils::GetRootAsset(TEST_DOWNLOAD);
161 }
162 
TearDown(void)163 void MediaLibraryFileExtUnitTest::TearDown(void) {}
164 
ReturnUri(string prefixType,string uriType,string subUri="")165 string ReturnUri(string prefixType, string uriType, string subUri = "")
166 {
167     return (prefixType + uriType + subUri);
168 }
169 
170 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_OpenFile_test_001, TestSize.Level0)
171 {
172     if (!MediaLibraryUnitTestUtils::IsValid()) {
173         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
174         exit(1);
175     }
176     Uri fileAsset("");
177     shared_ptr<FileAsset> albumAsset = nullptr;
178     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("CreateFile_test_001", g_documents, albumAsset), true);
179     Uri parentUri(albumAsset->GetUri());
180     ASSERT_EQ(mediaFileExtAbility->CreateFile(parentUri, "OpenFile_test_001.jpg", fileAsset), E_SUCCESS);
181     int fd = -1;
182     auto ret = mediaFileExtAbility->OpenFile(fileAsset, O_RDWR, fd);
183     MEDIA_DEBUG_LOG("medialib_OpenFile_test_001 fileAsset: %{public}s, fd: %{public}d",
184         fileAsset.ToString().c_str(), fd);
185     EXPECT_EQ(ret == E_SUCCESS, true);
186     if (ret == E_SUCCESS) {
187         char str[] = "Hello World!";
188         int size_written = -1, size_read = -1, strLen = strlen(str);
189         size_written = write(fd, str, strLen);
190         if (size_written == -1) {
191             MEDIA_DEBUG_LOG("medialib_OpenFile_test_001 write errno: %{public}d, errmsg: %{public}s",
192                 errno, strerror(errno));
193         }
194         EXPECT_EQ(size_written, strLen);
195         memset_s(str, sizeof(str), 0, sizeof(str));
196         lseek(fd, 0, SEEK_SET);
197         size_read = read(fd, str, strLen);
198         if (size_read == -1) {
199             MEDIA_DEBUG_LOG("medialib_OpenFile_test_001 read errno: %{public}d, errmsg: %{public}s",
200                 errno, strerror(errno));
201         }
202         EXPECT_EQ(size_read, strLen);
203         MEDIA_DEBUG_LOG("medialib_OpenFile_test_001 size_written: %{public}d, size_read: %{public}d",
204             size_written, size_read);
205     } else {
206         MEDIA_DEBUG_LOG("medialib_OpenFile_test_001 OpenFile errno: %{public}d, errmsg: %{public}s",
207             errno, strerror(errno));
208     }
209 }
210 
211 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_OpenFile_test_002, TestSize.Level0)
212 {
213     if (!MediaLibraryUnitTestUtils::IsValid()) {
214         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
215         exit(1);
216     }
217     Uri uri(g_documents->GetUri());
218     MEDIA_DEBUG_LOG("medialib_OpenFile_test_002 uri %{public}s", uri.ToString().c_str());
219     int fd = -1;
220     auto ret = mediaFileExtAbility->OpenFile(uri, O_RDWR, fd);
221     if (ret == JS_INNER_FAIL) {
222         MEDIA_DEBUG_LOG("medialib_OpenFile_test_002 OpenFile errno: %{public}d, errmsg: %{public}s",
223             errno, strerror(errno));
224     }
225     EXPECT_EQ(ret, JS_INNER_FAIL);
226 }
227 
228 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_CreateFile_test_001, TestSize.Level0)
229 {
230     MEDIA_DEBUG_LOG("medialib_CreateFile_test_001::Start");
231     if (!MediaLibraryUnitTestUtils::IsValid()) {
232         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
233         exit(1);
234     }
235     shared_ptr<FileAsset> albumAsset = nullptr;
236     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("CreateFile_test_001", g_documents, albumAsset), true);
237     Uri parentUri(albumAsset->GetUri());
238     Uri newUri("");
239     string displayName = "CreateFile001.jpg";
240     string filePath = albumAsset->GetPath() + "/" + displayName;
241     MEDIA_DEBUG_LOG("parentUri: %{private}s, displayName: %{public}s, filePath: %{private}s",
242         parentUri.ToString().c_str(), displayName.c_str(), filePath.c_str());
243     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(filePath), false);
244     int32_t ret = mediaFileExtAbility->CreateFile(parentUri, displayName, newUri);
245     EXPECT_EQ(ret, E_SUCCESS);
246     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(filePath), true);
247     MEDIA_DEBUG_LOG("ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
248     MEDIA_DEBUG_LOG("medialib_CreateFile_test_001::End");
249 }
250 
251 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_CreateFile_test_002, TestSize.Level0)
252 {
253     MEDIA_DEBUG_LOG("medialib_CreateFile_test_002::Start");
254     if (!MediaLibraryUnitTestUtils::IsValid()) {
255         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
256         exit(1);
257     }
258     shared_ptr<FileAsset> albumAsset = nullptr;
259     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("CreateFile_test_002", g_documents, albumAsset), true);
260     Uri parentUri(albumAsset->GetUri());
261     Uri newUri("");
262     string displayName = INVALID_FILE_NAME;
263     MEDIA_DEBUG_LOG("parentUri: %{public}s, displayName: %{public}s",
264         parentUri.ToString().c_str(), displayName.c_str());
265     int32_t ret = mediaFileExtAbility->CreateFile(parentUri, displayName, newUri);
266     EXPECT_EQ(ret, JS_E_DISPLAYNAME);
267     MEDIA_DEBUG_LOG("ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
268     MEDIA_DEBUG_LOG("medialib_CreateFile_test_002::End");
269 }
270 
271 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_CreateFile_test_003, TestSize.Level0)
272 {
273     MEDIA_DEBUG_LOG("medialib_CreateFile_test_003::Start");
274     if (!MediaLibraryUnitTestUtils::IsValid()) {
275         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
276         exit(1);
277     }
278     Uri parentUri(ReturnUri(COMMON_PREFIX, INVALID_URI));
279     Uri newUri("");
280     string displayName = "CreateFile001.jpg";
281     MEDIA_DEBUG_LOG("parentUri: %{public}s, displayName: %{public}s",
282         parentUri.ToString().c_str(), displayName.c_str());
283     int32_t ret = mediaFileExtAbility->CreateFile(parentUri, displayName, newUri);
284     EXPECT_EQ(ret, JS_E_URI);
285     MEDIA_DEBUG_LOG("ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
286     MEDIA_DEBUG_LOG("medialib_CreateFile_test_003::End");
287 }
288 
289 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_CreateFile_test_004, TestSize.Level0)
290 {
291     MEDIA_DEBUG_LOG("medialib_CreateFile_test_004::Start");
292     if (!MediaLibraryUnitTestUtils::IsValid()) {
293         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
294         exit(1);
295     }
296     Uri parentUri(ReturnUri(DISTRIBUTED_PREFIX, COMMON_URI));
297     Uri newUri("");
298     string displayName = "CreateFile001.jpg";
299     MEDIA_DEBUG_LOG("parentUri: %{public}s, displayName: %{public}s",
300         parentUri.ToString().c_str(), displayName.c_str());
301     int32_t ret = mediaFileExtAbility->CreateFile(parentUri, displayName, newUri);
302     EXPECT_EQ(ret, JS_E_URI);
303     MEDIA_DEBUG_LOG("ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
304     MEDIA_DEBUG_LOG("medialib_CreateFile_test_004::End");
305 }
306 
307 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_CreateFile_test_005, TestSize.Level0)
308 {
309     MEDIA_DEBUG_LOG("medialib_CreateFile_test_005::Start");
310     if (!MediaLibraryUnitTestUtils::IsValid()) {
311         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
312         exit(1);
313     }
314     shared_ptr<FileAsset> albumAsset = nullptr;
315     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("CreateFile_test_005", g_documents, albumAsset), true);
316     shared_ptr<FileAsset> fileAsset = nullptr;
317     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("CreateFile_test_005.jpg", albumAsset, fileAsset), true);
318     Uri parentUri(albumAsset->GetUri());
319     Uri newUri("");
320     string displayName = "CreateFile_test_005.jpg";
321     MEDIA_DEBUG_LOG("parentUri: %{public}s, displayName: %{public}s",
322         parentUri.ToString().c_str(), displayName.c_str());
323     int32_t ret = mediaFileExtAbility->CreateFile(parentUri, displayName, newUri);
324     EXPECT_EQ(ret, JS_ERR_FILE_EXIST);
325     MEDIA_DEBUG_LOG("ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
326     MEDIA_DEBUG_LOG("medialib_CreateFile_test_005::End");
327 }
328 
329 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_001, TestSize.Level0)
330 {
331     if (!MediaLibraryUnitTestUtils::IsValid()) {
332         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
333         exit(1);
334     }
335     auto audioAsset = MediaLibraryUnitTestUtils::GetRootAsset(TEST_AUDIOS);
336     MEDIA_DEBUG_LOG("medialib_Mkdir_test_001 delete audios start, uri: %{public}s", audioAsset->GetUri().c_str());
337     ASSERT_EQ(MediaLibraryUnitTestUtils::DeleteDir(audioAsset->GetPath(), to_string(audioAsset->GetId())), true);
338     Uri parentUri(ReturnUri(COMMON_PREFIX, ROOT_URI, MEDIALIBRARY_TYPE_FILE_URI));
339     string displayName = "Documents";
340     string dirPath = ROOT_MEDIA_DIR + displayName;
341     MEDIA_DEBUG_LOG("medialib_Mkdir_test_001 parentUri: %{public}s, displayName: %{public}s",
342         parentUri.ToString().c_str(), displayName.c_str());
343     Uri newUri("");
344     int32_t ret = mediaFileExtAbility->Mkdir(parentUri, displayName, newUri);
345     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(dirPath), true);
346     MEDIA_DEBUG_LOG("medialib_Mkdir_test_001 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
347 }
348 
349 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_002, TestSize.Level0)
350 {
351     if (!MediaLibraryUnitTestUtils::IsValid()) {
352         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
353         exit(1);
354     }
355     Uri parentUri(ReturnUri(DISTRIBUTED_PREFIX, ROOT_URI, MEDIALIBRARY_TYPE_FILE_URI));
356     string displayName = "Mkdir_test_002";
357     MEDIA_DEBUG_LOG("medialib_Mkdir_test_002 parentUri: %{public}s, displayName: %{public}s",
358         parentUri.ToString().c_str(), displayName.c_str());
359     Uri newUri("");
360     int32_t ret = mediaFileExtAbility->Mkdir(parentUri, displayName, newUri);
361     EXPECT_EQ(ret, JS_E_URI);
362     MEDIA_DEBUG_LOG("medialib_Mkdir_test_002 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
363 }
364 
365 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_003, TestSize.Level0)
366 {
367     if (!MediaLibraryUnitTestUtils::IsValid()) {
368         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
369         exit(1);
370     }
371     Uri parentUri(ReturnUri(COMMON_PREFIX, ROOT_URI, MEDIALIBRARY_TYPE_FILE_URI));
372     string displayName = "Mkdir_test_003";
373     MEDIA_DEBUG_LOG("medialib_Mkdir_test_003 parentUri: %{public}s, displayName: %{public}s",
374         parentUri.ToString().c_str(), displayName.c_str());
375     Uri newUri("");
376     int32_t ret = mediaFileExtAbility->Mkdir(parentUri, displayName, newUri);
377     EXPECT_EQ(ret, JS_E_DISPLAYNAME);
378     MEDIA_DEBUG_LOG("medialib_Mkdir_test_003 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
379 }
380 
381 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_004, TestSize.Level0)
382 {
383     if (!MediaLibraryUnitTestUtils::IsValid()) {
384         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
385         exit(1);
386     }
387     Uri parentUri(g_download->GetUri());
388     string displayName = "Mkdir_test_004";
389     string dirPath = g_download->GetPath() + "/" + displayName;
390     MEDIA_DEBUG_LOG("medialib_Mkdir_test_004 parentUri: %{public}s, displayName: %{public}s",
391         parentUri.ToString().c_str(), displayName.c_str());
392     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(dirPath), false);
393     Uri newUri("");
394     int32_t ret = mediaFileExtAbility->Mkdir(parentUri, displayName, newUri);
395     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(dirPath), true);
396     MEDIA_DEBUG_LOG("medialib_Mkdir_test_004 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
397 }
398 
399 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_005, TestSize.Level0)
400 {
401     if (!MediaLibraryUnitTestUtils::IsValid()) {
402         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
403         exit(1);
404     }
405     Uri parentUri(ReturnUri(COMMON_PREFIX, INVALID_URI));
406     string displayName = "Mkdir_test_005";
407     MEDIA_DEBUG_LOG("medialib_Mkdir_test_005 parentUri: %{public}s, displayName: %{public}s",
408         parentUri.ToString().c_str(), displayName.c_str());
409     Uri newUri("");
410     int32_t ret = mediaFileExtAbility->Mkdir(parentUri, displayName, newUri);
411     EXPECT_EQ(ret, JS_E_URI);
412     MEDIA_DEBUG_LOG("medialib_Mkdir_test_005 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
413 }
414 
415 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_006, TestSize.Level0)
416 {
417     if (!MediaLibraryUnitTestUtils::IsValid()) {
418         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
419         exit(1);
420     }
421     Uri parentUri(ReturnUri(DISTRIBUTED_PREFIX, COMMON_URI));
422     string displayName = "Mkdir_test_006";
423     MEDIA_DEBUG_LOG("medialib_Mkdir_test_006 parentUri: %{public}s, displayName: %{public}s",
424         parentUri.ToString().c_str(), displayName.c_str());
425     Uri newUri("");
426     int32_t ret = mediaFileExtAbility->Mkdir(parentUri, displayName, newUri);
427     EXPECT_EQ(ret, JS_E_URI);
428     MEDIA_DEBUG_LOG("medialib_Mkdir_test_006 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
429 }
430 
431 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_007, TestSize.Level0)
432 {
433     if (!MediaLibraryUnitTestUtils::IsValid()) {
434         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
435         exit(1);
436     }
437     Uri parentUri(g_download->GetUri());
438     string displayName = INVALID_DIR_NAME;
439     MEDIA_DEBUG_LOG("medialib_Mkdir_test_007 parentUri: %{public}s, displayName: %{public}s",
440         parentUri.ToString().c_str(), displayName.c_str());
441     Uri newUri("");
442     int32_t ret = mediaFileExtAbility->Mkdir(parentUri, displayName, newUri);
443     EXPECT_EQ(ret, JS_E_DISPLAYNAME);
444     MEDIA_DEBUG_LOG("medialib_Mkdir_test_007 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
445 }
446 
447 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_008, TestSize.Level0)
448 {
449     if (!MediaLibraryUnitTestUtils::IsValid()) {
450         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
451         exit(1);
452     }
453     shared_ptr<FileAsset> albumAsset = nullptr;
454     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Mkdir_test_008", g_download, albumAsset), true);
455     Uri parentUri(g_download->GetUri());
456     string displayName = "Mkdir_test_008";
457     MEDIA_DEBUG_LOG("medialib_Mkdir_test_008 parentUri: %{public}s, displayName: %{public}s",
458         parentUri.ToString().c_str(), displayName.c_str());
459     Uri newUri("");
460     int32_t ret = mediaFileExtAbility->Mkdir(parentUri, displayName, newUri);
461     EXPECT_EQ(ret, JS_ERR_FILE_EXIST);
462     MEDIA_DEBUG_LOG("medialib_Mkdir_test_008 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
463 }
464 
465 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Mkdir_test_009, TestSize.Level0)
466 {
467     if (!MediaLibraryUnitTestUtils::IsValid()) {
468         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
469         exit(1);
470     }
471     Uri parentUri(g_camera->GetUri());
472     string displayName = "test";
473     Uri newUri("");
474     int32_t ret = MediaFileExtentionUtils::Mkdir(parentUri, displayName, newUri);
475     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
476     Uri parentUriTest(g_videos->GetUri());
477     ret = MediaFileExtentionUtils::Mkdir(parentUriTest, displayName, newUri);
478     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
479     Uri parentUriOne(g_pictures->GetUri());
480     ret = MediaFileExtentionUtils::Mkdir(parentUriOne, displayName, newUri);
481     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
482     Uri parentUriTwo(g_audios->GetUri());
483     ret = MediaFileExtentionUtils::Mkdir(parentUriTwo, displayName, newUri);
484     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
485     Uri parentUriThree(g_documents->GetUri());
486     ret = MediaFileExtentionUtils::Mkdir(parentUriThree, displayName, newUri);
487     EXPECT_GT(ret, E_SUCCESS);
488     Uri parentUriFour(g_download->GetUri());
489     ret = MediaFileExtentionUtils::Mkdir(parentUriFour, displayName, newUri);
490     EXPECT_GT(ret, E_SUCCESS);
491 }
492 
493 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Delete_test_001, TestSize.Level0)
494 {
495     if (!MediaLibraryUnitTestUtils::IsValid()) {
496         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
497         exit(1);
498     }
499     shared_ptr<FileAsset> albumAsset = nullptr;
500     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Delete_test_001", g_documents, albumAsset), true);
501     shared_ptr<FileAsset> fileAsset = nullptr;
502     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Delete_test_001.jpg", albumAsset, fileAsset), true);
503     Uri sourceUri(fileAsset->GetUri());
504     MEDIA_DEBUG_LOG("medialib_Delete_test_001 sourceUri %{public}s", sourceUri.ToString().c_str());
505     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(fileAsset->GetPath()), true);
506     int32_t ret = mediaFileExtAbility->Delete(sourceUri);
507     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(fileAsset->GetPath()), false);
508     MEDIA_DEBUG_LOG("medialib_Delete_test_001 ret: %{public}d", ret);
509 }
510 
511 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Delete_test_002, TestSize.Level0)
512 {
513     if (!MediaLibraryUnitTestUtils::IsValid()) {
514         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
515         exit(1);
516     }
517     Uri sourceUri(ReturnUri(DISTRIBUTED_PREFIX, COMMON_URI));
518     MEDIA_DEBUG_LOG("medialib_Delete_test_002 sourceUri %{public}s", sourceUri.ToString().c_str());
519     int32_t ret = mediaFileExtAbility->Delete(sourceUri);
520     EXPECT_EQ(ret, JS_E_URI);
521     MEDIA_DEBUG_LOG("medialib_Delete_test_002 ret: %{public}d", ret);
522 }
523 
524 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Delete_test_003, TestSize.Level0)
525 {
526     if (!MediaLibraryUnitTestUtils::IsValid()) {
527         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
528         exit(1);
529     }
530     shared_ptr<FileAsset> albumAsset = nullptr;
531     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Delete_test_001", g_pictures, albumAsset), true);
532     shared_ptr<FileAsset> fileAsset = nullptr;
533     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Delete_test_001.jpg", albumAsset, fileAsset), true);
534     Uri sourceUri(fileAsset->GetUri());
535     int32_t ret = MediaFileExtentionUtils::Delete(sourceUri);
536     EXPECT_EQ(ret, E_URI_INVALID);
537     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Delete_test_001.jpg", g_documents, fileAsset), true);
538     Uri sourceUriOne(fileAsset->GetUri());
539     ret = MediaFileExtentionUtils::Delete(sourceUriOne);
540     EXPECT_GT(ret, E_SUCCESS);
541     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Delete_test_001.jpg", g_download, fileAsset), true);
542     Uri sourceUriTwo(fileAsset->GetUri());
543     ret = MediaFileExtentionUtils::Delete(sourceUriTwo);
544     EXPECT_GT(ret, E_SUCCESS);
545     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Delete_test_001.jpg", g_camera, fileAsset), true);
546     Uri sourceUriThree(fileAsset->GetUri());
547     ret = MediaFileExtentionUtils::Delete(sourceUriThree);
548     EXPECT_EQ(ret, E_URI_INVALID);
549     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Delete_test_001.mp4", g_videos, fileAsset), true);
550     Uri sourceUriFour(fileAsset->GetUri());
551     ret = MediaFileExtentionUtils::Delete(sourceUriFour);
552     EXPECT_EQ(ret, E_URI_INVALID);
553     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Delete_test_001.mp3", g_audios, fileAsset), true);
554     Uri sourceUriFive(fileAsset->GetUri());
555     ret = MediaFileExtentionUtils::Delete(sourceUriFive);
556     EXPECT_EQ(ret, E_URI_INVALID);
557 }
558 
559 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_001, TestSize.Level0)
560 {
561     if (!MediaLibraryUnitTestUtils::IsValid()) {
562         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
563         exit(1);
564     }
565     shared_ptr<FileAsset> srcAlbumAsset = nullptr;
566     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_001", g_download, srcAlbumAsset), true);
567     shared_ptr<FileAsset> destAlbumAsset = nullptr;
568     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_001_dst", g_download, destAlbumAsset), true);
569     shared_ptr<FileAsset> fileAsset = nullptr;
570     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Move_test_001.jpg", srcAlbumAsset, fileAsset), true);
571     Uri sourceUri(fileAsset->GetUri());
572     Uri targetUri(destAlbumAsset->GetUri());
573     Uri newUri("");
574     MEDIA_DEBUG_LOG("medialib_Move_test_001 sourceUri: %{public}s, targetUri: %{public}s",
575         sourceUri.ToString().c_str(), targetUri.ToString().c_str());
576     string srcPath = fileAsset->GetPath();
577     string displayName = fileAsset->GetDisplayName();
578     string targetPath = destAlbumAsset->GetPath() + "/" + displayName;
579     MEDIA_DEBUG_LOG("medialib_Move_test_001 srcPath: %{private}s, targetPath: %{private}s",
580         srcPath.c_str(), targetPath.c_str());
581     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(srcPath), true);
582     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(targetPath), false);
583     int32_t ret = mediaFileExtAbility->Move(sourceUri, targetUri, newUri);
584     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(srcPath), false);
585     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(targetPath), true);
586     MEDIA_DEBUG_LOG("medialib_Move_test_001 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
587 }
588 
589 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_002, TestSize.Level0)
590 {
591     if (!MediaLibraryUnitTestUtils::IsValid()) {
592         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
593         exit(1);
594     }
595     shared_ptr<FileAsset> srcAlbumAsset = nullptr;
596     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002", g_documents, srcAlbumAsset), true);
597     shared_ptr<FileAsset> fileAsset = nullptr;
598     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Move_test_002.jpg", srcAlbumAsset, fileAsset), true);
599     shared_ptr<FileAsset> destAlbumAsset = nullptr;
600     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002_dest", g_download, destAlbumAsset), true);
601     Uri sourceUri(srcAlbumAsset->GetUri());
602     Uri targetUri(destAlbumAsset->GetUri());
603     Uri newUri("");
604     MEDIA_DEBUG_LOG("medialib_Move_test_002 sourceUri: %{public}s, targetUri: %{public}s",
605         sourceUri.ToString().c_str(), targetUri.ToString().c_str());
606     string srcPath = srcAlbumAsset->GetPath();
607     string displayName = srcAlbumAsset->GetDisplayName();
608     string targetPath = destAlbumAsset->GetPath() + "/" + displayName;
609     MEDIA_DEBUG_LOG("medialib_Move_test_002 srcPath: %{private}s, targetPath: %{private}s",
610         srcPath.c_str(), targetPath.c_str());
611     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(srcPath), true);
612     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(targetPath), false);
613     int32_t ret = mediaFileExtAbility->Move(sourceUri, targetUri, newUri);
614     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(srcPath), false);
615     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(targetPath), true);
616     MEDIA_DEBUG_LOG("medialib_Move_test_002 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
617 }
618 
619 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_003, TestSize.Level0)
620 {
621     if (!MediaLibraryUnitTestUtils::IsValid()) {
622         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
623         exit(1);
624     }
625     shared_ptr<FileAsset> fileAsset = nullptr;
626     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Move_test_003.jpg", g_download, fileAsset), true);
627     Uri sourceUri(fileAsset->GetUri());
628     Uri targetUri(ReturnUri(COMMON_PREFIX, INVALID_URI));
629     Uri newUri("");
630     MEDIA_DEBUG_LOG("medialib_Move_test_003 sourceUri: %{public}s, targetUri: %{public}s",
631         sourceUri.ToString().c_str(), targetUri.ToString().c_str());
632     int32_t ret = mediaFileExtAbility->Move(sourceUri, targetUri, newUri);
633     EXPECT_EQ(ret, JS_E_URI);
634     MEDIA_DEBUG_LOG("medialib_Move_test_003 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
635 }
636 
637 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_004, TestSize.Level0)
638 {
639     if (!MediaLibraryUnitTestUtils::IsValid()) {
640         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
641         exit(1);
642     }
643     shared_ptr<FileAsset> fileAsset = nullptr;
644     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Move_test_004.jpg", g_download, fileAsset), true);
645     Uri sourceUri(fileAsset->GetUri());
646     Uri targetUri(ReturnUri(DISTRIBUTED_PREFIX, COMMON_URI));
647     Uri newUri("");
648     MEDIA_DEBUG_LOG("medialib_Move_test_004 sourceUri: %{public}s, targetUri: %{public}s",
649         sourceUri.ToString().c_str(), targetUri.ToString().c_str());
650     int32_t ret = mediaFileExtAbility->Move(sourceUri, targetUri, newUri);
651     EXPECT_EQ(ret, JS_E_URI);
652     MEDIA_DEBUG_LOG("medialib_Move_test_004 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
653 }
654 
655 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_005, TestSize.Level0)
656 {
657     if (!MediaLibraryUnitTestUtils::IsValid()) {
658         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
659         exit(1);
660     }
661     shared_ptr<FileAsset> albumAsset = nullptr;
662     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_005_dest", g_download, albumAsset), true);
663     Uri sourceUri(ReturnUri(COMMON_PREFIX, INVALID_URI));
664     Uri targetUri(albumAsset->GetUri());
665     Uri newUri("");
666     MEDIA_DEBUG_LOG("medialib_Move_test_005 sourceUri: %{public}s, targetUri: %{public}s",
667         sourceUri.ToString().c_str(), targetUri.ToString().c_str());
668     int32_t ret = mediaFileExtAbility->Move(sourceUri, targetUri, newUri);
669     EXPECT_EQ(ret, JS_E_URI);
670     MEDIA_DEBUG_LOG("medialib_Move_test_005 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
671 }
672 
673 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_006, TestSize.Level0)
674 {
675     if (!MediaLibraryUnitTestUtils::IsValid()) {
676         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
677         exit(1);
678     }
679     shared_ptr<FileAsset> albumAsset = nullptr;
680     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_006_dest", g_download, albumAsset), true);
681     Uri sourceUri(ReturnUri(DISTRIBUTED_PREFIX, COMMON_URI));
682     Uri targetUri(albumAsset->GetUri());
683     Uri newUri("");
684     MEDIA_DEBUG_LOG("medialib_Move_test_006 sourceUri: %{public}s, targetUri: %{public}s",
685         sourceUri.ToString().c_str(), targetUri.ToString().c_str());
686     int32_t ret = mediaFileExtAbility->Move(sourceUri, targetUri, newUri);
687     EXPECT_EQ(ret, JS_E_URI);
688     MEDIA_DEBUG_LOG("medialib_Move_test_006 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
689 }
690 
691 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_007, TestSize.Level0)
692 {
693     if (!MediaLibraryUnitTestUtils::IsValid()) {
694         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
695         exit(1);
696     }
697     shared_ptr<FileAsset> fileAsset = nullptr;
698     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Move_test_007.jpg", g_download, fileAsset), true);
699     shared_ptr<FileAsset> albumAsset = nullptr;
700     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_007_dest", g_download, albumAsset), true);
701     shared_ptr<FileAsset> tempFileAsset = nullptr;
702     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Move_test_007.jpg", albumAsset, tempFileAsset), true);
703     Uri sourceUri(fileAsset->GetUri());
704     Uri targetUri(albumAsset->GetUri());
705     Uri newUri("");
706     MEDIA_DEBUG_LOG("medialib_Move_test_007 sourceUri: %{public}s, targetUri: %{public}s",
707         sourceUri.ToString().c_str(), targetUri.ToString().c_str());
708     int32_t ret = mediaFileExtAbility->Move(sourceUri, targetUri, newUri);
709     EXPECT_EQ(ret, JS_ERR_FILE_EXIST);
710     MEDIA_DEBUG_LOG("medialib_Move_test_007 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
711 }
712 
713 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_008, TestSize.Level0)
714 {
715     if (!MediaLibraryUnitTestUtils::IsValid()) {
716         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
717         exit(1);
718     }
719     if (g_documents == nullptr) {
720         MEDIA_ERR_LOG("g_documents == nullptr");
721         EXPECT_EQ(true, false);
722         return;
723     }
724     shared_ptr<FileAsset> fileAsset = nullptr;
725     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Move_test_008.jpg", g_download, fileAsset), true);
726     Uri sourceUri(fileAsset->GetUri());
727     Uri targetUri(g_documents->GetUri());
728     MEDIA_DEBUG_LOG("medialib_Move_test_008 sourceUri: %{public}s, targetUri: %{public}s",
729         sourceUri.ToString().c_str(), targetUri.ToString().c_str());
730     Uri newUri("");
731     string srcPath = fileAsset->GetPath();
732     string displayName = fileAsset->GetDisplayName();
733     string targetPath = g_documents->GetPath() + "/" + displayName;
734     MEDIA_DEBUG_LOG("medialib_Move_test_008 srcPath: %{private}s, targetPath: %{private}s",
735         srcPath.c_str(), targetPath.c_str());
736     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(srcPath), true);
737     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(targetPath), false);
738     int32_t ret = mediaFileExtAbility->Move(sourceUri, targetUri, newUri);
739     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(srcPath), false);
740     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(targetPath), true);
741     MEDIA_DEBUG_LOG("medialib_Move_test_008 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
742 }
743 
744 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Move_test_009, TestSize.Level0)
745 {
746     if (!MediaLibraryUnitTestUtils::IsValid()) {
747         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
748         exit(1);
749     }
750     shared_ptr<FileAsset> srcAlbumAsset = nullptr;
751     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002", g_pictures, srcAlbumAsset), true);
752     shared_ptr<FileAsset> fileAsset = nullptr;
753     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Move_test_002.jpg", srcAlbumAsset, fileAsset), true);
754     shared_ptr<FileAsset> destAlbumAsset = nullptr;
755     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002_dest", g_pictures, destAlbumAsset), true);
756     Uri sourceUri(srcAlbumAsset->GetUri());
757     Uri targetUri(destAlbumAsset->GetUri());
758     Uri newUri("");
759     int32_t ret = MediaFileExtentionUtils::Move(sourceUri, targetUri, newUri);
760     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
761     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002_dest", g_camera, destAlbumAsset), true);
762     Uri targetUriOne(destAlbumAsset->GetUri());
763     ret = MediaFileExtentionUtils::Move(sourceUri, targetUriOne, newUri);
764     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
765     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002_dest", g_videos, destAlbumAsset), true);
766     Uri targetUriTwo(destAlbumAsset->GetUri());
767     ret = MediaFileExtentionUtils::Move(sourceUri, targetUriTwo, newUri);
768     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
769     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002_dest", g_audios, destAlbumAsset), true);
770     Uri targetUriThree(destAlbumAsset->GetUri());
771     ret = MediaFileExtentionUtils::Move(sourceUri, targetUriThree, newUri);
772     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
773     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002_dest", g_documents, destAlbumAsset), true);
774     Uri targetUriFour(destAlbumAsset->GetUri());
775     ret = MediaFileExtentionUtils::Move(sourceUri, targetUriFour, newUri);
776     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
777     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Move_test_002_dest", g_download, destAlbumAsset), true);
778     Uri targetUriFive(destAlbumAsset->GetUri());
779     ret = MediaFileExtentionUtils::Move(sourceUri, targetUriFive, newUri);
780     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
781 }
782 
783 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_001, TestSize.Level0)
784 {
785     if (!MediaLibraryUnitTestUtils::IsValid()) {
786         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
787         exit(1);
788     }
789     shared_ptr<FileAsset> fileAsset = nullptr;
790     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Rename_test_001.jpg", g_documents, fileAsset), true);
791     Uri sourceUri(fileAsset->GetUri());
792     Uri newUri("");
793     string displayName = "new_Rename_test_001.jpg";
794     MEDIA_DEBUG_LOG("medialib_Rename_test_001 sourceUri: %{public}s, displayName: %{public}s",
795         sourceUri.ToString().c_str(), displayName.c_str());
796     string oldPath = fileAsset->GetPath();
797     string newPath = oldPath.substr(0, oldPath.rfind('/')) + "/" + displayName;
798     MEDIA_DEBUG_LOG("medialib_Rename_test_001 oldPath: %{private}s, newPath: %{private}s",
799         oldPath.c_str(), newPath.c_str());
800     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(oldPath), true);
801     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(newPath), false);
802     int32_t ret = mediaFileExtAbility->Rename(sourceUri, displayName, newUri);
803     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(oldPath), false);
804     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(newPath), true);
805     MEDIA_DEBUG_LOG("medialib_Rename_test_001 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
806 }
807 
808 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_002, TestSize.Level0)
809 {
810     if (!MediaLibraryUnitTestUtils::IsValid()) {
811         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
812         exit(1);
813     }
814     shared_ptr<FileAsset> albumAsset = nullptr;
815     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("Rename_test_002", g_documents, albumAsset), true);
816     shared_ptr<FileAsset> fileAsset = nullptr;
817     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Rename_test_002.jpg", g_documents, fileAsset), true);
818     Uri sourceUri(albumAsset->GetUri());
819     Uri newUri("");
820     string displayName = "new_Rename_test_002.png";
821     MEDIA_DEBUG_LOG("medialib_Rename_test_002 sourceUri: %{public}s, displayName: %{public}s",
822         sourceUri.ToString().c_str(), displayName.c_str());
823     string oldPath = albumAsset->GetPath();
824     string newPath = oldPath.substr(0, oldPath.rfind('/')) + "/" + displayName;
825     MEDIA_DEBUG_LOG("medialib_Rename_test_002 oldPath: %{private}s, newPath: %{private}s",
826         oldPath.c_str(), newPath.c_str());
827     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(oldPath), true);
828     EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(newPath), false);
829     int32_t ret = MediaFileExtentionUtils::Rename(sourceUri, displayName, newUri);
830     EXPECT_EQ(ret, 0);
831 }
832 
833 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_003, TestSize.Level0)
834 {
835     if (!MediaLibraryUnitTestUtils::IsValid()) {
836         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
837         exit(1);
838     }
839     Uri sourceUri(ReturnUri(COMMON_PREFIX, INVALID_URI));
840     Uri newUri("");
841     string displayName = "rename";
842     MEDIA_DEBUG_LOG("medialib_Rename_test_003 sourceUri: %{public}s, displayName: %{public}s",
843         sourceUri.ToString().c_str(), displayName.c_str());
844     int32_t ret = mediaFileExtAbility->Rename(sourceUri, displayName, newUri);
845     EXPECT_EQ(ret, JS_E_URI);
846     MEDIA_DEBUG_LOG("medialib_Rename_test_003 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
847 }
848 
849 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_004, TestSize.Level0)
850 {
851     if (!MediaLibraryUnitTestUtils::IsValid()) {
852         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
853         exit(1);
854     }
855     Uri sourceUri(ReturnUri(DISTRIBUTED_PREFIX, COMMON_URI));
856     Uri newUri("");
857     string displayName = "rename";
858     MEDIA_DEBUG_LOG("medialib_Rename_test_004 sourceUri: %{public}s, displayName: %{public}s",
859         sourceUri.ToString().c_str(), displayName.c_str());
860     int32_t ret = mediaFileExtAbility->Rename(sourceUri, displayName, newUri);
861     EXPECT_EQ(ret, JS_E_URI);
862     MEDIA_DEBUG_LOG("medialib_Rename_test_004 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
863 }
864 
865 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_005, TestSize.Level0)
866 {
867     if (!MediaLibraryUnitTestUtils::IsValid()) {
868         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
869         exit(1);
870     }
871     shared_ptr<FileAsset> fileAsset = nullptr;
872     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Rename_test_005.jpg", g_documents, fileAsset), true);
873     Uri sourceUri(fileAsset->GetUri());
874     Uri newUri("");
875     string displayName = INVALID_FILE_NAME;
876     MEDIA_DEBUG_LOG("medialib_Rename_test_005 sourceUri: %{public}s, displayName: %{public}s",
877         sourceUri.ToString().c_str(), displayName.c_str());
878     int32_t ret = mediaFileExtAbility->Rename(sourceUri, displayName, newUri);
879     EXPECT_EQ(ret, JS_E_DISPLAYNAME);
880     MEDIA_DEBUG_LOG("medialib_Rename_test_005 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
881 }
882 
883 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_006, TestSize.Level0)
884 {
885     if (!MediaLibraryUnitTestUtils::IsValid()) {
886         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
887         exit(1);
888     }
889     shared_ptr<FileAsset> fileAsset = nullptr;
890     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Rename_test_006.jpg", g_documents, fileAsset), true);
891     shared_ptr<FileAsset> tempFileAsset = nullptr;
892     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("new_Rename_test_006.jpg", g_documents, tempFileAsset), true);
893     Uri sourceUri(fileAsset->GetUri());
894     Uri newUri("");
895     string displayName = "new_Rename_test_006.jpg";
896     MEDIA_DEBUG_LOG("medialib_Rename_test_006 sourceUri: %{public}s, displayName: %{public}s",
897         sourceUri.ToString().c_str(), displayName.c_str());
898     int32_t ret = mediaFileExtAbility->Rename(sourceUri, displayName, newUri);
899     EXPECT_EQ(ret, JS_ERR_FILE_EXIST);
900     MEDIA_DEBUG_LOG("medialib_Rename_test_006 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
901 }
902 
903 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_007, TestSize.Level0)
904 {
905     if (!MediaLibraryUnitTestUtils::IsValid()) {
906         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
907         exit(1);
908     }
909     shared_ptr<FileAsset> fileAsset = nullptr;
910     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("Rename_test_007.jpg", g_documents, fileAsset), true);
911     Uri sourceUri(fileAsset->GetUri());
912     Uri newUri("");
913     string displayName = "Rename_test_007.txt";
914     MEDIA_DEBUG_LOG("medialib_Rename_test_007 sourceUri: %{public}s, displayName: %{public}s",
915         sourceUri.ToString().c_str(), displayName.c_str());
916     int32_t ret = mediaFileExtAbility->Rename(sourceUri, displayName, newUri);
917     EXPECT_EQ(ret, E_SUCCESS);
918     MEDIA_DEBUG_LOG("medialib_Rename_test_007 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
919 }
920 
921 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_008, TestSize.Level0)
922 {
923     Uri sourceUri("");
924     Uri parentUri(g_pictures->GetUri());
925     int32_t ret = MediaFileExtentionUtils::CreateFile(parentUri, "Rename_test_007.jpg", sourceUri);
926     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
927     Uri newUri("");
928     string displayName = "new_Rename_test_007.jpg";
929     ret = MediaFileExtentionUtils::Rename(sourceUri, displayName, newUri);
930     EXPECT_EQ(ret, E_URI_INVALID);
931     Uri parentUriOne(g_documents->GetUri());
932     ret = MediaFileExtentionUtils::CreateFile(parentUriOne, "Rename_test_007.jpg", sourceUri);
933     EXPECT_GT(ret, E_SUCCESS);
934     ret = MediaFileExtentionUtils::Rename(sourceUri, displayName, newUri);
935     EXPECT_EQ(ret, E_SUCCESS);
936     Uri parentUriTwo(g_download->GetUri());
937     ret = MediaFileExtentionUtils::CreateFile(parentUriTwo, "Rename_test_007.jpg", sourceUri);
938     EXPECT_GT(ret, E_SUCCESS);
939     ret = MediaFileExtentionUtils::Rename(sourceUri, displayName, newUri);
940     EXPECT_EQ(ret, E_SUCCESS);
941 }
942 
DisplayFileList(const vector<FileInfo> & fileList)943 void DisplayFileList(const vector<FileInfo> &fileList)
944 {
945     MEDIA_DEBUG_LOG("DisplayFileList::Start");
946     for (auto t : fileList) {
947         MEDIA_DEBUG_LOG("file.uri: %s, file.fileName: %s, file.mode: %d, file.mimeType: %s",
948             t.uri.c_str(), t.fileName.c_str(), t.mode, t.mimeType.c_str());
949     }
950     MEDIA_DEBUG_LOG("DisplayFileList::End");
951 }
952 
ListFileFromRootResult(vector<FileInfo> rootFileList,int offset,int maxCount)953 void ListFileFromRootResult(vector<FileInfo> rootFileList, int offset, int maxCount)
954 {
955     const size_t URI_FILE_ROOT_FILE_SIZE = 2;
956     const size_t URI_MEDIA_ROOT_IMAGE_SIZE = 0;
957     const size_t URI_MEDIA_ROOT_VIDEO_SIZE = 0;
958     const size_t URI_MEDIA_ROOT_AUDIO_SIZE = 0;
959     FileAccessFwk::FileFilter filter;
960     // URI_FILE_ROOT & URI_MEDIA_ROOT
961     for (auto mediaRootInfo : rootFileList) {
962         vector<FileInfo> fileList;
963         auto ret = mediaFileExtAbility->ListFile(mediaRootInfo, offset, maxCount, filter, fileList);
964         EXPECT_EQ(ret, E_SUCCESS);
965 
966         // URI_FILE_ROOT
967         if (mediaRootInfo.mimeType == DEFAULT_FILE_MIME_TYPE) {
968             MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_FILE_ROOT uri: %{public}s", mediaRootInfo.uri.c_str());
969             MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_FILE_ROOT fileList.size(): %{public}d",
970                 (int)fileList.size());
971             DisplayFileList(fileList);
972             EXPECT_EQ(fileList.size(), URI_FILE_ROOT_FILE_SIZE);
973             continue;
974         }
975 
976         // URI_MEDIA_ROOT image
977         if (mediaRootInfo.mimeType == DEFAULT_IMAGE_MIME_TYPE) {
978             MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_MEDIA_ROOT uri: %{public}s", mediaRootInfo.uri.c_str());
979             MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_MEDIA_ROOT fileList.size(): %{public}d",
980                 (int)fileList.size());
981             DisplayFileList(fileList);
982             EXPECT_GT(fileList.size(), URI_MEDIA_ROOT_IMAGE_SIZE);
983         }
984 
985         // URI_MEDIA_ROOT video
986         if (mediaRootInfo.mimeType == DEFAULT_VIDEO_MIME_TYPE) {
987             MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_MEDIA_ROOT uri: %{public}s", mediaRootInfo.uri.c_str());
988             MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_MEDIA_ROOT fileList.size(): %{public}d",
989                 (int)fileList.size());
990             DisplayFileList(fileList);
991             EXPECT_EQ(fileList.size(), URI_MEDIA_ROOT_VIDEO_SIZE);
992         }
993 
994         // URI_MEDIA_ROOT audio
995         if (mediaRootInfo.mimeType == DEFAULT_AUDIO_MIME_TYPE) {
996             MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_MEDIA_ROOT uri: %{public}s", mediaRootInfo.uri.c_str());
997             MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_MEDIA_ROOT fileList.size(): %{public}d",
998                 (int)fileList.size());
999             DisplayFileList(fileList);
1000             EXPECT_EQ(fileList.size(), URI_MEDIA_ROOT_AUDIO_SIZE);
1001         }
1002     }
1003 }
1004 
1005 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_ListFile_test_001, TestSize.Level0)
1006 {
1007     if (!MediaLibraryUnitTestUtils::IsValid()) {
1008         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1009         exit(1);
1010     }
1011 
1012     shared_ptr<FileAsset> albumAsset = nullptr;
1013     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("ListFile_test_001", g_pictures, albumAsset), true);
1014     shared_ptr<FileAsset> tempAsset = nullptr;
1015     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("ListFile_test_001", albumAsset, tempAsset), true);
1016     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_test_001_1.jpg", albumAsset, tempAsset), true);
1017     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_test_001_2.jpg", albumAsset, tempAsset), true);
1018     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_test_001_3.jpg", albumAsset, tempAsset), true);
1019     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_test_001_1.mp4", g_videos, tempAsset), true);
1020     MediaLibraryCommand cmd(OperationObject::FILESYSTEM_PHOTO, OperationType::CREATE,
1021         MediaLibraryApi::API_10);
1022     string name = "photo.jpg";
1023     NativeRdb::ValuesBucket values;
1024     values.PutString(MediaColumn::MEDIA_NAME, name);
1025     values.PutInt(MediaColumn::MEDIA_TYPE, MediaType::MEDIA_TYPE_IMAGE);
1026     cmd.SetValueBucket(values);
1027     int32_t ret = MediaLibraryPhotoOperations::Create(cmd);
1028     EXPECT_GE(ret, 0);
1029     const int64_t offset = 0;
1030     const int64_t maxCount = 100;
1031     FileAccessFwk::FileFilter filter;
1032 
1033     // URI_ROOT
1034     FileInfo rootInfo;
1035     rootInfo.uri = ReturnUri(COMMON_PREFIX, ROOT_URI);
1036     MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_ROOT uri: %{public}s", rootInfo.uri.c_str());
1037     vector<FileInfo> rootFileList;
1038     ret = mediaFileExtAbility->ListFile(rootInfo, offset, maxCount, filter, rootFileList);
1039     EXPECT_EQ(ret, E_SUCCESS);
1040     MEDIA_DEBUG_LOG("medialib_ListFile_test_001 URI_ROOT fileList.size(): %{public}d", (int)rootFileList.size());
1041     DisplayFileList(rootFileList);
1042     EXPECT_EQ(rootFileList.size(), 4);
1043 
1044     ListFileFromRootResult(rootFileList, offset, maxCount);
1045 }
1046 
ListFileTestLimit(FileInfo dirInfo)1047 void ListFileTestLimit(FileInfo dirInfo)
1048 {
1049     const int64_t OFFSET_1 = 0;
1050     const int64_t OFFSET_2 = 5;
1051     const int64_t MAX_COUNT_1 = 5;
1052     const int64_t MAX_COUNT_2 = 100;
1053     vector<pair<int64_t, int64_t>> limits = { make_pair(OFFSET_1, MAX_COUNT_1),
1054         make_pair(OFFSET_2, MAX_COUNT_1), make_pair(OFFSET_1, MAX_COUNT_2), make_pair(OFFSET_2, MAX_COUNT_2) };
1055     const int DIR_RESULT = 8;
1056 
1057     FileAccessFwk::FileFilter filter;
1058     for (auto limit : limits) {
1059         // URI_DIR
1060         dirInfo.mimeType = DEFAULT_FILE_MIME_TYPE;
1061         vector<FileInfo> dirFileList;
1062         auto ret = mediaFileExtAbility->ListFile(dirInfo, limit.first, limit.second, filter, dirFileList);
1063         EXPECT_EQ(ret, E_SUCCESS);
1064         EXPECT_EQ(dirFileList.size(), min((DIR_RESULT - limit.first), limit.second));
1065     }
1066 }
1067 
ListFileTestFilter(FileInfo dirInfo)1068 void ListFileTestFilter(FileInfo dirInfo)
1069 {
1070     const int FILTER_COUNT = 3;
1071     const string SUFFIX_1 = ".jpg";
1072     const string SUFFIX_2 = ".png";
1073     const int32_t JPG_COUNT = 4;
1074     const int32_t PNG_COUNT = 2;
1075     const vector<int32_t> DIR_RESULT = {JPG_COUNT, PNG_COUNT, JPG_COUNT + PNG_COUNT};
1076     const vector<int32_t> ALBUM_RESULT = {JPG_COUNT, PNG_COUNT, JPG_COUNT + PNG_COUNT};
1077     vector<FileAccessFwk::FileFilter> filters;
1078     FileAccessFwk::FileFilter tempFilter;
1079     tempFilter.SetHasFilter(true);
1080     tempFilter.SetSuffix({ SUFFIX_1 });
1081     filters.push_back(tempFilter);
1082     tempFilter.SetSuffix({ SUFFIX_2 });
1083     filters.push_back(tempFilter);
1084     tempFilter.SetSuffix({ SUFFIX_1, SUFFIX_2 });
1085     filters.push_back(tempFilter);
1086 
1087     const int64_t offset = 0;
1088     const int64_t maxCount = 100;
1089     for (size_t i = 0; i < FILTER_COUNT; i++) {
1090         MEDIA_ERR_LOG("medialib_ListFile_test_002:: filter.hasFilter: %d, filter.suffix: %s",
1091             (int)filters[i].GetHasFilter(), filters[i].GetSuffix()[0].c_str());
1092         // URI_DIR
1093         dirInfo.mimeType = DEFAULT_FILE_MIME_TYPE;
1094         vector<FileInfo> dirFileList;
1095         auto ret = mediaFileExtAbility->ListFile(dirInfo, offset, maxCount, filters[i], dirFileList);
1096         MEDIA_ERR_LOG("medialib_ListFile_test_002:: dirFileList.size(): %d", (int)dirFileList.size());
1097         DisplayFileList(dirFileList);
1098         EXPECT_EQ(ret, E_SUCCESS);
1099         EXPECT_EQ(dirFileList.size(), DIR_RESULT[i]);
1100     }
1101 }
1102 
1103 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_ListFile_test_002, TestSize.Level0)
1104 {
1105     if (!MediaLibraryUnitTestUtils::IsValid()) {
1106         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1107         exit(1);
1108     }
1109     shared_ptr<FileAsset> albumAsset = nullptr;
1110     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("ListFile_test_002", g_documents, albumAsset), true);
1111     shared_ptr<FileAsset> tempAsset = nullptr;
1112     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("ListFile_test_002", albumAsset, tempAsset), true);
1113     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("ListFile_002", albumAsset, tempAsset), true);
1114     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_test_002.jpg", albumAsset, tempAsset), true);
1115     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_test_002_1.jpg", albumAsset, tempAsset), true);
1116     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_test_002.png", albumAsset, tempAsset), true);
1117     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_002.jpg", albumAsset, tempAsset), true);
1118     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_002_1.jpg", albumAsset, tempAsset), true);
1119     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ListFile_002.png", albumAsset, tempAsset), true);
1120 
1121     const int32_t DIR_RESULT = 8;
1122     const int64_t offset = 0;
1123     const int64_t maxCount = 100;
1124     FileAccessFwk::FileFilter filter;
1125 
1126     // URI_DIR
1127     FileInfo dirInfo;
1128     dirInfo.uri = albumAsset->GetUri();
1129     dirInfo.mimeType = DEFAULT_FILE_MIME_TYPE;
1130     MEDIA_DEBUG_LOG("medialib_ListFile_test_002 URI_DIR uri: %{public}s", dirInfo.uri.c_str());
1131     vector<FileInfo> dirFileList;
1132     auto ret = mediaFileExtAbility->ListFile(dirInfo, offset, maxCount, filter, dirFileList);
1133     EXPECT_EQ(ret, E_SUCCESS);
1134     MEDIA_DEBUG_LOG("medialib_ListFile_test_002 URI_DIR fileList.size(): %{public}d", (int)dirFileList.size());
1135     DisplayFileList(dirFileList);
1136     EXPECT_EQ(dirFileList.size(), DIR_RESULT);
1137 
1138     // test limit and filter
1139     FileInfo fileInfo;
1140     fileInfo.uri = albumAsset->GetUri();
1141     ListFileTestLimit(fileInfo);
1142     ListFileTestFilter(fileInfo);
1143 }
1144 
1145 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetRoots_test_001, TestSize.Level0)
1146 {
1147     if (!MediaLibraryUnitTestUtils::IsValid()) {
1148         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1149         exit(1);
1150     }
1151     vector<RootInfo> rootList;
1152     auto ret = mediaFileExtAbility->GetRoots(rootList);
1153     EXPECT_EQ(ret, E_SUCCESS);
1154     MEDIA_DEBUG_LOG("medialib_GetRoots_test_001 rootList.size() %{public}lu", (long)rootList.size());
1155 }
1156 
InitScanFile(shared_ptr<FileAsset> & albumAsset)1157 inline void InitScanFile(shared_ptr<FileAsset> &albumAsset)
1158 {
1159     shared_ptr<FileAsset> tempAsset = nullptr;
1160     shared_ptr<FileAsset> albumAsset2 = nullptr;
1161     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("ScanFile_test", g_documents, albumAsset), true);
1162     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("ScanFile_test", albumAsset, albumAsset2), true);
1163     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ScanFile_test_1.jpg", albumAsset, tempAsset), true);
1164     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ScanFile_test_2.jpg", albumAsset, tempAsset), true);
1165     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ScanFile_test_3.png", albumAsset, tempAsset), true);
1166     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ScanFile_test_4.jpg", albumAsset, tempAsset), true);
1167     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ScanFile_test_5.jpg", albumAsset, tempAsset), true);
1168     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ScanFile_test_6.jpg", albumAsset2, tempAsset), true);
1169     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ScanFile_test_7.png", albumAsset2, tempAsset), true);
1170     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("ScanFile_test_8.jpg", albumAsset2, tempAsset), true);
1171 }
1172 
1173 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_ScanFile_test_001, TestSize.Level0)
1174 {
1175     if (!MediaLibraryUnitTestUtils::IsValid()) {
1176         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1177         exit(1);
1178     }
1179 
1180     shared_ptr<FileAsset> albumAsset = nullptr;
1181     InitScanFile(albumAsset);
1182 
1183     int64_t offset = 0;
1184     int64_t maxCount = 100;
1185     FileAccessFwk::FileFilter filter;
1186 
1187     // URI_DIR
1188     FileInfo dirInfo;
1189     dirInfo.uri = albumAsset->GetUri();
1190     dirInfo.mimeType = DEFAULT_FILE_MIME_TYPE;
1191     MEDIA_DEBUG_LOG("medialib_ScanFile_test_001 URI_DIR uri: %{public}s", dirInfo.uri.c_str());
1192     vector<FileInfo> dirFileList;
1193     int32_t ret = MediaFileExtentionUtils::ScanFile(dirInfo, offset, maxCount, filter, dirFileList);
1194     EXPECT_EQ(ret, E_SUCCESS);
1195     EXPECT_EQ(dirFileList.size(), 8);
1196 
1197     vector<FileInfo> limitDirFileList1;
1198     ret = MediaFileExtentionUtils::ScanFile(dirInfo, offset, 5, filter, limitDirFileList1);
1199     EXPECT_EQ(ret, E_SUCCESS);
1200     EXPECT_EQ(limitDirFileList1.size(), 5);
1201 
1202     vector<FileInfo> limitDirFileList2;
1203     ret = MediaFileExtentionUtils::ScanFile(dirInfo, 5, maxCount, filter, limitDirFileList2);
1204     EXPECT_EQ(ret, E_SUCCESS);
1205     EXPECT_EQ(limitDirFileList2.size(), 3);
1206 }
1207 
1208 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_ScanFile_test_002, TestSize.Level0)
1209 {
1210     if (!MediaLibraryUnitTestUtils::IsValid()) {
1211         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1212         exit(1);
1213     }
1214     shared_ptr<FileAsset> albumAsset = nullptr;
1215     InitScanFile(albumAsset);
1216 
1217     int64_t offset = 0;
1218     int64_t maxCount = 100;
1219     FileAccessFwk::FileFilter filter;
1220 
1221     // URI_DIR
1222     FileInfo dirInfo;
1223     dirInfo.uri = "datashare:///media/root";
1224     dirInfo.mimeType = DEFAULT_FILE_MIME_TYPE;
1225     MEDIA_DEBUG_LOG("medialib_ListFile_test_002 URI_DIR uri: %{public}s", dirInfo.uri.c_str());
1226     vector<FileInfo> dirFileList;
1227     auto ret = mediaFileExtAbility->ScanFile(dirInfo, offset, maxCount, filter, dirFileList);
1228     EXPECT_EQ(ret, E_SUCCESS);
1229     EXPECT_GT(dirFileList.size(), 4);
1230 
1231     vector<FileInfo> limitDirFileList1;
1232     ret = mediaFileExtAbility->ScanFile(dirInfo, offset, 5, filter, limitDirFileList1);
1233     EXPECT_EQ(ret, E_SUCCESS);
1234     EXPECT_EQ(limitDirFileList1.size(), 5);
1235 
1236     vector<FileInfo> limitDirFileList2;
1237     ret = mediaFileExtAbility->ScanFile(dirInfo, 5, maxCount, filter, limitDirFileList2);
1238     EXPECT_EQ(ret, E_SUCCESS);
1239     EXPECT_GT(limitDirFileList2.size(), 3);
1240 }
1241 
1242 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_ScanFile_test_003, TestSize.Level0)
1243 {
1244     if (!MediaLibraryUnitTestUtils::IsValid()) {
1245         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1246         exit(1);
1247     }
1248 
1249     shared_ptr<FileAsset> albumAsset = nullptr;
1250     InitScanFile(albumAsset);
1251 
1252     int64_t offset = 0;
1253     int64_t maxCount = 100;
1254     FileAccessFwk::FileFilter filter;
1255     vector<string> suffix { ".jpg" };
1256     filter.SetSuffix(suffix);
1257     // URI_DIR
1258     FileInfo dirInfo;
1259     dirInfo.uri = albumAsset->GetUri();
1260     dirInfo.mimeType = DEFAULT_FILE_MIME_TYPE;
1261     MEDIA_DEBUG_LOG("medialib_ListFile_test_003 URI_DIR uri: %{public}s", dirInfo.uri.c_str());
1262     vector<FileInfo> dirFileList;
1263     auto ret = mediaFileExtAbility->ScanFile(dirInfo, offset, maxCount, filter, dirFileList);
1264     EXPECT_EQ(ret, E_SUCCESS);
1265     EXPECT_EQ(dirFileList.size(), 6);
1266 
1267     vector<FileInfo> limitDirFileList1;
1268     ret = mediaFileExtAbility->ScanFile(dirInfo, offset, 5, filter, limitDirFileList1);
1269     EXPECT_EQ(ret, E_SUCCESS);
1270     EXPECT_EQ(limitDirFileList1.size(), 5);
1271 
1272     vector<FileInfo> limitDirFileList2;
1273     ret = mediaFileExtAbility->ScanFile(dirInfo, 5, maxCount, filter, limitDirFileList2);
1274     EXPECT_EQ(ret, E_SUCCESS);
1275     EXPECT_EQ(limitDirFileList2.size(), 1);
1276 }
1277 
PrintFileInfo(const FileInfo & fileInfo,const string & testcase)1278 void PrintFileInfo(const FileInfo &fileInfo, const string &testcase)
1279 {
1280     MEDIA_INFO_LOG("testcase: %{public}s FileInfo uri: %{public}s, fileName: %{public}s, mode: %{public}d",
1281         testcase.c_str(), fileInfo.uri.c_str(), fileInfo.fileName.c_str(), fileInfo.mode);
1282     MEDIA_INFO_LOG("testcase: %{public}s FileInfo size: %{public}lld, mtime: %{public}lld, mimeType: %{public}s",
1283         testcase.c_str(), (long long)fileInfo.size, (long long)fileInfo.mtime, fileInfo.mimeType.c_str());
1284 }
1285 
1286 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromUri_test_001, TestSize.Level0)
1287 {
1288     Uri uri(ReturnUri(MEDIALIBRARY_MEDIA_PREFIX, MEDIALIBRARY_ROOT));
1289     FileInfo fileInfo;
1290     auto ret = mediaFileExtAbility->GetFileInfoFromUri(uri, fileInfo);
1291     PrintFileInfo(fileInfo, "medialib_GetFileInfoFromUri_test_001");
1292     EXPECT_EQ(ret, E_SUCCESS);
1293 }
1294 
1295 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromUri_test_002, TestSize.Level0)
1296 {
1297     Uri uri(ReturnUri(MEDIALIBRARY_MEDIA_PREFIX, MEDIALIBRARY_ROOT, MEDIALIBRARY_TYPE_FILE_URI));
1298     FileInfo fileInfo;
1299     auto ret = mediaFileExtAbility->GetFileInfoFromUri(uri, fileInfo);
1300     PrintFileInfo(fileInfo, "medialib_GetFileInfoFromUri_test_002");
1301     EXPECT_EQ(ret, E_SUCCESS);
1302 }
1303 
1304 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromUri_test_003, TestSize.Level0)
1305 {
1306     Uri uri(ReturnUri(MEDIALIBRARY_MEDIA_PREFIX, MEDIALIBRARY_ROOT, MEDIALIBRARY_TYPE_IMAGE_URI));
1307     FileInfo fileInfo;
1308     auto ret = mediaFileExtAbility->GetFileInfoFromUri(uri, fileInfo);
1309     PrintFileInfo(fileInfo, "medialib_GetFileInfoFromUri_test_003");
1310     EXPECT_EQ(ret, E_SUCCESS);
1311 }
1312 
1313 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromUri_test_004, TestSize.Level0)
1314 {
1315     Uri uri(ReturnUri(MEDIALIBRARY_MEDIA_PREFIX, MEDIALIBRARY_ROOT, MEDIALIBRARY_TYPE_VIDEO_URI));
1316     FileInfo fileInfo;
1317     auto ret = mediaFileExtAbility->GetFileInfoFromUri(uri, fileInfo);
1318     PrintFileInfo(fileInfo, "medialib_GetFileInfoFromUri_test_004");
1319     EXPECT_EQ(ret, E_SUCCESS);
1320 }
1321 
1322 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromUri_test_005, TestSize.Level0)
1323 {
1324     Uri uri(ReturnUri(MEDIALIBRARY_MEDIA_PREFIX, MEDIALIBRARY_ROOT, MEDIALIBRARY_TYPE_AUDIO_URI));
1325     FileInfo fileInfo;
1326     auto ret = mediaFileExtAbility->GetFileInfoFromUri(uri, fileInfo);
1327     PrintFileInfo(fileInfo, "medialib_GetFileInfoFromUri_test_005");
1328     EXPECT_EQ(ret, E_SUCCESS);
1329 }
1330 
1331 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromUri_test_006, TestSize.Level0)
1332 {
1333     if (!MediaLibraryUnitTestUtils::IsValid()) {
1334         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1335         exit(1);
1336     }
1337     shared_ptr<FileAsset> albumAsset = nullptr;
1338     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("GetFileInfoFromUri_test_006", g_download, albumAsset), true);
1339     shared_ptr<FileAsset> fileAsset = nullptr;
1340     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("GetFileInfoFromUri_test_006.jpg", albumAsset, fileAsset), true);
1341     Uri uri(fileAsset->GetUri());
1342     FileInfo fileInfo;
1343     auto ret = mediaFileExtAbility->GetFileInfoFromUri(uri, fileInfo);
1344     PrintFileInfo(fileInfo, "medialib_GetFileInfoFromUri_test_006");
1345     EXPECT_EQ(ret, E_SUCCESS);
1346 
1347     int32_t fileMode = DOCUMENT_FLAG_REPRESENTS_FILE | DOCUMENT_FLAG_SUPPORTS_READ | DOCUMENT_FLAG_SUPPORTS_WRITE;
1348     EXPECT_EQ(fileInfo.fileName, "GetFileInfoFromUri_test_006.jpg");
1349     EXPECT_EQ(fileInfo.size, 0);
1350     EXPECT_EQ(fileInfo.uri, fileAsset->GetUri());
1351     EXPECT_EQ(fileInfo.mtime, fileAsset->GetDateModified());
1352     EXPECT_EQ(fileInfo.mode, fileMode);
1353 }
1354 
1355 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromUri_test_007, TestSize.Level0)
1356 {
1357     if (!MediaLibraryUnitTestUtils::IsValid()) {
1358         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1359         exit(1);
1360     }
1361     shared_ptr<FileAsset> albumAsset = nullptr;
1362     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("GetFileInfoFromUri_test_007", g_pictures, albumAsset), true);
1363     Uri uri(albumAsset->GetUri());
1364     FileInfo albumInfo;
1365     auto ret = mediaFileExtAbility->GetFileInfoFromUri(uri, albumInfo);
1366     PrintFileInfo(albumInfo, "medialib_GetFileInfoFromUri_test_007");
1367     EXPECT_EQ(ret, E_SUCCESS);
1368 
1369     int32_t albumMode = DOCUMENT_FLAG_REPRESENTS_DIR | DOCUMENT_FLAG_SUPPORTS_READ | DOCUMENT_FLAG_SUPPORTS_WRITE;
1370     EXPECT_EQ(albumInfo.fileName, "GetFileInfoFromUri_test_007");
1371     EXPECT_EQ(albumInfo.size, 0);
1372     EXPECT_NE(albumAsset->GetSize(), 0);
1373     EXPECT_EQ(albumInfo.uri, albumAsset->GetUri());
1374     EXPECT_EQ(albumInfo.mtime, albumAsset->GetDateModified());
1375     EXPECT_EQ(albumInfo.mode, albumMode);
1376 }
1377 
1378 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromRelativePath_test_001, TestSize.Level0)
1379 {
1380     if (!MediaLibraryUnitTestUtils::IsValid()) {
1381         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1382         exit(1);
1383     }
1384     shared_ptr<FileAsset> albumAsset = nullptr;
1385     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateAlbum("GetFileInfoFromRelativePath_001", g_pictures, albumAsset), true);
1386     FileInfo parentInfo;
1387     auto ret = mediaFileExtAbility->GetFileInfoFromRelativePath(albumAsset->GetRelativePath(), parentInfo);
1388     PrintFileInfo(parentInfo, "medialib_GetFileInfoFromRelativePath_test_001");
1389     EXPECT_EQ(ret, E_SUCCESS);
1390 
1391     int32_t albumMode = DOCUMENT_FLAG_REPRESENTS_DIR | DOCUMENT_FLAG_SUPPORTS_READ | DOCUMENT_FLAG_SUPPORTS_WRITE;
1392     EXPECT_EQ(parentInfo.fileName, g_pictures->GetDisplayName());
1393     EXPECT_EQ(parentInfo.size, 0);
1394     EXPECT_EQ(parentInfo.uri, g_pictures->GetUri());
1395     EXPECT_EQ(parentInfo.mtime, g_pictures->GetDateModified());
1396     EXPECT_EQ(parentInfo.mode, albumMode);
1397     EXPECT_EQ(parentInfo.relativePath, "");
1398 }
1399 
1400 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromRelativePath_test_002, TestSize.Level0)
1401 {
1402     if (!MediaLibraryUnitTestUtils::IsValid()) {
1403         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1404         exit(1);
1405     }
1406     shared_ptr<FileAsset> fileAsset = nullptr;
1407     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("GetFileInfoFromRelativePath_002.jpg", g_pictures, fileAsset),
1408         true);
1409     FileInfo parentInfo;
1410     auto ret = mediaFileExtAbility->GetFileInfoFromRelativePath(fileAsset->GetRelativePath(), parentInfo);
1411     PrintFileInfo(parentInfo, "medialib_GetFileInfoFromRelativePath_test_002");
1412     EXPECT_EQ(ret, E_SUCCESS);
1413 
1414     int32_t albumMode = DOCUMENT_FLAG_REPRESENTS_DIR | DOCUMENT_FLAG_SUPPORTS_READ | DOCUMENT_FLAG_SUPPORTS_WRITE;
1415     EXPECT_EQ(parentInfo.fileName, g_pictures->GetDisplayName());
1416     EXPECT_EQ(parentInfo.size, 0);
1417     EXPECT_EQ(parentInfo.uri, g_pictures->GetUri());
1418     EXPECT_EQ(parentInfo.mode, albumMode);
1419     EXPECT_EQ(parentInfo.relativePath, "");
1420 }
1421 
1422 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromRelativePath_test_003, TestSize.Level0)
1423 {
1424     if (!MediaLibraryUnitTestUtils::IsValid()) {
1425         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1426         exit(1);
1427     }
1428     FileInfo rootInfo;
1429     auto ret = mediaFileExtAbility->GetFileInfoFromRelativePath("", rootInfo);
1430     PrintFileInfo(rootInfo, "medialib_GetFileInfoFromRelativePath_test_003");
1431     EXPECT_EQ(ret, E_SUCCESS);
1432 
1433     int32_t albumReadOnlyMode = DOCUMENT_FLAG_REPRESENTS_DIR | DOCUMENT_FLAG_SUPPORTS_READ;
1434     EXPECT_EQ(rootInfo.fileName, "MEDIA_TYPE_FILE");
1435     EXPECT_EQ(rootInfo.size, 0);
1436     EXPECT_EQ(rootInfo.uri, ReturnUri(MEDIALIBRARY_DATA_URI, MEDIALIBRARY_TYPE_FILE_URI));
1437     EXPECT_EQ(rootInfo.mtime, 0);
1438     EXPECT_EQ(rootInfo.mode, albumReadOnlyMode);
1439     EXPECT_EQ(rootInfo.relativePath, "");
1440 }
1441 
1442 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_GetFileInfoFromRelativePath_test_004, TestSize.Level0)
1443 {
1444     if (!MediaLibraryUnitTestUtils::IsValid()) {
1445         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1446         exit(1);
1447     }
1448 
1449     FileInfo parentInfo;
1450     string testRelativePath = "Pictures/";
1451     EXPECT_EQ(mediaFileExtAbility->GetFileInfoFromRelativePath(testRelativePath, parentInfo), E_SUCCESS);
1452 
1453     testRelativePath = "Pictures";
1454     EXPECT_EQ(mediaFileExtAbility->GetFileInfoFromRelativePath(testRelativePath, parentInfo), E_SUCCESS);
1455 
1456     shared_ptr<FileAsset> fileAsset = nullptr;
1457     ASSERT_EQ(MediaLibraryUnitTestUtils::CreateFile("GetFileInfoFromRelativePath_004.jpg", g_pictures, fileAsset),
1458         true);
1459     testRelativePath = "Pictures/GetFileInfoFromRelativePath_004.jpg";
1460     EXPECT_EQ(mediaFileExtAbility->GetFileInfoFromRelativePath(testRelativePath, parentInfo), E_SUCCESS);
1461 }
1462 
MediaFileExtensionCheck(const shared_ptr<FileAsset> & parent,const unordered_set<string> extensions,const string & title,bool expect)1463 void MediaFileExtensionCheck(const shared_ptr<FileAsset> &parent, const unordered_set<string> extensions,
1464     const string &title, bool expect)
1465 {
1466     Uri parentUri(parent->GetUri());
1467     Uri newUri("");
1468 
1469     for (const auto &extension : extensions) {
1470         string displayName = title + "." + extension;
1471         string filePath = parent->GetPath() + "/" + displayName;
1472         int32_t ret = mediaFileExtAbility->CreateFile(parentUri, displayName, newUri);
1473         if (expect) {
1474             EXPECT_EQ(ret, E_SUCCESS);
1475             EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(filePath), true);
1476         } else {
1477             EXPECT_NE(ret, E_SUCCESS);
1478             EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(filePath), false);
1479         }
1480         if (expect && ret) {
1481             MEDIA_INFO_LOG("Root dir: %{private}s, file: %{public}s, path: %{private}s, CreateFile ret: %{public}d",
1482                 parent->GetDisplayName().c_str(), displayName.c_str(), filePath.c_str(), ret);
1483         }
1484     }
1485 }
1486 
DocumentsExtensionCheck(const shared_ptr<FileAsset> & parent,const string & title,bool expect)1487 void DocumentsExtensionCheck(const shared_ptr<FileAsset> &parent, const string &title, bool expect)
1488 {
1489     const unordered_set<string> extensions = { ".jpg1", ".txt" };
1490 
1491     Uri parentUri(parent->GetUri());
1492     Uri newUri("");
1493 
1494     for (const auto &extension : extensions) {
1495         string displayName = title + extension;
1496         string filePath = parent->GetPath() + "/" + displayName;
1497         int32_t ret = mediaFileExtAbility->CreateFile(parentUri, displayName, newUri);
1498         if (expect) {
1499             EXPECT_EQ(ret, E_SUCCESS);
1500             EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(filePath), true);
1501         } else {
1502             EXPECT_NE(ret, E_SUCCESS);
1503             EXPECT_EQ(MediaLibraryUnitTestUtils::IsFileExists(filePath), false);
1504         }
1505         if (expect && ret) {
1506             MEDIA_ERR_LOG("Root dir: %{private}s, file: %{public}s, path: %{private}s, CreateFile ret: %{public}d",
1507                 parent->GetDisplayName().c_str(), displayName.c_str(), filePath.c_str(), ret);
1508         }
1509     }
1510 }
1511 
SpecialCharacterExtensionCheck(const shared_ptr<FileAsset> & parent,const string & title,bool expect)1512 void SpecialCharacterExtensionCheck(const shared_ptr<FileAsset> &parent, const string &title, bool expect)
1513 {
1514     Uri parentUri(parent->GetUri());
1515     Uri newUri("");
1516 
1517     const int32_t MAX_ASCII = 127;
1518     for (int i = 0; i <= MAX_ASCII; i ++) {
1519         string displayName = title + "." + static_cast<char>(i);
1520         string filePath = parent->GetPath() + "/" + displayName;
1521         static const string DISPLAYNAME_REGEX_CHECK = R"([\.\\/:*?"'`<>|{}\[\]])";
1522         std::regex express(DISPLAYNAME_REGEX_CHECK);
1523         bool bValid = std::regex_search(displayName, express);
1524         int32_t ret = MediaFileExtentionUtils::CreateFile(parentUri, displayName, newUri);
1525         if (expect && (!bValid)) {
1526             EXPECT_EQ(ret, E_SUCCESS);
1527         } else {
1528             EXPECT_NE(ret, E_SUCCESS);
1529         }
1530         if (expect && (!bValid) && ret) {
1531             MEDIA_ERR_LOG("Dir: %{public}s, name: %{public}s, ret: %{public}d, suffix: %{public}c, bValid: %{public}d",
1532                 parent->GetDisplayName().c_str(), displayName.c_str(), ret, static_cast<char>(i), bValid);
1533         }
1534     }
1535 }
1536 
1537 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_ExtensionCheck_test_001, TestSize.Level0)
1538 {
1539     if (!MediaLibraryUnitTestUtils::IsValid()) {
1540         MEDIA_ERR_LOG("MediaLibraryDataManager invalid");
1541         exit(1);
1542     }
1543 
1544     const string title = "Extention001";
1545     MediaFileExtensionCheck(g_documents, SUPPORTED_IMAGE_FORMATS_SET, title, true);
1546     MediaFileExtensionCheck(g_documents, SUPPORTED_VIDEO_FORMATS_SET, title, true);
1547     MediaFileExtensionCheck(g_documents, SUPPORTED_AUDIO_FORMATS_SET, title, true);
1548     DocumentsExtensionCheck(g_documents, title, true);
1549     SpecialCharacterExtensionCheck(g_documents, title, true);
1550 
1551     MediaFileExtensionCheck(g_download, SUPPORTED_IMAGE_FORMATS_SET, title, true);
1552     MediaFileExtensionCheck(g_download, SUPPORTED_VIDEO_FORMATS_SET, title, true);
1553     MediaFileExtensionCheck(g_download, SUPPORTED_AUDIO_FORMATS_SET, title, true);
1554     DocumentsExtensionCheck(g_download, title, true);
1555     SpecialCharacterExtensionCheck(g_download, title, true);
1556 }
1557 
1558 int RenameTest(const shared_ptr<FileAsset> &parent, string nameCreate, string nameRename)
1559 {
1560     Uri parentUri(parent->GetUri());
1561     Uri newUri("");
1562     Uri newUriTest("");
1563     if (mediaFileExtAbility->CreateFile(parentUri, nameCreate, newUri) != E_SUCCESS) {
1564         return -1;
1565     }
1566     int32_t ret = mediaFileExtAbility->Rename(newUri, nameRename, newUriTest);
1567     mediaFileExtAbility->Delete(newUri);
1568     return ret;
1569 }
1570 
1571 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Copy_test_001, TestSize.Level0)
1572 {
1573     Uri sourceUri("");
1574     Uri parentUri(g_documents->GetUri());
1575     int32_t ret = MediaFileExtentionUtils::CreateFile(parentUri, "Rename_test_007.jpg", sourceUri);
1576     EXPECT_GT(ret, E_SUCCESS);
1577     Uri parentUriOne(g_download->GetUri());
1578     vector<CopyResult> copyResult;
1579     ret = MediaFileExtentionUtils::Copy(sourceUri, parentUriOne, copyResult, true);
1580     EXPECT_EQ(ret, E_SUCCESS);
1581     ret = MediaFileExtentionUtils::Copy(sourceUri, parentUriOne, copyResult, true);
1582     EXPECT_EQ(ret, E_SUCCESS);
1583 }
1584 
1585 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Copy_test_002, TestSize.Level0)
1586 {
1587     Uri parentUri(g_documents->GetUri());
1588     string displayName = "medialib_Mkdir_test_002";
1589     Uri newUri("");
1590     int32_t ret = MediaFileExtentionUtils::Mkdir(parentUri, displayName, newUri);
1591     EXPECT_GT(ret, E_SUCCESS);
1592     Uri parentUriOne(g_download->GetUri());
1593     vector<CopyResult> copyResult;
1594     ret = MediaFileExtentionUtils::Copy(newUri, parentUriOne, copyResult, true);
1595     EXPECT_EQ(ret, E_SUCCESS);
1596     MEDIA_DEBUG_LOG("medialib_Copy_test_002 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
1597 }
1598 
1599 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Copy_test_003, TestSize.Level0)
1600 {
1601     Uri parentUri(g_documents->GetUri());
1602     string displayName = "medialib_Mkdir_test_003";
1603     Uri newUri("");
1604     int32_t ret = MediaFileExtentionUtils::Mkdir(parentUri, displayName, newUri);
1605     EXPECT_GT(ret, E_SUCCESS);
1606     ret = MediaFileExtentionUtils::CreateFile(newUri, "medialib_Copy_test_003.jpg", newUri);
1607     EXPECT_GT(ret, E_SUCCESS);
1608     Uri parentUriOne(g_pictures->GetUri());
1609     vector<CopyResult> copyResult;
1610     ret = MediaFileExtentionUtils::Copy(newUri, parentUriOne, copyResult, true);
1611     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
1612     MEDIA_DEBUG_LOG("medialib_Copy_test_003 ret: %{public}d, newUri: %{public}s", ret, newUri.ToString().c_str());
1613 }
1614 
1615 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Copy_test_004, TestSize.Level0)
1616 {
1617     Uri sourceUri("");
1618     Uri parentUri(g_documents->GetUri());
1619     int32_t ret = MediaFileExtentionUtils::CreateFile(parentUri, "medialib_Copy_test_004.png", sourceUri);
1620     EXPECT_GT(ret, E_SUCCESS);
1621     Uri parentUriOne(g_pictures->GetUri());
1622     vector<CopyResult> copyResult;
1623     ret = MediaFileExtentionUtils::Copy(sourceUri, parentUriOne, copyResult, true);
1624     EXPECT_EQ(ret, JS_ERR_PERMISSION_DENIED);
1625 }
1626 
1627 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Copy_test_005, TestSize.Level0)
1628 {
1629     Uri sourceUri("");
1630     Uri parentUri(g_documents->GetUri());
1631     int32_t ret = MediaFileExtentionUtils::CreateFile(parentUri, "medialib_Copy_test_005.png", sourceUri);
1632     EXPECT_GT(ret, E_SUCCESS);
1633     vector<CopyResult> copyResult;
1634     ret = MediaFileExtentionUtils::Copy(sourceUri, sourceUri, copyResult, true);
1635     EXPECT_LT(ret, 0);
1636 }
1637 
1638 /**
1639  * @tc.number    : medialib_Rename_test_009
1640  * @tc.name      : file rename function test under download
1641  * @tc.desc      : Create files to invoke the Rename() interface.
1642  */
1643 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_009, TestSize.Level0)
1644 {
1645     string nameCreate = "download_test." + *SUPPORTED_IMAGE_FORMATS_SET.begin();
1646     string nameRename = "download_test." + *++SUPPORTED_IMAGE_FORMATS_SET.begin();
1647     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1648     nameRename = "download." + *SUPPORTED_AUDIO_FORMATS_SET.begin();
1649     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1650     nameRename = "&%^&." + *SUPPORTED_VIDEO_FORMATS_SET.begin();
1651     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1652     nameRename = "124.BMP";
1653     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1654     nameRename = "ABC.1234";
1655     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1656     nameRename = "asd.@@@";
1657     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1658     nameRename = "medialib_Rename_test.   name";
1659     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1660     nameRename = "5678.测试";
1661     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1662     nameRename = "测试.bmp";
1663     EXPECT_EQ(RenameTest(g_download, nameCreate, nameRename), E_SUCCESS);
1664 }
1665 
1666 /**
1667  * @tc.number    : medialib_Rename_test_010
1668  * @tc.name      : file rename function test under documents
1669  * @tc.desc      : Create files to invoke the Rename() interface.
1670  */
1671 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_010, TestSize.Level0)
1672 {
1673     string nameCreate = "documents_test.gz";
1674     string nameRename = "documents_test.GZ";
1675     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1676     nameRename = "documents.1234";
1677     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1678     nameRename = "9%1.@@@";
1679     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1680     nameRename = "ABC.   name";
1681     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1682     nameRename = "测试.   name";
1683     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1684     nameRename = "1234.))))";
1685     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1686 }
1687 
1688 /**
1689  * @tc.number    : medialib_Rename_test_011
1690  * @tc.name      : file rename function test under documents
1691  * @tc.desc      : Create files to invoke the Rename() interface.
1692  */
1693 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_Rename_test_011, TestSize.Level0)
1694 {
1695     string nameCreate = "documents_test.gz";
1696     string nameRename = "documents_test." + *SUPPORTED_IMAGE_FORMATS_SET.begin();
1697     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1698     nameRename = "documents." + *SUPPORTED_AUDIO_FORMATS_SET.begin();
1699     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1700     nameRename = "%&$." + *SUPPORTED_VIDEO_FORMATS_SET.begin();
1701     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1702     nameRename = "ASX.BMP";
1703     EXPECT_EQ(RenameTest(g_documents, nameCreate, nameRename), E_SUCCESS);
1704 }
1705 
1706 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_checkUriValid_test_001, TestSize.Level0)
1707 {
1708     bool ret = MediaFileExtentionUtils::CheckUriValid("");
1709     EXPECT_EQ(ret, false);
1710     ret = MediaFileExtentionUtils::CheckUriValid("datashare://test");
1711     EXPECT_EQ(ret, false);
1712     ret = MediaFileExtentionUtils::CheckUriValid("datashare://test/");
1713     EXPECT_EQ(ret, false);
1714     ret = MediaFileExtentionUtils::CheckUriValid("datashare://test/CheckUriValid");
1715     EXPECT_EQ(ret, false);
1716     ret = MediaFileExtentionUtils::CheckUriValid("datashare://test/CheckUriValid1");
1717     EXPECT_EQ(ret, false);
1718     ret = MediaFileExtentionUtils::CheckUriValid("datashare://media/1");
1719     EXPECT_EQ(ret, true);
1720 }
1721 
1722 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_checkDistributedUri_test_001, TestSize.Level0)
1723 {
1724     bool ret = MediaFileExtentionUtils::CheckDistributedUri("");
1725     EXPECT_EQ(ret, true);
1726     ret = MediaFileExtentionUtils::CheckDistributedUri("datashare://test/CheckDistributedUri");
1727     EXPECT_EQ(ret, false);
1728 }
1729 
1730 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_checkUriSupport_test_001, TestSize.Level0)
1731 {
1732     int32_t ret = MediaFileExtentionUtils::CheckUriSupport("");
1733     EXPECT_EQ(ret, E_URI_INVALID);
1734     ret = MediaFileExtentionUtils::CheckUriSupport("datashare://media/1");
1735     EXPECT_EQ(ret, E_DISTIBUTED_URI_NO_SUPPORT);
1736     ret = MediaFileExtentionUtils::CheckUriSupport("datashare:///media/1");
1737     EXPECT_EQ(ret, E_SUCCESS);
1738 }
1739 
1740 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_getResultSetFromDb_test_001, TestSize.Level0)
1741 {
1742     string value = "getResultSetFromDb";
1743     vector<string> columns;
1744     auto queryResultSet = MediaFileExtentionUtils::GetResultSetFromDb(MEDIA_DATA_DB_URI, value, columns);
1745     EXPECT_EQ(queryResultSet, nullptr);
1746     string field = "/storage/cloud/files";
1747     queryResultSet = MediaFileExtentionUtils::GetResultSetFromDb(MEDIA_DATA_DB_URI, value, columns);
1748     EXPECT_EQ(queryResultSet, nullptr);
1749 }
1750 
1751 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_isFileExistInDb_test_001, TestSize.Level0)
1752 {
1753     string path = "datashare://1";
1754     bool ret = MediaFileExtentionUtils::IsFileExistInDb(path);
1755     EXPECT_EQ(ret, false);
1756     string pathTest = "";
1757     ret = MediaFileExtentionUtils::IsFileExistInDb(pathTest);
1758     EXPECT_EQ(ret, true);
1759 }
1760 
1761 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_resolveUri_test_001, TestSize.Level0)
1762 {
1763     FileInfo fileInfo;
1764     MediaFileUriType uriType;
1765     fileInfo.uri = "resolveUri";
1766     int32_t ret = MediaFileExtentionUtils::ResolveUri(fileInfo, uriType);
1767     EXPECT_EQ(ret, E_INVALID_URI);
1768     fileInfo.uri = "datashare://";
1769     ret = MediaFileExtentionUtils::ResolveUri(fileInfo, uriType);
1770     EXPECT_EQ(ret, E_INVALID_URI);
1771     fileInfo.uri = "datashare:///media";
1772     ret = MediaFileExtentionUtils::ResolveUri(fileInfo, uriType);
1773     EXPECT_EQ(ret, E_INVALID_URI);
1774     fileInfo.uri = "datashare:///media/root";
1775     ret = MediaFileExtentionUtils::ResolveUri(fileInfo, uriType);
1776     EXPECT_EQ(ret, E_SUCCESS);
1777     fileInfo.uri = "datashare:///media/roottest";
1778     ret = MediaFileExtentionUtils::ResolveUri(fileInfo, uriType);
1779     EXPECT_EQ(ret, E_INVALID_URI);
1780     fileInfo.uri = "datashare:///media/file";
1781     ret = MediaFileExtentionUtils::ResolveUri(fileInfo, uriType);
1782     EXPECT_EQ(ret, E_SUCCESS);
1783     fileInfo.uri = "datashare:///media/1";
1784     ret = MediaFileExtentionUtils::ResolveUri(fileInfo, uriType);
1785     EXPECT_EQ(ret, E_SUCCESS);
1786     fileInfo.uri = "datashare://media/test";
1787     ret = MediaFileExtentionUtils::ResolveUri(fileInfo, uriType);
1788     EXPECT_EQ(ret, E_INVALID_URI);
1789 }
1790 
1791 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_checkValidDirName_test_001, TestSize.Level0)
1792 {
1793     string displayName = "";
1794     bool ret = MediaFileExtentionUtils::CheckValidDirName(displayName);
1795     EXPECT_EQ(ret, false);
1796     string displayNameTest = "Camera/";
1797     ret = MediaFileExtentionUtils::CheckValidDirName(displayNameTest);
1798     EXPECT_EQ(ret, true);
1799 }
1800 
1801 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_checkMkdirValid_test_001, TestSize.Level0)
1802 {
1803     MediaFileUriType uriType = URI_FILE_ROOT;
1804     string parentUriStr = "datashare:///1";
1805     string displayName = "Camera/";
1806     int32_t ret = MediaFileExtentionUtils::CheckMkdirValid(uriType, parentUriStr, displayName);
1807     EXPECT_EQ(ret, E_INVALID_DISPLAY_NAME);
1808     parentUriStr = "datashare://test/";
1809     ret = MediaFileExtentionUtils::CheckMkdirValid(uriType, parentUriStr, displayName);
1810     EXPECT_EQ(ret, E_DISTIBUTED_URI_NO_SUPPORT);
1811     parentUriStr = "datashare:///test/";
1812     displayName = "Camera";
1813     ret = MediaFileExtentionUtils::CheckMkdirValid(uriType, parentUriStr, displayName);
1814     EXPECT_EQ(ret, E_SUCCESS);
1815 
1816     uriType = URI_MEDIA_ROOT;
1817     ret = MediaFileExtentionUtils::CheckMkdirValid(uriType, parentUriStr, displayName);
1818     EXPECT_EQ(ret, E_URI_INVALID);
1819     parentUriStr = "datashare:///media/1";
1820     displayName = "Camera/";
1821     ret = MediaFileExtentionUtils::CheckMkdirValid(uriType, parentUriStr, displayName);
1822     EXPECT_EQ(ret, E_INVALID_DISPLAY_NAME);
1823     displayName = "test";
1824     ret = MediaFileExtentionUtils::CheckMkdirValid(uriType, parentUriStr, displayName);
1825     EXPECT_EQ(ret, E_SUCCESS);
1826 }
1827 
1828 HWTEST_F(MediaLibraryFileExtUnitTest, medialib_getAlbumRelativePathFromDB_test_001, TestSize.Level0)
1829 {
1830     string selectUri = "datashare:///media/file";
1831     string relativePath = "/storage/cloud/files";
1832     bool ret = MediaFileExtentionUtils::GetAlbumRelativePathFromDB(selectUri, relativePath);
1833     EXPECT_EQ(ret, false);
1834 }
1835 } // namespace Media
1836 } // namespace OHOS
1837