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