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