• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*A
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "common_func.h"
16 #include "error_code.h"
17 #include "oh_file_uri.h"
18 #include "parameter.h"
19 
20 #include <cstdlib>
21 #include <cstring>
22 #include <gtest/gtest.h>
23 #include <string>
24 
25 using namespace testing::ext;
26 using namespace OHOS::AppFileService;
27 namespace {
28 const std::string BUNDLE_A = "com.example.filesharea";
29 const std::string FILE_MANAGER_FULL_MOUNT_ENABLE_PARAMETER_STR = "const.filemanager.full_mount.enable";
30 } // namespace
31 
GetSelfBundleName()32 std::string CommonFunc::GetSelfBundleName()
33 {
34     return BUNDLE_A;
35 }
36 
37 namespace OHOS::AppFileService::ModuleFileUri {
38 
FreeResult(char ** freeResult)39 static void FreeResult(char **freeResult)
40 {
41     if ((*freeResult) != nullptr) {
42         free(*freeResult);
43         *freeResult = nullptr;
44     }
45 }
46 
CheckFileManagerFullMountEnable()47 static bool CheckFileManagerFullMountEnable()
48 {
49     char value[] = "false";
50     const char *fileManagerFullMountEnableParameter = FILE_MANAGER_FULL_MOUNT_ENABLE_PARAMETER_STR.c_str();
51     int retSystem = GetParameter(fileManagerFullMountEnableParameter, "false", value, sizeof(value));
52     if (retSystem > 0 && !std::strcmp(value, "true")) {
53         return true;
54     }
55     GTEST_LOG_(INFO) << "Not supporting all mounts";
56     return false;
57 }
58 
59 class NDKFileUriTest : public testing::Test {
60 public:
SetUpTestCase(void)61     static void SetUpTestCase(void) {};
TearDownTestCase(void)62     static void TearDownTestCase(void) {};
SetUp()63     void SetUp() {};
TearDown()64     void TearDown() {};
65 };
66 
67 /**
68  * @tc.number: get_path_from_uri_test_001
69  * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for sandbox uri
70  * @tc.desc: Set uri and get path
71  * @tc.type: FUNC
72  */
73 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_001, TestSize.Level1)
74 {
75     GTEST_LOG_(INFO) << "get_path_from_uri_test_001 start";
76     std::string fileUriStr = "file://" + BUNDLE_A + "/data/storage/el2/base/files/GetPathFromUri001.txt";
77     const char *fileUri = fileUriStr.c_str();
78     const char filePath[] = "/data/storage/el2/base/files/GetPathFromUri001.txt";
79     char *result = nullptr;
80     unsigned int length = fileUriStr.size();
81     FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
82     EXPECT_EQ(ret, ERR_OK);
83     if (result != nullptr) {
84         GTEST_LOG_(INFO) << result;
85         EXPECT_EQ(strcmp(result, filePath), 0);
86         FreeResult(&result);
87     }
88     GTEST_LOG_(INFO) << "get_path_from_uri_test_001 end";
89 }
90 
91 /**
92  * @tc.number: get_path_from_uri_test_002
93  * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for document uri
94  * @tc.desc: Set uri and get path
95  * @tc.type: FUNC
96  */
97 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_002, TestSize.Level1)
98 {
99     GTEST_LOG_(INFO) << "get_path_from_uri_test_002 start";
100     const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/GetPathFromUri002.txt";
101     char *result = nullptr;
102     unsigned int length = strlen(fileUri);
103     FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
104     EXPECT_EQ(ret, ERR_OK);
105     GTEST_LOG_(INFO) << result;
106     if (!CheckFileManagerFullMountEnable()) {
107         const char filePath[] =
108             "/data/storage/el2/share/r/docs/storage/Users/currentUser/Documents/GetPathFromUri002.txt";
109         EXPECT_EQ(strcmp(result, filePath), 0);
110     } else {
111         const char filePath[] = "/storage/Users/currentUser/Documents/GetPathFromUri002.txt";
112         EXPECT_EQ(strcmp(result, filePath), 0);
113     }
114     FreeResult(&result);
115     GTEST_LOG_(INFO) << "get_path_from_uri_test_002 end";
116 }
117 
118 /**
119  * @tc.number: get_path_from_uri_test_003
120  * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for different applications uri
121  * @tc.desc: Set uri and get path
122  * @tc.type: FUNC
123  */
124 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_003, TestSize.Level1)
125 {
126     GTEST_LOG_(INFO) << "get_path_from_uri_test_003 start";
127     const char fileUri[] = "file://demoa/data/storage/el2/base/files/GetPathFromUri003.txt";
128     std::string filePathStr = "/data/storage/el2/share/r/demoa/data/storage/el2/base/files/GetPathFromUri003.txt";
129     const char *filePath = filePathStr.c_str();
130     char *result = nullptr;
131     unsigned int length = strlen(fileUri);
132     FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
133     EXPECT_EQ(ret, ERR_OK);
134     if (result != nullptr) {
135         GTEST_LOG_(INFO) << result;
136         EXPECT_EQ(strcmp(result, filePath), 0);
137         FreeResult(&result);
138     }
139     GTEST_LOG_(INFO) << "get_path_from_uri_test_003 end";
140 }
141 
142 /**
143  * @tc.number: get_path_from_uri_test_004
144  * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for distributed files uri
145  * @tc.desc: Set uri and get path
146  * @tc.type: FUNC
147  */
148 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_004, TestSize.Level1)
149 {
150     GTEST_LOG_(INFO) << "get_path_from_uri_test_004 start";
151     std::string fileUriStr = "file://" + BUNDLE_A + "/data/storage/el2/distributedfiles/.remote_share/";
152     fileUriStr += "data/storage/el2/base/haps/entry/files/GetPathFromUri004.txt";
153     fileUriStr += "?networkid=64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9";
154     const char *fileUri = fileUriStr.c_str();
155     std::string filePathStr =
156         "/data/storage/el2/share/r/64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9/" + BUNDLE_A +
157         "/data/storage/el2/distributedfiles/.remote_share/";
158     filePathStr += "data/storage/el2/base/haps/entry/files/GetPathFromUri004.txt";
159     const char *filePath = filePathStr.c_str();
160     char *result = nullptr;
161     unsigned int length = fileUriStr.size();
162     FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
163     EXPECT_EQ(ret, ERR_OK);
164     if (result != nullptr) {
165         GTEST_LOG_(INFO) << result;
166         EXPECT_EQ(strcmp(result, filePath), 0);
167         FreeResult(&result);
168     }
169     GTEST_LOG_(INFO) << "get_path_from_uri_test_004 end";
170 }
171 
172 /**
173  * @tc.number: get_path_from_uri_test_005
174  * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for distributed files uri
175  * @tc.desc: Set uri and get path
176  * @tc.type: FUNC
177  */
178 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_005, TestSize.Level1)
179 {
180     GTEST_LOG_(INFO) << "get_path_from_uri_test_005 start";
181     std::string fileUriStr = "file://docs/storage/Users/currentUser/Documents/GetPathFromUri005.txt";
182     fileUriStr += "?networkid=64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9";
183     const char *fileUri = fileUriStr.c_str();
184     const char filePath[] =
185         "/data/storage/el2/share/r/64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9/docs/storage/Users/"
186         "currentUser/Documents/GetPathFromUri005.txt";
187     char *result = nullptr;
188     unsigned int length = fileUriStr.size();
189     FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
190     EXPECT_EQ(ret, ERR_OK);
191     if (result != nullptr) {
192         GTEST_LOG_(INFO) << result;
193         EXPECT_EQ(strcmp(result, filePath), 0);
194         FreeResult(&result);
195     }
196     GTEST_LOG_(INFO) << "get_path_from_uri_test_005 end";
197 }
198 
199 /**
200  * @tc.number: get_path_from_uri_test_006
201  * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for distributed files uri
202  * @tc.desc: Set uri and get path
203  * @tc.type: FUNC
204  */
205 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_006, TestSize.Level1)
206 {
207     GTEST_LOG_(INFO) << "get_path_from_uri_test_006 start";
208     std::string bundleB = "com.example.fileshareb";
209     std::string fileUriStr = "file://" + bundleB + "/data/storage/el2/distributedfiles/.remote_share/";
210     fileUriStr += "data/storage/el2/base/haps/entry/files/GetPathFromUri006.txt";
211     fileUriStr += "?networkid=64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9";
212     const char *fileUri = fileUriStr.c_str();
213     std::string filePathUri =
214         "/data/storage/el2/share/r/64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9/" + bundleB;
215     filePathUri += "/data/storage/el2/distributedfiles/.remote_share/";
216     filePathUri += "data/storage/el2/base/haps/entry/files/GetPathFromUri006.txt";
217     const char *filePath = filePathUri.c_str();
218     char *result = nullptr;
219     unsigned int length = fileUriStr.size();
220     FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
221     EXPECT_EQ(ret, ERR_OK);
222     if (result != nullptr) {
223         GTEST_LOG_(INFO) << result;
224         EXPECT_EQ(strcmp(result, filePath), 0);
225         FreeResult(&result);
226     }
227     GTEST_LOG_(INFO) << "get_path_from_uri_test_006 end";
228 }
229 
230 /**
231  * @tc.number: get_path_from_uri_test_007
232  * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for distributed files uri
233  * @tc.desc: Set uri and get path
234  * @tc.type: FUNC
235  */
236 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_007, TestSize.Level1)
237 {
238     GTEST_LOG_(INFO) << "get_path_from_uri_test_007 start";
239     std::string bundleB = "com.example.fileshareb";
240     std::string fileUriStr = "file://" + bundleB + "/data/storage/el2/distributedfiles/.remote_share/";
241     fileUriStr += "data/storage/el2/base/haps/entry/files/GetPathFromUri006.txt";
242     fileUriStr += "?networkid=64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9";
243     const char *fileUri = fileUriStr.c_str();
244     char *result = nullptr;
245     unsigned int length = fileUriStr.size();
246     FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(nullptr, length, &result);
247     EXPECT_EQ(ret, ERR_PARAMS);
248 
249     ret = OH_FileUri_GetPathFromUri(fileUri, length - 1, &result);
250     EXPECT_EQ(ret, ERR_PARAMS);
251 
252     ret = OH_FileUri_GetPathFromUri(fileUri, length, nullptr);
253     EXPECT_EQ(ret, ERR_PARAMS);
254     GTEST_LOG_(INFO) << "get_path_from_uri_test_007 end";
255 }
256 
257 /**
258  * @tc.number: get_uri_from_path_test_001
259  * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
260  * @tc.desc: Set path and get uri
261  * @tc.type: FUNC
262  */
263 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_001, TestSize.Level1)
264 {
265     GTEST_LOG_(INFO) << "get_uri_from_path_test_001 start";
266     const char filePath[] = "storage/Users/currentUser/Documents/GetPathFromUri001.txt";
267     const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/GetPathFromUri001.txt";
268     char *result = nullptr;
269     unsigned int length = strlen(filePath);
270     FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(filePath, length, &result);
271     EXPECT_EQ(ret, ERR_OK);
272     if (result != nullptr) {
273         GTEST_LOG_(INFO) << result;
274         EXPECT_EQ(strcmp(result, fileUri), 0);
275         FreeResult(&result);
276     }
277     GTEST_LOG_(INFO) << "get_uri_from_path_test_001 end";
278 }
279 
280 /**
281  * @tc.number: get_uri_from_path_test_002
282  * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
283  * @tc.desc: Set path and get uri
284  * @tc.type: FUNC
285  */
286 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_002, TestSize.Level1)
287 {
288     GTEST_LOG_(INFO) << "get_uri_from_path_test_002 start";
289     const char filePath[] = "storage/Users/currentUser/Documents/GetPathFromUri001.txt";
290     char *result = nullptr;
291     unsigned int length = strlen(filePath);
292     FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(nullptr, length, &result);
293     EXPECT_EQ(ret, ERR_PARAMS);
294 
295     ret = OH_FileUri_GetUriFromPath(filePath, length - 1, &result);
296     EXPECT_EQ(ret, ERR_PARAMS);
297 
298     ret = OH_FileUri_GetUriFromPath(filePath, length, nullptr);
299     EXPECT_EQ(ret, ERR_PARAMS);
300     GTEST_LOG_(INFO) << "get_uri_from_path_test_002 end";
301 }
302 
303 /**
304  * @tc.number: get_uri_from_path_test_003
305  * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
306  * @tc.desc: Set path and get uri
307  * @tc.type: FUNC
308  */
309 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_003, TestSize.Level1)
310 {
311     GTEST_LOG_(INFO) << "get_uri_from_path_test_003 start";
312     const char filePath[] = "data/storage/el2/media/Photo/12/IMG_12345_999999/test.jpg";
313     const char fileUri[] = "file://media/Photo/12/IMG_12345_999999/test.jpg";
314     char *result = nullptr;
315     unsigned int length = strlen(filePath);
316     FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(filePath, length, &result);
317     EXPECT_EQ(ret, ERR_OK);
318     if (result != nullptr) {
319         GTEST_LOG_(INFO) << result;
320         EXPECT_EQ(strcmp(result, fileUri), 0);
321         FreeResult(&result);
322     }
323     GTEST_LOG_(INFO) << "get_uri_from_path_test_003 end";
324 }
325 
326 /**
327  * @tc.number: get_uri_from_path_test_004
328  * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
329  * @tc.desc: Set path and get uri
330  * @tc.type: FUNC
331  */
332 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_004, TestSize.Level1)
333 {
334     GTEST_LOG_(INFO) << "get_uri_from_path_test_004 start";
335     const char filePath[] = "data/storage/el2/base/Photo/12/IMG_12345_999999/test.jpg";
336     const char fileUri[] = "file://com.example.filesharea/data/storage/el2/base/Photo/12/IMG_12345_999999/test.jpg";
337     char *result = nullptr;
338     unsigned int length = strlen(filePath);
339     FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(filePath, length, &result);
340     EXPECT_EQ(ret, ERR_OK);
341     if (result != nullptr) {
342         GTEST_LOG_(INFO) << result;
343         EXPECT_EQ(strcmp(result, fileUri), 0);
344         FreeResult(&result);
345     }
346     GTEST_LOG_(INFO) << "get_uri_from_path_test_003 end";
347 }
348 
349 /**
350  * @tc.number: get_uri_from_path_test_005
351  * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
352  * @tc.desc: Set path and get uri
353  * @tc.type: FUNC
354  */
355 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_005, TestSize.Level1)
356 {
357     GTEST_LOG_(INFO) << "get_uri_from_path_test_005 start";
358     const char filePath[] = "data/storage/el1/media/Photo/12/IMG_12345_999999/test.jpg";
359     const char fileUri[] = "file://com.example.filesharea/data/storage/el1/media/Photo/12/IMG_12345_999999/test.jpg";
360     char *result = nullptr;
361     unsigned int length = strlen(filePath);
362     FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(filePath, length, &result);
363     EXPECT_EQ(ret, ERR_OK);
364     if (result != nullptr) {
365         GTEST_LOG_(INFO) << result;
366         EXPECT_EQ(strcmp(result, fileUri), 0);
367         FreeResult(&result);
368     }
369     GTEST_LOG_(INFO) << "get_uri_from_path_test_005 end";
370 }
371 
372 /**
373  * @tc.number: get_full_directory_uri_test_001
374  * @tc.name: Test function of OH_FileUri_GetFullDirectoryUri() interface for unknown path
375  * @tc.desc: Set uri and get full directory uri
376  * @tc.type: FUNC
377  */
378 HWTEST_F(NDKFileUriTest, get_full_directory_uri_test_001, TestSize.Level1)
379 {
380     GTEST_LOG_(INFO) << "get_full_directory_uri_test_001 start";
381     const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/GetFullDirectoryUri001.txt";
382     char *result = nullptr;
383     unsigned int length = strlen(fileUri);
384     FileManagement_ErrCode ret = OH_FileUri_GetFullDirectoryUri(fileUri, length, &result);
385     EXPECT_EQ(ret, ERR_ENOENT);
386     FreeResult(&result);
387     GTEST_LOG_(INFO) << "get_full_directory_uri_test_001 end";
388 }
389 
390 /**
391  * @tc.number: get_full_directory_uri_test_002
392  * @tc.name: Test function of OH_FileUri_GetFullDirectoryUri() interface for success
393  * @tc.desc: Set uri and get full directory uri
394  * @tc.type: FUNC
395  */
396 HWTEST_F(NDKFileUriTest, get_full_directory_uri_test_002, TestSize.Level1)
397 {
398     GTEST_LOG_(INFO) << "get_full_directory_uri_test_002 start";
399     const char fileUri[] = "file://com.example.filesharea/data/test/file_uri_test.txt";
400     const char resultUri[] = "file://com.example.filesharea/data/test";
401     char *result = nullptr;
402     unsigned int length = strlen(fileUri);
403     FileManagement_ErrCode ret = OH_FileUri_GetFullDirectoryUri(fileUri, length, &result);
404     EXPECT_EQ(ret, ERR_OK);
405     if (result != nullptr) {
406         GTEST_LOG_(INFO) << result;
407         EXPECT_EQ(strcmp(result, resultUri), 0);
408     }
409     FreeResult(&result);
410     GTEST_LOG_(INFO) << "get_full_directory_uri_test_002 end";
411 }
412 
413 /**
414  * @tc.number: get_full_directory_uri_test_003
415  * @tc.name: Test function of OH_FileUri_GetFullDirectoryUri() interface for success
416  * @tc.desc: Set uri and get full directory uri
417  * @tc.type: FUNC
418  */
419 HWTEST_F(NDKFileUriTest, get_full_directory_uri_test_003, TestSize.Level1)
420 {
421     GTEST_LOG_(INFO) << "get_full_directory_uri_test_003 start";
422     const char fileUri[] = "file://com.example.filesharea/data/test/file_uri_test.txt";
423     char *result = nullptr;
424     unsigned int length = strlen(fileUri);
425     FileManagement_ErrCode ret = OH_FileUri_GetFullDirectoryUri(nullptr, length, &result);
426     EXPECT_EQ(ret, ERR_PARAMS);
427 
428     ret = OH_FileUri_GetFullDirectoryUri(fileUri, length - 1, &result);
429     EXPECT_EQ(ret, ERR_PARAMS);
430 
431     ret = OH_FileUri_GetFullDirectoryUri(fileUri, length, nullptr);
432     EXPECT_EQ(ret, ERR_PARAMS);
433     FreeResult(&result);
434     GTEST_LOG_(INFO) << "get_full_directory_uri_test_003 end";
435 }
436 
437 /**
438  * @tc.number: is_valid_uri_test_001
439  * @tc.name: Test function of OH_FileUri_IsValidUri() interface for real uri
440  * @tc.desc: Set URI and make a judgment
441  * @tc.type: FUNC
442  */
443 HWTEST_F(NDKFileUriTest, is_valid_uri_test_001, TestSize.Level1)
444 {
445     GTEST_LOG_(INFO) << "is_valid_uri_test_001";
446     const char fileUri[] = "file://com.demo.a/data/storage/el2/base/files/IsValidUriTest001.txt";
447     unsigned int length = strlen(fileUri);
448     bool flags = OH_FileUri_IsValidUri(fileUri, length);
449     EXPECT_EQ(flags, true);
450     GTEST_LOG_(INFO) << "is_valid_uri_test_001";
451 }
452 
453 /**
454  * @tc.number: is_valid_uri_test_002
455  * @tc.name: Test function of OH_FileUri_IsValidUri() interface for unreal uri
456  * @tc.desc: Set URI and make a judgment
457  * @tc.type: FUNC
458  */
459 HWTEST_F(NDKFileUriTest, is_valid_uri_test_002, TestSize.Level1)
460 {
461     GTEST_LOG_(INFO) << "is_valid_uri_test_002";
462     const char fileUri[] = "com.demo.a/data/storage/el2/base/files/IsValidUriTest002.txt";
463     unsigned int length = strlen(fileUri);
464     bool flags = OH_FileUri_IsValidUri(fileUri, length);
465     EXPECT_EQ(flags, false);
466     GTEST_LOG_(INFO) << "is_valid_uri_test_002";
467 }
468 
469 /**
470  * @tc.number: is_valid_uri_test_003
471  * @tc.name: Test function of OH_FileUri_IsValidUri() interface for unreal uri
472  * @tc.desc: Set URI and make a judgment
473  * @tc.type: FUNC
474  */
475 HWTEST_F(NDKFileUriTest, is_valid_uri_test_003, TestSize.Level1)
476 {
477     GTEST_LOG_(INFO) << "is_valid_uri_test_003";
478     const char fileUri[] = "com.demo.a/data/storage/el2/base/files/IsValidUriTest002.txt";
479     unsigned int length = strlen(fileUri);
480     bool flags = OH_FileUri_IsValidUri(nullptr, length);
481     EXPECT_EQ(flags, false);
482 
483     flags = OH_FileUri_IsValidUri(fileUri, length - 1);
484     EXPECT_EQ(flags, false);
485     GTEST_LOG_(INFO) << "is_valid_uri_test_003";
486 }
487 
488 /**
489  * @tc.number: get_filename_test_001
490  * @tc.name: Test function of OH_FileUri_GetFileName() interface for unknown path
491  * @tc.desc: Set uri and get filename
492  * @tc.type: FUNC
493  */
494 HWTEST_F(NDKFileUriTest, get_fileUri_filename_test_001, TestSize.Level1)
495 {
496     GTEST_LOG_(INFO) << "get_fileUri_filename_test_001 start";
497     const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/GetFullDirectoryUri001.txt";
498     const char resultUri[] = "GetFullDirectoryUri001.txt";
499     char *result = nullptr;
500     unsigned int length = strlen(fileUri);
501     FileManagement_ErrCode ret = OH_FileUri_GetFileName(fileUri, length, &result);
502     EXPECT_EQ(ret, ERR_OK);
503     if (result != nullptr) {
504         GTEST_LOG_(INFO) << result;
505         EXPECT_EQ(strcmp(result, resultUri), 0);
506     }
507     FreeResult(&result);
508     GTEST_LOG_(INFO) << "get_fileUri_filename_test_001 end";
509 }
510 
511 /**
512  * @tc.number: get_filename_test_002
513  * @tc.name: Test function of OH_FileUri_GetFileName() interface for unknown path
514  * @tc.desc: Set uri and get filename
515  * @tc.type: FUNC
516  */
517 HWTEST_F(NDKFileUriTest, get_fileUri_filename_test_002, TestSize.Level1)
518 {
519     GTEST_LOG_(INFO) << "get_fileUri_filename_test_002 start";
520     const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/dirName";
521     const char resultUri[] = "dirName";
522     char *result = nullptr;
523     unsigned int length = strlen(fileUri);
524     FileManagement_ErrCode ret = OH_FileUri_GetFileName(fileUri, length, &result);
525     EXPECT_EQ(ret, ERR_OK);
526     if (result != nullptr) {
527         GTEST_LOG_(INFO) << result;
528         EXPECT_EQ(strcmp(result, resultUri), 0);
529     }
530     FreeResult(&result);
531     GTEST_LOG_(INFO) << "get_fileUri_filename_test_002 end";
532 }
533 
534 /**
535  * @tc.number: get_filename_test_003
536  * @tc.name: Test function of OH_FileUri_GetFileName() interface for unknown path
537  * @tc.desc: Set uri and get filename
538  * @tc.type: FUNC
539  */
540 HWTEST_F(NDKFileUriTest, get_fileUri_filename_test_003, TestSize.Level1)
541 {
542     GTEST_LOG_(INFO) << "get_fileUri_filename_test_003 start";
543     const char fileUri[] = "file://com.example.filesharea/data/test/file_uri_test.txt";
544     char *result = nullptr;
545     unsigned int length = strlen(fileUri);
546     FileManagement_ErrCode ret = OH_FileUri_GetFileName(nullptr, length, &result);
547     EXPECT_EQ(ret, ERR_PARAMS);
548 
549     ret = OH_FileUri_GetFileName(fileUri, length - 1, &result);
550     EXPECT_EQ(ret, ERR_PARAMS);
551 
552     ret = OH_FileUri_GetFileName(fileUri, length, nullptr);
553     EXPECT_EQ(ret, ERR_PARAMS);
554     FreeResult(&result);
555     GTEST_LOG_(INFO) << "get_fileUri_filename_test_003 end";
556 }
557 
558 /**
559  * @tc.number: get_filename_test_004
560  * @tc.name: Test function of OH_FileUri_GetFileName() interface for unknown path
561  * @tc.desc: Set uri and get filename
562  * @tc.type: FUNC
563  */
564 HWTEST_F(NDKFileUriTest, get_fileUri_filename_test_004, TestSize.Level1)
565 {
566     GTEST_LOG_(INFO) << "get_fileUri_filename_test_004 start";
567     const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/dirName/";
568     char *result = nullptr;
569     unsigned int length = strlen(fileUri);
570     FileManagement_ErrCode ret = OH_FileUri_GetFileName(fileUri, length, &result);
571     EXPECT_EQ(ret, ERR_PARAMS);
572     GTEST_LOG_(INFO) << "get_fileUri_filename_test_004 end";
573 }
574 
575 } // namespace OHOS::AppFileService::ModuleFileUri