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/" + BUNDLE_A + "/data/storage/el2/distributedfiles/.remote_share/";
157 filePathStr += "data/storage/el2/base/haps/entry/files/GetPathFromUri004.txt";
158 const char *filePath = filePathStr.c_str();
159 char *result = nullptr;
160 unsigned int length = fileUriStr.size();
161 FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
162 EXPECT_EQ(ret, ERR_OK);
163 if (result != nullptr) {
164 GTEST_LOG_(INFO) << result;
165 EXPECT_EQ(strcmp(result, filePath), 0);
166 FreeResult(&result);
167 }
168 GTEST_LOG_(INFO) << "get_path_from_uri_test_004 end";
169 }
170
171 /**
172 * @tc.number: get_path_from_uri_test_005
173 * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for distributed files uri
174 * @tc.desc: Set uri and get path
175 * @tc.type: FUNC
176 */
177 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_005, TestSize.Level1)
178 {
179 GTEST_LOG_(INFO) << "get_path_from_uri_test_005 start";
180 std::string fileUriStr = "file://docs/storage/Users/currentUser/Documents/GetPathFromUri005.txt";
181 fileUriStr += "?networkid=64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9";
182 const char *fileUri = fileUriStr.c_str();
183 const char filePath[] = "/data/storage/el2/share/r/docs/storage/Users/currentUser/Documents/GetPathFromUri005.txt";
184 char *result = nullptr;
185 unsigned int length = fileUriStr.size();
186 FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
187 EXPECT_EQ(ret, ERR_OK);
188 if (result != nullptr) {
189 GTEST_LOG_(INFO) << result;
190 EXPECT_EQ(strcmp(result, filePath), 0);
191 FreeResult(&result);
192 }
193 GTEST_LOG_(INFO) << "get_path_from_uri_test_005 end";
194 }
195
196 /**
197 * @tc.number: get_path_from_uri_test_006
198 * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for distributed files uri
199 * @tc.desc: Set uri and get path
200 * @tc.type: FUNC
201 */
202 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_006, TestSize.Level1)
203 {
204 GTEST_LOG_(INFO) << "get_path_from_uri_test_006 start";
205 std::string bundleB = "com.example.fileshareb";
206 std::string fileUriStr = "file://" + bundleB + "/data/storage/el2/distributedfiles/.remote_share/";
207 fileUriStr += "data/storage/el2/base/haps/entry/files/GetPathFromUri006.txt";
208 fileUriStr += "?networkid=64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9";
209 const char *fileUri = fileUriStr.c_str();
210 std::string filePathUri = "/data/storage/el2/share/r/" + bundleB;
211 filePathUri += "/data/storage/el2/distributedfiles/.remote_share/";
212 filePathUri += "data/storage/el2/base/haps/entry/files/GetPathFromUri006.txt";
213 const char *filePath = filePathUri.c_str();
214 char *result = nullptr;
215 unsigned int length = fileUriStr.size();
216 FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(fileUri, length, &result);
217 EXPECT_EQ(ret, ERR_OK);
218 if (result != nullptr) {
219 GTEST_LOG_(INFO) << result;
220 EXPECT_EQ(strcmp(result, filePath), 0);
221 FreeResult(&result);
222 }
223 GTEST_LOG_(INFO) << "get_path_from_uri_test_006 end";
224 }
225
226 /**
227 * @tc.number: get_path_from_uri_test_007
228 * @tc.name: Test function of OH_FileUri_GetPathFromUri() interface for distributed files uri
229 * @tc.desc: Set uri and get path
230 * @tc.type: FUNC
231 */
232 HWTEST_F(NDKFileUriTest, get_path_from_uri_test_007, TestSize.Level1)
233 {
234 GTEST_LOG_(INFO) << "get_path_from_uri_test_007 start";
235 std::string bundleB = "com.example.fileshareb";
236 std::string fileUriStr = "file://" + bundleB + "/data/storage/el2/distributedfiles/.remote_share/";
237 fileUriStr += "data/storage/el2/base/haps/entry/files/GetPathFromUri006.txt";
238 fileUriStr += "?networkid=64799ecdf70788e396f454ff4a6e6ae4b09e20227c39c21f6e67a2aacbcef7b9";
239 const char *fileUri = fileUriStr.c_str();
240 char *result = nullptr;
241 unsigned int length = fileUriStr.size();
242 FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(nullptr, length, &result);
243 EXPECT_EQ(ret, ERR_PARAMS);
244
245 ret = OH_FileUri_GetPathFromUri(fileUri, length - 1, &result);
246 EXPECT_EQ(ret, ERR_PARAMS);
247
248 ret = OH_FileUri_GetPathFromUri(fileUri, length, nullptr);
249 EXPECT_EQ(ret, ERR_PARAMS);
250 GTEST_LOG_(INFO) << "get_path_from_uri_test_007 end";
251 }
252
253 /**
254 * @tc.number: get_uri_from_path_test_001
255 * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
256 * @tc.desc: Set path and get uri
257 * @tc.type: FUNC
258 */
259 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_001, TestSize.Level1)
260 {
261 GTEST_LOG_(INFO) << "get_uri_from_path_test_001 start";
262 const char filePath[] = "storage/Users/currentUser/Documents/GetPathFromUri001.txt";
263 const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/GetPathFromUri001.txt";
264 char *result = nullptr;
265 unsigned int length = strlen(filePath);
266 FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(filePath, length, &result);
267 EXPECT_EQ(ret, ERR_OK);
268 if (result != nullptr) {
269 GTEST_LOG_(INFO) << result;
270 EXPECT_EQ(strcmp(result, fileUri), 0);
271 FreeResult(&result);
272 }
273 GTEST_LOG_(INFO) << "get_uri_from_path_test_001 end";
274 }
275
276 /**
277 * @tc.number: get_uri_from_path_test_002
278 * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
279 * @tc.desc: Set path and get uri
280 * @tc.type: FUNC
281 */
282 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_002, TestSize.Level1)
283 {
284 GTEST_LOG_(INFO) << "get_uri_from_path_test_002 start";
285 const char filePath[] = "storage/Users/currentUser/Documents/GetPathFromUri001.txt";
286 char *result = nullptr;
287 unsigned int length = strlen(filePath);
288 FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(nullptr, length, &result);
289 EXPECT_EQ(ret, ERR_PARAMS);
290
291 ret = OH_FileUri_GetUriFromPath(filePath, length - 1, &result);
292 EXPECT_EQ(ret, ERR_PARAMS);
293
294 ret = OH_FileUri_GetUriFromPath(filePath, length, nullptr);
295 EXPECT_EQ(ret, ERR_PARAMS);
296 GTEST_LOG_(INFO) << "get_uri_from_path_test_002 end";
297 }
298
299 /**
300 * @tc.number: get_uri_from_path_test_003
301 * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
302 * @tc.desc: Set path and get uri
303 * @tc.type: FUNC
304 */
305 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_003, TestSize.Level1)
306 {
307 GTEST_LOG_(INFO) << "get_uri_from_path_test_003 start";
308 const char filePath[] = "data/storage/el2/media/Photo/12/IMG_12345_999999/test.jpg";
309 const char fileUri[] = "file://media/Photo/12/IMG_12345_999999/test.jpg";
310 char *result = nullptr;
311 unsigned int length = strlen(filePath);
312 FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(filePath, length, &result);
313 EXPECT_EQ(ret, ERR_OK);
314 if (result != nullptr) {
315 GTEST_LOG_(INFO) << result;
316 EXPECT_EQ(strcmp(result, fileUri), 0);
317 FreeResult(&result);
318 }
319 GTEST_LOG_(INFO) << "get_uri_from_path_test_003 end";
320 }
321
322 /**
323 * @tc.number: get_uri_from_path_test_004
324 * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
325 * @tc.desc: Set path and get uri
326 * @tc.type: FUNC
327 */
328 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_004, TestSize.Level1)
329 {
330 GTEST_LOG_(INFO) << "get_uri_from_path_test_004 start";
331 const char filePath[] = "data/storage/el2/base/Photo/12/IMG_12345_999999/test.jpg";
332 const char fileUri[] = "file://com.example.filesharea/data/storage/el2/base/Photo/12/IMG_12345_999999/test.jpg";
333 char *result = nullptr;
334 unsigned int length = strlen(filePath);
335 FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(filePath, length, &result);
336 EXPECT_EQ(ret, ERR_OK);
337 if (result != nullptr) {
338 GTEST_LOG_(INFO) << result;
339 EXPECT_EQ(strcmp(result, fileUri), 0);
340 FreeResult(&result);
341 }
342 GTEST_LOG_(INFO) << "get_uri_from_path_test_003 end";
343 }
344
345 /**
346 * @tc.number: get_uri_from_path_test_005
347 * @tc.name: Test function of OH_FileUri_GetUriFromPath() interface for document uri
348 * @tc.desc: Set path and get uri
349 * @tc.type: FUNC
350 */
351 HWTEST_F(NDKFileUriTest, get_uri_from_path_test_005, TestSize.Level1)
352 {
353 GTEST_LOG_(INFO) << "get_uri_from_path_test_005 start";
354 const char filePath[] = "data/storage/el1/media/Photo/12/IMG_12345_999999/test.jpg";
355 const char fileUri[] = "file://com.example.filesharea/data/storage/el1/media/Photo/12/IMG_12345_999999/test.jpg";
356 char *result = nullptr;
357 unsigned int length = strlen(filePath);
358 FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(filePath, length, &result);
359 EXPECT_EQ(ret, ERR_OK);
360 if (result != nullptr) {
361 GTEST_LOG_(INFO) << result;
362 EXPECT_EQ(strcmp(result, fileUri), 0);
363 FreeResult(&result);
364 }
365 GTEST_LOG_(INFO) << "get_uri_from_path_test_005 end";
366 }
367
368 /**
369 * @tc.number: get_full_directory_uri_test_001
370 * @tc.name: Test function of OH_FileUri_GetFullDirectoryUri() interface for unknown path
371 * @tc.desc: Set uri and get full directory uri
372 * @tc.type: FUNC
373 */
374 HWTEST_F(NDKFileUriTest, get_full_directory_uri_test_001, TestSize.Level1)
375 {
376 GTEST_LOG_(INFO) << "get_full_directory_uri_test_001 start";
377 const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/GetFullDirectoryUri001.txt";
378 char *result = nullptr;
379 unsigned int length = strlen(fileUri);
380 FileManagement_ErrCode ret = OH_FileUri_GetFullDirectoryUri(fileUri, length, &result);
381 EXPECT_EQ(ret, ERR_ENOENT);
382 FreeResult(&result);
383 GTEST_LOG_(INFO) << "get_full_directory_uri_test_001 end";
384 }
385
386 /**
387 * @tc.number: get_full_directory_uri_test_002
388 * @tc.name: Test function of OH_FileUri_GetFullDirectoryUri() interface for success
389 * @tc.desc: Set uri and get full directory uri
390 * @tc.type: FUNC
391 */
392 HWTEST_F(NDKFileUriTest, get_full_directory_uri_test_002, TestSize.Level1)
393 {
394 GTEST_LOG_(INFO) << "get_full_directory_uri_test_002 start";
395 const char fileUri[] = "file://com.example.filesharea/data/test/file_uri_test.txt";
396 const char resultUri[] = "file://com.example.filesharea/data/test";
397 char *result = nullptr;
398 unsigned int length = strlen(fileUri);
399 FileManagement_ErrCode ret = OH_FileUri_GetFullDirectoryUri(fileUri, length, &result);
400 EXPECT_EQ(ret, ERR_OK);
401 if (result != nullptr) {
402 GTEST_LOG_(INFO) << result;
403 EXPECT_EQ(strcmp(result, resultUri), 0);
404 }
405 FreeResult(&result);
406 GTEST_LOG_(INFO) << "get_full_directory_uri_test_002 end";
407 }
408
409 /**
410 * @tc.number: get_full_directory_uri_test_003
411 * @tc.name: Test function of OH_FileUri_GetFullDirectoryUri() interface for success
412 * @tc.desc: Set uri and get full directory uri
413 * @tc.type: FUNC
414 */
415 HWTEST_F(NDKFileUriTest, get_full_directory_uri_test_003, TestSize.Level1)
416 {
417 GTEST_LOG_(INFO) << "get_full_directory_uri_test_003 start";
418 const char fileUri[] = "file://com.example.filesharea/data/test/file_uri_test.txt";
419 char *result = nullptr;
420 unsigned int length = strlen(fileUri);
421 FileManagement_ErrCode ret = OH_FileUri_GetFullDirectoryUri(nullptr, length, &result);
422 EXPECT_EQ(ret, ERR_PARAMS);
423
424 ret = OH_FileUri_GetFullDirectoryUri(fileUri, length - 1, &result);
425 EXPECT_EQ(ret, ERR_PARAMS);
426
427 ret = OH_FileUri_GetFullDirectoryUri(fileUri, length, nullptr);
428 EXPECT_EQ(ret, ERR_PARAMS);
429 FreeResult(&result);
430 GTEST_LOG_(INFO) << "get_full_directory_uri_test_003 end";
431 }
432
433 /**
434 * @tc.number: is_valid_uri_test_001
435 * @tc.name: Test function of OH_FileUri_IsValidUri() interface for real uri
436 * @tc.desc: Set URI and make a judgment
437 * @tc.type: FUNC
438 */
439 HWTEST_F(NDKFileUriTest, is_valid_uri_test_001, TestSize.Level1)
440 {
441 GTEST_LOG_(INFO) << "is_valid_uri_test_001";
442 const char fileUri[] = "file://com.demo.a/data/storage/el2/base/files/IsValidUriTest001.txt";
443 unsigned int length = strlen(fileUri);
444 bool flags = OH_FileUri_IsValidUri(fileUri, length);
445 EXPECT_EQ(flags, true);
446 GTEST_LOG_(INFO) << "is_valid_uri_test_001";
447 }
448
449 /**
450 * @tc.number: is_valid_uri_test_002
451 * @tc.name: Test function of OH_FileUri_IsValidUri() interface for unreal uri
452 * @tc.desc: Set URI and make a judgment
453 * @tc.type: FUNC
454 */
455 HWTEST_F(NDKFileUriTest, is_valid_uri_test_002, TestSize.Level1)
456 {
457 GTEST_LOG_(INFO) << "is_valid_uri_test_002";
458 const char fileUri[] = "com.demo.a/data/storage/el2/base/files/IsValidUriTest002.txt";
459 unsigned int length = strlen(fileUri);
460 bool flags = OH_FileUri_IsValidUri(fileUri, length);
461 EXPECT_EQ(flags, false);
462 GTEST_LOG_(INFO) << "is_valid_uri_test_002";
463 }
464
465 /**
466 * @tc.number: is_valid_uri_test_003
467 * @tc.name: Test function of OH_FileUri_IsValidUri() interface for unreal uri
468 * @tc.desc: Set URI and make a judgment
469 * @tc.type: FUNC
470 */
471 HWTEST_F(NDKFileUriTest, is_valid_uri_test_003, TestSize.Level1)
472 {
473 GTEST_LOG_(INFO) << "is_valid_uri_test_003";
474 const char fileUri[] = "com.demo.a/data/storage/el2/base/files/IsValidUriTest002.txt";
475 unsigned int length = strlen(fileUri);
476 bool flags = OH_FileUri_IsValidUri(nullptr, length);
477 EXPECT_EQ(flags, false);
478
479 flags = OH_FileUri_IsValidUri(fileUri, length - 1);
480 EXPECT_EQ(flags, false);
481 GTEST_LOG_(INFO) << "is_valid_uri_test_003";
482 }
483
484 /**
485 * @tc.number: get_filename_test_001
486 * @tc.name: Test function of OH_FileUri_GetFileName() interface for unknown path
487 * @tc.desc: Set uri and get filename
488 * @tc.type: FUNC
489 */
490 HWTEST_F(NDKFileUriTest, get_fileUri_filename_test_001, TestSize.Level1)
491 {
492 GTEST_LOG_(INFO) << "get_fileUri_filename_test_001 start";
493 const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/GetFullDirectoryUri001.txt";
494 const char resultUri[] = "GetFullDirectoryUri001.txt";
495 char *result = nullptr;
496 unsigned int length = strlen(fileUri);
497 FileManagement_ErrCode ret = OH_FileUri_GetFileName(fileUri, length, &result);
498 EXPECT_EQ(ret, ERR_OK);
499 if (result != nullptr) {
500 GTEST_LOG_(INFO) << result;
501 EXPECT_EQ(strcmp(result, resultUri), 0);
502 }
503 FreeResult(&result);
504 GTEST_LOG_(INFO) << "get_fileUri_filename_test_001 end";
505 }
506
507 /**
508 * @tc.number: get_filename_test_002
509 * @tc.name: Test function of OH_FileUri_GetFileName() interface for unknown path
510 * @tc.desc: Set uri and get filename
511 * @tc.type: FUNC
512 */
513 HWTEST_F(NDKFileUriTest, get_fileUri_filename_test_002, TestSize.Level1)
514 {
515 GTEST_LOG_(INFO) << "get_fileUri_filename_test_002 start";
516 const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/dirName";
517 const char resultUri[] = "dirName";
518 char *result = nullptr;
519 unsigned int length = strlen(fileUri);
520 FileManagement_ErrCode ret = OH_FileUri_GetFileName(fileUri, length, &result);
521 EXPECT_EQ(ret, ERR_OK);
522 if (result != nullptr) {
523 GTEST_LOG_(INFO) << result;
524 EXPECT_EQ(strcmp(result, resultUri), 0);
525 }
526 FreeResult(&result);
527 GTEST_LOG_(INFO) << "get_fileUri_filename_test_002 end";
528 }
529
530 /**
531 * @tc.number: get_filename_test_003
532 * @tc.name: Test function of OH_FileUri_GetFileName() interface for unknown path
533 * @tc.desc: Set uri and get filename
534 * @tc.type: FUNC
535 */
536 HWTEST_F(NDKFileUriTest, get_fileUri_filename_test_003, TestSize.Level1)
537 {
538 GTEST_LOG_(INFO) << "get_fileUri_filename_test_003 start";
539 const char fileUri[] = "file://com.example.filesharea/data/test/file_uri_test.txt";
540 char *result = nullptr;
541 unsigned int length = strlen(fileUri);
542 FileManagement_ErrCode ret = OH_FileUri_GetFileName(nullptr, length, &result);
543 EXPECT_EQ(ret, ERR_PARAMS);
544
545 ret = OH_FileUri_GetFileName(fileUri, length - 1, &result);
546 EXPECT_EQ(ret, ERR_PARAMS);
547
548 ret = OH_FileUri_GetFileName(fileUri, length, nullptr);
549 EXPECT_EQ(ret, ERR_PARAMS);
550 FreeResult(&result);
551 GTEST_LOG_(INFO) << "get_fileUri_filename_test_003 end";
552 }
553
554 /**
555 * @tc.number: get_filename_test_004
556 * @tc.name: Test function of OH_FileUri_GetFileName() interface for unknown path
557 * @tc.desc: Set uri and get filename
558 * @tc.type: FUNC
559 */
560 HWTEST_F(NDKFileUriTest, get_fileUri_filename_test_004, TestSize.Level1)
561 {
562 GTEST_LOG_(INFO) << "get_fileUri_filename_test_004 start";
563 const char fileUri[] = "file://docs/storage/Users/currentUser/Documents/dirName/";
564 char *result = nullptr;
565 unsigned int length = strlen(fileUri);
566 FileManagement_ErrCode ret = OH_FileUri_GetFileName(fileUri, length, &result);
567 EXPECT_EQ(ret, ERR_PARAMS);
568 GTEST_LOG_(INFO) << "get_fileUri_filename_test_004 end";
569 }
570
571 } // namespace OHOS::AppFileService::ModuleFileUri