1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 /**
17  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0000
18  * @tc.name: js_file_access_ext_ability_ListFile_0000
19  * @tc.desc: Test function of ListFile interface for uri、nativeOffset or nativeMaxCount failure branch.
20  * @tc.size: MEDIUM
21  * @tc.type: FUNC
22  * @tc.level Level 3
23  * @tc.require: issuesI8ZE8T
24  */
25 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0000, testing::ext::TestSize.Level1)
26 {
27     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0000";
28     try {
29         napi_value rslt = nullptr;
30         FileInfo fileInfo;
31         int64_t offset = 0;
32         int64_t maxCount = 0;
33         FileFilter filter;
34         vector<FileInfo> fileInfoVec;
35         EXPECT_NE(ability, nullptr);
36 
37         // 模拟获取uri为空
38         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
39         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
40         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
41         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
42         EXPECT_EQ(result, ERR_OK);
43 
44         // 模拟获取nativeOffset为空
45         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
46         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
47         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
48             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
49         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)).WillOnce(Return(napi_ok));
50         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
51         EXPECT_EQ(result, ERR_OK);
52 
53         // 模拟获取nativeMaxCount为空
54         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
55         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
56         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
57             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
58         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
59             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
60             .WillOnce(Return(napi_ok));
61         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
62         EXPECT_EQ(result, ERR_OK);
63     } catch (...) {
64         EXPECT_TRUE(false);
65         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
66     }
67     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0000";
68 }
69 
70 /**
71  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0001
72  * @tc.name: js_file_access_ext_ability_ListFile_0001
73  * @tc.desc: Test function of ListFile interface for nativeFilter failure/success branch.
74  * @tc.size: MEDIUM
75  * @tc.type: FUNC
76  * @tc.level Level 3
77  * @tc.require: issuesI8ZE8T
78  */
79 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0001, testing::ext::TestSize.Level1)
80 {
81     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0001";
82     try {
83         napi_value rslt = nullptr;
84         FileInfo fileInfo;
85         int64_t offset = 0;
86         int64_t maxCount = 0;
87         FileFilter filter;
88         vector<FileInfo> fileInfoVec;
89         EXPECT_NE(ability, nullptr);
90 
91         // 模拟获取nativeFilter为空
92         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
93         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
94         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
95             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
96         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
97             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
98             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
99         EXPECT_CALL(*insMoc, napi_get_null(_, _)).WillOnce(Return(napi_ok));
100         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
101         EXPECT_EQ(result, ERR_OK);
102 
103         // 模拟获取nativeFilter成功
104         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
105         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
106         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
107             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
108         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
109             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
110             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
111         EXPECT_CALL(*insMoc, napi_get_null(_, _))
112             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
113         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)).WillOnce(Return(napi_ok));
114         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
115         EXPECT_EQ(result, ERR_OK);
116     } catch (...) {
117         EXPECT_TRUE(false);
118         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
119     }
120     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0001";
121 }
122 
123 /**
124  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0002
125  * @tc.name: js_file_access_ext_ability_ListFile_0002
126  * @tc.desc: Test function of ListFile interface for nativeFilter or fileFilter.suffixArray
127  *           failure/success branch.
128  * @tc.size: MEDIUM
129  * @tc.type: FUNC
130  * @tc.level Level 3
131  * @tc.require: issuesI8ZE8T
132  */
133 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0002, testing::ext::TestSize.Level1)
134 {
135     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0002";
136     try {
137         napi_value rslt = nullptr;
138         FileInfo fileInfo;
139         int64_t offset = 0;
140         int64_t maxCount = 0;
141         FileFilter filter;
142         filter.SetHasFilter(true);
143         vector<FileInfo> fileInfoVec;
144         EXPECT_NE(ability, nullptr);
145 
146         // 模拟创建nativeFilter失败
147         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
148         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
149         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
150             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
151         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
152             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
153             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
154         EXPECT_CALL(*insMoc, napi_create_object(_, _)).WillOnce(Return(napi_ok));
155         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
156         EXPECT_EQ(result, ERR_OK);
157 
158         // 模拟设置fileFilter.suffixArray失败
159         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
160         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
161         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
162             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
163         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
164             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
165             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
166         EXPECT_CALL(*insMoc, napi_create_object(_, _))
167             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
168         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)).WillOnce(Return(napi_ok));
169         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
170         EXPECT_EQ(result, ERR_OK);
171     } catch (...) {
172         EXPECT_TRUE(false);
173         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
174     }
175     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0002";
176 }
177 
CallListFileHeadSucceed(shared_ptr<AssistantMock> insMoc)178 static void CallListFileHeadSucceed(shared_ptr<AssistantMock> insMoc)
179 {
180     napi_value rslt = nullptr;
181     EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
182     EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
183     EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
184         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
185     EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
186         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
187         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
188     EXPECT_CALL(*insMoc, napi_create_object(_, _))
189         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
190 }
191 
192 /**
193  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0003
194  * @tc.name: js_file_access_ext_ability_ListFile_0003
195  * @tc.desc: Test function of ListFile interface for fileFilter.displayNameArray and fileFilter.mimeTypeArray
196  *           failure/success branch.
197  * @tc.size: MEDIUM
198  * @tc.type: FUNC
199  * @tc.level Level 3
200  * @tc.require: issuesI8ZE8T
201  */
202 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0003, testing::ext::TestSize.Level1)
203 {
204     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0003";
205     try {
206         napi_value rslt = nullptr;
207         FileInfo fileInfo;
208         int64_t offset = 0;
209         int64_t maxCount = 0;
210         FileFilter filter;
211         filter.SetHasFilter(true);
212         vector<FileInfo> fileInfoVec;
213         EXPECT_NE(ability, nullptr);
214 
215         // 模拟获取fileFilter.displayNameArray失败
216         CallListFileHeadSucceed(insMoc);
217         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
218             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
219             .WillOnce(Return(napi_ok));
220         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
221         EXPECT_EQ(result, ERR_OK);
222 
223         // 模拟获取fileFilter.mimeTypeArray失败
224         CallListFileHeadSucceed(insMoc);
225         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
226             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
227             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
228             .WillOnce(Return(napi_ok));
229         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
230         EXPECT_EQ(result, ERR_OK);
231     } catch (...) {
232         EXPECT_TRUE(false);
233         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
234     }
235     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0003";
236 }
237 
238 /**
239  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0004
240  * @tc.name: js_file_access_ext_ability_ListFile_0004
241  * @tc.desc: Test function of ListFile interface for fileFilter.nativeFileSizeOver and
242  *           fileFilter.nativeLastModifiedAfter failure/success branch.
243  * @tc.size: MEDIUM
244  * @tc.type: FUNC
245  * @tc.level Level 3
246  * @tc.require: issuesI8ZE8T
247  */
248 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0004, testing::ext::TestSize.Level1)
249 {
250     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0004";
251     try {
252         napi_value rslt = nullptr;
253         FileInfo fileInfo;
254         int64_t offset = 0;
255         int64_t maxCount = 0;
256         FileFilter filter;
257         filter.SetHasFilter(true);
258         vector<FileInfo> fileInfoVec;
259         EXPECT_NE(ability, nullptr);
260 
261         // 模拟获取fileFilter.nativeFileSizeOver失败
262         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
263         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
264         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
265             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
266         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
267             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
268             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
269             .WillOnce(Return(napi_ok));
270         EXPECT_CALL(*insMoc, napi_create_object(_, _))
271             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
272         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
273             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
274             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
275             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
276         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
277         EXPECT_EQ(result, ERR_OK);
278 
279         // 模拟获取fileFilter.nativeLastModifiedAfter失败
280         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
281         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
282         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
283             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
284         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
285             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
286             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
287             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
288         EXPECT_CALL(*insMoc, napi_create_object(_, _))
289             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
290         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
291             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
292             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
293             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
294         EXPECT_CALL(*insMoc, napi_create_double(_, _, _)).WillOnce(Return(napi_ok));
295         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
296         EXPECT_EQ(result, ERR_OK);
297     } catch (...) {
298         EXPECT_TRUE(false);
299         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
300     }
301     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0004";
302 }
303 
CallCreateNativeValueSucceed(shared_ptr<AssistantMock> insMoc)304 static void CallCreateNativeValueSucceed(shared_ptr<AssistantMock> insMoc)
305 {
306     // 模拟调用CreateNativeValue成功
307     napi_value rslt = nullptr;
308     EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
309     EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
310     EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
311         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
312     EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
313         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
314         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
315         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
316     EXPECT_CALL(*insMoc, napi_create_object(_, _))
317         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
318     EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
319         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
320         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
321         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
322     EXPECT_CALL(*insMoc, napi_create_double(_, _, _))
323         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
324     EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _))
325         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
326 }
327 
328 /**
329  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0005
330  * @tc.name: js_file_access_ext_ability_ListFile_0005
331  * @tc.desc: Test function of ListFile interface for fileFilter.nativeExcludeMedia、fileFilter.suffixArray and
332  *           fileFilter.displayNameArray failure/success branch.
333  * @tc.size: MEDIUM
334  * @tc.type: FUNC
335  * @tc.level Level 3
336  * @tc.require: issuesI8ZE8T
337  */
338 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0005, testing::ext::TestSize.Level1)
339 {
340     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0005";
341     try {
342         napi_value rslt = nullptr;
343         FileInfo fileInfo;
344         int64_t offset = 0;
345         int64_t maxCount = 0;
346         FileFilter filter;
347         filter.SetHasFilter(true);
348         vector<FileInfo> fileInfoVec;
349         EXPECT_NE(ability, nullptr);
350 
351         // 模拟获取fileFilter.nativeExcludeMedia失败
352         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
353         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
354         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
355             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
356         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
357             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
358             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
359             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
360         EXPECT_CALL(*insMoc, napi_create_object(_, _))
361             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
362         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
363             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
364             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
365             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
366         EXPECT_CALL(*insMoc, napi_create_double(_, _, _))
367             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
368         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
369         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
370         EXPECT_EQ(result, ERR_OK);
371 
372         // 模拟设置fileFilter.suffixArray失败
373         CallCreateNativeValueSucceed(insMoc);
374         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
375         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
376         EXPECT_EQ(result, ERR_OK);
377 
378         // 模拟设置fileFilter.displayNameArray失败
379         CallCreateNativeValueSucceed(insMoc);
380         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
381             .WillOnce(Return(napi_ok))
382             .WillOnce(Return(napi_invalid_arg));
383         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
384         EXPECT_EQ(result, ERR_OK);
385     } catch (...) {
386         EXPECT_TRUE(false);
387         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
388     }
389     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0005";
390 }
391 
392 /**
393  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0006
394  * @tc.name: js_file_access_ext_ability_ListFile_0006
395  * @tc.desc: Test function of ListFile interface for fileFilter.mimeTypeArray、fileFilter.nativeFileSizeOver
396  *           fileFilter.nativeLastModifiedAfter and fileFilter.nativeExcludeMedia failure/success branch.
397  * @tc.size: MEDIUM
398  * @tc.type: FUNC
399  * @tc.level Level 3
400  * @tc.require: issuesI8ZE8T
401  */
402 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0006, testing::ext::TestSize.Level1)
403 {
404     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0006";
405     try {
406         FileInfo fileInfo;
407         int64_t offset = 0;
408         int64_t maxCount = 0;
409         FileFilter filter;
410         filter.SetHasFilter(true);
411         vector<FileInfo> fileInfoVec;
412         EXPECT_NE(ability, nullptr);
413 
414         // 模拟设置fileFilter.mimeTypeArray失败
415         CallCreateNativeValueSucceed(insMoc);
416         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
417             .WillOnce(Return(napi_ok))
418             .WillOnce(Return(napi_ok))
419             .WillOnce(Return(napi_invalid_arg));
420         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
421         EXPECT_EQ(result, ERR_OK);
422 
423         // 模拟设置fileFilter.nativeFileSizeOver失败
424         CallCreateNativeValueSucceed(insMoc);
425         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
426             .WillOnce(Return(napi_ok))
427             .WillOnce(Return(napi_ok))
428             .WillOnce(Return(napi_ok))
429             .WillOnce(Return(napi_invalid_arg));
430         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
431         EXPECT_EQ(result, ERR_OK);
432 
433         // 模拟设置fileFilter.nativeLastModifiedAfter失败
434         CallCreateNativeValueSucceed(insMoc);
435         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
436             .WillOnce(Return(napi_ok))
437             .WillOnce(Return(napi_ok))
438             .WillOnce(Return(napi_ok))
439             .WillOnce(Return(napi_ok))
440             .WillOnce(Return(napi_invalid_arg));
441         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
442         EXPECT_EQ(result, ERR_OK);
443 
444         // 模拟设置fileFilter.nativeExcludeMedia失败
445         CallCreateNativeValueSucceed(insMoc);
446         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
447             .WillOnce(Return(napi_ok))
448             .WillOnce(Return(napi_ok))
449             .WillOnce(Return(napi_ok))
450             .WillOnce(Return(napi_ok))
451             .WillOnce(Return(napi_ok))
452             .WillOnce(Return(napi_invalid_arg));
453         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
454         EXPECT_EQ(result, ERR_OK);
455     } catch (...) {
456         EXPECT_TRUE(false);
457         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
458     }
459     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0006";
460 }
461 
462 /**
463  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0007
464  * @tc.name: js_file_access_ext_ability_ListFile_0007
465  * @tc.desc: Test function of ListFile interface for code、nativeArray failure/success branch.
466  * @tc.size: MEDIUM
467  * @tc.type: FUNC
468  * @tc.level Level 3
469  * @tc.require: issuesI8ZE8T
470  */
471 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0007, testing::ext::TestSize.Level1)
472 {
473     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0007";
474     try {
475         napi_value rslt = nullptr;
476         FileInfo fileInfo;
477         int64_t offset = 0;
478         int64_t maxCount = 0;
479         FileFilter filter;
480         filter.SetHasFilter(true);
481         vector<FileInfo> fileInfoVec;
482         EXPECT_NE(ability, nullptr);
483 
484         // 模拟获取code失败
485         CallCreateNativeValueSucceed(insMoc);
486         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
487             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
488             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
489             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
490         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
491             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
492         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
493             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
494             .WillOnce(Return(napi_ok));
495         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
496             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
497         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
498         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
499         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
500         EXPECT_EQ(result, ERR_OK);
501 
502         // 模拟获取nativeArray失败
503         CallCreateNativeValueSucceed(insMoc);
504         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
505             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
506             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
507             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
508         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
509             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
510         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
511             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
512             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
513         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
514             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
515         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
516         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
517         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
518         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
519         EXPECT_EQ(result, ERR_OK);
520     } catch (...) {
521         EXPECT_TRUE(false);
522         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
523     }
524     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0007";
525 }
526 
527 /**
528  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0008
529  * @tc.name: js_file_access_ext_ability_ListFile_0008
530  * @tc.desc: Test function of ListFile interface for length failure/success branch.
531  * @tc.size: MEDIUM
532  * @tc.type: FUNC
533  * @tc.level Level 3
534  * @tc.require: issuesI8ZE8T
535  */
536 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0008, testing::ext::TestSize.Level1)
537 {
538     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0008";
539     try {
540         napi_value rslt = nullptr;
541         FileInfo fileInfo;
542         FileFilter filter;
543         filter.SetHasFilter(true);
544         vector<FileInfo> fileInfoVec;
545         EXPECT_NE(ability, nullptr);
546 
547         // 模拟获取length失败
548         CallCreateNativeValueSucceed(insMoc);
549         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
550             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
551         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
552             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
553         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
554             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
555             .WillOnce(Return(napi_ok))
556             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
557         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
558             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
559         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
560         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
561         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
562         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg));
563         auto result = ability->ListFile(fileInfo, 0, 0, filter, fileInfoVec);
564         EXPECT_EQ(result, ERR_OK);
565 
566         // 模拟获取length成功
567         CallCreateNativeValueSucceed(insMoc);
568         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
569             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
570         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
571             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
572         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
573             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
574             .WillOnce(Return(napi_ok))
575             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
576         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
577             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
578         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
579         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
580         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
581         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok));
582         result = ability->ListFile(fileInfo, 0, 0, filter, fileInfoVec);
583         EXPECT_EQ(result, ERR_OK);
584     } catch (...) {
585         EXPECT_TRUE(false);
586         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
587     }
588     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0008";
589 }
590 
591 /**
592  * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0009
593  * @tc.name: js_file_access_ext_ability_ListFile_0009
594  * @tc.desc: Test function of ListFile interface for CallJsMethod and value->code failure/success branch.
595  * @tc.size: MEDIUM
596  * @tc.type: FUNC
597  * @tc.level Level 3
598  * @tc.require: issuesI8ZE8T
599  */
600 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0009, testing::ext::TestSize.Level1)
601 {
602     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0009";
603     try {
604         int status = napi_invalid_arg;
605         napi_value rslt = nullptr;
606         FileInfo fileInfo;
607         int64_t offset = 0;
608         int64_t maxCount = 0;
609         FileFilter filter;
610         filter.SetHasFilter(true);
611         vector<FileInfo> fileInfoVec;
612         EXPECT_NE(ability, nullptr);
613 
614         // 模拟调用CallJsMethod失败
615         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
616         auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
617         EXPECT_EQ(result, EINVAL);
618 
619         // 模拟获取value->code失败
620         CallCreateNativeValueSucceed(insMoc);
621         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
622             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
623             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
624             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
625         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
626             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
627         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
628             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
629             .WillOnce(Return(napi_ok))
630             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
631         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
632             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
633         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
634         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
635             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(status), Return(napi_ok)));
636         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
637         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok));
638         result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec);
639         EXPECT_EQ(result, napi_invalid_arg);
640     } catch (...) {
641         EXPECT_TRUE(false);
642         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
643     }
644     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0009";
645 }
646 
647 /**
648  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0000
649  * @tc.name: js_file_access_ext_ability_ScanFile_0000
650  * @tc.desc: Test function of ScanFile interface for uri、nativeOffset or nativeMaxCount failure branch.
651  * @tc.size: MEDIUM
652  * @tc.type: FUNC
653  * @tc.level Level 3
654  * @tc.require: issuesI8ZE8T
655  */
656 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0000, testing::ext::TestSize.Level1)
657 {
658     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0000";
659     try {
660         napi_value rslt = nullptr;
661         FileInfo fileInfo;
662         int64_t offset = 0;
663         int64_t maxCount = 0;
664         FileFilter filter;
665         vector<FileInfo> fileInfoVec;
666         EXPECT_NE(ability, nullptr);
667 
668         // 模拟获取uri为空
669         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
670         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
671         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
672         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
673         EXPECT_EQ(result, ERR_OK);
674 
675         // 模拟获取nativeOffset为空
676         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
677         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
678         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
679             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
680         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)).WillOnce(Return(napi_ok));
681         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
682         EXPECT_EQ(result, ERR_OK);
683 
684         // 模拟获取nativeMaxCount为空
685         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
686         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
687         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
688             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
689         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
690             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
691             .WillOnce(Return(napi_ok));
692         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
693         EXPECT_EQ(result, ERR_OK);
694     } catch (...) {
695         EXPECT_TRUE(false);
696         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
697     }
698     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0000";
699 }
700 
701 /**
702  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0001
703  * @tc.name: js_file_access_ext_ability_ScanFile_0001
704  * @tc.desc: Test function of ScanFile interface for nativeFilter failure/success branch.
705  * @tc.size: MEDIUM
706  * @tc.type: FUNC
707  * @tc.level Level 3
708  * @tc.require: issuesI8ZE8T
709  */
710 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0001, testing::ext::TestSize.Level1)
711 {
712     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0001";
713     try {
714         napi_value rslt = nullptr;
715         FileInfo fileInfo;
716         int64_t offset = 0;
717         int64_t maxCount = 0;
718         FileFilter filter;
719         vector<FileInfo> fileInfoVec;
720         EXPECT_NE(ability, nullptr);
721 
722         // 模拟获取nativeFilter为空
723         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
724         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
725         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
726             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
727         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
728             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
729             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
730         EXPECT_CALL(*insMoc, napi_get_null(_, _)).WillOnce(Return(napi_ok));
731         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
732         EXPECT_EQ(result, ERR_OK);
733 
734         // 模拟获取nativeFilter成功
735         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
736         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
737         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
738             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
739         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
740             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
741             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
742         EXPECT_CALL(*insMoc, napi_get_null(_, _))
743             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
744         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)).WillOnce(Return(napi_ok));
745         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
746         EXPECT_EQ(result, ERR_OK);
747     } catch (...) {
748         EXPECT_TRUE(false);
749         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
750     }
751     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0001";
752 }
753 
754 /**
755  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0002
756  * @tc.name: js_file_access_ext_ability_ScanFile_0002
757  * @tc.desc: Test function of ScanFile interface for nativeFilter or fileFilter.suffixArray
758  *           failure/success branch.
759  * @tc.size: MEDIUM
760  * @tc.type: FUNC
761  * @tc.level Level 3
762  * @tc.require: issuesI8ZE8T
763  */
764 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0002, testing::ext::TestSize.Level1)
765 {
766     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0002";
767     try {
768         napi_value rslt = nullptr;
769         FileInfo fileInfo;
770         int64_t offset = 0;
771         int64_t maxCount = 0;
772         FileFilter filter;
773         filter.SetHasFilter(true);
774         vector<FileInfo> fileInfoVec;
775         EXPECT_NE(ability, nullptr);
776 
777         // 模拟创建nativeFilter失败
778         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
779         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
780         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
781             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
782         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
783             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
784             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
785         EXPECT_CALL(*insMoc, napi_create_object(_, _)).WillOnce(Return(napi_ok));
786         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
787         EXPECT_EQ(result, ERR_OK);
788 
789         // 模拟设置fileFilter.suffixArray失败
790         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
791         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
792         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
793             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
794         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
795             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
796             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
797         EXPECT_CALL(*insMoc, napi_create_object(_, _))
798             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
799         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)).WillOnce(Return(napi_ok));
800         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
801         EXPECT_EQ(result, ERR_OK);
802     } catch (...) {
803         EXPECT_TRUE(false);
804         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
805     }
806     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0002";
807 }
808 
809 /**
810  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0003
811  * @tc.name: js_file_access_ext_ability_ScanFile_0003
812  * @tc.desc: Test function of ScanFile interface for fileFilter.displayNameArray and fileFilter.mimeTypeArray
813  *           failure/success branch.
814  * @tc.size: MEDIUM
815  * @tc.type: FUNC
816  * @tc.level Level 3
817  * @tc.require: issuesI8ZE8T
818  */
819 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0003, testing::ext::TestSize.Level1)
820 {
821     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0003";
822     try {
823         napi_value rslt = nullptr;
824         FileInfo fileInfo;
825         int64_t offset = 0;
826         int64_t maxCount = 0;
827         FileFilter filter;
828         filter.SetHasFilter(true);
829         vector<FileInfo> fileInfoVec;
830         EXPECT_NE(ability, nullptr);
831 
832         // 模拟获取fileFilter.displayNameArray失败
833         CallListFileHeadSucceed(insMoc);
834         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
835             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
836             .WillOnce(Return(napi_ok));
837         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
838         EXPECT_EQ(result, ERR_OK);
839 
840         // 模拟获取fileFilter.mimeTypeArray失败
841         CallListFileHeadSucceed(insMoc);
842         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
843             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
844             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
845             .WillOnce(Return(napi_ok));
846         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
847         EXPECT_EQ(result, ERR_OK);
848     } catch (...) {
849         EXPECT_TRUE(false);
850         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
851     }
852     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0003";
853 }
854 
855 /**
856  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0004
857  * @tc.name: js_file_access_ext_ability_ScanFile_0004
858  * @tc.desc: Test function of ScanFile interface for fileFilter.nativeFileSizeOver and
859  *           fileFilter.nativeLastModifiedAfter failure/success branch.
860  * @tc.size: MEDIUM
861  * @tc.type: FUNC
862  * @tc.level Level 3
863  * @tc.require: issuesI8ZE8T
864  */
865 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0004, testing::ext::TestSize.Level1)
866 {
867     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0004";
868     try {
869         napi_value rslt = nullptr;
870         FileInfo fileInfo;
871         int64_t offset = 0;
872         int64_t maxCount = 0;
873         FileFilter filter;
874         filter.SetHasFilter(true);
875         vector<FileInfo> fileInfoVec;
876         EXPECT_NE(ability, nullptr);
877 
878         // 模拟获取fileFilter.nativeFileSizeOver失败
879         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
880         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
881         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
882             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
883         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
884             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
885             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
886             .WillOnce(Return(napi_ok));
887         EXPECT_CALL(*insMoc, napi_create_object(_, _))
888             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
889         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
890             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
891             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
892             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
893         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
894         EXPECT_EQ(result, ERR_OK);
895 
896         // 模拟获取fileFilter.nativeLastModifiedAfter失败
897         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
898         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
899         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
900             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
901         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
902             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
903             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
904             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
905         EXPECT_CALL(*insMoc, napi_create_object(_, _))
906             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
907         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
908             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
909             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
910             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
911         EXPECT_CALL(*insMoc, napi_create_double(_, _, _)).WillOnce(Return(napi_ok));
912         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
913         EXPECT_EQ(result, ERR_OK);
914     } catch (...) {
915         EXPECT_TRUE(false);
916         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
917     }
918     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0004";
919 }
920 
921 /**
922  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0005
923  * @tc.name: js_file_access_ext_ability_ScanFile_0005
924  * @tc.desc: Test function of ScanFile interface for fileFilter.nativeExcludeMedia、fileFilter.suffixArray and
925  *           fileFilter.displayNameArray failure/success branch.
926  * @tc.size: MEDIUM
927  * @tc.type: FUNC
928  * @tc.level Level 3
929  * @tc.require: issuesI8ZE8T
930  */
931 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0005, testing::ext::TestSize.Level1)
932 {
933     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0005";
934     try {
935         napi_value rslt = nullptr;
936         FileInfo fileInfo;
937         int64_t offset = 0;
938         int64_t maxCount = 0;
939         FileFilter filter;
940         filter.SetHasFilter(true);
941         vector<FileInfo> fileInfoVec;
942         EXPECT_NE(ability, nullptr);
943 
944         // 模拟获取fileFilter.nativeExcludeMedia失败
945         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
946         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
947         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
948             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
949         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
950             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
951             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
952             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
953         EXPECT_CALL(*insMoc, napi_create_object(_, _))
954             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
955         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
956             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
957             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
958             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
959         EXPECT_CALL(*insMoc, napi_create_double(_, _, _))
960             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
961         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
962         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
963         EXPECT_EQ(result, ERR_OK);
964 
965         // 模拟设置fileFilter.suffixArray失败
966         CallCreateNativeValueSucceed(insMoc);
967         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
968         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
969         EXPECT_EQ(result, ERR_OK);
970 
971         // 模拟设置fileFilter.displayNameArray失败
972         CallCreateNativeValueSucceed(insMoc);
973         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
974             .WillOnce(Return(napi_ok))
975             .WillOnce(Return(napi_invalid_arg));
976         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
977         EXPECT_EQ(result, ERR_OK);
978     } catch (...) {
979         EXPECT_TRUE(false);
980         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
981     }
982     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0005";
983 }
984 
985 /**
986  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0006
987  * @tc.name: js_file_access_ext_ability_ScanFile_0006
988  * @tc.desc: Test function of ScanFile interface for fileFilter.mimeTypeArray、fileFilter.nativeFileSizeOver
989  *           fileFilter.nativeLastModifiedAfter and fileFilter.nativeExcludeMedia failure/success branch.
990  * @tc.size: MEDIUM
991  * @tc.type: FUNC
992  * @tc.level Level 3
993  * @tc.require: issuesI8ZE8T
994  */
995 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0006, testing::ext::TestSize.Level1)
996 {
997     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0006";
998     try {
999         FileInfo fileInfo;
1000         int64_t offset = 0;
1001         int64_t maxCount = 0;
1002         FileFilter filter;
1003         filter.SetHasFilter(true);
1004         vector<FileInfo> fileInfoVec;
1005         EXPECT_NE(ability, nullptr);
1006 
1007         // 模拟设置fileFilter.mimeTypeArray失败
1008         CallCreateNativeValueSucceed(insMoc);
1009         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
1010             .WillOnce(Return(napi_ok))
1011             .WillOnce(Return(napi_ok))
1012             .WillOnce(Return(napi_invalid_arg));
1013         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1014         EXPECT_EQ(result, ERR_OK);
1015 
1016         // 模拟设置fileFilter.nativeFileSizeOver失败
1017         CallCreateNativeValueSucceed(insMoc);
1018         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
1019             .WillOnce(Return(napi_ok))
1020             .WillOnce(Return(napi_ok))
1021             .WillOnce(Return(napi_ok))
1022             .WillOnce(Return(napi_invalid_arg));
1023         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1024         EXPECT_EQ(result, ERR_OK);
1025 
1026         // 模拟设置fileFilter.nativeLastModifiedAfter失败
1027         CallCreateNativeValueSucceed(insMoc);
1028         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
1029             .WillOnce(Return(napi_ok))
1030             .WillOnce(Return(napi_ok))
1031             .WillOnce(Return(napi_ok))
1032             .WillOnce(Return(napi_ok))
1033             .WillOnce(Return(napi_invalid_arg));
1034         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1035         EXPECT_EQ(result, ERR_OK);
1036 
1037         // 模拟设置fileFilter.nativeExcludeMedia失败
1038         CallCreateNativeValueSucceed(insMoc);
1039         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
1040             .WillOnce(Return(napi_ok))
1041             .WillOnce(Return(napi_ok))
1042             .WillOnce(Return(napi_ok))
1043             .WillOnce(Return(napi_ok))
1044             .WillOnce(Return(napi_ok))
1045             .WillOnce(Return(napi_invalid_arg));
1046         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1047         EXPECT_EQ(result, ERR_OK);
1048     } catch (...) {
1049         EXPECT_TRUE(false);
1050         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1051     }
1052     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0006";
1053 }
1054 
1055 /**
1056  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0007
1057  * @tc.name: js_file_access_ext_ability_ScanFile_0007
1058  * @tc.desc: Test function of ScanFile interface for code、nativeArray failure/success branch.
1059  * @tc.size: MEDIUM
1060  * @tc.type: FUNC
1061  * @tc.level Level 3
1062  * @tc.require: issuesI8ZE8T
1063  */
1064 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0007, testing::ext::TestSize.Level1)
1065 {
1066     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0007";
1067     try {
1068         napi_value rslt = nullptr;
1069         FileInfo fileInfo;
1070         int64_t offset = 0;
1071         int64_t maxCount = 0;
1072         FileFilter filter;
1073         filter.SetHasFilter(true);
1074         vector<FileInfo> fileInfoVec;
1075         EXPECT_NE(ability, nullptr);
1076 
1077         // 模拟获取code失败
1078         CallCreateNativeValueSucceed(insMoc);
1079         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
1080             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1081             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1082             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1083         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1084             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1085         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1086             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1087             .WillOnce(Return(napi_ok));
1088         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1089             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1090         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1091         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
1092         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1093         EXPECT_EQ(result, ERR_OK);
1094 
1095         // 模拟获取nativeArray失败
1096         CallCreateNativeValueSucceed(insMoc);
1097         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
1098             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1099             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1100             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1101         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1102             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1103         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1104             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1105             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1106         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1107             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1108         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1109         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1110         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1111         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1112         EXPECT_EQ(result, ERR_OK);
1113     } catch (...) {
1114         EXPECT_TRUE(false);
1115         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1116     }
1117     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0007";
1118 }
1119 
1120 /**
1121  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0008
1122  * @tc.name: js_file_access_ext_ability_ScanFile_0008
1123  * @tc.desc: Test function of ScanFile interface for length failure/success branch.
1124  * @tc.size: MEDIUM
1125  * @tc.type: FUNC
1126  * @tc.level Level 3
1127  * @tc.require: issuesI8ZE8T
1128  */
1129 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0008, testing::ext::TestSize.Level1)
1130 {
1131     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0008";
1132     try {
1133         napi_value rslt = nullptr;
1134         FileInfo fileInfo;
1135         FileFilter filter;
1136         filter.SetHasFilter(true);
1137         vector<FileInfo> fileInfoVec;
1138         EXPECT_NE(ability, nullptr);
1139 
1140         // 模拟获取length失败
1141         CallCreateNativeValueSucceed(insMoc);
1142         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1143             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1144         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1145             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1146         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1147             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1148             .WillOnce(Return(napi_ok))
1149             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1150         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1151             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1152         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1153         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1154         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1155         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg));
1156         auto result = ability->ScanFile(fileInfo, 0, 0, filter, fileInfoVec);
1157         EXPECT_EQ(result, ERR_OK);
1158 
1159         // 模拟获取length成功
1160         CallCreateNativeValueSucceed(insMoc);
1161         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1162             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1163         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1164             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1165         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1166             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1167             .WillOnce(Return(napi_ok))
1168             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1169         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1170             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1171         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1172         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1173         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1174         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok));
1175         result = ability->ScanFile(fileInfo, 0, 0, filter, fileInfoVec);
1176         EXPECT_EQ(result, ERR_OK);
1177     } catch (...) {
1178         EXPECT_TRUE(false);
1179         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1180     }
1181     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0008";
1182 }
1183 
1184 /**
1185  * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0009
1186  * @tc.name: js_file_access_ext_ability_ScanFile_0009
1187  * @tc.desc: Test function of ScanFile interface for CallJsMethod and value->code failure/success branch.
1188  * @tc.size: MEDIUM
1189  * @tc.type: FUNC
1190  * @tc.level Level 3
1191  * @tc.require: issuesI8ZE8T
1192  */
1193 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0009, testing::ext::TestSize.Level1)
1194 {
1195     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0009";
1196     try {
1197         int status = napi_invalid_arg;
1198         napi_value rslt = nullptr;
1199         FileInfo fileInfo;
1200         int64_t offset = 0;
1201         int64_t maxCount = 0;
1202         FileFilter filter;
1203         filter.SetHasFilter(true);
1204         vector<FileInfo> fileInfoVec;
1205         EXPECT_NE(ability, nullptr);
1206 
1207         // 模拟调用CallJsMethod失败
1208         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1209         auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1210         EXPECT_EQ(result, EINVAL);
1211 
1212         // 模拟获取value->code失败
1213         CallCreateNativeValueSucceed(insMoc);
1214         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _))
1215             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1216             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1217             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1218         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1219             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1220         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1221             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1222             .WillOnce(Return(napi_ok))
1223             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1224         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1225             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1226         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1227         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1228             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(status), Return(napi_ok)));
1229         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1230         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok));
1231         result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec);
1232         EXPECT_EQ(result, napi_invalid_arg);
1233     } catch (...) {
1234         EXPECT_TRUE(false);
1235         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1236     }
1237     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0009";
1238 }
1239 
1240 /**
1241  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0000
1242  * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0000
1243  * @tc.desc: Test function of GetFileInfoFromUri interface for nativeUri and value->code failure/success branch.
1244  * @tc.size: MEDIUM
1245  * @tc.type: FUNC
1246  * @tc.level Level 3
1247  * @tc.require: issuesI8ZE8T
1248  */
1249 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0000, testing::ext::TestSize.Level1)
1250 {
1251     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0000";
1252     try {
1253         napi_value rslt = nullptr;
1254         Uri selectFile("");
1255         FileInfo fileInfo;
1256         EXPECT_NE(ability, nullptr);
1257 
1258         // 模拟获取nativeUri为空
1259         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1260         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1261         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1262         auto result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1263         EXPECT_EQ(result, ERR_OK);
1264 
1265         // 模拟获取code失败
1266         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1267         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1268         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1269             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1270         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1271             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1272         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1273             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1274             .WillOnce(Return(napi_ok));
1275         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1276             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1277         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1278         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
1279         result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1280         EXPECT_EQ(result, ERR_OK);
1281     } catch (...) {
1282         EXPECT_TRUE(false);
1283         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1284     }
1285     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0000";
1286 }
1287 
1288 /**
1289  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0001
1290  * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0001
1291  * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo and fileInfo.uri failure/success branch.
1292  * @tc.size: MEDIUM
1293  * @tc.type: FUNC
1294  * @tc.level Level 3
1295  * @tc.require: issuesI8ZE8T
1296  */
1297 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0001, testing::ext::TestSize.Level1)
1298 {
1299     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0001";
1300     try {
1301         napi_value rslt = nullptr;
1302         Uri selectFile("");
1303         FileInfo fileInfo;
1304         EXPECT_NE(ability, nullptr);
1305 
1306         // 模拟获取fileInfo失败
1307         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1308         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1309         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1310             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1311         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1312             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1313         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1314             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1315             .WillOnce(Return(napi_ok))
1316             .WillOnce(Return(napi_invalid_arg));
1317         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1318             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1319         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1320         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1321         auto result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1322         EXPECT_EQ(result, ERR_OK);
1323 
1324         // 模拟获取fileInfo.uri失败
1325         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1326         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1327         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1328             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1329         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1330             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1331         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1332             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1333             .WillOnce(Return(napi_ok))
1334             .WillOnce(Return(napi_ok))
1335             .WillOnce(Return(napi_ok));
1336         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1337             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1338         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1339         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1340         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1341         result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1342         EXPECT_EQ(result, ERR_OK);
1343     } catch (...) {
1344         EXPECT_TRUE(false);
1345         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1346     }
1347     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0001";
1348 }
1349 
1350 /**
1351  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0002
1352  * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0002
1353  * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.relativePath and fileInfo.fileName
1354  *           failure/success branch.
1355  * @tc.size: MEDIUM
1356  * @tc.type: FUNC
1357  * @tc.level Level 3
1358  * @tc.require: issuesI8ZE8T
1359  */
1360 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0002, testing::ext::TestSize.Level1)
1361 {
1362     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0002";
1363     try {
1364         napi_value rslt = nullptr;
1365         Uri selectFile("");
1366         FileInfo fileInfo;
1367         EXPECT_NE(ability, nullptr);
1368 
1369         // 模拟获取fileInfo.relativePath失败
1370         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1371         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1372         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1373             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1374         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1375             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1376         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1377             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1378             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1379         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1380             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1381         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1382         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1383         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1384             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1385         auto result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1386         EXPECT_EQ(result, ERR_OK);
1387 
1388         // 模拟获取fileInfo.fileName失败
1389         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1390         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1391         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1392             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1393         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1394             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1395         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1396             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1397             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1398             .WillOnce(Return(napi_ok));
1399         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1400             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1401         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1402         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1403         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1404             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1405             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1406         result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1407         EXPECT_EQ(result, ERR_OK);
1408     } catch (...) {
1409         EXPECT_TRUE(false);
1410         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1411     }
1412     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0002";
1413 }
1414 
1415 /**
1416  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0003
1417  * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0003
1418  * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.mode failure/success branch.
1419  * @tc.size: MEDIUM
1420  * @tc.type: FUNC
1421  * @tc.level Level 3
1422  * @tc.require: issuesI8ZE8T
1423  */
1424 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0003, testing::ext::TestSize.Level1)
1425 {
1426     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0003";
1427     try {
1428         napi_value rslt = nullptr;
1429         Uri selectFile("");
1430         FileInfo fileInfo;
1431         EXPECT_NE(ability, nullptr);
1432 
1433         // 模拟获取fileInfo.mode失败
1434         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1435         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1436         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1437             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1438         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1439             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1440         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1441             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1442             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1443             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1444         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1445             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1446         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1447         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1448             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1449         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1450             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1451             .WillOnce(Return(napi_ok));
1452         auto result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1453         EXPECT_EQ(result, ERR_OK);
1454     } catch (...) {
1455         EXPECT_TRUE(false);
1456         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1457     }
1458     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0003";
1459 }
1460 
1461 /**
1462  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0004
1463  * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0004
1464  * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.size failure/success branch.
1465  * @tc.size: MEDIUM
1466  * @tc.type: FUNC
1467  * @tc.level Level 3
1468  * @tc.require: issuesI8ZE8T
1469  */
1470 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0004, testing::ext::TestSize.Level1)
1471 {
1472     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0004";
1473     try {
1474         napi_value rslt = nullptr;
1475         Uri selectFile("");
1476         FileInfo fileInfo;
1477         EXPECT_NE(ability, nullptr);
1478 
1479         // 模拟获取fileInfo.size失败
1480         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1481         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1482         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1483             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1484         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1485             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1486         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1487             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1488             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1489             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1490         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1491             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1492         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1493         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1494         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1495             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1496             .WillOnce(Return(napi_ok));
1497         EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_invalid_arg));
1498         auto result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1499         EXPECT_EQ(result, ERR_OK);
1500     } catch (...) {
1501         EXPECT_TRUE(false);
1502         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1503     }
1504     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0004";
1505 }
1506 
1507 /**
1508  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0005
1509  * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0005
1510  * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.mtime failure/success branch.
1511  * @tc.size: MEDIUM
1512  * @tc.type: FUNC
1513  * @tc.level Level 3
1514  * @tc.require: issuesI8ZE8T
1515  */
1516 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0005, testing::ext::TestSize.Level1)
1517 {
1518     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0005";
1519     try {
1520         napi_value rslt = nullptr;
1521         Uri selectFile("");
1522         FileInfo fileInfo;
1523         EXPECT_NE(ability, nullptr);
1524 
1525         // 模拟获取fileInfo.size失败
1526         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1527         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1528         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1529             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1530         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1531             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1532         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1533             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1534             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1535             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1536         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1537             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1538         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1539         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1540         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1541             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1542             .WillOnce(Return(napi_ok));
1543         EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _))
1544             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1545         auto result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1546         EXPECT_EQ(result, ERR_OK);
1547     } catch (...) {
1548         EXPECT_TRUE(false);
1549         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1550     }
1551     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0005";
1552 }
1553 
1554 /**
1555  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0006
1556  * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0006
1557  * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.mimeType failure/success branch.
1558  * @tc.size: MEDIUM
1559  * @tc.type: FUNC
1560  * @tc.level Level 3
1561  * @tc.require: issuesI8ZE8T
1562  */
1563 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0006, testing::ext::TestSize.Level1)
1564 {
1565     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0006";
1566     try {
1567         napi_value rslt = nullptr;
1568         Uri selectFile("");
1569         FileInfo fileInfo;
1570         EXPECT_NE(ability, nullptr);
1571 
1572         // 模拟获取fileInfo.mimeType失败
1573         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1574         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1575         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1576             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1577         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1578             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1579         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1580             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1581             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1582             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1583             .WillOnce(Return(napi_ok));
1584         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1585             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1586         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1587         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1588         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1589             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1590             .WillOnce(Return(napi_ok))
1591             .WillOnce(Return(napi_invalid_arg));
1592         EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1593         auto result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1594         EXPECT_EQ(result, ERR_OK);
1595     } catch (...) {
1596         EXPECT_TRUE(false);
1597         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1598     }
1599     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0006";
1600 }
1601 
1602 /**
1603  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0007
1604  * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0007
1605  * @tc.desc: Test function of GetFileInfoFromUri interface for CallJsMethod and value->code failure/success branch.
1606  * @tc.size: MEDIUM
1607  * @tc.type: FUNC
1608  * @tc.level Level 3
1609  * @tc.require: issuesI8ZE8T
1610  */
1611 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0007, testing::ext::TestSize.Level1)
1612 {
1613     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0007";
1614     try {
1615         int status = napi_invalid_arg;
1616         napi_value rslt = nullptr;
1617         Uri selectFile("");
1618         FileInfo fileInfo;
1619         EXPECT_NE(ability, nullptr);
1620 
1621         // 模拟调用CallJsMethod失败
1622         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1623         auto result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1624         EXPECT_EQ(result, EINVAL);
1625 
1626         // 模拟获取value->code失败
1627         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1628         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1629         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1630             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1631         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1632             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1633         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1634             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1635             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1636             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1637             .WillOnce(Return(napi_ok));
1638         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1639             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1640         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1641         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1642             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(status), Return(napi_ok))).WillOnce(Return(napi_ok));
1643         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1644             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1645             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1646         EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1647         result = ability->GetFileInfoFromUri(selectFile, fileInfo);
1648         EXPECT_EQ(result, napi_invalid_arg);
1649     } catch (...) {
1650         EXPECT_TRUE(false);
1651         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1652     }
1653     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0007";
1654 }
1655 
1656 /**
1657  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0000
1658  * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0000
1659  * @tc.desc: Test function of GetFileInfoFromRelativePath interface for nativePath and value->code
1660  *           failure/success branch.
1661  * @tc.size: MEDIUM
1662  * @tc.type: FUNC
1663  * @tc.level Level 3
1664  * @tc.require: issuesI8ZE8T
1665  */
1666 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0000,
1667     testing::ext::TestSize.Level1)
1668 {
1669     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0000";
1670     try {
1671         napi_value rslt = nullptr;
1672         string selectFileRealtivePath;
1673         FileInfo fileInfo;
1674         EXPECT_NE(ability, nullptr);
1675 
1676         // 模拟获取nativePath为空
1677         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1678         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1679         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1680         auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1681         EXPECT_EQ(result, ERR_OK);
1682 
1683         // 模拟获取code失败
1684         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1685         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1686         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1687             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1688         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1689             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1690         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1691             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1692             .WillOnce(Return(napi_ok));
1693         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1694             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1695         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1696         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
1697         result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1698         EXPECT_EQ(result, ERR_OK);
1699     } catch (...) {
1700         EXPECT_TRUE(false);
1701         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1702     }
1703     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0000";
1704 }
1705 
1706 /**
1707  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0001
1708  * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0001
1709  * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo and fileInfo.uri
1710  *           failure/success branch.
1711  * @tc.size: MEDIUM
1712  * @tc.type: FUNC
1713  * @tc.level Level 3
1714  * @tc.require: issuesI8ZE8T
1715  */
1716 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0001,
1717     testing::ext::TestSize.Level1)
1718 {
1719     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0001";
1720     try {
1721         napi_value rslt = nullptr;
1722         string selectFileRealtivePath;
1723         FileInfo fileInfo;
1724         EXPECT_NE(ability, nullptr);
1725 
1726         // 模拟获取fileInfo失败
1727         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1728         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1729         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1730             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1731         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1732             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1733         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1734             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1735             .WillOnce(Return(napi_ok))
1736             .WillOnce(Return(napi_invalid_arg));
1737         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1738             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1739         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1740         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1741         auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1742         EXPECT_EQ(result, ERR_OK);
1743 
1744         // 模拟获取fileInfo.uri失败
1745         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1746         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1747         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1748             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1749         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1750             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1751         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1752             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1753             .WillOnce(Return(napi_ok))
1754             .WillOnce(Return(napi_ok))
1755             .WillOnce(Return(napi_ok));
1756         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1757             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1758         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1759         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1760         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1761         result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1762         EXPECT_EQ(result, ERR_OK);
1763     } catch (...) {
1764         EXPECT_TRUE(false);
1765         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1766     }
1767     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0001";
1768 }
1769 
1770 /**
1771  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0002
1772  * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0002
1773  * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.relativePath and fileInfo.fileName
1774  *           failure/success branch.
1775  * @tc.size: MEDIUM
1776  * @tc.type: FUNC
1777  * @tc.level Level 3
1778  * @tc.require: issuesI8ZE8T
1779  */
1780 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0002,
1781     testing::ext::TestSize.Level1)
1782 {
1783     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0002";
1784     try {
1785         napi_value rslt = nullptr;
1786         string selectFileRealtivePath;
1787         FileInfo fileInfo;
1788         EXPECT_NE(ability, nullptr);
1789 
1790         // 模拟获取fileInfo.relativePath失败
1791         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1792         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1793         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1794             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1795         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1796             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1797         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1798             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1799             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1800         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1801             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1802         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1803         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1804         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1805             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1806         auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1807         EXPECT_EQ(result, ERR_OK);
1808 
1809         // 模拟获取fileInfo.fileName失败
1810         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1811         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1812         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1813             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1814         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1815             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1816         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1817             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1818             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1819             .WillOnce(Return(napi_ok));
1820         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1821             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1822         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1823         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1824         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1825             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1826             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1827         result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1828         EXPECT_EQ(result, ERR_OK);
1829     } catch (...) {
1830         EXPECT_TRUE(false);
1831         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1832     }
1833     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0002";
1834 }
1835 
1836 /**
1837  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0003
1838  * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0003
1839  * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.mode failure/success branch.
1840  * @tc.size: MEDIUM
1841  * @tc.type: FUNC
1842  * @tc.level Level 3
1843  * @tc.require: issuesI8ZE8T
1844  */
1845 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0003,
1846     testing::ext::TestSize.Level1)
1847 {
1848     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0003";
1849     try {
1850         napi_value rslt = nullptr;
1851         string selectFileRealtivePath;
1852         FileInfo fileInfo;
1853         EXPECT_NE(ability, nullptr);
1854 
1855         // 模拟获取fileInfo.mode失败
1856         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1857         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1858         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1859             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1860         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1861             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1862         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1863             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1864             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1865             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1866         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1867             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1868         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1869         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1870             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1871         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1872             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1873             .WillOnce(Return(napi_ok));
1874         auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1875         EXPECT_EQ(result, ERR_OK);
1876     } catch (...) {
1877         EXPECT_TRUE(false);
1878         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1879     }
1880     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0003";
1881 }
1882 
1883 /**
1884  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0004
1885  * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0004
1886  * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.size failure/success branch.
1887  * @tc.size: MEDIUM
1888  * @tc.type: FUNC
1889  * @tc.level Level 3
1890  * @tc.require: issuesI8ZE8T
1891  */
1892 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0004,
1893     testing::ext::TestSize.Level1)
1894 {
1895     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0004";
1896     try {
1897         napi_value rslt = nullptr;
1898         string selectFileRealtivePath;
1899         FileInfo fileInfo;
1900         EXPECT_NE(ability, nullptr);
1901 
1902         // 模拟获取fileInfo.size失败
1903         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1904         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1905         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1906             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1907         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1908             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1909         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1910             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1911             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1912             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1913         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1914             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1915         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1916         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1917         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1918             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1919             .WillOnce(Return(napi_ok));
1920         EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_invalid_arg));
1921         auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1922         EXPECT_EQ(result, ERR_OK);
1923     } catch (...) {
1924         EXPECT_TRUE(false);
1925         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1926     }
1927     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0004";
1928 }
1929 
1930 /**
1931  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0005
1932  * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0005
1933  * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.mtime failure/success branch.
1934  * @tc.size: MEDIUM
1935  * @tc.type: FUNC
1936  * @tc.level Level 3
1937  * @tc.require: issuesI8ZE8T
1938  */
1939 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0005,
1940     testing::ext::TestSize.Level1)
1941 {
1942     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0005";
1943     try {
1944         napi_value rslt = nullptr;
1945         string selectFileRealtivePath;
1946         FileInfo fileInfo;
1947         EXPECT_NE(ability, nullptr);
1948 
1949         // 模拟获取fileInfo.size失败
1950         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1951         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1952         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1953             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1954         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1955             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1956         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1957             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1958             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1959             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1960         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1961             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1962         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1963         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1964         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1965             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1966             .WillOnce(Return(napi_ok));
1967         EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _))
1968             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1969         auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
1970         EXPECT_EQ(result, ERR_OK);
1971     } catch (...) {
1972         EXPECT_TRUE(false);
1973         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1974     }
1975     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0005";
1976 }
1977 
1978 /**
1979  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0006
1980  * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0006
1981  * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.mimeType failure/success branch.
1982  * @tc.size: MEDIUM
1983  * @tc.type: FUNC
1984  * @tc.level Level 3
1985  * @tc.require: issuesI8ZE8T
1986  */
1987 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0006,
1988     testing::ext::TestSize.Level1)
1989 {
1990     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0006";
1991     try {
1992         napi_value rslt = nullptr;
1993         string selectFileRealtivePath;
1994         FileInfo fileInfo;
1995         EXPECT_NE(ability, nullptr);
1996 
1997         // 模拟获取fileInfo.mimeType失败
1998         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1999         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
2000         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
2001             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
2002         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
2003             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
2004         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
2005             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
2006             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
2007             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
2008             .WillOnce(Return(napi_ok));
2009         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
2010             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
2011         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
2012         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
2013         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
2014             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
2015             .WillOnce(Return(napi_ok))
2016             .WillOnce(Return(napi_invalid_arg));
2017         EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
2018         auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
2019         EXPECT_EQ(result, ERR_OK);
2020     } catch (...) {
2021         EXPECT_TRUE(false);
2022         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
2023     }
2024     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0006";
2025 }
2026 
2027 /**
2028  * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0007
2029  * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0007
2030  * @tc.desc: Test function of GetFileInfoFromRelativePath interface for CallJsMethod and value->code
2031  *           failure/success branch.
2032  * @tc.size: MEDIUM
2033  * @tc.type: FUNC
2034  * @tc.level Level 3
2035  * @tc.require: issuesI8ZE8T
2036  */
2037 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0007,
2038     testing::ext::TestSize.Level1)
2039 {
2040     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0007";
2041     try {
2042         int status = napi_invalid_arg;
2043         napi_value rslt = nullptr;
2044         string selectFileRealtivePath;
2045         FileInfo fileInfo;
2046         EXPECT_NE(ability, nullptr);
2047 
2048         // 模拟调用CallJsMethod失败
2049         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
2050         auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
2051         EXPECT_EQ(result, EINVAL);
2052 
2053         // 模拟获取value->code失败
2054         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
2055         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
2056         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
2057             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
2058         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
2059             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
2060         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
2061             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
2062             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
2063             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
2064             .WillOnce(Return(napi_ok));
2065         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
2066             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
2067         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
2068         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
2069             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(status), Return(napi_ok))).WillOnce(Return(napi_ok));
2070         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
2071             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
2072             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
2073         EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
2074         result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo);
2075         EXPECT_EQ(result, napi_invalid_arg);
2076     } catch (...) {
2077         EXPECT_TRUE(false);
2078         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
2079     }
2080     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0007";
2081 }