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