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_MoveFile_0000
18  * @tc.name: js_file_access_ext_ability_MoveFile_0000
19  * @tc.desc: Test function of MoveFile interface for ERROR.
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_MoveFile_0000, testing::ext::TestSize.Level1)
26 {
27     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MoveFile_0000";
28     try {
29         EXPECT_NE(ability, nullptr);
30         Uri sourceFile("");
31         Uri targetParent("");
32         string fileName("");
33         Uri newFile("");
34 
35         // 模拟调用CallJsMethod失败
36         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
37         auto result = ability->MoveFile(sourceFile, targetParent, fileName, newFile);
38         EXPECT_EQ(result, EINVAL);
39     } catch (...) {
40         EXPECT_TRUE(false);
41         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
42     }
43     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MoveFile_0000";
44 }
45 
46 /**
47  * @tc.number: user_file_service_js_file_access_ext_ability_MoveFile_0001
48  * @tc.name: js_file_access_ext_ability_MoveFile_0001
49  * @tc.desc: Test function of MoveFile interface for ERROR.
50  * @tc.size: MEDIUM
51  * @tc.type: FUNC
52  * @tc.level Level 3
53  * @tc.require: issuesI8ZE8T
54  */
55 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_MoveFile_0001, testing::ext::TestSize.Level1)
56 {
57     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MoveFile_0001";
58     try {
59         EXPECT_NE(ability, nullptr);
60         napi_value rslt = nullptr;
61         Uri sourceFile("");
62         Uri targetParent("");
63         string fileName("");
64         Uri newFile("");
65         ability->jsObj_ = make_shared<NativeReferenceMock>();
66 
67         // 模拟获取srcUri为空
68         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
69         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
70         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
71             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
72         auto result = ability->MoveFile(sourceFile, targetParent, fileName, newFile);
73         EXPECT_EQ(result, E_GETRESULT);
74 
75         // 模拟获取dstUri为空
76         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
77         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
78         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
79             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
80             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
81         result = ability->MoveFile(sourceFile, targetParent, fileName, newFile);
82         EXPECT_EQ(result, E_GETRESULT);
83 
84         // 模拟获取name为空
85         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
86         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
87         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
88             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
89             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
90             .WillOnce(Return(napi_ok));
91         result = ability->MoveFile(sourceFile, targetParent, fileName, newFile);
92         EXPECT_EQ(result, E_GETRESULT);
93     } catch (...) {
94         EXPECT_TRUE(false);
95         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
96     }
97     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MoveFile_0001";
98 }
99 
100 /**
101  * @tc.number: user_file_service_js_file_access_ext_ability_MoveFile_0002
102  * @tc.name: js_file_access_ext_ability_MoveFile_0002
103  * @tc.desc: Test function of MoveFile interface for ERROR.
104  * @tc.size: MEDIUM
105  * @tc.type: FUNC
106  * @tc.level Level 3
107  * @tc.require: issuesI8ZE8T
108  */
109 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_MoveFile_0002, testing::ext::TestSize.Level1)
110 {
111     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MoveFile_0002";
112     try {
113         EXPECT_NE(ability, nullptr);
114         napi_value rslt = nullptr;
115         Uri sourceFile("");
116         Uri targetParent("");
117         string fileName("");
118         Uri newFile("");
119         ability->jsObj_ = make_shared<NativeReferenceMock>();
120 
121         // 模拟获取value->code失败
122         MockNapiCalls(insMoc, rslt);
123         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
124             DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
125         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
126             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
127         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
128             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
129         auto result = ability->MoveFile(sourceFile, targetParent, fileName, newFile);
130         EXPECT_EQ(result, E_IPCS);
131 
132         // 模拟获取value->data为-1
133         MockNapiCalls(insMoc, rslt);
134         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
135             DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
136         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
137             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
138         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
139             .WillOnce(Return(napi_ok));
140         result = ability->MoveFile(sourceFile, targetParent, fileName, newFile);
141         EXPECT_EQ(result, E_GETRESULT);
142     } catch (...) {
143         EXPECT_TRUE(false);
144         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
145     }
146     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MoveFile_0002";
147 }
148 
149 /**
150  * @tc.number: user_file_service_js_file_access_ext_ability_MoveFile_0003
151  * @tc.name: js_file_access_ext_ability_MoveFile_0003
152  * @tc.desc: Test function of MoveFile interface for SUCCESS.
153  * @tc.size: MEDIUM
154  * @tc.type: FUNC
155  * @tc.level Level 3
156  * @tc.require: issuesI8ZE8T
157  */
158 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_MoveFile_0003, testing::ext::TestSize.Level1)
159 {
160     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MoveFile_0003";
161     try {
162         EXPECT_NE(ability, nullptr);
163         napi_value rslt = nullptr;
164         Uri sourceFile("");
165         Uri targetParent("");
166         string fileName("");
167         Uri newFile("");
168         string path = "test";
169         ability->jsObj_ = make_shared<NativeReferenceMock>();
170 
171         // 模拟MoveFile调用成功
172         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
173         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
174         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
175             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
176         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
177             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
178             .WillOnce(Return(napi_ok))
179             .WillOnce(Return(napi_ok));
180         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
181             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
182         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
183             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
184         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
185             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
186             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
187             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
188         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
189             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOUR>(path.length()), Return(napi_ok)))
190             .WillOnce(DoAll(SetArrayArgument<ARG_INDEX_SECOND>(path.begin(), path.end()), Return(napi_ok)));
191         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
192         auto result = ability->MoveFile(sourceFile, targetParent, fileName, newFile);
193         EXPECT_EQ(result, ERR_OK);
194     } catch (...) {
195         EXPECT_TRUE(false);
196         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
197     }
198     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MoveFile_0003";
199 }
200 
201 /**
202  * @tc.number: user_file_service_js_file_access_ext_ability_MoveItem_0000
203  * @tc.name: js_file_access_ext_ability_MoveItem_0000
204  * @tc.desc: Test function of MoveItem interface for ERROR.
205  * @tc.size: MEDIUM
206  * @tc.type: FUNC
207  * @tc.level Level 3
208  * @tc.require: issuesI8ZE8T
209  */
210 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_MoveItem_0000, testing::ext::TestSize.Level1)
211 {
212     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MoveItem_0000";
213     try {
214         EXPECT_NE(ability, nullptr);
215         Uri sourceFile("");
216         Uri targetParent("");
217         vector<Result> moveResult;
218         bool force = false;
219 
220         // 模拟调用CallJsMethod失败
221         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
222         auto result = ability->MoveItem(sourceFile, targetParent, moveResult, force);
223         EXPECT_EQ(result, EXCEPTION);
224     } catch (...) {
225         EXPECT_TRUE(false);
226         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
227     }
228     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MoveItem_0000";
229 }
230 
231 /**
232  * @tc.number: user_file_service_js_file_access_ext_ability_MoveItem_0001
233  * @tc.name: js_file_access_ext_ability_MoveItem_0001
234  * @tc.desc: Test function of MoveItem interface for ERROR.
235  * @tc.size: MEDIUM
236  * @tc.type: FUNC
237  * @tc.level Level 3
238  * @tc.require: issuesI8ZE8T
239  */
240 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_MoveItem_0001, testing::ext::TestSize.Level1)
241 {
242     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MoveItem_0001";
243     try {
244         EXPECT_NE(ability, nullptr);
245         napi_value rslt = nullptr;
246         Uri sourceFile("");
247         Uri targetParent("");
248         vector<Result> moveResult;
249         bool force = false;
250         ability->jsObj_ = make_shared<NativeReferenceMock>();
251 
252         // 模拟获取srcNativeUri为空
253         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
254         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
255         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
256         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
257         auto result = ability->MoveItem(sourceFile, targetParent, moveResult, force);
258         EXPECT_EQ(result, EXCEPTION);
259 
260         // 模拟获取dstNativeUri为空
261         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
262         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
263         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
264             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
265             .WillOnce(Return(napi_ok));
266         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
267         result = ability->MoveItem(sourceFile, targetParent, moveResult, force);
268         EXPECT_EQ(result, EXCEPTION);
269 
270         // 模拟获取forceMove为空
271         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
272         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
273         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
274             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
275             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
276         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
277         result = ability->MoveItem(sourceFile, targetParent, moveResult, force);
278         EXPECT_EQ(result, EXCEPTION);
279     } catch (...) {
280         EXPECT_TRUE(false);
281         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
282     }
283     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MoveItem_0001";
284 }
285 
286 /**
287  * @tc.number: user_file_service_js_file_access_ext_ability_MoveItem_0002
288  * @tc.name: js_file_access_ext_ability_MoveItem_0002
289  * @tc.desc: Test function of MoveItem interface for SUCCESS.
290  * @tc.size: MEDIUM
291  * @tc.type: FUNC
292  * @tc.level Level 3
293  * @tc.require: issuesI8ZE8T
294  */
295 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_MoveItem_0002, testing::ext::TestSize.Level1)
296 {
297     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MoveItem_0002";
298     try {
299         EXPECT_NE(ability, nullptr);
300         napi_value rslt = nullptr;
301         Uri sourceFile("");
302         Uri targetParent("");
303         vector<Result> moveResult;
304         bool force = false;
305         string path = "test";
306         ability->jsObj_ = make_shared<NativeReferenceMock>();
307 
308         // 模拟MoveItem调用成功
309         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
310         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
311         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
312             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
313         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
314             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
315             .WillOnce(Return(napi_ok));
316         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
317             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
318         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
319             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
320         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
321             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
322             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
323         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _))
324             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
325         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
326             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(ERR_OK), Return(napi_ok)));
327         auto result = ability->MoveItem(sourceFile, targetParent, moveResult, force);
328         EXPECT_EQ(result, ERR_OK);
329     } catch (...) {
330         EXPECT_TRUE(false);
331         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
332     }
333     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MoveItem_0002";
334 }
335 
336 /**
337  * @tc.number: user_file_service_js_file_access_ext_ability_GetRootInfo_0000
338  * @tc.name: js_file_access_ext_ability_GetRootInfo_0000
339  * @tc.desc: Test function of GetRootInfo interface for ERROR.
340  * @tc.size: MEDIUM
341  * @tc.type: FUNC
342  * @tc.level Level 3
343  * @tc.require: issuesI8ZE8T
344  */
345 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetRootInfo_0000, testing::ext::TestSize.Level1)
346 {
347     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetRootInfo_0000";
348     try {
349         EXPECT_NE(ability, nullptr);
350         napi_env env = nullptr;
351         napi_value nativeRootInfo = {};
352         RootInfo rootInfo;
353 
354         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
355         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
356         auto result = ability->GetRootInfo(env, nativeRootInfo, rootInfo);
357         EXPECT_EQ(result, napi_generic_failure);
358 
359         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
360         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
361         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
362         result = ability->GetRootInfo(env, nativeRootInfo, rootInfo);
363         EXPECT_EQ(result, napi_generic_failure);
364 
365         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
366             .WillOnce(Return(napi_ok));
367         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
368         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
369             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
370         result = ability->GetRootInfo(env, nativeRootInfo, rootInfo);
371         EXPECT_EQ(result, napi_generic_failure);
372 
373         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
374             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
375         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
376         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
377             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
378             .WillOnce(Return(napi_invalid_arg));
379         result = ability->GetRootInfo(env, nativeRootInfo, rootInfo);
380         EXPECT_EQ(result, napi_generic_failure);
381     } catch (...) {
382         EXPECT_TRUE(false);
383         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
384     }
385     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetRootInfo_0000";
386 }
387 
388 /**
389  * @tc.number: user_file_service_js_file_access_ext_ability_GetRootInfo_0001
390  * @tc.name: js_file_access_ext_ability_GetRootInfo_0001
391  * @tc.desc: Test function of GetRootInfo interface for ERROR.
392  * @tc.size: MEDIUM
393  * @tc.type: FUNC
394  * @tc.level Level 3
395  * @tc.require: issuesI8ZE8T
396  */
397 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetRootInfo_0001, testing::ext::TestSize.Level1)
398 {
399     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetRootInfo_0001";
400     try {
401         EXPECT_NE(ability, nullptr);
402         napi_env env = nullptr;
403         napi_value nativeRootInfo = {};
404         RootInfo rootInfo;
405 
406         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
407             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
408         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok))
409             .WillOnce(Return(napi_invalid_arg));
410         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
411             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
412             .WillOnce(Return(napi_ok));
413         auto result = ability->GetRootInfo(env, nativeRootInfo, rootInfo);
414         EXPECT_EQ(result, napi_generic_failure);
415 
416         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
417             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
418         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
419         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
420             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
421             .WillOnce(Return(napi_ok));
422         result = ability->GetRootInfo(env, nativeRootInfo, rootInfo);
423         EXPECT_EQ(result, napi_ok);
424     } catch (...) {
425         EXPECT_TRUE(false);
426         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
427     }
428     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetRootInfo_0001";
429 }
430 
431 /**
432  * @tc.number: user_file_service_js_file_access_ext_ability_ConstructQueryArg_0001
433  * @tc.name: js_file_access_ext_ability_ConstructQueryArg_0001
434  * @tc.desc: Test function of ConstructQueryArg interface for ERROR.
435  * @tc.size: MEDIUM
436  * @tc.type: FUNC
437  * @tc.level Level 3
438  * @tc.require: issuesI8ZE8T
439  */
440 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ConstructQueryArg_0001, testing::ext::TestSize.Level1)
441 {
442     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ConstructQueryArg_0001";
443     try {
444         EXPECT_NE(ability, nullptr);
445         napi_value rslt = nullptr;
446         napi_env env = nullptr;
447         napi_value argv[2] = {};
448         size_t argc = 0;
449         Uri uri("");
450         vector<string> columns;
451 
452         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
453         auto result = ability->ConstructQueryArg(env, argv, argc, uri, columns);
454         EXPECT_EQ(result, napi_generic_failure);
455 
456         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
457             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
458         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)).WillOnce(Return(napi_ok));
459         result = ability->ConstructQueryArg(env, argv, argc, uri, columns);
460         EXPECT_EQ(result, napi_generic_failure);
461 
462         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
463             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
464         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
465             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
466         result = ability->ConstructQueryArg(env, argv, argc, uri, columns);
467         EXPECT_EQ(result, napi_ok);
468 
469         columns.emplace_back("test");
470         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
471             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
472             .WillOnce(Return(napi_ok));
473         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
474             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
475         result = ability->ConstructQueryArg(env, argv, argc, uri, columns);
476         EXPECT_EQ(result, napi_generic_failure);
477     } catch (...) {
478         EXPECT_TRUE(false);
479         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
480     }
481     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ConstructQueryArg_0001";
482 }
483 
484 /**
485  * @tc.number: user_file_service_js_file_access_ext_ability_StartWatcher_0000
486  * @tc.name: js_file_access_ext_ability_StartWatcher_0000
487  * @tc.desc: Test function of StartWatcher interface for ERROR.
488  * @tc.size: MEDIUM
489  * @tc.type: FUNC
490  * @tc.level Level 3
491  * @tc.require: issuesI8ZE8T
492  */
493 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StartWatcher_0000, testing::ext::TestSize.Level1)
494 {
495     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StartWatcher_0000";
496     try {
497         EXPECT_NE(ability, nullptr);
498         Uri uri("");
499 
500         // 模拟调用CallJsMethod失败
501         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
502         auto result = ability->StartWatcher(uri);
503         EXPECT_EQ(result, EINVAL);
504     } catch (...) {
505         EXPECT_TRUE(false);
506         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
507     }
508     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StartWatcher_0000";
509 }
510 
511 /**
512  * @tc.number: user_file_service_js_file_access_ext_ability_StartWatcher_0001
513  * @tc.name: js_file_access_ext_ability_StartWatcher_0001
514  * @tc.desc: Test function of StartWatcher interface for ERROR.
515  * @tc.size: MEDIUM
516  * @tc.type: FUNC
517  * @tc.level Level 3
518  * @tc.require: issuesI8ZE8T
519  */
520 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StartWatcher_0001, testing::ext::TestSize.Level1)
521 {
522     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StartWatcher_0001";
523     try {
524         EXPECT_NE(ability, nullptr);
525         napi_value rslt = nullptr;
526         Uri uri("");
527         ability->jsObj_ = make_shared<NativeReferenceMock>();
528 
529         // 模拟获取nativeUri为空
530         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
531         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
532         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
533         auto result = ability->StartWatcher(uri);
534         EXPECT_EQ(result, false);
535 
536         // 模拟创建FuncCallback失败
537         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
538         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
539         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
540             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
541         EXPECT_CALL(*insMoc, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
542         result = ability->StartWatcher(uri);
543         EXPECT_EQ(result, false);
544     } catch (...) {
545         EXPECT_TRUE(false);
546         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
547     }
548     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StartWatcher_0001";
549 }
550 
551 /**
552  * @tc.number: user_file_service_js_file_access_ext_ability_StartWatcher_0002
553  * @tc.name: js_file_access_ext_ability_StartWatcher_0002
554  * @tc.desc: Test function of StartWatcher interface for ERROR.
555  * @tc.size: MEDIUM
556  * @tc.type: FUNC
557  * @tc.level Level 3
558  * @tc.require: issuesI8ZE8T
559  */
560 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StartWatcher_0002, testing::ext::TestSize.Level1)
561 {
562     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StartWatcher_0002";
563     try {
564         EXPECT_NE(ability, nullptr);
565         napi_value rslt = nullptr;
566         Uri uri("");
567         ability->jsObj_ = make_shared<NativeReferenceMock>();
568 
569         // 模拟获取ret失败
570         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
571         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
572         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
573             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
574         EXPECT_CALL(*insMoc, napi_create_function(_, _, _, _, _, _))
575             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
576         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
577             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
578         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
579             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
580         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
581             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
582         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
583             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
584         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
585             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
586         auto result = ability->StartWatcher(uri);
587         EXPECT_EQ(result, E_IPCS);
588     } catch (...) {
589         EXPECT_TRUE(false);
590         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
591     }
592     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StartWatcher_0002";
593 }
594 
595 /**
596  * @tc.number: user_file_service_js_file_access_ext_ability_StartWatcher_0003
597  * @tc.name: js_file_access_ext_ability_StartWatcher_0003
598  * @tc.desc: Test function of StartWatcher interface for SUCCESS.
599  * @tc.size: MEDIUM
600  * @tc.type: FUNC
601  * @tc.level Level 3
602  * @tc.require: issuesI8ZE8T
603  */
604 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StartWatcher_0003, testing::ext::TestSize.Level1)
605 {
606     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StartWatcher_0003";
607     try {
608         EXPECT_NE(ability, nullptr);
609         napi_value rslt = nullptr;
610         Uri uri("");
611         string path = "test";
612         ability->jsObj_ = make_shared<NativeReferenceMock>();
613 
614         // 模拟StartWatcher调用成功
615         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
616         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
617         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
618             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
619         EXPECT_CALL(*insMoc, napi_create_function(_, _, _, _, _, _))
620             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
621         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
622             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
623         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
624             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
625         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
626             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
627         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
628             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
629         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
630             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(ERR_OK), Return(napi_ok)));
631         auto result = ability->StartWatcher(uri);
632         EXPECT_EQ(result, ERR_OK);
633     } catch (...) {
634         EXPECT_TRUE(false);
635         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
636     }
637     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StartWatcher_0003";
638 }
639 
640 /**
641  * @tc.number: user_file_service_js_file_access_ext_ability_StopWatcher_0000
642  * @tc.name: js_file_access_ext_ability_StopWatcher_0000
643  * @tc.desc: Test function of StopWatcher interface for ERROR.
644  * @tc.size: MEDIUM
645  * @tc.type: FUNC
646  * @tc.level Level 3
647  * @tc.require: issuesI8ZE8T
648  */
649 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StopWatcher_0000, testing::ext::TestSize.Level1)
650 {
651     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StopWatcher_0000";
652     try {
653         EXPECT_NE(ability, nullptr);
654         Uri uri("");
655 
656         // 模拟调用CallJsMethod失败
657         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
658         auto result = ability->StopWatcher(uri);
659         EXPECT_EQ(result, EINVAL);
660     } catch (...) {
661         EXPECT_TRUE(false);
662         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
663     }
664     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StopWatcher_0000";
665 }
666 
667 /**
668  * @tc.number: user_file_service_js_file_access_ext_ability_StopWatcher_0001
669  * @tc.name: js_file_access_ext_ability_StopWatcher_0001
670  * @tc.desc: Test function of StopWatcher interface for ERROR.
671  * @tc.size: MEDIUM
672  * @tc.type: FUNC
673  * @tc.level Level 3
674  * @tc.require: issuesI8ZE8T
675  */
676 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StopWatcher_0001, testing::ext::TestSize.Level1)
677 {
678     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StopWatcher_0001";
679     try {
680         EXPECT_NE(ability, nullptr);
681         Uri uri("");
682         ability->jsObj_ = make_shared<NativeReferenceMock>();
683 
684         // 模拟获取nativeUri为空
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(_, _, _, _)).WillOnce(Return(napi_ok));
688         auto result = ability->StopWatcher(uri);
689         EXPECT_EQ(result, false);
690     } catch (...) {
691         EXPECT_TRUE(false);
692         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
693     }
694     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StopWatcher_0001";
695 }
696 
697 /**
698  * @tc.number: user_file_service_js_file_access_ext_ability_StopWatcher_0002
699  * @tc.name: js_file_access_ext_ability_StopWatcher_0002
700  * @tc.desc: Test function of StopWatcher interface for ERROR.
701  * @tc.size: MEDIUM
702  * @tc.type: FUNC
703  * @tc.level Level 3
704  * @tc.require: issuesI8ZE8T
705  */
706 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StopWatcher_0002, testing::ext::TestSize.Level1)
707 {
708     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StopWatcher_0002";
709     try {
710         EXPECT_NE(ability, nullptr);
711         napi_value rslt = nullptr;
712         Uri uri("");
713         ability->jsObj_ = make_shared<NativeReferenceMock>();
714 
715         // 模拟获取ret失败
716         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
717         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
718         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
719             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
720         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
721             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
722         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
723             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
724         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
725             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
726         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
727             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
728         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
729             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
730         auto result = ability->StopWatcher(uri);
731         EXPECT_EQ(result, E_IPCS);
732     } catch (...) {
733         EXPECT_TRUE(false);
734         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
735     }
736     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StopWatcher_0002";
737 }
738 
739 /**
740  * @tc.number: user_file_service_js_file_access_ext_ability_StopWatcher_0003
741  * @tc.name: js_file_access_ext_ability_StopWatcher_0003
742  * @tc.desc: Test function of StopWatcher interface for SUCCESS.
743  * @tc.size: MEDIUM
744  * @tc.type: FUNC
745  * @tc.level Level 3
746  * @tc.require: issuesI8ZE8T
747  */
748 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StopWatcher_0003, testing::ext::TestSize.Level1)
749 {
750     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StopWatcher_0003";
751     try {
752         EXPECT_NE(ability, nullptr);
753         napi_value rslt = nullptr;
754         Uri uri("");
755         string path = "test";
756         ability->jsObj_ = make_shared<NativeReferenceMock>();
757 
758         // 模拟StopWatcher调用成功
759         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
760         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
761         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
762             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
763         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
764             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
765         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
766             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
767         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
768             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
769         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
770             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
771         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
772             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(ERR_OK), Return(napi_ok)));
773         auto result = ability->StopWatcher(uri);
774         EXPECT_EQ(result, ERR_OK);
775     } catch (...) {
776         EXPECT_TRUE(false);
777         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
778     }
779     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StopWatcher_0003";
780 }
781 
782 /**
783  * @tc.number: user_file_service_js_file_access_ext_ability_FuncCallback_0000
784  * @tc.name: js_file_access_ext_ability_FuncCallback_0000
785  * @tc.desc: Test function of FuncCallback interface for ERROR.
786  * @tc.size: MEDIUM
787  * @tc.type: FUNC
788  * @tc.level Level 3
789  * @tc.require: issuesI8ZE8T
790  */
791 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_FuncCallback_0000, testing::ext::TestSize.Level1)
792 {
793     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_FuncCallback_0000";
794     try {
795         EXPECT_NE(ability, nullptr);
796         int value = 0;
797         napi_env env = nullptr;
798         napi_callback_info info = nullptr;
799 
800         auto result = ability->FuncCallback(env, info);
801         EXPECT_TRUE(result == nullptr);
802 
803         env = reinterpret_cast<napi_env>(&value);
804         EXPECT_CALL(*insMoc, napi_get_undefined(_, _)).WillOnce(Return(napi_ok));
805         result = ability->FuncCallback(env, info);
806         EXPECT_TRUE(result == nullptr);
807 
808         info = reinterpret_cast<napi_callback_info>(&value);
809         EXPECT_CALL(*insMoc, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
810         EXPECT_CALL(*insMoc, napi_get_undefined(_, _)).WillOnce(Return(napi_ok));
811         result = ability->FuncCallback(env, info);
812         EXPECT_TRUE(result == nullptr);
813 
814         EXPECT_CALL(*insMoc, napi_get_cb_info(_, _, _, _, _, _))
815            .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>((0)), Return(napi_ok)));
816         EXPECT_CALL(*insMoc, napi_get_undefined(_, _)).WillOnce(Return(napi_ok));
817         result = ability->FuncCallback(env, info);
818         EXPECT_TRUE(result == nullptr);
819 
820         EXPECT_CALL(*insMoc, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
821         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
822         EXPECT_CALL(*insMoc, napi_get_undefined(_, _)).WillOnce(Return(napi_ok));
823         result = ability->FuncCallback(env, info);
824         EXPECT_TRUE(result == nullptr);
825     } catch (...) {
826         EXPECT_TRUE(false);
827         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
828     }
829     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_FuncCallback_0000";
830 }
831 
832 /**
833  * @tc.number: user_file_service_js_file_access_ext_ability_ParserQueryFileJsResult_0000
834  * @tc.name: js_file_access_ext_ability_ParserQueryFileJsResult_0000
835  * @tc.desc: Test function of ParserQueryFileJsResult interface for ERROR.
836  * @tc.size: MEDIUM
837  * @tc.type: FUNC
838  * @tc.level Level 3
839  * @tc.require: issuesI8ZE8T
840  */
841 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ParserQueryFileJsResult_0000,
842     testing::ext::TestSize.Level1)
843 {
844     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ParserQueryFileJsResult_0000";
845     try {
846         EXPECT_NE(ability, nullptr);
847         napi_value rslt = nullptr;
848         napi_env env = nullptr;
849         napi_value nativeValue = {};
850         JsFileAccessExtAbility::Value<vector<string>> value;
851 
852         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
853         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
854         auto result = ability->ParserQueryFileJsResult(env, nativeValue, value);
855         EXPECT_FALSE(result);
856 
857         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
858         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
859         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
860         result = ability->ParserQueryFileJsResult(env, nativeValue, value);
861         EXPECT_FALSE(result);
862 
863         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
864             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
865         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
866         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
867         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg));
868         result = ability->ParserQueryFileJsResult(env, nativeValue, value);
869         EXPECT_FALSE(result);
870 
871         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
872             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
873         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
874         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
875         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok));
876         result = ability->ParserQueryFileJsResult(env, nativeValue, value);
877         EXPECT_TRUE(result);
878     } catch (...) {
879         EXPECT_TRUE(false);
880         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
881     }
882     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ParserQueryFileJsResult_0000";
883 }
884 
885 /**
886  * @tc.number: user_file_service_js_file_access_ext_ability_ParserQueryFileJsResult_0001
887  * @tc.name: js_file_access_ext_ability_ParserQueryFileJsResult_0001
888  * @tc.desc: Test function of ParserQueryFileJsResult interface for ERROR.
889  * @tc.size: MEDIUM
890  * @tc.type: FUNC
891  * @tc.level Level 3
892  * @tc.require: issuesI8ZE8T
893  */
894 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ParserQueryFileJsResult_0001,
895     testing::ext::TestSize.Level1)
896 {
897     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ParserQueryFileJsResult_0001";
898     try {
899         EXPECT_NE(ability, nullptr);
900         napi_value rslt = nullptr;
901         napi_env env = nullptr;
902         napi_value nativeValue = {};
903         JsFileAccessExtAbility::Value<vector<string>> value;
904 
905         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
906             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
907         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
908         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
909         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _))
910             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(1), Return(napi_ok)));
911         EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _)).WillOnce(Return(napi_ok));
912         auto result = ability->ParserQueryFileJsResult(env, nativeValue, value);
913         EXPECT_FALSE(result);
914 
915         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
916             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
917         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
918         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
919         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _))
920             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(1), Return(napi_ok)));
921         EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _))
922             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
923         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
924         result = ability->ParserQueryFileJsResult(env, nativeValue, value);
925         EXPECT_FALSE(result);
926 
927         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
928             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
929         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
930         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
931         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _))
932             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(1), Return(napi_ok)));
933         EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _))
934             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
935         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
936             .WillOnce(Return(napi_ok));
937         result = ability->ParserQueryFileJsResult(env, nativeValue, value);
938         EXPECT_TRUE(result);
939     } catch (...) {
940         EXPECT_TRUE(false);
941         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
942     }
943     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ParserQueryFileJsResult_0001";
944 }
945 
946 /**
947  * @tc.number: user_file_service_js_file_access_ext_ability_ParserGetRootsJsResult_0000
948  * @tc.name: js_file_access_ext_ability_ParserGetRootsJsResult_0000
949  * @tc.desc: Test function of ParserGetRootsJsResult interface for ERROR.
950  * @tc.size: MEDIUM
951  * @tc.type: FUNC
952  * @tc.level Level 3
953  * @tc.require: issuesI8ZE8T
954  */
955 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ParserGetRootsJsResult_0000,
956     testing::ext::TestSize.Level1)
957 {
958     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ParserGetRootsJsResult_0000";
959     try {
960         EXPECT_NE(ability, nullptr);
961         napi_value rslt = nullptr;
962         napi_env env = nullptr;
963         napi_value nativeValue = nullptr;
964         JsFileAccessExtAbility::Value<vector<RootInfo>> value;
965 
966         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
967         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
968         auto result = ability->ParserGetRootsJsResult(env, nativeValue, value);
969         EXPECT_FALSE(result);
970 
971         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
972         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
973         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
974         result = ability->ParserGetRootsJsResult(env, nativeValue, value);
975         EXPECT_FALSE(result);
976 
977         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
978             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
979         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
980         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
981         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg));
982         result = ability->ParserGetRootsJsResult(env, nativeValue, value);
983         EXPECT_FALSE(result);
984 
985         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
986             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
987         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
988         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
989         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok));
990         result = ability->ParserGetRootsJsResult(env, nativeValue, value);
991         EXPECT_TRUE(result);
992     } catch (...) {
993         EXPECT_TRUE(false);
994         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
995     }
996     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ParserGetRootsJsResult_0000";
997 }
998 
999 /**
1000  * @tc.number: user_file_service_js_file_access_ext_ability_ParserGetRootsJsResult_0001
1001  * @tc.name: js_file_access_ext_ability_ParserGetRootsJsResult_0001
1002  * @tc.desc: Test function of ParserGetRootsJsResult interface for ERROR.
1003  * @tc.size: MEDIUM
1004  * @tc.type: FUNC
1005  * @tc.level Level 3
1006  * @tc.require: issuesI8ZE8T
1007  */
1008 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ParserGetRootsJsResult_0001,
1009     testing::ext::TestSize.Level1)
1010 {
1011     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ParserGetRootsJsResult_0001";
1012     try {
1013         EXPECT_NE(ability, nullptr);
1014         napi_value rslt = nullptr;
1015         napi_env env = nullptr;
1016         napi_value nativeValue = nullptr;
1017         JsFileAccessExtAbility::Value<vector<RootInfo>> value;
1018 
1019         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
1020             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1021         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1022         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1023         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _))
1024             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(1), Return(napi_ok)));
1025         EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _)).WillOnce(Return(napi_ok));
1026         auto result = ability->ParserGetRootsJsResult(env, nativeValue, value);
1027         EXPECT_FALSE(result);
1028 
1029         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
1030             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1031             .WillOnce(Return(napi_ok));
1032         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok))
1033             .WillOnce(Return(napi_invalid_arg));
1034         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1035         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _))
1036             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(1), Return(napi_ok)));
1037         EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _))
1038             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1039         result = ability->ParserGetRootsJsResult(env, nativeValue, value);
1040         EXPECT_FALSE(result);
1041     } catch (...) {
1042         EXPECT_TRUE(false);
1043         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1044     }
1045     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ParserGetRootsJsResult_0001";
1046 }
1047 
1048 /**
1049  * @tc.number: user_file_service_js_file_access_ext_ability_ParserGetRootsJsResult_0002
1050  * @tc.name: js_file_access_ext_ability_ParserGetRootsJsResult_0002
1051  * @tc.desc: Test function of ParserGetRootsJsResult interface for ERROR.
1052  * @tc.size: MEDIUM
1053  * @tc.type: FUNC
1054  * @tc.level Level 3
1055  * @tc.require: issuesI8ZE8T
1056  */
1057 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ParserGetRootsJsResult_0002,
1058     testing::ext::TestSize.Level1)
1059 {
1060     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ParserGetRootsJsResult_0001";
1061     try {
1062         EXPECT_NE(ability, nullptr);
1063         napi_value rslt = nullptr;
1064         napi_env env = nullptr;
1065         napi_value nativeValue = nullptr;
1066         JsFileAccessExtAbility::Value<vector<RootInfo>> value;
1067 
1068         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
1069             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1070             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1071             .WillOnce(Return(napi_ok));
1072         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1073             .WillOnce(Return(napi_ok));
1074         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1075         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _))
1076             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(1), Return(napi_ok)));
1077         EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _))
1078             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1079         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1080             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1081             .WillOnce(Return(napi_ok));
1082         auto result = ability->ParserGetRootsJsResult(env, nativeValue, value);
1083         EXPECT_TRUE(result);
1084     } catch (...) {
1085         EXPECT_TRUE(false);
1086         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1087     }
1088     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ParserGetRootsJsResult_0002";
1089 }
1090 
1091 /**
1092  * @tc.number: user_file_service_js_file_access_ext_ability_GetRoots_0000
1093  * @tc.name: js_file_access_ext_ability_GetRoots_0000
1094  * @tc.desc: Test function of GetRoots interface for ERROR.
1095  * @tc.size: MEDIUM
1096  * @tc.type: FUNC
1097  * @tc.level Level 3
1098  * @tc.require: issuesI8ZE8T
1099  */
1100 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetRoots_0000, testing::ext::TestSize.Level1)
1101 {
1102     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetRoots_0000";
1103     try {
1104         EXPECT_NE(ability, nullptr);
1105         vector<RootInfo> rootInfoVec;
1106 
1107         // 模拟调用CallJsMethod失败
1108         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1109         auto result = ability->GetRoots(rootInfoVec);
1110         EXPECT_EQ(result, EINVAL);
1111     } catch (...) {
1112         EXPECT_TRUE(false);
1113         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1114     }
1115     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetRoots_0000";
1116 }
1117 
1118 /**
1119  * @tc.number: user_file_service_js_file_access_ext_ability_GetRoots_0002
1120  * @tc.name: js_file_access_ext_ability_GetRoots_0002
1121  * @tc.desc: Test function of GetRoots interface for ERROR.
1122  * @tc.size: MEDIUM
1123  * @tc.type: FUNC
1124  * @tc.level Level 3
1125  * @tc.require: issuesI8ZE8T
1126  */
1127 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetRoots_0002, testing::ext::TestSize.Level1)
1128 {
1129     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetRoots_0002";
1130     try {
1131         EXPECT_NE(ability, nullptr);
1132         napi_value rslt = nullptr;
1133         vector<RootInfo> rootInfoVec;
1134         ability->jsObj_ = make_shared<NativeReferenceMock>();
1135 
1136         // 模拟获取value->code失败
1137         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1138         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1139         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1140             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1141         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1142             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1143             .WillOnce(Return(napi_ok))
1144             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1145         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1146             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1147         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1148             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1149         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
1150             DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1151         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1152             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1153         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1154         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok));
1155         auto result = ability->GetRoots(rootInfoVec);
1156         EXPECT_EQ(result, E_IPCS);
1157     } catch (...) {
1158         EXPECT_TRUE(false);
1159         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1160     }
1161     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetRoots_0002";
1162 }
1163 
1164 /**
1165  * @tc.number: user_file_service_js_file_access_ext_ability_GetRoots_0003
1166  * @tc.name: js_file_access_ext_ability_GetRoots_0003
1167  * @tc.desc: Test function of GetRoots interface for SUCCESS.
1168  * @tc.size: MEDIUM
1169  * @tc.type: FUNC
1170  * @tc.level Level 3
1171  * @tc.require: issuesI8ZE8T
1172  */
1173 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetRoots_0003, testing::ext::TestSize.Level1)
1174 {
1175     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetRoots_0003";
1176     try {
1177         EXPECT_NE(ability, nullptr);
1178         napi_value rslt = nullptr;
1179         string path = "test";
1180         vector<RootInfo> rootInfoVec;
1181         ability->jsObj_ = make_shared<NativeReferenceMock>();
1182 
1183         // 模拟GetRoots调用成功
1184         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1185         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1186         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1187             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1188         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1189             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1190             .WillOnce(Return(napi_ok))
1191             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1192         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1193             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1194         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1195             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1196         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
1197             DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1198         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1199             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(ERR_OK), Return(napi_ok)));
1200         EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1201         EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok));
1202             auto result = ability->GetRoots(rootInfoVec);
1203         EXPECT_EQ(result, ERR_OK);
1204     } catch (...) {
1205         EXPECT_TRUE(false);
1206         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1207     }
1208     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetRoots_0003";
1209 }
1210 
1211 /**
1212  * @tc.number: user_file_service_js_file_access_ext_ability_Access_0000
1213  * @tc.name: js_file_access_ext_ability_Access_0000
1214  * @tc.desc: Test function of Access interface for ERROR.
1215  * @tc.size: MEDIUM
1216  * @tc.type: FUNC
1217  * @tc.level Level 3
1218  * @tc.require: issuesI8ZE8T
1219  */
1220 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Access_0000, testing::ext::TestSize.Level1)
1221 {
1222     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Access_0000";
1223     try {
1224         EXPECT_NE(ability, nullptr);
1225         Uri uri("");
1226         bool isExist = false;
1227 
1228         // 模拟调用CallJsMethod失败
1229         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1230         auto result = ability->Access(uri, isExist);
1231         EXPECT_EQ(result, EINVAL);
1232     } catch (...) {
1233         EXPECT_TRUE(false);
1234         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1235     }
1236     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Access_0000";
1237 }
1238 
1239 /**
1240  * @tc.number: user_file_service_js_file_access_ext_ability_Access_0001
1241  * @tc.name: js_file_access_ext_ability_Access_0001
1242  * @tc.desc: Test function of Access interface for ERROR.
1243  * @tc.size: MEDIUM
1244  * @tc.type: FUNC
1245  * @tc.level Level 3
1246  * @tc.require: issuesI8ZE8T
1247  */
1248 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Access_0001, testing::ext::TestSize.Level1)
1249 {
1250     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Access_0001";
1251     try {
1252         EXPECT_NE(ability, nullptr);
1253         napi_value rslt = nullptr;
1254         Uri uri("");
1255         bool isExist = false;
1256         ability->jsObj_ = make_shared<NativeReferenceMock>();
1257 
1258         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1259         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1260         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1261         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1262             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1263         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1264             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1265             .WillOnce(Return(napi_ok));
1266         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1267             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1268         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1269             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1270         EXPECT_CALL(*insMoc, napi_get_value_bool(_, _, _)).WillOnce(Return(napi_invalid_arg));
1271         auto result = ability->Access(uri, isExist);
1272         EXPECT_EQ(result, ERR_OK);
1273 
1274         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1275         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1276         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1277         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1278             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1279         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1280             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1281             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1282         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1283             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1284         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1285             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1286         EXPECT_CALL(*insMoc, napi_get_value_bool(_, _, _)).WillOnce(Return(napi_ok));
1287         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
1288         result = ability->Access(uri, isExist);
1289         EXPECT_EQ(result, ERR_OK);
1290     } catch (...) {
1291         EXPECT_TRUE(false);
1292         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1293     }
1294     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Access_0001";
1295 }
1296 
1297 /**
1298  * @tc.number: user_file_service_js_file_access_ext_ability_Access_0002
1299  * @tc.name: js_file_access_ext_ability_Access_0002
1300  * @tc.desc: Test function of Access interface for ERROR.
1301  * @tc.size: MEDIUM
1302  * @tc.type: FUNC
1303  * @tc.level Level 3
1304  * @tc.require: issuesI8ZE8T
1305  */
1306 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Access_0002, testing::ext::TestSize.Level1)
1307 {
1308     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Access_0002";
1309     try {
1310         EXPECT_NE(ability, nullptr);
1311         napi_value rslt = nullptr;
1312         Uri uri("");
1313         bool isExist = false;
1314         ability->jsObj_ = make_shared<NativeReferenceMock>();
1315 
1316         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1317         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1318         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1319         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1320             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1321         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1322             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1323             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1324         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1325             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1326         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1327             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1328         EXPECT_CALL(*insMoc, napi_get_value_bool(_, _, _)).WillOnce(Return(napi_ok));
1329         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1330         auto result = ability->Access(uri, isExist);
1331         EXPECT_EQ(result, ERR_OK);
1332 
1333         // 模拟获取value->code失败
1334         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1335         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1336         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1337         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1338             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1339         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1340             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1341             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1342         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1343             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1344         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1345             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1346         EXPECT_CALL(*insMoc, napi_get_value_bool(_, _, _)).WillOnce(Return(napi_ok));
1347         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1348             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1349         result = ability->Access(uri, isExist);
1350         EXPECT_EQ(result, E_IPCS);
1351     } catch (...) {
1352         EXPECT_TRUE(false);
1353         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1354     }
1355     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Access_0002";
1356 }
1357 
1358 /**
1359  * @tc.number: user_file_service_js_file_access_ext_ability_Access_0003
1360  * @tc.name: js_file_access_ext_ability_Access_0003
1361  * @tc.desc: Test function of Access interface for SUCCESS.
1362  * @tc.size: MEDIUM
1363  * @tc.type: FUNC
1364  * @tc.level Level 3
1365  * @tc.require: issuesI8ZE8T
1366  */
1367 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Access_0003, testing::ext::TestSize.Level1)
1368 {
1369     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Access_0003";
1370     try {
1371         EXPECT_NE(ability, nullptr);
1372         napi_value rslt = nullptr;
1373         Uri uri("");
1374         bool isExist = false;
1375         ability->jsObj_ = make_shared<NativeReferenceMock>();
1376 
1377         // 模拟Access调用成功
1378         EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1379         EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0));
1380         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1381         EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1382             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1383         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1384             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1385             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1386         EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1387             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1388         EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1389             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1390         EXPECT_CALL(*insMoc, napi_get_value_bool(_, _, _)).WillOnce(Return(napi_ok));
1391         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1392             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(ERR_OK), Return(napi_ok)));
1393         auto result = ability->Access(uri, isExist);
1394         EXPECT_EQ(result, ERR_OK);
1395     } catch (...) {
1396         EXPECT_TRUE(false);
1397         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1398     }
1399     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Access_0003";
1400 }
1401 
1402 /**
1403  * @tc.number: user_file_service_js_file_access_ext_ability_GetResultByJs_0000
1404  * @tc.name: js_file_access_ext_ability_GetResultByJs_0000
1405  * @tc.desc: Test function of GetResultByJs interface for success and failure branches.
1406  * @tc.size: MEDIUM
1407  * @tc.type: FUNC
1408  * @tc.level Level 3
1409  * @tc.require: issuesI8ZE8T
1410  */
1411 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetResultByJs_0000, testing::ext::TestSize.Level1)
1412 {
1413     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetResultByJs_0000";
1414     try {
1415         EXPECT_NE(ability, nullptr);
1416         napi_value rslt = nullptr;
1417         napi_env env = nullptr;
1418         napi_value nativeResult = nullptr;
1419         Result result;
1420         int ret = NOEXCEPTION;
1421 
1422         EXPECT_FALSE(GetResultByJs(env, nativeResult, result, ret));
1423 
1424         nativeResult = reinterpret_cast<napi_value>(&rslt);
1425         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1426         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1427         EXPECT_FALSE(GetResultByJs(env, nativeResult, result, ret));
1428 
1429         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1430         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1431             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1432         EXPECT_FALSE(GetResultByJs(env, nativeResult, result, ret));
1433 
1434         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1435             .WillOnce(Return(napi_ok));
1436         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1437             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1438         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
1439         EXPECT_FALSE(GetResultByJs(env, nativeResult, result, ret));
1440 
1441         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1442             .WillOnce(Return(napi_ok));
1443         EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1444             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1445         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1446         EXPECT_TRUE(GetResultByJs(env, nativeResult, result, ret));
1447 
1448         ret = EXCEPTION;
1449         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1450         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
1451         EXPECT_FALSE(GetResultByJs(env, nativeResult, result, ret));
1452 
1453         EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1454         EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1455         EXPECT_TRUE(GetResultByJs(env, nativeResult, result, ret));
1456 
1457         ret = MAX_ARG_COUNT;
1458         EXPECT_TRUE(GetResultByJs(env, nativeResult, result, ret));
1459     } catch (...) {
1460         EXPECT_TRUE(false);
1461         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1462     }
1463     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetResultByJs_0000";
1464 }
1465 
InvokeCreateNativeValueSucceed(shared_ptr<AssistantMock> insMoc)1466 static void InvokeCreateNativeValueSucceed(shared_ptr<AssistantMock> insMoc)
1467 {
1468     // 模拟调用CreateNativeValue成功
1469     napi_value rslt = nullptr;
1470     EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
1471         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1472         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1473         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1474     EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
1475         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1476     EXPECT_CALL(*insMoc, napi_create_double(_, _, _))
1477         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1478     EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _))
1479         .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1480 }
1481 
1482 /**
1483  * @tc.number: user_file_service_js_file_access_ext_ability_MakeJsNativeFileFilter_0000
1484  * @tc.name: js_file_access_ext_ability_MakeJsNativeFileFilter_0000
1485  * @tc.desc: Test function of MakeJsNativeFileFilter interface for success and failure branches.
1486  * @tc.size: MEDIUM
1487  * @tc.type: FUNC
1488  * @tc.level Level 3
1489  * @tc.require: issuesI8ZE8T
1490  */
1491 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_MakeJsNativeFileFilter_0000,
1492     testing::ext::TestSize.Level1)
1493 {
1494     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MakeJsNativeFileFilter_0000";
1495     try {
1496         EXPECT_NE(ability, nullptr);
1497         napi_env env = nullptr;
1498         FileFilter filter;
1499         napi_value nativeFilter = nullptr;
1500 
1501         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)).WillOnce(Return(napi_ok));
1502         auto ret = ability->MakeJsNativeFileFilter(env, filter, nativeFilter);
1503         EXPECT_EQ(ret, E_GETRESULT);
1504 
1505         InvokeCreateNativeValueSucceed(insMoc);
1506         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1507         ret = ability->MakeJsNativeFileFilter(env, filter, nativeFilter);
1508         EXPECT_EQ(ret, EINVAL);
1509 
1510         InvokeCreateNativeValueSucceed(insMoc);
1511         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
1512             .WillOnce(Return(napi_invalid_arg));
1513         ret = ability->MakeJsNativeFileFilter(env, filter, nativeFilter);
1514         EXPECT_EQ(ret, EINVAL);
1515 
1516         InvokeCreateNativeValueSucceed(insMoc);
1517         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1518             .WillOnce(Return(napi_invalid_arg));
1519         ret = ability->MakeJsNativeFileFilter(env, filter, nativeFilter);
1520         EXPECT_EQ(ret, EINVAL);
1521 
1522         InvokeCreateNativeValueSucceed(insMoc);
1523         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1524             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1525         ret = ability->MakeJsNativeFileFilter(env, filter, nativeFilter);
1526         EXPECT_EQ(ret, EINVAL);
1527     } catch (...) {
1528         EXPECT_TRUE(false);
1529         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1530     }
1531     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MakeJsNativeFileFilter_0000";
1532 }
1533 
1534 /**
1535  * @tc.number: user_file_service_js_file_access_ext_ability_MakeJsNativeFileFilter_0001
1536  * @tc.name: js_file_access_ext_ability_MakeJsNativeFileFilter_0001
1537  * @tc.desc: Test function of MakeJsNativeFileFilter interface for success and failure branches.
1538  * @tc.size: MEDIUM
1539  * @tc.type: FUNC
1540  * @tc.level Level 3
1541  * @tc.require: issuesI8ZE8T
1542  */
1543 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_MakeJsNativeFileFilter_0001,
1544     testing::ext::TestSize.Level1)
1545 {
1546     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_MakeJsNativeFileFilter_0001";
1547     try {
1548         EXPECT_NE(ability, nullptr);
1549         napi_env env = nullptr;
1550         FileFilter filter;
1551         napi_value nativeFilter = nullptr;
1552 
1553         InvokeCreateNativeValueSucceed(insMoc);
1554         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1555             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg));
1556         auto ret = ability->MakeJsNativeFileFilter(env, filter, nativeFilter);
1557         EXPECT_EQ(ret, EINVAL);
1558 
1559         InvokeCreateNativeValueSucceed(insMoc);
1560         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1561             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1562             .WillOnce(Return(napi_invalid_arg));
1563         ret = ability->MakeJsNativeFileFilter(env, filter, nativeFilter);
1564         EXPECT_EQ(ret, EINVAL);
1565 
1566         InvokeCreateNativeValueSucceed(insMoc);
1567         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1568             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1569             .WillOnce(Return(napi_ok));
1570         ret = ability->MakeJsNativeFileFilter(env, filter, nativeFilter);
1571         EXPECT_EQ(ret, ERR_OK);
1572     } catch (...) {
1573         EXPECT_TRUE(false);
1574         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1575     }
1576     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_MakeJsNativeFileFilter_0001";
1577 }
1578 
1579 /**
1580  * @tc.number: user_file_service_js_file_access_ext_ability_BuildFileInfoNumParam_0000
1581  * @tc.name: js_file_access_ext_ability_BuildFileInfoNumParam_0000
1582  * @tc.desc: Test function of BuildFileInfoNumParam interface for success and failure branches.
1583  * @tc.size: MEDIUM
1584  * @tc.type: FUNC
1585  * @tc.level Level 3
1586  * @tc.require: issuesI8ZE8T
1587  */
1588 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_BuildFileInfoNumParam_0000,
1589     testing::ext::TestSize.Level1)
1590 {
1591     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_BuildFileInfoNumParam_0000";
1592     try {
1593         EXPECT_NE(ability, nullptr);
1594         napi_value rslt = nullptr;
1595         napi_env env = nullptr;
1596         FileFilter filter;
1597         FileInfoNumParam param { "", filter, false };
1598         napi_value argv;
1599         size_t argc;
1600 
1601         filter.hasFilter_ = true;
1602         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1603         EXPECT_CALL(*insMoc, napi_create_object(_, _)).WillOnce(Return(napi_ok));
1604         EXPECT_FALSE(ability->BuildFileInfoNumParam(env, param, &argv, argc));
1605 
1606         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1607         EXPECT_CALL(*insMoc, napi_create_object(_, _))
1608             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1609         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)).WillOnce(Return(napi_ok));
1610         EXPECT_FALSE(ability->BuildFileInfoNumParam(env, param, &argv, argc));
1611 
1612         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1613         EXPECT_CALL(*insMoc, napi_create_int64(_, _, _))
1614             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1615         EXPECT_CALL(*insMoc, napi_create_object(_, _))
1616             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1617         EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _))
1618             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1619             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1620             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1621         EXPECT_CALL(*insMoc, napi_create_double(_, _, _))
1622             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1623         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _))
1624             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1625             .WillOnce(Return(napi_ok));
1626         EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1627             .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok))
1628             .WillOnce(Return(napi_ok));
1629         EXPECT_FALSE(ability->BuildFileInfoNumParam(env, param, &argv, argc));
1630     } catch (...) {
1631         EXPECT_TRUE(false);
1632         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1633     }
1634     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_BuildFileInfoNumParam_0000";
1635 }
1636 
1637 /**
1638  * @tc.number: user_file_service_js_file_access_ext_ability_BuildFileInfoNumParam_0001
1639  * @tc.name: js_file_access_ext_ability_BuildFileInfoNumParam_0001
1640  * @tc.desc: Test function of BuildFileInfoNumParam interface for success and failure branches.
1641  * @tc.size: MEDIUM
1642  * @tc.type: FUNC
1643  * @tc.level Level 3
1644  * @tc.require: issuesI8ZE8T
1645  */
1646 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_BuildFileInfoNumParam_0001,
1647     testing::ext::TestSize.Level1)
1648 {
1649     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_BuildFileInfoNumParam_0001";
1650     try {
1651         EXPECT_NE(ability, nullptr);
1652         napi_value rslt = nullptr;
1653         FileFilter filter;
1654         FileInfoNumParam param { "", filter, false };
1655         napi_value argv[3];
1656         size_t argc;
1657 
1658         filter.hasFilter_ = false;
1659         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1660         EXPECT_CALL(*insMoc, napi_get_null(_, _)).WillOnce(Return(napi_ok));
1661         EXPECT_FALSE(ability->BuildFileInfoNumParam(env, param, argv, argc));
1662 
1663         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1664         EXPECT_CALL(*insMoc, napi_get_null(_, _))
1665             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1666         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
1667         EXPECT_FALSE(ability->BuildFileInfoNumParam(env, param, argv, argc));
1668 
1669         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1670             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1671         EXPECT_CALL(*insMoc, napi_get_null(_, _))
1672             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1673         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
1674         EXPECT_FALSE(ability->BuildFileInfoNumParam(env, param, argv, argc));
1675 
1676         EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1677             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1678         EXPECT_CALL(*insMoc, napi_get_null(_, _))
1679             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1680         EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _))
1681             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1682         EXPECT_TRUE(ability->BuildFileInfoNumParam(env, param, argv, argc));
1683     } catch (...) {
1684         EXPECT_TRUE(false);
1685         GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1686     }
1687     GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_BuildFileInfoNumParam_0001";
1688 }