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 }