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