1 /*
2 * Copyright (c) 2024-2025 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 #include <gmock/gmock.h>
17 #include <gtest/gtest.h>
18
19 #include "assistant.h"
20 #include "extension_context.h"
21 #include "file_access_ext_base_stub.h"
22 #include "file_access_service_mock.h"
23 #include "file_access_service_client.h"
24 #include "js_file_access_ext_ability.h"
25 #include "js_native_api_types.h"
26 #include "native_reference_mock.h"
27
28 #include "js_file_access_ext_ability.cpp"
29
30 namespace OHOS::FileAccessFwk {
31 using namespace std;
32 using namespace testing;
33 using namespace testing::ext;
34 const int ARG_INDEX_FIRST = 1;
35 const int ARG_INDEX_SECOND = 2;
36 const int ARG_INDEX_THIRD = 3;
37 const int ARG_INDEX_FOUR = 4;
38 const int ARG_INDEX_FIFTH = 5;
39
OnRemoteRequest(unsigned int,OHOS::MessageParcel &,OHOS::MessageParcel &,OHOS::MessageOption &)40 int32_t FileAccessServiceBaseStub::OnRemoteRequest(unsigned int, OHOS::MessageParcel&, OHOS::MessageParcel&,
41 OHOS::MessageOption&)
42 {
43 return 0;
44 }
45
RegisterNotify(const Uri &,bool,const sptr<IFileAccessObserver> &,const ConnectExtensionInfo &)46 int32_t FileAccessServiceBaseProxy::RegisterNotify(const Uri &, bool, const sptr<IFileAccessObserver> &,
47 const ConnectExtensionInfo &)
48 {
49 return 0;
50 }
51
OnChange(const Uri & uri,NotifyType notifyType)52 int32_t FileAccessServiceBaseProxy::OnChange(const Uri &uri, NotifyType notifyType)
53 {
54 return ERR_OK;
55 }
56
GetExtensionProxy(const ConnectExtensionInfo &,sptr<IFileAccessExtBase> &)57 int32_t FileAccessServiceBaseProxy::GetExtensionProxy(const ConnectExtensionInfo &,
58 sptr<IFileAccessExtBase> &)
59 {
60 return 0;
61 }
62
UnregisterNotify(const Uri &,const sptr<IFileAccessObserver> &,const ConnectExtensionInfo &)63 int32_t FileAccessServiceBaseProxy::UnregisterNotify(const Uri &, const sptr<IFileAccessObserver> &,
64 const ConnectExtensionInfo &)
65 {
66 return 0;
67 }
68
UnregisterNotifyNoObserver(const Uri &,const ConnectExtensionInfo &)69 int32_t FileAccessServiceBaseProxy::UnregisterNotifyNoObserver(const Uri &, const ConnectExtensionInfo &)
70 {
71 return 0;
72 }
73
ConnectFileExtAbility(const AAFwk::Want &,const sptr<AAFwk::IAbilityConnection> &)74 int32_t FileAccessServiceBaseProxy::ConnectFileExtAbility(const AAFwk::Want &,
75 const sptr<AAFwk::IAbilityConnection>&)
76 {
77 return 0;
78 }
79
DisConnectFileExtAbility(const sptr<AAFwk::IAbilityConnection> &)80 int32_t FileAccessServiceBaseProxy::DisConnectFileExtAbility(const sptr<AAFwk::IAbilityConnection>&)
81 {
82 return 0;
83 }
84
Init(const std::shared_ptr<AbilityLocalRecord> & record,const std::shared_ptr<OHOSApplication> & application,std::shared_ptr<AbilityHandler> & handler,const sptr<IRemoteObject> & token)85 void FileAccessExtAbility::Init(const std::shared_ptr<AbilityLocalRecord> &record,
86 const std::shared_ptr<OHOSApplication> &application,
87 std::shared_ptr<AbilityHandler> &handler,
88 const sptr<IRemoteObject> &token)
89 {
90 ExtensionBase<>::Init(record, application, handler, token);
91 }
92
OnRemoteRequest(unsigned int,OHOS::MessageParcel &,OHOS::MessageParcel &,OHOS::MessageOption &)93 int32_t FileAccessExtBaseStub::OnRemoteRequest(unsigned int, OHOS::MessageParcel&, OHOS::MessageParcel&,
94 OHOS::MessageOption&)
95 {
96 return 0;
97 }
98
99 class JsFileAccessExtAbilityTest : public testing::Test {
100 public:
SetUpTestCase(void)101 static void SetUpTestCase(void)
102 {
103 Assistant::ins_ = insMoc;
104 }
TearDownTestCase()105 static void TearDownTestCase()
106 {
107 impl = nullptr;
108 insMoc = nullptr;
109 ability = nullptr;
110 jsRuntime = nullptr;
111 Assistant::ins_ = nullptr;
112 }
SetUp()113 void SetUp() {}
TearDown()114 void TearDown() {}
115 public:
116 static inline shared_ptr<AssistantMock> insMoc = make_shared<AssistantMock>();
117 static inline unique_ptr<JsRuntime> jsRuntime = make_unique<JsRuntime>();
118 static inline shared_ptr<JsFileAccessExtAbility> ability = make_shared<JsFileAccessExtAbility>(*jsRuntime);
119 static inline sptr<FileAccessServiceMock> impl = sptr<FileAccessServiceMock>(new FileAccessServiceMock());
120 static inline napi_env env = reinterpret_cast<napi_env>(&(jsRuntime->GetNativeEngine()));
121 };
122
GetInstance()123 sptr<IFileAccessServiceBase> FileAccessServiceClient::GetInstance()
124 {
125 return iface_cast<IFileAccessServiceBase>(JsFileAccessExtAbilityTest::impl);
126 }
127
128 /**
129 * @tc.number: user_file_service_js_file_access_ext_ability_CallObjectMethod_0000
130 * @tc.name: js_file_access_ext_ability_CallObjectMethod_0000
131 * @tc.desc: Test function of CallObjectMethod interface for ERROR.
132 * @tc.size: MEDIUM
133 * @tc.type: FUNC
134 * @tc.level Level 3
135 * @tc.require: issuesI8ZE8T
136 */
137 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CallObjectMethod_0000, testing::ext::TestSize.Level1)
138 {
139 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CallObjectMethod_0000";
140 try {
141 EXPECT_NE(ability, nullptr);
142 auto result = ability->CallObjectMethod(nullptr, nullptr, 0);
143 EXPECT_TRUE(result == nullptr);
144
145 auto ref = make_shared<NativeReferenceMock>();
146 ability->jsObj_ = ref;
147 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(nullptr));
148 result = ability->CallObjectMethod(nullptr, nullptr, 0);
149 EXPECT_TRUE(result == nullptr);
150
151 napi_value rslt = nullptr;
152 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&rslt)));
153 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
154 result = ability->CallObjectMethod(nullptr, nullptr, 0);
155 EXPECT_TRUE(result == nullptr);
156
157 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&rslt)));
158 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
159 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
160 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
161 result = ability->CallObjectMethod(nullptr, nullptr, 0);
162 EXPECT_TRUE(result == nullptr);
163
164 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&rslt)));
165 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
166 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
167 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
168 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
169 result = ability->CallObjectMethod(nullptr, nullptr, 0);
170 EXPECT_TRUE(result == nullptr);
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_CallObjectMethod_0000";
176 }
177
178 /**
179 * @tc.number: user_file_service_js_file_access_ext_ability_CallJsMethod_0000
180 * @tc.name: js_file_access_ext_ability_CallJsMethod_0000
181 * @tc.desc: Test function of CallJsMethod interface for ERROR.
182 * @tc.size: MEDIUM
183 * @tc.type: FUNC
184 * @tc.level Level 3
185 * @tc.require: issuesI8ZE8T
186 */
187 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CallJsMethod_0000, testing::ext::TestSize.Level1)
188 {
189 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CallJsMethod_0000";
190 try {
191 EXPECT_NE(ability, nullptr);
192 string funcNameIn;
193 NativeReference *jsObj = nullptr;
__anonefdfcb700102(napi_env &env, napi_value *argv, size_t &argc) 194 InputArgsParser argParser = [](napi_env &env, napi_value *argv, size_t &argc) -> bool {
195 return false;
196 };
197 ResultValueParser retParser = nullptr;
198 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
199 auto result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
200 EXPECT_EQ(result, EINVAL);
201
202 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
203 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
204 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
205 EXPECT_EQ(result, EINVAL);
206
207 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
208 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
209 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
210 EXPECT_EQ(result, ERR_OK);
211 } catch (...) {
212 EXPECT_TRUE(false);
213 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
214 }
215 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CallJsMethod_0000";
216 }
217
218 /**
219 * @tc.number: user_file_service_js_file_access_ext_ability_DoCallJsMethod_0000
220 * @tc.name: js_file_access_ext_ability_DoCallJsMethod_0000
221 * @tc.desc: Test function of DoCallJsMethod interface for ERROR.
222 * @tc.size: MEDIUM
223 * @tc.type: FUNC
224 * @tc.level Level 3
225 * @tc.require: issuesI8ZE8T
226 */
227 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_DoCallJsMethod_0000, testing::ext::TestSize.Level1)
228 {
229 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_DoCallJsMethod_0000";
230 try {
231 EXPECT_NE(ability, nullptr);
232 string funcNameIn;
233 napi_value rslt = nullptr;
234 NativeReference *jsObj = nullptr;
__anonefdfcb700202(napi_env &env, napi_value *argv, size_t &argc) 235 InputArgsParser argParser = [](napi_env &env, napi_value *argv, size_t &argc) -> bool {
236 return false;
237 };
238 ResultValueParser retParser = nullptr;
239 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
240 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
241 auto result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
242 EXPECT_EQ(result, EINVAL);
243
244 argParser = nullptr;
245 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
246 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
247 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)).WillOnce(Return(napi_ok));
248 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
249 EXPECT_EQ(result, EINVAL);
250
251 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
252 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
253 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
254 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
255 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
256 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
257 EXPECT_EQ(result, EINVAL);
258
259 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
260 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
261 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
262 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
263 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
264 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
265 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
266 EXPECT_EQ(result, EINVAL);
267 } catch (...) {
268 EXPECT_TRUE(false);
269 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
270 }
271 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_DoCallJsMethod_0000";
272 }
273
274 /**
275 * @tc.number: user_file_service_js_file_access_ext_ability_DoCallJsMethod_0001
276 * @tc.name: js_file_access_ext_ability_DoCallJsMethod_0001
277 * @tc.desc: Test function of DoCallJsMethod interface for ERROR.
278 * @tc.size: MEDIUM
279 * @tc.type: FUNC
280 * @tc.level Level 3
281 * @tc.require: issuesI8ZE8T
282 */
283 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_DoCallJsMethod_0001, testing::ext::TestSize.Level1)
284 {
285 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_DoCallJsMethod_0001";
286 try {
287 EXPECT_NE(ability, nullptr);
288 string funcNameIn;
289 napi_value rslt = nullptr;
290 NativeReference *jsObj = nullptr;
291 InputArgsParser argParser = nullptr;
__anonefdfcb700302(napi_env&, napi_value) 292 ResultValueParser retParser = [](napi_env&, napi_value) -> bool {
293 return false;
294 };
295 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
296 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
297 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
298 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
299 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
300 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
301 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
302 auto result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
303 EXPECT_EQ(result, EINVAL);
304
305 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
306 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
307 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
308 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
309 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
310 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
311 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
312 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
313 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
314 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser);
315 EXPECT_EQ(result, EINVAL);
316 } catch (...) {
317 EXPECT_TRUE(false);
318 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
319 }
320 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_DoCallJsMethod_0001";
321 }
322
323 /**
324 * @tc.number: user_file_service_js_file_access_ext_ability_OpenFile_0000
325 * @tc.name: js_file_access_ext_ability_OpenFile_0000
326 * @tc.desc: Test function of OpenFile interface for ERROR.
327 * @tc.size: MEDIUM
328 * @tc.type: FUNC
329 * @tc.level Level 3
330 * @tc.require: issuesI8ZE8T
331 */
332 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_OpenFile_0000, testing::ext::TestSize.Level1)
333 {
334 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_OpenFile_0000";
335 try {
336 EXPECT_NE(ability, nullptr);
337 const Uri uri("");
338 int fd = -1;
339
340 // 模拟调用CallJsMethod失败
341 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
342 auto result = ability->OpenFile(uri, 0, fd);
343 EXPECT_EQ(result, EINVAL);
344 } catch (...) {
345 EXPECT_TRUE(false);
346 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
347 }
348 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_OpenFile_0000";
349 }
350
351 /**
352 * @tc.number: user_file_service_js_file_access_ext_ability_OpenFile_0001
353 * @tc.name: js_file_access_ext_ability_OpenFile_0001
354 * @tc.desc: Test function of OpenFile interface for ERROR.
355 * @tc.size: MEDIUM
356 * @tc.type: FUNC
357 * @tc.level Level 3
358 * @tc.require: issuesI8ZE8T
359 */
360 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_OpenFile_0001, testing::ext::TestSize.Level1)
361 {
362 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_OpenFile_0001";
363 try {
364 EXPECT_NE(ability, nullptr);
365 napi_value rslt = nullptr;
366 const Uri uri("");
367 int fd = -1;
368 ability->jsObj_ = make_shared<NativeReferenceMock>();
369
370 // 模拟获取nativeUri为空
371 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
372 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
373 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
374 EXPECT_CALL(*insMoc, napi_create_int32(_, _, _)).WillOnce(Return(napi_ok));
375 auto result = ability->OpenFile(uri, 0, fd);
376 EXPECT_EQ(result, ERR_OK);
377
378 // 模拟获取nativeFlags为空
379 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
380 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
381 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
382 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
383 EXPECT_CALL(*insMoc, napi_create_int32(_, _, _)).WillOnce(Return(napi_ok));
384 result = ability->OpenFile(uri, 0, fd);
385 EXPECT_EQ(result, ERR_OK);
386 } catch (...) {
387 EXPECT_TRUE(false);
388 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
389 }
390 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_OpenFile_0001";
391 }
392
MockNapiCalls(shared_ptr<AssistantMock> insMoc,napi_value rslt)393 static void MockNapiCalls(shared_ptr<AssistantMock> insMoc, napi_value rslt)
394 {
395 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
396 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
397 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
398 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
399 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
400 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
401 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
402 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
403 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
404 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
405 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
406 }
407
MockNapiFunctionCalls(shared_ptr<AssistantMock> insMoc,const string & path,napi_value rslt)408 static void MockNapiFunctionCalls(shared_ptr<AssistantMock> insMoc, const string& path, napi_value rslt)
409 {
410 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
411 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
412 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
413 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
414 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
415 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
416 .WillOnce(Return(napi_ok))
417 .WillOnce(Return(napi_ok));
418 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
419 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
420 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
421 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
422 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
423 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
424 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
425 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
426 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOUR>(path.length()), Return(napi_ok)))
427 .WillOnce(DoAll(SetArrayArgument<ARG_INDEX_SECOND>(path.begin(), path.end()), Return(napi_ok)));
428 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
429 }
430
MockNapiFunctionCallsForCopy(shared_ptr<AssistantMock> insMoc,napi_value rslt)431 static void MockNapiFunctionCallsForCopy(shared_ptr<AssistantMock> insMoc, napi_value rslt)
432 {
433 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
434 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
435 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
436 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
437 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
438 EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _))
439 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
440 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
441 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
442 }
443
MockNapiFunctionCallsForCopyFile(shared_ptr<AssistantMock> insMoc,const string & path,napi_value rslt)444 static void MockNapiFunctionCallsForCopyFile(shared_ptr<AssistantMock> insMoc, const string& path, napi_value rslt)
445 {
446 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
447 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
448 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
449 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
450 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
451 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
452 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
453 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
454 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
455 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
456 .WillOnce(Return(napi_ok))
457 .WillOnce(Return(napi_ok));
458 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
459 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
460 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
461 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
462 }
463
464 /**
465 * @tc.number: user_file_service_js_file_access_ext_ability_OpenFile_0002
466 * @tc.name: js_file_access_ext_ability_OpenFile_0002
467 * @tc.desc: Test function of OpenFile interface for ERROR.
468 * @tc.size: MEDIUM
469 * @tc.type: FUNC
470 * @tc.level Level 3
471 * @tc.require: issuesI8ZE8T
472 */
473 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_OpenFile_0002, testing::ext::TestSize.Level1)
474 {
475 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_OpenFile_0002";
476 try {
477 EXPECT_NE(ability, nullptr);
478 napi_value rslt = nullptr;
479 const Uri uri("");
480 int fd = -1;
481 ability->jsObj_ = make_shared<NativeReferenceMock>();
482
483 // 模拟获取value->code失败
484 MockNapiCalls(insMoc, rslt);
485 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
486 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
487 EXPECT_CALL(*insMoc, napi_create_int32(_, _, _))
488 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
489 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok))
490 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
491 auto result = ability->OpenFile(uri, 0, fd);
492 EXPECT_EQ(result, E_IPCS);
493
494 // 模拟获取value->data为-1
495 MockNapiCalls(insMoc, rslt);
496 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
497 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
498 EXPECT_CALL(*insMoc, napi_create_int32(_, _, _))
499 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
500 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
501 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(fd), Return(napi_ok))).WillOnce(Return(napi_ok));
502 result = ability->OpenFile(uri, 0, fd);
503 EXPECT_EQ(result, E_GETRESULT);
504 } catch (...) {
505 EXPECT_TRUE(false);
506 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
507 }
508 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_OpenFile_0002";
509 }
510
511 /**
512 * @tc.number: user_file_service_js_file_access_ext_ability_OpenFile_0003
513 * @tc.name: js_file_access_ext_ability_OpenFile_0003
514 * @tc.desc: Test function of OpenFile interface for SUCCESS.
515 * @tc.size: MEDIUM
516 * @tc.type: FUNC
517 * @tc.level Level 3
518 * @tc.require: issuesI8ZE8T
519 */
520 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_OpenFile_0003, testing::ext::TestSize.Level1)
521 {
522 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_OpenFile_0003";
523 try {
524 EXPECT_NE(ability, nullptr);
525 napi_value rslt = nullptr;
526 const Uri uri("");
527 int fd = -1;
528 ability->jsObj_ = make_shared<NativeReferenceMock>();
529
530 // 模拟OpenFile调用成功
531 MockNapiCalls(insMoc, rslt);
532 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
533 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
534 EXPECT_CALL(*insMoc, napi_create_int32(_, _, _))
535 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
536 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
537 auto result = ability->OpenFile(uri, 0, fd);
538 EXPECT_EQ(result, ERR_OK);
539 } catch (...) {
540 EXPECT_TRUE(false);
541 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
542 }
543 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_OpenFile_0003";
544 }
545
546 /**
547 * @tc.number: user_file_service_js_file_access_ext_ability_CreateFile_0000
548 * @tc.name: js_file_access_ext_ability_CreateFile_0000
549 * @tc.desc: Test function of CreateFile interface for ERROR.
550 * @tc.size: MEDIUM
551 * @tc.type: FUNC
552 * @tc.level Level 3
553 * @tc.require: issuesI8ZE8T
554 */
555 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CreateFile_0000, testing::ext::TestSize.Level1)
556 {
557 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CreateFile_0000";
558 try {
559 Uri parent("");
560 string displayName("");
561 Uri newFile("");
562 EXPECT_NE(ability, nullptr);
563
564 // 模拟调用CallJsMethod失败
565 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
566 auto result = ability->CreateFile(parent, displayName, newFile);
567 EXPECT_EQ(result, EINVAL);
568 } catch (...) {
569 EXPECT_TRUE(false);
570 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
571 }
572 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CreateFile_0000";
573 }
574
575 /**
576 * @tc.number: user_file_service_js_file_access_ext_ability_CreateFile_0001
577 * @tc.name: js_file_access_ext_ability_CreateFile_0001
578 * @tc.desc: Test function of CreateFile interface for ERROR.
579 * @tc.size: MEDIUM
580 * @tc.type: FUNC
581 * @tc.level Level 3
582 * @tc.require: issuesI8ZE8T
583 */
584 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CreateFile_0001, testing::ext::TestSize.Level1)
585 {
586 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CreateFile_0001";
587 try {
588 EXPECT_NE(ability, nullptr);
589 napi_value rslt = nullptr;
590 Uri parent("");
591 string displayName("");
592 Uri newFile("");
593 ability->jsObj_ = make_shared<NativeReferenceMock>();
594
595 // 模拟获取nativeParent为空
596 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
597 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
598 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
599 auto result = ability->CreateFile(parent, displayName, newFile);
600 EXPECT_EQ(result, E_GETRESULT);
601
602 // 模拟获取nativeDisplayName为空
603 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
604 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
605 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
606 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
607 .WillOnce(Return(napi_ok));
608 result = ability->CreateFile(parent, displayName, newFile);
609 EXPECT_EQ(result, E_GETRESULT);
610 } catch (...) {
611 EXPECT_TRUE(false);
612 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
613 }
614 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CreateFile_0001";
615 }
616
617 /**
618 * @tc.number: user_file_service_js_file_access_ext_ability_CreateFile_0002
619 * @tc.name: js_file_access_ext_ability_CreateFile_0002
620 * @tc.desc: Test function of CreateFile interface for ERROR.
621 * @tc.size: MEDIUM
622 * @tc.type: FUNC
623 * @tc.level Level 3
624 * @tc.require: issuesI8ZE8T
625 */
626 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CreateFile_0002, testing::ext::TestSize.Level1)
627 {
628 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CreateFile_0002";
629 try {
630 EXPECT_NE(ability, nullptr);
631 napi_value rslt = nullptr;
632 Uri parent("");
633 string displayName("");
634 Uri newFile("");
635 ability->jsObj_ = make_shared<NativeReferenceMock>();
636
637 // 模拟获取value->code失败
638 MockNapiCalls(insMoc, rslt);
639 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
640 DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
641 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
642 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
643 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
644 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
645 auto result = ability->CreateFile(parent, displayName, newFile);
646 EXPECT_EQ(result, E_IPCS);
647
648 // 模拟获取value->data为-1
649 MockNapiCalls(insMoc, rslt);
650 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
651 DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
652 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
653 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
654 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
655 .WillOnce(Return(napi_ok));
656 result = ability->CreateFile(parent, displayName, newFile);
657 EXPECT_EQ(result, E_GETRESULT);
658 } catch (...) {
659 EXPECT_TRUE(false);
660 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
661 }
662 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CreateFile_0002";
663 }
664
665 /**
666 * @tc.number: user_file_service_js_file_access_ext_ability_CreateFile_0003
667 * @tc.name: js_file_access_ext_ability_CreateFile_0003
668 * @tc.desc: Test function of CreateFile interface for SUCCESS.
669 * @tc.size: MEDIUM
670 * @tc.type: FUNC
671 * @tc.level Level 3
672 * @tc.require: issuesI8ZE8T
673 */
674 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CreateFile_0003, testing::ext::TestSize.Level1)
675 {
676 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CreateFile_0003";
677 try {
678 EXPECT_NE(ability, nullptr);
679 napi_value rslt = nullptr;
680 string path = "test";
681 Uri parent("");
682 string displayName("");
683 Uri newFile("");
684 ability->jsObj_ = make_shared<NativeReferenceMock>();
685
686 // 模拟CreateFile调用成功
687 MockNapiFunctionCalls(insMoc, path, rslt);
688 auto result = ability->CreateFile(parent, displayName, newFile);
689 EXPECT_EQ(result, ERR_OK);
690 } catch (...) {
691 EXPECT_TRUE(false);
692 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
693 }
694 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CreateFile_0003";
695 }
696
697 /**
698 * @tc.number: user_file_service_js_file_access_ext_ability_Mkdir_0000
699 * @tc.name: js_file_access_ext_ability_Mkdir_0000
700 * @tc.desc: Test function of Mkdir interface for ERROR.
701 * @tc.size: MEDIUM
702 * @tc.type: FUNC
703 * @tc.level Level 3
704 * @tc.require: issuesI8ZE8T
705 */
706 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Mkdir_0000, testing::ext::TestSize.Level1)
707 {
708 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Mkdir_0000";
709 try {
710 EXPECT_NE(ability, nullptr);
711 Uri parent("");
712 string displayName("");
713 Uri newFile("");
714
715 // 模拟调用CallJsMethod失败
716 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
717 auto result = ability->Mkdir(parent, displayName, newFile);
718 EXPECT_EQ(result, EINVAL);
719 } catch (...) {
720 EXPECT_TRUE(false);
721 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
722 }
723 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Mkdir_0000";
724 }
725
726 /**
727 * @tc.number: user_file_service_js_file_access_ext_ability_Mkdir_0001
728 * @tc.name: js_file_access_ext_ability_Mkdir_0001
729 * @tc.desc: Test function of Mkdir interface for ERROR.
730 * @tc.size: MEDIUM
731 * @tc.type: FUNC
732 * @tc.level Level 3
733 * @tc.require: issuesI8ZE8T
734 */
735 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Mkdir_0001, testing::ext::TestSize.Level1)
736 {
737 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Mkdir_0001";
738 try {
739 EXPECT_NE(ability, nullptr);
740 napi_value rslt = nullptr;
741 Uri parent("");
742 string displayName("");
743 Uri newFile("");
744 ability->jsObj_ = make_shared<NativeReferenceMock>();
745
746 // 模拟获取nativeParent为空
747 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
748 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
749 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
750 auto result = ability->Mkdir(parent, displayName, newFile);
751 EXPECT_EQ(result, E_GETRESULT);
752
753 // 模拟获取nativeDisplayName为空
754 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
755 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
756 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
757 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
758 .WillOnce(Return(napi_ok));
759 result = ability->Mkdir(parent, displayName, newFile);
760 EXPECT_EQ(result, E_GETRESULT);
761 } catch (...) {
762 EXPECT_TRUE(false);
763 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
764 }
765 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Mkdir_0001";
766 }
767
768 /**
769 * @tc.number: user_file_service_js_file_access_ext_ability_Mkdir_0002
770 * @tc.name: js_file_access_ext_ability_Mkdir_0002
771 * @tc.desc: Test function of Mkdir interface for ERROR.
772 * @tc.size: MEDIUM
773 * @tc.type: FUNC
774 * @tc.level Level 3
775 * @tc.require: issuesI8ZE8T
776 */
777 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Mkdir_0002, testing::ext::TestSize.Level1)
778 {
779 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Mkdir_0002";
780 try {
781 EXPECT_NE(ability, nullptr);
782 napi_value rslt = nullptr;
783 Uri parent("");
784 string displayName("");
785 Uri newFile("");
786 ability->jsObj_ = make_shared<NativeReferenceMock>();
787
788 // 模拟获取value->code失败
789 MockNapiCalls(insMoc, rslt);
790 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
791 DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
792 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
793 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
794 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
795 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
796 auto result = ability->Mkdir(parent, displayName, newFile);
797 EXPECT_EQ(result, E_IPCS);
798
799 // 模拟获取value->data为-1
800 MockNapiCalls(insMoc, rslt);
801 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
802 DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
803 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
804 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
805 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
806 result = ability->Mkdir(parent, displayName, newFile);
807 EXPECT_EQ(result, E_GETRESULT);
808 } catch (...) {
809 EXPECT_TRUE(false);
810 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
811 }
812 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Mkdir_0002";
813 }
814
815 /**
816 * @tc.number: user_file_service_js_file_access_ext_ability_Mkdir_0003
817 * @tc.name: js_file_access_ext_ability_Mkdir_0003
818 * @tc.desc: Test function of Mkdir interface for SUCCESS.
819 * @tc.size: MEDIUM
820 * @tc.type: FUNC
821 * @tc.level Level 3
822 * @tc.require: issuesI8ZE8T
823 */
824 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Mkdir_0003, testing::ext::TestSize.Level1)
825 {
826 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Mkdir_0003";
827 try {
828 EXPECT_NE(ability, nullptr);
829 napi_value rslt = nullptr;
830 string path = "test";
831 Uri parent("");
832 string displayName("");
833 Uri newFile("");
834 ability->jsObj_ = make_shared<NativeReferenceMock>();
835
836 // 模拟Mkdir调用成功
837 MockNapiFunctionCalls(insMoc, path, rslt);
838 auto result = ability->Mkdir(parent, displayName, newFile);
839 EXPECT_EQ(result, ERR_OK);
840 } catch (...) {
841 EXPECT_TRUE(false);
842 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
843 }
844 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Mkdir_0003";
845 }
846
847 /**
848 * @tc.number: user_file_service_js_file_access_ext_ability_Delete_0000
849 * @tc.name: js_file_access_ext_ability_Delete_0000
850 * @tc.desc: Test function of Delete interface for ERROR.
851 * @tc.size: MEDIUM
852 * @tc.type: FUNC
853 * @tc.level Level 3
854 * @tc.require: issuesI8ZE8T
855 */
856 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Delete_0000, testing::ext::TestSize.Level1)
857 {
858 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Delete_0000";
859 try {
860 EXPECT_NE(ability, nullptr);
861 Uri sourceFile("");
862
863 // 模拟调用CallJsMethod失败
864 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
865 auto result = ability->Delete(sourceFile);
866 EXPECT_EQ(result, EINVAL);
867 } catch (...) {
868 EXPECT_TRUE(false);
869 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
870 }
871 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Delete_0000";
872 }
873
874 /**
875 * @tc.number: user_file_service_js_file_access_ext_ability_Delete_0001
876 * @tc.name: js_file_access_ext_ability_Delete_0001
877 * @tc.desc: Test function of Delete interface for ERROR.
878 * @tc.size: MEDIUM
879 * @tc.type: FUNC
880 * @tc.level Level 3
881 * @tc.require: issuesI8ZE8T
882 */
883 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Delete_0001, testing::ext::TestSize.Level1)
884 {
885 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Delete_0001";
886 try {
887 EXPECT_NE(ability, nullptr);
888 napi_value rslt = nullptr;
889 Uri sourceFile("");
890 ability->jsObj_ = make_shared<NativeReferenceMock>();
891
892 // 模拟获取nativeUri为空
893 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
894 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
895 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
896 auto result = ability->Delete(sourceFile);
897 EXPECT_EQ(result, ERR_OK);
898
899 // 模拟获取nativeDisplayName为空
900 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
901 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
902 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
903 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
904 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
905 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
906 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
907 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
908 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
909 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
910 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
911 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
912 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
913 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_invalid_arg)));
914 result = ability->Delete(sourceFile);
915 EXPECT_EQ(result, E_IPCS);
916 } catch (...) {
917 EXPECT_TRUE(false);
918 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
919 }
920 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Delete_0001";
921 }
922
923 /**
924 * @tc.number: user_file_service_js_file_access_ext_ability_Delete_0002
925 * @tc.name: js_file_access_ext_ability_Delete_0002
926 * @tc.desc: Test function of Delete interface for SUCCESS.
927 * @tc.size: MEDIUM
928 * @tc.type: FUNC
929 * @tc.level Level 3
930 * @tc.require: issuesI8ZE8T
931 */
932 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Delete_0002, testing::ext::TestSize.Level1)
933 {
934 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Delete_0002";
935 try {
936 EXPECT_NE(ability, nullptr);
937 napi_value rslt = nullptr;
938 Uri sourceFile("");
939 ability->jsObj_ = make_shared<NativeReferenceMock>();
940
941 // 模拟Delete调用成功
942 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
943 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
944 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
945 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
946 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
947 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
948 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
949 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
950 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
951 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
952 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
953 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
954 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
955 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(ERR_OK), Return(napi_ok)));
956 auto result = ability->Delete(sourceFile);
957 EXPECT_EQ(result, ERR_OK);
958 } catch (...) {
959 EXPECT_TRUE(false);
960 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
961 }
962 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Delete_0002";
963 }
964
965 /**
966 * @tc.number: user_file_service_js_file_access_ext_ability_Move_0000
967 * @tc.name: js_file_access_ext_ability_Move_0000
968 * @tc.desc: Test function of Move interface for ERROR.
969 * @tc.size: MEDIUM
970 * @tc.type: FUNC
971 * @tc.level Level 3
972 * @tc.require: issuesI8ZE8T
973 */
974 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Move_0000, testing::ext::TestSize.Level1)
975 {
976 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Move_0000";
977 try {
978 EXPECT_NE(ability, nullptr);
979 Uri sourceFile("");
980 Uri targetParent("");
981 Uri newFile("");
982
983 // 模拟调用CallJsMethod失败
984 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
985 auto result = ability->Move(sourceFile, targetParent, newFile);
986 EXPECT_EQ(result, EINVAL);
987 } catch (...) {
988 EXPECT_TRUE(false);
989 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
990 }
991 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Move_0000";
992 }
993
994 /**
995 * @tc.number: user_file_service_js_file_access_ext_ability_Move_0001
996 * @tc.name: js_file_access_ext_ability_Move_0001
997 * @tc.desc: Test function of Move interface for ERROR.
998 * @tc.size: MEDIUM
999 * @tc.type: FUNC
1000 * @tc.level Level 3
1001 * @tc.require: issuesI8ZE8T
1002 */
1003 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Move_0001, testing::ext::TestSize.Level1)
1004 {
1005 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Move_0001";
1006 try {
1007 EXPECT_NE(ability, nullptr);
1008 napi_value rslt = nullptr;
1009 Uri sourceFile("");
1010 Uri targetParent("");
1011 Uri newFile("");
1012 ability->jsObj_ = make_shared<NativeReferenceMock>();
1013
1014 // 模拟获取srcUri为空
1015 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1016 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1017 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1018 auto result = ability->Move(sourceFile, targetParent, newFile);
1019 EXPECT_EQ(result, E_GETRESULT);
1020
1021 // 模拟获取dstUri为空
1022 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1023 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1024 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1025 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1026 .WillOnce(Return(napi_ok));
1027 result = ability->Move(sourceFile, targetParent, newFile);
1028 EXPECT_EQ(result, E_GETRESULT);
1029 } catch (...) {
1030 EXPECT_TRUE(false);
1031 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1032 }
1033 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Move_0001";
1034 }
1035
1036 /**
1037 * @tc.number: user_file_service_js_file_access_ext_ability_Move_0002
1038 * @tc.name: js_file_access_ext_ability_Move_0002
1039 * @tc.desc: Test function of Move interface for ERROR.
1040 * @tc.size: MEDIUM
1041 * @tc.type: FUNC
1042 * @tc.level Level 3
1043 * @tc.require: issuesI8ZE8T
1044 */
1045 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Move_0002, testing::ext::TestSize.Level1)
1046 {
1047 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Move_0002";
1048 try {
1049 EXPECT_NE(ability, nullptr);
1050 napi_value rslt = nullptr;
1051 Uri sourceFile("");
1052 Uri targetParent("");
1053 Uri newFile("");
1054 ability->jsObj_ = make_shared<NativeReferenceMock>();
1055
1056 // 模拟获取value->code失败
1057 MockNapiCalls(insMoc, rslt);
1058 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
1059 DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1060 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1061 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1062 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1063 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1064 auto result = ability->Move(sourceFile, targetParent, newFile);
1065 EXPECT_EQ(result, E_IPCS);
1066
1067 // 模拟获取value->data为-1
1068 MockNapiCalls(insMoc, rslt);
1069 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
1070 DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1071 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1072 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1073 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1074 .WillOnce(Return(napi_ok));
1075 result = ability->Move(sourceFile, targetParent, newFile);
1076 EXPECT_EQ(result, E_GETRESULT);
1077 } catch (...) {
1078 EXPECT_TRUE(false);
1079 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1080 }
1081 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Move_0002";
1082 }
1083
1084 /**
1085 * @tc.number: user_file_service_js_file_access_ext_ability_Move_0003
1086 * @tc.name: js_file_access_ext_ability_Move_0003
1087 * @tc.desc: Test function of Move interface for SUCCESS.
1088 * @tc.size: MEDIUM
1089 * @tc.type: FUNC
1090 * @tc.level Level 3
1091 * @tc.require: issuesI8ZE8T
1092 */
1093 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Move_0003, testing::ext::TestSize.Level1)
1094 {
1095 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Move_0003";
1096 try {
1097 EXPECT_NE(ability, nullptr);
1098 napi_value rslt = nullptr;
1099 string path = "test";
1100 Uri sourceFile("");
1101 Uri targetParent("");
1102 Uri newFile("");
1103 ability->jsObj_ = make_shared<NativeReferenceMock>();
1104
1105 // 模拟Move调用成功
1106 MockNapiFunctionCalls(insMoc, path, rslt);
1107 auto result = ability->Move(sourceFile, targetParent, newFile);
1108 EXPECT_EQ(result, ERR_OK);
1109 } catch (...) {
1110 EXPECT_TRUE(false);
1111 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1112 }
1113 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Move_0003";
1114 }
1115
1116 /**
1117 * @tc.number: user_file_service_js_file_access_ext_ability_Copy_0000
1118 * @tc.name: js_file_access_ext_ability_Copy_0000
1119 * @tc.desc: Test function of Copy interface for ERROR.
1120 * @tc.size: MEDIUM
1121 * @tc.type: FUNC
1122 * @tc.level Level 3
1123 * @tc.require: issuesI8ZE8T
1124 */
1125 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0000, testing::ext::TestSize.Level1)
1126 {
1127 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Copy_0000";
1128 try {
1129 EXPECT_NE(ability, nullptr);
1130 Uri sourceUri("");
1131 Uri destUri("");
1132 vector<Result> copyResult;
1133 bool force = false;
1134
1135 // 模拟调用CallJsMethod失败
1136 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1137 auto result = ability->Copy(sourceUri, destUri, copyResult, force);
1138 EXPECT_EQ(result, EXCEPTION);
1139 } catch (...) {
1140 EXPECT_TRUE(false);
1141 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1142 }
1143 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0000";
1144 }
1145
1146 /**
1147 * @tc.number: user_file_service_js_file_access_ext_ability_Copy_0001
1148 * @tc.name: js_file_access_ext_ability_Copy_0001
1149 * @tc.desc: Test function of Copy interface for ERROR.
1150 * @tc.size: MEDIUM
1151 * @tc.type: FUNC
1152 * @tc.level Level 3
1153 * @tc.require: issuesI8ZE8T
1154 */
1155 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0001, testing::ext::TestSize.Level1)
1156 {
1157 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Copy_0001";
1158 try {
1159 EXPECT_NE(ability, nullptr);
1160 napi_value rslt = nullptr;
1161 Uri sourceUri("");
1162 Uri destUri("");
1163 vector<Result> copyResult;
1164 bool force = false;
1165 ability->jsObj_ = make_shared<NativeReferenceMock>();
1166
1167 // 模拟获取srcNativeUri为空
1168 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1169 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1170 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1171 EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
1172 auto result = ability->Copy(sourceUri, destUri, copyResult, force);
1173 EXPECT_EQ(result, EXCEPTION);
1174
1175 // 模拟获取dstNativeUri为空
1176 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1177 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1178 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1179 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1180 .WillOnce(Return(napi_ok));
1181 EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
1182 result = ability->Copy(sourceUri, destUri, copyResult, force);
1183 EXPECT_EQ(result, EXCEPTION);
1184
1185 // 模拟获取forceCopy为空
1186 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1187 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1188 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1189 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1190 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1191 EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok));
1192 result = ability->Copy(sourceUri, destUri, copyResult, force);
1193 EXPECT_EQ(result, EXCEPTION);
1194 } catch (...) {
1195 EXPECT_TRUE(false);
1196 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1197 }
1198 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0001";
1199 }
1200
1201 /**
1202 * @tc.number: user_file_service_js_file_access_ext_ability_Copy_0002
1203 * @tc.name: js_file_access_ext_ability_Copy_0002
1204 * @tc.desc: Test function of Copy interface for ERROR.
1205 * @tc.size: MEDIUM
1206 * @tc.type: FUNC
1207 * @tc.level Level 3
1208 * @tc.require: issuesI8ZE8T
1209 */
1210 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0002, testing::ext::TestSize.Level1)
1211 {
1212 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Copy_0002";
1213 try {
1214 EXPECT_NE(ability, nullptr);
1215 napi_value rslt = nullptr;
1216 Uri sourceUri("");
1217 Uri destUri("");
1218 vector<Result> copyResult;
1219 bool force = false;
1220 ability->jsObj_ = make_shared<NativeReferenceMock>();
1221
1222 // 模拟获取nativeValue失败
1223 MockNapiFunctionCallsForCopy(insMoc, rslt);
1224 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1225 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1226 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1227 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1228 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1229 auto result = ability->Copy(sourceUri, destUri, copyResult, force);
1230 EXPECT_EQ(result, EXCEPTION);
1231 } catch (...) {
1232 EXPECT_TRUE(false);
1233 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1234 }
1235 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0002";
1236 }
1237
1238 /**
1239 * @tc.number: user_file_service_js_file_access_ext_ability_Copy_0003
1240 * @tc.name: js_file_access_ext_ability_Copy_0003
1241 * @tc.desc: Test function of Copy interface for ERROR.
1242 * @tc.size: MEDIUM
1243 * @tc.type: FUNC
1244 * @tc.level Level 3
1245 * @tc.require: issuesI8ZE8T
1246 */
1247 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0003, testing::ext::TestSize.Level1)
1248 {
1249 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Copy_0003";
1250 try {
1251 EXPECT_NE(ability, nullptr);
1252 napi_value rslt = nullptr;
1253 Uri sourceUri("");
1254 Uri destUri("");
1255 vector<Result> copyResult;
1256 bool force = false;
1257 ability->jsObj_ = make_shared<NativeReferenceMock>();
1258
1259 // 模拟获取copyRet失败
1260 MockNapiFunctionCallsForCopy(insMoc, rslt);
1261 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1262 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1263 .WillOnce(Return(napi_ok));
1264 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1265 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1266 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1267 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1268 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg));
1269 auto result = ability->Copy(sourceUri, destUri, copyResult, force);
1270 EXPECT_EQ(result, EXCEPTION);
1271 } catch (...) {
1272 EXPECT_TRUE(false);
1273 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1274 }
1275 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0003";
1276 }
1277
1278 /**
1279 * @tc.number: user_file_service_js_file_access_ext_ability_Copy_0004
1280 * @tc.name: js_file_access_ext_ability_Copy_0004
1281 * @tc.desc: Test function of Copy interface for ERROR.
1282 * @tc.size: MEDIUM
1283 * @tc.type: FUNC
1284 * @tc.level Level 3
1285 * @tc.require: issuesI8ZE8T
1286 */
1287 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0004, testing::ext::TestSize.Level1)
1288 {
1289 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Copy_0004";
1290 try {
1291 EXPECT_NE(ability, nullptr);
1292 napi_value rslt = nullptr;
1293 Uri sourceUri("");
1294 Uri destUri("");
1295 vector<Result> copyResult;
1296 bool force = false;
1297 ability->jsObj_ = make_shared<NativeReferenceMock>();
1298
1299 // 模拟获取copyRet等于ERR_OK
1300 MockNapiFunctionCallsForCopy(insMoc, rslt);
1301 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1302 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1303 .WillOnce(Return(napi_ok));
1304 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1305 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1306 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1307 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1308 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1309 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(ERR_OK), Return(napi_ok)));
1310 auto result = ability->Copy(sourceUri, destUri, copyResult, force);
1311 EXPECT_EQ(result, ERR_OK);
1312 } catch (...) {
1313 EXPECT_TRUE(false);
1314 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1315 }
1316 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0004";
1317 }
1318
1319 /**
1320 * @tc.number: user_file_service_js_file_access_ext_ability_Copy_0005
1321 * @tc.name: js_file_access_ext_ability_Copy_0005
1322 * @tc.desc: Test function of Copy interface for ERROR.
1323 * @tc.size: MEDIUM
1324 * @tc.type: FUNC
1325 * @tc.level Level 3
1326 * @tc.require: issuesI8ZE8T
1327 */
1328 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0005, testing::ext::TestSize.Level1)
1329 {
1330 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Copy_0005";
1331 try {
1332 EXPECT_NE(ability, nullptr);
1333 napi_value rslt = nullptr;
1334 Uri sourceUri("");
1335 Uri destUri("");
1336 vector<Result> copyResult;
1337 bool force = false;
1338 ability->jsObj_ = make_shared<NativeReferenceMock>();
1339
1340 // 模拟获取nativeArray为空
1341 MockNapiFunctionCallsForCopy(insMoc, rslt);
1342 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1343 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1344 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1345 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1346 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1347 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1348 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1349 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1350 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1351 EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok));
1352 auto result = ability->Copy(sourceUri, destUri, copyResult, force);
1353 EXPECT_EQ(result, E_IPCS);
1354 } catch (...) {
1355 EXPECT_TRUE(false);
1356 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1357 }
1358 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0005";
1359 }
1360
1361 /**
1362 * @tc.number: user_file_service_js_file_access_ext_ability_Copy_0006
1363 * @tc.name: js_file_access_ext_ability_Copy_0006
1364 * @tc.desc: Test function of Copy interface for ERROR.
1365 * @tc.size: MEDIUM
1366 * @tc.type: FUNC
1367 * @tc.level Level 3
1368 * @tc.require: issuesI8ZE8T
1369 */
1370 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0006, testing::ext::TestSize.Level1)
1371 {
1372 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Copy_0006";
1373 try {
1374 EXPECT_NE(ability, nullptr);
1375 napi_value rslt = nullptr;
1376 Uri sourceUri("");
1377 Uri destUri("");
1378 vector<Result> copyResult;
1379 bool force = false;
1380 ability->jsObj_ = make_shared<NativeReferenceMock>();
1381
1382 // 模拟获取length失败
1383 MockNapiFunctionCallsForCopy(insMoc, rslt);
1384 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1385 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1386 .WillOnce(Return(napi_ok))
1387 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1388 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1389 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1390 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1391 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1392 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1393 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1394 EXPECT_CALL(*insMoc, napi_create_array(_, _))
1395 .WillRepeatedly(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)),
1396 Return(napi_ok)));
1397 EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg));
1398 auto result = ability->Copy(sourceUri, destUri, copyResult, force);
1399 EXPECT_EQ(result, E_IPCS);
1400 } catch (...) {
1401 EXPECT_TRUE(false);
1402 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1403 }
1404 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0006";
1405 }
1406
1407 /**
1408 * @tc.number: user_file_service_js_file_access_ext_ability_Copy_0007
1409 * @tc.name: js_file_access_ext_ability_Copy_0007
1410 * @tc.desc: Test function of Copy interface for ERROR.
1411 * @tc.size: MEDIUM
1412 * @tc.type: FUNC
1413 * @tc.level Level 3
1414 * @tc.require: issuesI8ZE8T
1415 */
1416 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0007, testing::ext::TestSize.Level1)
1417 {
1418 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Copy_0007";
1419 try {
1420 EXPECT_NE(ability, nullptr);
1421 napi_value rslt = nullptr;
1422 Uri sourceUri("");
1423 Uri destUri("");
1424 vector<Result> copyResult;
1425 bool force = false;
1426 ability->jsObj_ = make_shared<NativeReferenceMock>();
1427
1428 // 模拟获取nativeResult失败
1429 MockNapiFunctionCallsForCopy(insMoc, rslt);
1430 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1431 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1432 .WillOnce(Return(napi_ok))
1433 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1434 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1435 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1436 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1437 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1438 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1439 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1440 EXPECT_CALL(*insMoc, napi_create_array(_, _))
1441 .WillRepeatedly(DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_value>(&rslt)),
1442 Return(napi_ok)));
1443 EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _))
1444 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(1), Return(napi_ok)));
1445 EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _)).WillOnce(Return(napi_ok));
1446 auto result = ability->Copy(sourceUri, destUri, copyResult, force);
1447 EXPECT_EQ(result, E_IPCS);
1448 } catch (...) {
1449 EXPECT_TRUE(false);
1450 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1451 }
1452 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0007";
1453 }
1454
1455 /**
1456 * @tc.number: user_file_service_js_file_access_ext_ability_CopyFile_0000
1457 * @tc.name: js_file_access_ext_ability_CopyFile_0000
1458 * @tc.desc: Test function of CopyFile interface for CallJsMethod ERROR.
1459 * @tc.size: MEDIUM
1460 * @tc.type: FUNC
1461 * @tc.level Level 3
1462 * @tc.require: issuesI8ZE8T
1463 */
1464 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0000, testing::ext::TestSize.Level1)
1465 {
1466 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CopyFile_0000";
1467 try {
1468 EXPECT_NE(ability, nullptr);
1469 Uri sourceUri("");
1470 Uri destUri("");
1471 string fileName;
1472 Uri newFileUri("");
1473
1474 // 模拟调用CallJsMethod失败
1475 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1476 auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1477 EXPECT_EQ(result, EINVAL);
1478 } catch (...) {
1479 EXPECT_TRUE(false);
1480 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1481 }
1482 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0000";
1483 }
1484
1485 /**
1486 * @tc.number: user_file_service_js_file_access_ext_ability_CopyFile_0001
1487 * @tc.name: js_file_access_ext_ability_CopyFile_0001
1488 * @tc.desc: Test function of CopyFile interface for ERROR, the reason is that one of srcNativeUri、dstNativeUri and
1489 * fileNativeName is empty.
1490 * @tc.size: MEDIUM
1491 * @tc.type: FUNC
1492 * @tc.level Level 3
1493 * @tc.require: issuesI8ZE8T
1494 */
1495 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0001, testing::ext::TestSize.Level1)
1496 {
1497 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CopyFile_0001";
1498 try {
1499 EXPECT_NE(ability, nullptr);
1500 napi_value rslt = nullptr;
1501 Uri sourceUri("");
1502 Uri destUri("");
1503 string fileName;
1504 Uri newFileUri("");
1505 ability->jsObj_ = make_shared<NativeReferenceMock>();
1506
1507 // 模拟获取srcNativeUri为空
1508 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1509 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1510 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1511 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1512 auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1513 EXPECT_EQ(result, E_GETRESULT);
1514
1515 // 模拟获取dstNativeUri为空
1516 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1517 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1518 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1519 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1520 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1521 result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1522 EXPECT_EQ(result, E_GETRESULT);
1523
1524 // 模拟获取fileNativeName为空
1525 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1526 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1527 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1528 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1529 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1530 .WillOnce(Return(napi_ok));
1531 result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1532 EXPECT_EQ(result, E_GETRESULT);
1533 } catch (...) {
1534 EXPECT_TRUE(false);
1535 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1536 }
1537 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0001";
1538 }
1539
1540 /**
1541 * @tc.number: user_file_service_js_file_access_ext_ability_CopyFile_0002
1542 * @tc.name: js_file_access_ext_ability_CopyFile_0002
1543 * @tc.desc: Test function of CopyFile interface for setting reserve size ERROR.
1544 * @tc.size: MEDIUM
1545 * @tc.type: FUNC
1546 * @tc.level Level 3
1547 * @tc.require: issuesI8ZE8T
1548 */
1549 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0002, testing::ext::TestSize.Level1)
1550 {
1551 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CopyFile_0002";
1552 try {
1553 EXPECT_NE(ability, nullptr);
1554 napi_value rslt = nullptr;
1555 Uri sourceUri("");
1556 Uri destUri("");
1557 string fileName;
1558 Uri newFileUri("");
1559 ability->jsObj_ = make_shared<NativeReferenceMock>();
1560
1561 // 模拟为reserve获取的size失败
1562 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1563 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1564 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1565 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1566 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1567 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1568 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1569 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1570 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1571 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1572 .WillOnce(Return(napi_ok));
1573 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1574 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1575 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1576 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1577 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1578 auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1579 EXPECT_EQ(result, E_GETRESULT);
1580 } catch (...) {
1581 EXPECT_TRUE(false);
1582 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1583 }
1584 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0002";
1585 }
1586
1587 /**
1588 * @tc.number: user_file_service_js_file_access_ext_ability_CopyFile_0003
1589 * @tc.name: js_file_access_ext_ability_CopyFile_0003
1590 * @tc.desc: Test function of CopyFile interface for setting resize size ERROR.
1591 * @tc.size: MEDIUM
1592 * @tc.type: FUNC
1593 * @tc.level Level 3
1594 * @tc.require: issuesI8ZE8T
1595 */
1596 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0003, testing::ext::TestSize.Level1)
1597 {
1598 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CopyFile_0003";
1599 try {
1600 EXPECT_NE(ability, nullptr);
1601 string path = "test";
1602 napi_value rslt = nullptr;
1603 Uri sourceUri("");
1604 Uri destUri("");
1605 string fileName;
1606 Uri newFileUri("");
1607 ability->jsObj_ = make_shared<NativeReferenceMock>();
1608
1609 // 模拟为resize获取的size失败
1610 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1611 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1612 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1613 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1614 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1615 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1616 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1617 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1618 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1619 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1620 .WillOnce(Return(napi_ok));
1621 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1622 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1623 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1624 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1625 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1626 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOUR>(path.length()), Return(napi_ok)))
1627 .WillOnce(Return(napi_invalid_arg));
1628 auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1629 EXPECT_EQ(result, ERR_OK);
1630 } catch (...) {
1631 EXPECT_TRUE(false);
1632 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1633 }
1634 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0003";
1635 }
1636
1637 /**
1638 * @tc.number: user_file_service_js_file_access_ext_ability_CopyFile_0004
1639 * @tc.name: js_file_access_ext_ability_CopyFile_0004
1640 * @tc.desc: Test function of CopyFile interface for getting uri succeed but setting code error.
1641 * @tc.size: MEDIUM
1642 * @tc.type: FUNC
1643 * @tc.level Level 3
1644 * @tc.require: issuesI8ZE8T
1645 */
1646 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0004, testing::ext::TestSize.Level1)
1647 {
1648 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CopyFile_0004";
1649 try {
1650 EXPECT_NE(ability, nullptr);
1651 string path = "test";
1652 napi_value rslt = nullptr;
1653 Uri sourceUri("");
1654 Uri destUri("");
1655 string fileName;
1656 Uri newFileUri("");
1657 ability->jsObj_ = make_shared<NativeReferenceMock>();
1658
1659 // 模拟获取uri成功但value->code失败
1660 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1661 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1662 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1663 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1664 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1665 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1666 EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _))
1667 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1668 EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _))
1669 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1670 .WillOnce(Return(napi_ok))
1671 .WillOnce(Return(napi_ok));
1672 EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _))
1673 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1674 EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _))
1675 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1676 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1677 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOUR>(path.length()), Return(napi_ok)))
1678 .WillOnce(DoAll(SetArrayArgument<ARG_INDEX_SECOND>(path.begin(), path.end()), Return(napi_ok)));
1679 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1680 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_invalid_arg)));
1681 auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1682 EXPECT_EQ(result, E_IPCS);
1683 } catch (...) {
1684 EXPECT_TRUE(false);
1685 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1686 }
1687 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0004";
1688 }
1689
1690
1691 /**
1692 * @tc.number: user_file_service_js_file_access_ext_ability_CopyFile_0005
1693 * @tc.name: js_file_access_ext_ability_CopyFile_0005
1694 * @tc.desc: Test function of CopyFile interface for GetUriAndCodeFromJs SUCCEED.
1695 * @tc.size: MEDIUM
1696 * @tc.type: FUNC
1697 * @tc.level Level 3
1698 * @tc.require: issuesI8ZE8T
1699 */
1700 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0005, testing::ext::TestSize.Level1)
1701 {
1702 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CopyFile_0005";
1703 try {
1704 EXPECT_NE(ability, nullptr);
1705 string path = "test";
1706 napi_value rslt = nullptr;
1707 Uri sourceUri("");
1708 Uri destUri("");
1709 string fileName;
1710 Uri newFileUri("");
1711 ability->jsObj_ = make_shared<NativeReferenceMock>();
1712
1713 // 模拟GetUriAndCodeFromJs成功
1714 MockNapiFunctionCallsForCopyFile(insMoc, path, rslt);
1715 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1716 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOUR>(path.length()), Return(napi_ok)))
1717 .WillOnce(DoAll(SetArrayArgument<ARG_INDEX_SECOND>(path.begin(), path.end()), Return(napi_ok)));
1718 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1719 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1720 auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1721 EXPECT_EQ(result, E_IPCS);
1722 } catch (...) {
1723 EXPECT_TRUE(false);
1724 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1725 }
1726 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0005";
1727 }
1728
1729 /**
1730 * @tc.number: user_file_service_js_file_access_ext_ability_CopyFile_0006
1731 * @tc.name: js_file_access_ext_ability_CopyFile_0006
1732 * @tc.desc: Test function of CopyFile interface for ERROR, the reason is that one of value->code and value->data fail.
1733 * @tc.size: MEDIUM
1734 * @tc.type: FUNC
1735 * @tc.level Level 3
1736 * @tc.require: issuesI8ZE8T
1737 */
1738 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0006, testing::ext::TestSize.Level1)
1739 {
1740 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CopyFile_0006";
1741 try {
1742 EXPECT_NE(ability, nullptr);
1743 string path = "test";
1744 napi_value rslt = nullptr;
1745 Uri sourceUri("");
1746 Uri destUri("");
1747 string fileName;
1748 Uri newFileUri("");
1749 ability->jsObj_ = make_shared<NativeReferenceMock>();
1750
1751 // 模拟获取value->code失败
1752 MockNapiFunctionCallsForCopyFile(insMoc, path, rslt);
1753 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1754 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1755 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1756 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1757 auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1758 EXPECT_EQ(result, E_IPCS);
1759
1760 // 模拟获取value->data为-1
1761 MockNapiFunctionCallsForCopyFile(insMoc, path, rslt);
1762 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1763 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1764 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1765 result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1766 EXPECT_EQ(result, E_GETRESULT);
1767 } catch (...) {
1768 EXPECT_TRUE(false);
1769 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1770 }
1771 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0006";
1772 }
1773
1774 /**
1775 * @tc.number: user_file_service_js_file_access_ext_ability_CopyFile_0007
1776 * @tc.name: js_file_access_ext_ability_CopyFile_0007
1777 * @tc.desc: Test function of CopyFile interface for SUCCESS.
1778 * @tc.size: MEDIUM
1779 * @tc.type: FUNC
1780 * @tc.level Level 3
1781 * @tc.require: issuesI8ZE8T
1782 */
1783 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0007, testing::ext::TestSize.Level1)
1784 {
1785 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_CopyFile_0007";
1786 try {
1787 EXPECT_NE(ability, nullptr);
1788 string path = "test";
1789 napi_value rslt = nullptr;
1790 Uri sourceUri("");
1791 Uri destUri("");
1792 string fileName;
1793 Uri newFileUri("");
1794 ability->jsObj_ = make_shared<NativeReferenceMock>();
1795
1796 // 模拟CopyFile调用成功
1797 MockNapiFunctionCallsForCopyFile(insMoc, path, rslt);
1798 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1799 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOUR>(path.length()), Return(napi_ok)))
1800 .WillOnce(DoAll(SetArrayArgument<ARG_INDEX_SECOND>(path.begin(), path.end()), Return(napi_ok)));
1801 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1802 auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri);
1803 EXPECT_EQ(result, ERR_OK);
1804 } catch (...) {
1805 EXPECT_TRUE(false);
1806 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1807 }
1808 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0007";
1809 }
1810
1811 /**
1812 * @tc.number: user_file_service_js_file_access_ext_ability_Rename_0000
1813 * @tc.name: js_file_access_ext_ability_Rename_0000
1814 * @tc.desc: Test function of Rename interface for ERROR.
1815 * @tc.size: MEDIUM
1816 * @tc.type: FUNC
1817 * @tc.level Level 3
1818 * @tc.require: issuesI8ZE8T
1819 */
1820 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Rename_0000, testing::ext::TestSize.Level1)
1821 {
1822 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Rename_0000";
1823 try {
1824 EXPECT_NE(ability, nullptr);
1825 Uri sourceFile("");
1826 string displayName("");
1827 Uri newFile("");
1828
1829 // 模拟调用CallJsMethod失败
1830 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1831 auto result = ability->Rename(sourceFile, displayName, newFile);
1832 EXPECT_EQ(result, EINVAL);
1833 } catch (...) {
1834 EXPECT_TRUE(false);
1835 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1836 }
1837 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Rename_0000";
1838 }
1839
1840 /**
1841 * @tc.number: user_file_service_js_file_access_ext_ability_Rename_0001
1842 * @tc.name: js_file_access_ext_ability_Rename_0001
1843 * @tc.desc: Test function of Rename interface for ERROR.
1844 * @tc.size: MEDIUM
1845 * @tc.type: FUNC
1846 * @tc.level Level 3
1847 * @tc.require: issuesI8ZE8T
1848 */
1849 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Rename_0001, testing::ext::TestSize.Level1)
1850 {
1851 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Rename_0001";
1852 try {
1853 EXPECT_NE(ability, nullptr);
1854 napi_value rslt = nullptr;
1855 Uri sourceFile("");
1856 string displayName("");
1857 Uri newFile("");
1858 ability->jsObj_ = make_shared<NativeReferenceMock>();
1859
1860 // 模拟获取nativeSourceFile为空
1861 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1862 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1863 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1864 auto result = ability->Rename(sourceFile, displayName, newFile);
1865 EXPECT_EQ(result, E_GETRESULT);
1866
1867 // 模拟获取nativeDisplayName为空
1868 EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1869 EXPECT_CALL(*insMoc, napi_send_event(_, _, _)).WillOnce(Return(napi_ok));
1870 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _))
1871 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)))
1872 .WillOnce(Return(napi_ok));
1873 result = ability->Rename(sourceFile, displayName, newFile);
1874 EXPECT_EQ(result, E_GETRESULT);
1875 } catch (...) {
1876 EXPECT_TRUE(false);
1877 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1878 }
1879 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Rename_0001";
1880 }
1881
1882 /**
1883 * @tc.number: user_file_service_js_file_access_ext_ability_Rename_0002
1884 * @tc.name: js_file_access_ext_ability_Rename_0002
1885 * @tc.desc: Test function of Rename interface for ERROR.
1886 * @tc.size: MEDIUM
1887 * @tc.type: FUNC
1888 * @tc.level Level 3
1889 * @tc.require: issuesI8ZE8T
1890 */
1891 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Rename_0002, testing::ext::TestSize.Level1)
1892 {
1893 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Rename_0002";
1894 try {
1895 EXPECT_NE(ability, nullptr);
1896 napi_value rslt = nullptr;
1897 Uri sourceFile("");
1898 string displayName("");
1899 Uri newFile("");
1900 ability->jsObj_ = make_shared<NativeReferenceMock>();
1901
1902 // 模拟获取value->code失败
1903 MockNapiCalls(insMoc, rslt);
1904 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
1905 DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1906 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1907 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1908 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _))
1909 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(E_IPCS), Return(napi_ok)));
1910 auto result = ability->Rename(sourceFile, displayName, newFile);
1911 EXPECT_EQ(result, E_IPCS);
1912
1913 // 模拟获取value->data为-1
1914 MockNapiCalls(insMoc, rslt);
1915 EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillRepeatedly(
1916 DoAll(SetArgPointee<ARG_INDEX_THIRD>(reinterpret_cast<napi_value>(&rslt)), Return(napi_ok)));
1917 EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _))
1918 .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
1919 EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok));
1920 result = ability->Rename(sourceFile, displayName, newFile);
1921 EXPECT_EQ(result, E_GETRESULT);
1922 } catch (...) {
1923 EXPECT_TRUE(false);
1924 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1925 }
1926 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Rename_0002";
1927 }
1928
1929 /**
1930 * @tc.number: user_file_service_js_file_access_ext_ability_Rename_0003
1931 * @tc.name: js_file_access_ext_ability_Rename_0003
1932 * @tc.desc: Test function of Rename interface for SUCCESS.
1933 * @tc.size: MEDIUM
1934 * @tc.type: FUNC
1935 * @tc.level Level 3
1936 * @tc.require: issuesI8ZE8T
1937 */
1938 HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Rename_0003, testing::ext::TestSize.Level1)
1939 {
1940 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_Rename_0003";
1941 try {
1942 EXPECT_NE(ability, nullptr);
1943 napi_value rslt = nullptr;
1944 string path = "test";
1945 Uri sourceFile("");
1946 string displayName("");
1947 Uri newFile("");
1948 ability->jsObj_ = make_shared<NativeReferenceMock>();
1949
1950 // 模拟Rename调用成功
1951 MockNapiFunctionCalls(insMoc, path, rslt);
1952 auto result = ability->Rename(sourceFile, displayName, newFile);
1953 EXPECT_EQ(result, ERR_OK);
1954 } catch (...) {
1955 EXPECT_TRUE(false);
1956 GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception.";
1957 }
1958 GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Rename_0003";
1959 }
1960
1961 #include "js_file_access_ext_ability_ex_test.cpp"
1962 #include "js_file_access_ext_ability_other_test.cpp"
1963 }
1964