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