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 "ability_info.h"
20 #include "ext_backup_mock.h"
21 #include "napi_mock.h"
22 #include "native_reference_mock.h"
23
24 #include "ext_backup_js.cpp"
25
LoadSystemModuleByEngine(napi_env env,const std::string & moduleName,const napi_value * argv,size_t argc)26 std::unique_ptr<NativeReference> OHOS::AbilityRuntime::JsRuntime::LoadSystemModuleByEngine(napi_env env,
27 const std::string& moduleName, const napi_value* argv, size_t argc)
28 {
29 return OHOS::FileManagement::Backup::BExtBackup::extBackup->LoadSystemModuleByEngine(env, moduleName, argv, argc);
30 }
31
GetNapiEnv() const32 napi_env OHOS::AbilityRuntime::JsRuntime::GetNapiEnv() const
33 {
34 return OHOS::FileManagement::Backup::BExtBackup::extBackup->GetNapiEnv();
35 }
36
37 namespace OHOS::FileManagement::Backup {
38 using namespace std;
39 using namespace testing;
40
41 const int ARG_INDEX_FIRST = 1;
42 const int ARG_INDEX_SECOND = 2;
43 const int ARG_INDEX_FOURTH = 4;
44 const int ARG_INDEX_FIFTH = 5;
45
CreateExtBackupJsContext(napi_env env,std::shared_ptr<ExtBackupContext> context)46 napi_value CreateExtBackupJsContext(napi_env env, std::shared_ptr<ExtBackupContext> context)
47 {
48 return BExtBackup::extBackup->CreateExtBackupJsContext(env, context);
49 }
50
51 class JsRuntimeMock : public AbilityRuntime::JsRuntime {
52 public:
53 MOCK_METHOD(void, StartDebugMode, (const DebugOption debugOption));
54 MOCK_METHOD(void, DumpHeapSnapshot, (bool isPrivate));
55 MOCK_METHOD(void, DumpCpuProfile, ());
56 MOCK_METHOD(void, DestroyHeapProfiler, ());
57 MOCK_METHOD(void, ForceFullGC, ());
58 MOCK_METHOD(void, ForceFullGC, (uint32_t tid));
59 MOCK_METHOD(void, DumpHeapSnapshot, (uint32_t tid, bool isFullGC));
60 MOCK_METHOD(void, AllowCrossThreadExecution, ());
61 MOCK_METHOD(void, GetHeapPrepare, ());
62 MOCK_METHOD(void, NotifyApplicationState, (bool isBackground));
63 MOCK_METHOD(bool, SuspendVM, (uint32_t tid));
64 MOCK_METHOD(void, ResumeVM, (uint32_t tid));
65 MOCK_METHOD(void, PreloadSystemModule, (const std::string& moduleName));
66 MOCK_METHOD(void, FinishPreload, ());
67 MOCK_METHOD(bool, LoadRepairPatch, (const std::string& patchFile, const std::string& baseFile));
68 MOCK_METHOD(bool, NotifyHotReloadPage, ());
69 MOCK_METHOD(bool, UnLoadRepairPatch, (const std::string& patchFile));
70 MOCK_METHOD(void, RegisterQuickFixQueryFunc, ((const std::map<std::string, std::string>&) moduleAndPath));
71 MOCK_METHOD(void, StartProfiler, (const DebugOption debugOption));
72 MOCK_METHOD(void, DoCleanWorkAfterStageCleaned, ());
73 MOCK_METHOD(void, SetModuleLoadChecker, (const std::shared_ptr<ModuleCheckerDelegate>), (const));
74 MOCK_METHOD(void, SetDeviceDisconnectCallback, (const std::function<bool()> &cb));
75 MOCK_METHOD(void, UpdatePkgContextInfoJson, (std::string moduleName, std::string hapPath, std::string packageName));
76 };
77
78 class ExtBackupJsTest : public testing::Test {
79 public:
80 static void SetUpTestCase(void);
81 static void TearDownTestCase();
SetUp()82 void SetUp() override {};
TearDown()83 void TearDown() override {};
84 public:
85 static inline unique_ptr<JsRuntimeMock> jsRuntime = nullptr;
86 static inline shared_ptr<ExtBackupJs> extBackupJs = nullptr;
87 static inline shared_ptr<ExtBackupMock> extBackupMock = nullptr;
88 static inline shared_ptr<NapiMock> napiMock = nullptr;
89 };
90
SetUpTestCase()91 void ExtBackupJsTest::SetUpTestCase()
92 {
93 GTEST_LOG_(INFO) << "SetUpTestCase enter";
94 jsRuntime = make_unique<JsRuntimeMock>();
95 extBackupJs = make_shared<ExtBackupJs>(*jsRuntime);
96 extBackupMock = make_shared<ExtBackupMock>();
97 ExtBackupMock::extBackup = extBackupMock;
98 napiMock = make_shared<NapiMock>();
99 Napi::napi = napiMock;
100 }
101
TearDownTestCase()102 void ExtBackupJsTest::TearDownTestCase()
103 {
104 GTEST_LOG_(INFO) << "TearDownTestCase enter";
105 extBackupJs = nullptr;
106 jsRuntime = nullptr;
107 ExtBackupMock::extBackup = nullptr;
108 extBackupMock = nullptr;
109 Napi::napi = nullptr;
110 napiMock = nullptr;
111 }
112
113 /**
114 * @tc.number: SUB_backup_ext_js_GetSrcPath_0100
115 * @tc.name: SUB_backup_ext_js_GetSrcPath_0100
116 * @tc.desc: 测试 GetSrcPath 各个分支成功与失败
117 * @tc.size: MEDIUM
118 * @tc.type: FUNC
119 * @tc.level Level 1
120 * @tc.require: issuesIAFBOS
121 */
122 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetSrcPath_0100, testing::ext::TestSize.Level1)
123 {
124 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetSrcPath_0100";
125 try {
126 AppExecFwk::AbilityInfo info;
127 info.srcEntrance = "";
128 auto ret = GetSrcPath(info);
129 EXPECT_TRUE(ret.empty());
130
131 info.srcEntrance = "test";
132 ret = GetSrcPath(info);
133 EXPECT_FALSE(ret.empty());
134 } catch (...) {
135 EXPECT_TRUE(false);
136 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetSrcPath.";
137 }
138 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetSrcPath_0100";
139 }
140
141 /**
142 * @tc.number: SUB_backup_ext_js_DealNapiStrValue_0100
143 * @tc.name: SUB_backup_ext_js_DealNapiStrValue_0100
144 * @tc.desc: 测试 DealNapiStrValue 各个分支成功与失败
145 * @tc.size: MEDIUM
146 * @tc.type: FUNC
147 * @tc.level Level 1
148 * @tc.require: issuesIAFBOS
149 */
150 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DealNapiStrValue_0100, testing::ext::TestSize.Level1)
151 {
152 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DealNapiStrValue_0100";
153 try {
154 napi_env env = nullptr;
155 napi_value value = 0;
156 string result = "";
157 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
158 auto ret = DealNapiStrValue(env, value, result);
159 EXPECT_EQ(ret, napi_invalid_arg);
160
161 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok));
162 ret = DealNapiStrValue(env, value, result);
163 EXPECT_EQ(ret, napi_ok);
164
165 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _))
166 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOURTH>(1), Return(napi_ok)))
167 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOURTH>(1), Return(napi_invalid_arg)));
168 ret = DealNapiStrValue(env, value, result);
169 EXPECT_EQ(ret, napi_invalid_arg);
170
171 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _))
172 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FOURTH>(1), Return(napi_ok)))
173 .WillOnce(Return(napi_ok));
174 ret = DealNapiStrValue(env, value, result);
175 EXPECT_EQ(ret, napi_ok);
176 } catch (...) {
177 EXPECT_TRUE(false);
178 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DealNapiStrValue.";
179 }
180 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DealNapiStrValue_0100";
181 }
182
183 /**
184 * @tc.number: SUB_backup_ext_js_DealNapiException_0100
185 * @tc.name: SUB_backup_ext_js_DealNapiException_0100
186 * @tc.desc: 测试 DealNapiException 各个分支成功与失败
187 * @tc.size: MEDIUM
188 * @tc.type: FUNC
189 * @tc.level Level 1
190 * @tc.require: issuesIAFBOS
191 */
192 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DealNapiException_0100, testing::ext::TestSize.Level1)
193 {
194 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DealNapiException_0100";
195 try {
196 napi_env env = nullptr;
197 string exceptionInfo = "";
198 napi_value exception;
199 EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
200 auto ret = DealNapiException(env, exception, exceptionInfo);
201 EXPECT_EQ(ret, napi_invalid_arg);
202
203 EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_ok));
204 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
205 ret = DealNapiException(env, exception, exceptionInfo);
206 EXPECT_EQ(ret, napi_invalid_arg);
207
208 EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_ok));
209 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok));
210 ret = DealNapiException(env, exception, exceptionInfo);
211 EXPECT_EQ(ret, napi_ok);
212 } catch (...) {
213 EXPECT_TRUE(false);
214 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DealNapiException.";
215 }
216 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DealNapiException_0100";
217 }
218
219 /**
220 * @tc.number: SUB_backup_ext_js_PromiseCallback_0100
221 * @tc.name: SUB_backup_ext_js_PromiseCallback_0100
222 * @tc.desc: 测试 PromiseCallback 各个分支成功与失败
223 * @tc.size: MEDIUM
224 * @tc.type: FUNC
225 * @tc.level Level 1
226 * @tc.require: issuesIAFBOS
227 */
228 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCallback_0100, testing::ext::TestSize.Level1)
229 {
230 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCallback_0100";
231 try {
232 napi_env env = nullptr;
233 napi_callback_info info = nullptr;
234 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
235 auto ret = PromiseCallback(env, info);
236 EXPECT_TRUE(ret == nullptr);
237
238
239 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
240 ret = PromiseCallback(env, info);
241 EXPECT_TRUE(ret == nullptr);
242
__anonc3409c9d0102(ErrCode, std::string)243 struct CallbackInfo callback([](ErrCode, std::string){});
244 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
245 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
246 ret = PromiseCallback(env, info);
247 EXPECT_TRUE(ret == nullptr);
248 } catch (...) {
249 EXPECT_TRUE(false);
250 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCallback.";
251 }
252 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCallback_0100";
253 }
254
255 /**
256 * @tc.number: SUB_backup_ext_js_PromiseCatchCallback_0100
257 * @tc.name: SUB_backup_ext_js_PromiseCatchCallback_0100
258 * @tc.desc: 测试 PromiseCatchCallback 各个分支成功与失败
259 * @tc.size: MEDIUM
260 * @tc.type: FUNC
261 * @tc.level Level 1
262 * @tc.require: issuesIAFBOS
263 */
264 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCatchCallback_0100, testing::ext::TestSize.Level1)
265 {
266 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCatchCallback_0100";
267 try {
268 napi_env env = nullptr;
269 napi_callback_info info = nullptr;
270 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
271 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
272 auto ret = PromiseCatchCallback(env, info);
273 EXPECT_TRUE(ret == nullptr);
274
__anonc3409c9d0202(ErrCode, std::string)275 struct CallbackInfo callback([](ErrCode, std::string){});
276 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
277 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
278 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
279 ret = PromiseCatchCallback(env, info);
280 EXPECT_TRUE(ret == nullptr);
281 } catch (...) {
282 EXPECT_TRUE(false);
283 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCatchCallback.";
284 }
285 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCatchCallback_0100";
286 }
287
288 /**
289 * @tc.number: SUB_backup_ext_js_PromiseCallbackEx_0100
290 * @tc.name: SUB_backup_ext_js_PromiseCallbackEx_0100
291 * @tc.desc: 测试 PromiseCallbackEx 各个分支成功与失败
292 * @tc.size: MEDIUM
293 * @tc.type: FUNC
294 * @tc.level Level 1
295 * @tc.require: issuesIAFBOS
296 */
297 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCallbackEx_0100, testing::ext::TestSize.Level1)
298 {
299 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCallbackEx_0100";
300 try {
301 napi_env env = nullptr;
302 napi_callback_info info = nullptr;
303 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
304 auto ret = PromiseCallbackEx(env, info);
305 EXPECT_TRUE(ret == nullptr);
306
__anonc3409c9d0302(ErrCode, std::string)307 struct CallbackInfoEx callback([](ErrCode, std::string){});
308 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
309 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
310 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
311 ret = PromiseCallbackEx(env, info);
312 EXPECT_TRUE(ret == nullptr);
313 } catch (...) {
314 EXPECT_TRUE(false);
315 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCallbackEx.";
316 }
317 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCallbackEx_0100";
318 }
319
320 /**
321 * @tc.number: SUB_backup_ext_js_PromiseCatchCallbackEx_0100
322 * @tc.name: SUB_backup_ext_js_PromiseCatchCallbackEx_0100
323 * @tc.desc: 测试 PromiseCatchCallbackEx 各个分支成功与失败
324 * @tc.size: MEDIUM
325 * @tc.type: FUNC
326 * @tc.level Level 1
327 * @tc.require: issuesIAFBOS
328 */
329 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCatchCallbackEx_0100, testing::ext::TestSize.Level1)
330 {
331 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCatchCallbackEx_0100";
332 try {
333 napi_env env = nullptr;
334 napi_callback_info info = nullptr;
335 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
336 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
337 auto ret = PromiseCatchCallbackEx(env, info);
338 EXPECT_TRUE(ret == nullptr);
339
__anonc3409c9d0402(ErrCode, std::string)340 struct CallbackInfoEx callback([](ErrCode, std::string){});
341 EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
342 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
343 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
344 ret = PromiseCatchCallbackEx(env, info);
345 EXPECT_TRUE(ret == nullptr);
346 } catch (...) {
347 EXPECT_TRUE(false);
348 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCatchCallbackEx.";
349 }
350 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCatchCallbackEx_0100";
351 }
352
353 /**
354 * @tc.number: SUB_backup_ext_js_CheckPromise_0100
355 * @tc.name: SUB_backup_ext_js_CheckPromise_0100
356 * @tc.desc: 测试 CheckPromise 各个分支成功与失败
357 * @tc.size: MEDIUM
358 * @tc.type: FUNC
359 * @tc.level Level 1
360 * @tc.require: issuesIAFBOS
361 */
362 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CheckPromise_0100, testing::ext::TestSize.Level1)
363 {
364 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CheckPromise_0100";
365 try {
366 napi_env env = nullptr;
367 auto ret = CheckPromise(env, nullptr);
368 EXPECT_FALSE(ret);
369
370 int value = 0;
371 EXPECT_CALL(*napiMock, napi_is_promise(_, _, _)).WillOnce(Return(napi_invalid_arg));
372 ret = CheckPromise(env, reinterpret_cast<napi_value>(&value));
373 EXPECT_FALSE(ret);
374
375 EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
376 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
377 ret = CheckPromise(env, reinterpret_cast<napi_value>(&value));
378 EXPECT_TRUE(ret);
379 } catch (...) {
380 EXPECT_TRUE(false);
381 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CheckPromise.";
382 }
383 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CheckPromise_0100";
384 }
385
386 /**
387 * @tc.number: SUB_backup_ext_js_CallCatchPromise_0100
388 * @tc.name: SUB_backup_ext_js_CallCatchPromise_0100
389 * @tc.desc: 测试 CallCatchPromise 各个分支成功与失败
390 * @tc.size: MEDIUM
391 * @tc.type: FUNC
392 * @tc.level Level 1
393 * @tc.require: issuesIAFBOS
394 */
395 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromise_0100, testing::ext::TestSize.Level1)
396 {
397 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallCatchPromise_0100";
398 try {
399 napi_value result = nullptr;
400 struct CallbackInfo *callbackInfo = nullptr;
401 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
402 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
403 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
404 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
405 auto ret = CallCatchPromise(*jsRuntime, result, callbackInfo);
406 EXPECT_FALSE(ret);
407
408 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
409 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
410 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
411 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
412 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
413 ret = CallCatchPromise(*jsRuntime, result, callbackInfo);
414 EXPECT_FALSE(ret);
415
416 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
417 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
418 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
419 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
420 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
421 ret = CallCatchPromise(*jsRuntime, result, callbackInfo);
422 EXPECT_FALSE(ret);
423
424 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
425 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
426 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
427 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
428 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
429 EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
430 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
431 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
432 ret = CallCatchPromise(*jsRuntime, result, callbackInfo);
433 EXPECT_TRUE(ret);
434 } catch (...) {
435 EXPECT_TRUE(false);
436 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromise.";
437 }
438 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromise_0100";
439 }
440
441 /**
442 * @tc.number: SUB_backup_ext_js_CallPromise_0100
443 * @tc.name: SUB_backup_ext_js_CallPromise_0100
444 * @tc.desc: 测试 CallPromise 各个分支成功与失败
445 * @tc.size: MEDIUM
446 * @tc.type: FUNC
447 * @tc.level Level 1
448 * @tc.require: issuesIAFBOS
449 */
450 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromise_0100, testing::ext::TestSize.Level1)
451 {
452 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromise_0100";
453 try {
454 napi_value result = nullptr;
455 struct CallbackInfo *callbackInfo = nullptr;
456 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
457 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
458 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
459 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
460 auto ret = CallPromise(*jsRuntime, result, callbackInfo);
461 EXPECT_FALSE(ret);
462
463 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
464 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
465 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
466 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
467 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
468 ret = CallPromise(*jsRuntime, result, callbackInfo);
469 EXPECT_FALSE(ret);
470
471 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
472 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
473 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
474 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
475 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
476 ret = CallPromise(*jsRuntime, result, callbackInfo);
477 EXPECT_FALSE(ret);
478
479 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
480 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
481 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
482 .WillOnce(Return(napi_invalid_arg));
483 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
484 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
485 EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
486 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
487 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
488 ret = CallPromise(*jsRuntime, result, callbackInfo);
489 EXPECT_FALSE(ret);
490 } catch (...) {
491 EXPECT_TRUE(false);
492 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromise.";
493 }
494 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromise_0100";
495 }
496
497 /**
498 * @tc.number: SUB_backup_ext_js_CallPromise_0200
499 * @tc.name: SUB_backup_ext_js_CallPromise_0200
500 * @tc.desc: 测试 CallPromise 各个分支成功与失败
501 * @tc.size: MEDIUM
502 * @tc.type: FUNC
503 * @tc.level Level 1
504 * @tc.require: issuesIAFBOS
505 */
506 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromise_0200, testing::ext::TestSize.Level1)
507 {
508 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromise_0200";
509 try {
510 napi_value result = nullptr;
511 struct CallbackInfo *callbackInfo = nullptr;
512 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
513 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
514 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
515 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
516 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)))
517 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
518 EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok))
519 .WillOnce(Return(napi_ok));
520 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok))
521 .WillOnce(Return(napi_ok));
522 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
523 auto ret = CallPromise(*jsRuntime, result, callbackInfo);
524 EXPECT_TRUE(ret);
525 } catch (...) {
526 EXPECT_TRUE(false);
527 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromise.";
528 }
529 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromise_0200";
530 }
531
532 /**
533 * @tc.number: SUB_backup_ext_js_CallCatchPromiseEx_0100
534 * @tc.name: SUB_backup_ext_js_CallCatchPromiseEx_0100
535 * @tc.desc: 测试 CallCatchPromiseEx 各个分支成功与失败
536 * @tc.size: MEDIUM
537 * @tc.type: FUNC
538 * @tc.level Level 1
539 * @tc.require: issuesIAFBOS
540 */
541 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromiseEx_0100, testing::ext::TestSize.Level1)
542 {
543 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallCatchPromiseEx_0100";
544 try {
545 napi_value result = nullptr;
546 struct CallbackInfoEx *callbackInfoEx = nullptr;
547 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
548 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
549 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
550 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
551 auto ret = CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx);
552 EXPECT_FALSE(ret);
553
554 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
555 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
556 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
557 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
558 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
559 ret = CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx);
560 EXPECT_FALSE(ret);
561
562 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
563 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
564 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
565 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
566 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
567 ret = CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx);
568 EXPECT_FALSE(ret);
569
570 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
571 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
572 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
573 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
574 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
575 EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
576 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
577 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
578 ret = CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx);
579 EXPECT_TRUE(ret);
580 } catch (...) {
581 EXPECT_TRUE(false);
582 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromiseEx.";
583 }
584 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromiseEx_0100";
585 }
586
587 /**
588 * @tc.number: SUB_backup_ext_js_CallPromiseEx_0100
589 * @tc.name: SUB_backup_ext_js_CallPromiseEx_0100
590 * @tc.desc: 测试 CallPromiseEx 各个分支成功与失败
591 * @tc.size: MEDIUM
592 * @tc.type: FUNC
593 * @tc.level Level 1
594 * @tc.require: issuesIAFBOS
595 */
596 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0100, testing::ext::TestSize.Level1)
597 {
598 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromiseEx_0100";
599 try {
600 napi_value result = nullptr;
601 struct CallbackInfoEx *callbackInfoEx = nullptr;
602 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
603 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
604 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
605 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
606 auto ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx);
607 EXPECT_FALSE(ret);
608
609 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
610 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
611 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
612 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
613 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
614 ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx);
615 EXPECT_FALSE(ret);
616
617 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
618 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
619 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
620 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
621 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
622 ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx);
623 EXPECT_FALSE(ret);
624
625 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
626 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
627 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
628 .WillOnce(Return(napi_invalid_arg));
629 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
630 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
631 EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
632 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
633 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
634 ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx);
635 EXPECT_FALSE(ret);
636 } catch (...) {
637 EXPECT_TRUE(false);
638 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx.";
639 }
640 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0100";
641 }
642
643 /**
644 * @tc.number: SUB_backup_ext_js_CallPromiseEx_0200
645 * @tc.name: SUB_backup_ext_js_CallPromiseEx_0200
646 * @tc.desc: 测试 CallPromiseEx 各个分支成功与失败
647 * @tc.size: MEDIUM
648 * @tc.type: FUNC
649 * @tc.level Level 1
650 * @tc.require: issuesIAFBOS
651 */
652 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0200, testing::ext::TestSize.Level1)
653 {
654 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromiseEx_0200";
655 try {
656 napi_value result = nullptr;
657 struct CallbackInfoEx *callbackInfoEx = nullptr;
658 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
659 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
660 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
661 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
662 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)))
663 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
664 EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok))
665 .WillOnce(Return(napi_ok));
666 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok))
667 .WillOnce(Return(napi_ok));
668 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
669 auto ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx);
670 EXPECT_TRUE(ret);
671 } catch (...) {
672 EXPECT_TRUE(false);
673 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx.";
674 }
675 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0200";
676 }
677
678 /**
679 * @tc.number: SUB_backup_ext_js_CallPromiseEx_0300
680 * @tc.name: SUB_backup_ext_js_CallPromiseEx_0300
681 * @tc.desc: 测试 CallPromiseEx 各个分支成功与失败
682 * @tc.size: MEDIUM
683 * @tc.type: FUNC
684 * @tc.level Level 1
685 * @tc.require: issuesIAFBOS
686 */
687 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0300, testing::ext::TestSize.Level1)
688 {
689 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromiseEx_0300";
690 try {
691 napi_value result = nullptr;
692 struct CallbackInfoBackup *callbackInfoBackup = nullptr;
693 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
694 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
695 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
696 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
697 auto ret = CallPromiseEx(*jsRuntime, result, callbackInfoBackup);
698 EXPECT_FALSE(ret);
699
700 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
701 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
702 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
703 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
704 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
705 ret = CallPromiseEx(*jsRuntime, result, callbackInfoBackup);
706 EXPECT_FALSE(ret);
707
708 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
709 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
710 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
711 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
712 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
713 ret = CallPromiseEx(*jsRuntime, result, callbackInfoBackup);
714 EXPECT_FALSE(ret);
715
716 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
717 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
718 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
719 EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
720 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
721 EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
722 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
723 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
724 ret = CallPromiseEx(*jsRuntime, result, callbackInfoBackup);
725 EXPECT_TRUE(ret);
726 } catch (...) {
727 EXPECT_TRUE(false);
728 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx.";
729 }
730 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0300";
731 }
732
733 /**
734 * @tc.number: SUB_backup_ext_js_AttachBackupExtensionContext_0100
735 * @tc.name: SUB_backup_ext_js_AttachBackupExtensionContext_0100
736 * @tc.desc: 测试 AttachBackupExtensionContext 各个分支成功与失败
737 * @tc.size: MEDIUM
738 * @tc.type: FUNC
739 * @tc.level Level 1
740 * @tc.require: issuesIAFBOS
741 */
742 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_AttachBackupExtensionContext_0100, testing::ext::TestSize.Level1)
743 {
744 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_AttachBackupExtensionContext_0100";
745 try {
746 auto ret = AttachBackupExtensionContext(nullptr, nullptr, nullptr);
747 EXPECT_TRUE(ret == nullptr);
748
749 int env = 0;
750 ret = AttachBackupExtensionContext(reinterpret_cast<napi_env>(&env), nullptr, nullptr);
751 EXPECT_TRUE(ret == nullptr);
752
753 auto value = make_shared<ExtBackupContext>();
754 EXPECT_CALL(*extBackupMock, CreateExtBackupJsContext(_, _)).WillOnce(Return(nullptr));
755 ret = AttachBackupExtensionContext(reinterpret_cast<napi_env>(&env), reinterpret_cast<void *>(&value), nullptr);
756 EXPECT_TRUE(ret == nullptr);
757
758 EXPECT_CALL(*extBackupMock, CreateExtBackupJsContext(_, _))
759 .WillOnce(Return(reinterpret_cast<napi_value>(&env)));
760 EXPECT_CALL(*extBackupMock, LoadSystemModuleByEngine(_, _, _, _)).WillOnce(Return(nullptr));
761 ret = AttachBackupExtensionContext(reinterpret_cast<napi_env>(&env), reinterpret_cast<void *>(&value), nullptr);
762 EXPECT_TRUE(ret == nullptr);
763 } catch (...) {
764 EXPECT_TRUE(false);
765 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by AttachBackupExtensionContext.";
766 }
767 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_AttachBackupExtensionContext_0100";
768 }
769
770 /**
771 * @tc.number: SUB_backup_ext_js_ExportJsContext_0100
772 * @tc.name: SUB_backup_ext_js_ExportJsContext_0100
773 * @tc.desc: 测试 ExportJsContext 各个分支成功与失败
774 * @tc.size: MEDIUM
775 * @tc.type: FUNC
776 * @tc.level Level 1
777 * @tc.require: issuesIAFBOS
778 */
779 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_ExportJsContext_0100, testing::ext::TestSize.Level1)
780 {
781 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_ExportJsContext_0100";
782 try {
783 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
784 extBackupJs->ExportJsContext();
785 EXPECT_TRUE(extBackupJs->jsObj_ == nullptr);
786
787 extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
788 auto refMock = static_cast<NativeReferenceMock*>(extBackupJs->jsObj_.get());
789 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
790 EXPECT_CALL(*refMock, GetNapiValue()).WillOnce(Return(nullptr));
791 extBackupJs->ExportJsContext();
792 EXPECT_TRUE(extBackupJs->jsObj_ != nullptr);
793
794 int value = 0;
795 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
796 EXPECT_CALL(*refMock, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
797 extBackupJs->ExportJsContext();
798 EXPECT_TRUE(extBackupJs->jsObj_ != nullptr);
799 } catch (...) {
800 EXPECT_TRUE(false);
801 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by ExportJsContext.";
802 }
803 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_ExportJsContext_0100";
804 }
805
806 /**
807 * @tc.number: SUB_backup_ext_js_CallJsMethod_0100
808 * @tc.name: SUB_backup_ext_js_CallJsMethod_0100
809 * @tc.desc: 测试 CallJsMethod 各个分支成功与失败
810 * @tc.size: MEDIUM
811 * @tc.type: FUNC
812 * @tc.level Level 1
813 * @tc.require: issuesIAFBOS
814 */
815 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsMethod_0100, testing::ext::TestSize.Level1)
816 {
817 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsMethod_0100";
818 try {
819 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
820 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
821 auto ret = extBackupJs->CallJsMethod("", *jsRuntime, nullptr, nullptr, nullptr);
822 EXPECT_EQ(ret, EINVAL);
823
824 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
825 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
826 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(Return(1));
827 ret = extBackupJs->CallJsMethod("", *jsRuntime, nullptr, nullptr, nullptr);
828 EXPECT_EQ(ret, EINVAL);
829
830 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
831 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
832 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(DoAll(WithArgs<1, 3>(Invoke(
__anonc3409c9d0502(uv_work_t* req, uv_after_work_cb after_work_cb) 833 [](uv_work_t* req, uv_after_work_cb after_work_cb) {
834 after_work_cb(req, 0);
835 })), Return(0)));
836 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
837 ret = extBackupJs->CallJsMethod("", *jsRuntime, nullptr, nullptr, nullptr);
838 EXPECT_EQ(ret, ERR_OK);
839 } catch (...) {
840 EXPECT_TRUE(false);
841 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsMethod.";
842 }
843 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsMethod_0100";
844 }
845
846 /**
847 * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0100
848 * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0100
849 * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
850 * @tc.size: MEDIUM
851 * @tc.type: FUNC
852 * @tc.level Level 1
853 * @tc.require: issuesIAFBOS
854 */
855 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DoCallJsMethod_0100, testing::ext::TestSize.Level1)
856 {
857 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0100";
858 try {
859 string funcName = "";
860 InputArgsParser argParserIn = {};
861 ResultValueParser retParserIn = {};
862 auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
863 auto ret = DoCallJsMethod(param.get());
864 EXPECT_EQ(ret, EINVAL);
865
866 param->jsRuntime = jsRuntime.get();
867 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
868 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
869 ret = DoCallJsMethod(param.get());
870 EXPECT_EQ(ret, EINVAL);
871
872 int scope = 0;
__anonc3409c9d0602(napi_env, std::vector<napi_value> &)873 param->argParser = [](napi_env, std::vector<napi_value> &){ return false; };
874 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
875 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
876 DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
877 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
878 ret = DoCallJsMethod(param.get());
879 EXPECT_EQ(ret, EINVAL);
880
881 auto ref = make_shared<NativeReferenceMock>();
__anonc3409c9d0702(napi_env, std::vector<napi_value> &)882 param->argParser = [](napi_env, std::vector<napi_value> &){ return true; };
883 param->jsObj = ref.get();
884 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
885 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
886 DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
887 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(nullptr));
888 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
889 ret = DoCallJsMethod(param.get());
890 EXPECT_EQ(ret, EINVAL);
891 } catch (...) {
892 EXPECT_TRUE(false);
893 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
894 }
895 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0100";
896 }
897
898 /**
899 * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0200
900 * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0200
901 * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
902 * @tc.size: MEDIUM
903 * @tc.type: FUNC
904 * @tc.level Level 1
905 * @tc.require: issuesIAFBOS
906 */
907 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DoCallJsMethod_0200, testing::ext::TestSize.Level1)
908 {
909 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0200";
910 try {
911 string funcName = "";
912 InputArgsParser argParserIn = {};
913 ResultValueParser retParserIn = {};
914 auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
915 auto ref = make_shared<NativeReferenceMock>();
916 param->argParser = nullptr;
917 param->retParser = nullptr;
918 param->jsObj = ref.get();
919
920 int scope = 0;
921 napi_value value = nullptr;
922 param->jsRuntime = jsRuntime.get();
923 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
924 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
925 DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
926 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
927 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
928 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
929 auto ret = DoCallJsMethod(param.get());
930 EXPECT_EQ(ret, EINVAL);
931
932 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
933 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
934 DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
935 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
936 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
937 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
938 ret = DoCallJsMethod(param.get());
939 EXPECT_EQ(ret, EINVAL);
940
__anonc3409c9d0802(napi_env, napi_value)941 param->retParser = [](napi_env, napi_value){ return false; };
942 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
943 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
944 DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
945 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
946 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
947 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
948 EXPECT_CALL(*napiMock, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
949 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
950 ret = DoCallJsMethod(param.get());
951 EXPECT_EQ(ret, EINVAL);
952 } catch (...) {
953 EXPECT_TRUE(false);
954 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
955 }
956 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0200";
957 }
958
959 /**
960 * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0300
961 * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0300
962 * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
963 * @tc.size: MEDIUM
964 * @tc.type: FUNC
965 * @tc.level Level 1
966 * @tc.require: issuesIAFBOS
967 */
968 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DoCallJsMethod_0300, testing::ext::TestSize.Level1)
969 {
970 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0300";
971 try {
972 string funcName = "";
973 InputArgsParser argParserIn = {};
974 ResultValueParser retParserIn = {};
975 auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
976 auto ref = make_shared<NativeReferenceMock>();
977 param->argParser = nullptr;
978 param->retParser = nullptr;
979 param->jsObj = ref.get();
980
981 int scope = 0;
982 napi_value value = nullptr;
983 param->jsRuntime = jsRuntime.get();
__anonc3409c9d0902(napi_env, napi_value)984 param->retParser = [](napi_env, napi_value){ return true; };
985 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
986 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
987 DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
988 EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
989 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
990 EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
991 EXPECT_CALL(*napiMock, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
992 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
993 auto ret = DoCallJsMethod(param.get());
994 EXPECT_EQ(ret, ERR_OK);
995 } catch (...) {
996 EXPECT_TRUE(false);
997 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
998 }
999 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0300";
1000 }
1001
1002 /**
1003 * @tc.number: SUB_backup_ext_js_InvokeAppExtMethod_0100
1004 * @tc.name: SUB_backup_ext_js_InvokeAppExtMethod_0100
1005 * @tc.desc: 测试 InvokeAppExtMethod 各个分支成功与失败
1006 * @tc.size: MEDIUM
1007 * @tc.type: FUNC
1008 * @tc.level Level 1
1009 * @tc.require: issuesIAFBOS
1010 */
1011 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_InvokeAppExtMethod_0100, testing::ext::TestSize.Level1)
1012 {
1013 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_InvokeAppExtMethod_0100";
1014 try {
1015 ErrCode errCode = BError(BError::Codes::OK);
1016 string result = "";
1017 auto ret = extBackupJs->InvokeAppExtMethod(errCode, result);
1018 EXPECT_EQ(ret, ERR_OK);
1019
1020 result = "test";
1021 ret = extBackupJs->InvokeAppExtMethod(errCode, result);
1022 EXPECT_EQ(ret, ERR_OK);
1023 } catch (...) {
1024 EXPECT_TRUE(false);
1025 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by InvokeAppExtMethod.";
1026 }
1027 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_InvokeAppExtMethod_0100";
1028 }
1029
1030 /**
1031 * @tc.number: SUB_backup_ext_js_CallJsOnBackupEx_0100
1032 * @tc.name: SUB_backup_ext_js_CallJsOnBackupEx_0100
1033 * @tc.desc: 测试 CallJsOnBackupEx 各个分支成功与失败
1034 * @tc.size: MEDIUM
1035 * @tc.type: FUNC
1036 * @tc.level Level 1
1037 * @tc.require: issuesIAFBOS
1038 */
1039 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackupEx_0100, testing::ext::TestSize.Level1)
1040 {
1041 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackupEx_0100";
1042 try {
1043 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1044 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1045 auto ret = extBackupJs->CallJsOnBackupEx();
1046 EXPECT_EQ(ret, EINVAL);
1047
__anonc3409c9d0a02(ErrCode, std::string)1048 extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1049 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1050 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1051 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1052 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d0b02(uv_work_t* work) 1053 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1054 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1055 param->retParser(nullptr, nullptr);
1056 return -1;
1057 })));
1058 ret = extBackupJs->CallJsOnBackupEx();
1059 EXPECT_EQ(ret, EINVAL);
1060
1061 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1062 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1063 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1064 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1065 EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d0c02(uv_work_t* work) 1066 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1067 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1068 param->retParser(nullptr, nullptr);
1069 return -1;
1070 })));
1071 ret = extBackupJs->CallJsOnBackupEx();
1072 EXPECT_EQ(ret, EINVAL);
1073 } catch (...) {
1074 EXPECT_TRUE(false);
1075 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackupEx.";
1076 }
1077 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackupEx_0100";
1078 }
1079
1080 /**
1081 * @tc.number: SUB_backup_ext_js_CallJsOnBackupEx_0200
1082 * @tc.name: SUB_backup_ext_js_CallJsOnBackupEx_0200
1083 * @tc.desc: 测试 CallJsOnBackupEx 各个分支成功与失败
1084 * @tc.size: MEDIUM
1085 * @tc.type: FUNC
1086 * @tc.level Level 1
1087 * @tc.require: issuesIAFBOS
1088 */
1089 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackupEx_0200, testing::ext::TestSize.Level1)
1090 {
1091 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackupEx_0200";
1092 try {
__anonc3409c9d0d02(ErrCode, std::string)1093 extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1094 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1095 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1096 EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1097 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1098 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1099 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1100 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d0e02(uv_work_t* work) 1101 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1102 int value = 0;
1103 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1104 param->retParser(nullptr, reinterpret_cast<napi_value>(&value));
1105 return -1;
1106 })));
1107 auto ret = extBackupJs->CallJsOnBackupEx();
1108 EXPECT_EQ(ret, EINVAL);
1109 } catch (...) {
1110 EXPECT_TRUE(false);
1111 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackupEx.";
1112 }
1113 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackupEx_0200";
1114 }
1115
1116 /**
1117 * @tc.number: SUB_backup_ext_js_CallJsOnBackup_0100
1118 * @tc.name: SUB_backup_ext_js_CallJsOnBackup_0100
1119 * @tc.desc: 测试 CallJsOnBackup 各个分支成功与失败
1120 * @tc.size: MEDIUM
1121 * @tc.type: FUNC
1122 * @tc.level Level 1
1123 * @tc.require: issuesIAFBOS
1124 */
1125 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackup_0100, testing::ext::TestSize.Level1)
1126 {
1127 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackup_0100";
1128 try {
1129 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1130 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1131 auto ret = extBackupJs->CallJsOnBackup();
1132 EXPECT_EQ(ret, EINVAL);
1133
__anonc3409c9d0f02(ErrCode, std::string)1134 extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1135 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1136 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1137 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
__anonc3409c9d1002(uv_work_t* work) 1138 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1139 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1140 param->retParser(nullptr, nullptr);
1141 return -1;
1142 })));
1143 ret = extBackupJs->CallJsOnBackup();
1144 EXPECT_EQ(ret, EINVAL);
1145
1146 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1147 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1148 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1149 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1150 EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1102(uv_work_t* work) 1151 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1152 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1153 param->retParser(nullptr, nullptr);
1154 return -1;
1155 })));
1156 ret = extBackupJs->CallJsOnBackup();
1157 EXPECT_EQ(ret, EINVAL);
1158 } catch (...) {
1159 EXPECT_TRUE(false);
1160 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackup.";
1161 }
1162 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackup_0100";
1163 }
1164
1165 /**
1166 * @tc.number: SUB_backup_ext_js_CallJsOnBackup_0200
1167 * @tc.name: SUB_backup_ext_js_CallJsOnBackup_0200
1168 * @tc.desc: 测试 CallJsOnBackup 各个分支成功与失败
1169 * @tc.size: MEDIUM
1170 * @tc.type: FUNC
1171 * @tc.level Level 1
1172 * @tc.require: issuesIAFBOS
1173 */
1174 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackup_0200, testing::ext::TestSize.Level1)
1175 {
1176 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackup_0200";
1177 try {
__anonc3409c9d1202(ErrCode, std::string)1178 extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1179 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1180 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1181 EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1182 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1183 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1184 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1185 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1302(uv_work_t* work) 1186 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1187 int value = 0;
1188 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1189 param->retParser(nullptr, reinterpret_cast<napi_value>(&value));
1190 return -1;
1191 })));
1192 auto ret = extBackupJs->CallJsOnBackup();
1193 EXPECT_EQ(ret, EINVAL);
1194 } catch (...) {
1195 EXPECT_TRUE(false);
1196 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackup.";
1197 }
1198 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackup_0200";
1199 }
1200
1201 /**
1202 * @tc.number: SUB_backup_ext_js_CallJSRestoreEx_0100
1203 * @tc.name: SUB_backup_ext_js_CallJSRestoreEx_0100
1204 * @tc.desc: 测试 CallJSRestoreEx 各个分支成功与失败
1205 * @tc.size: MEDIUM
1206 * @tc.type: FUNC
1207 * @tc.level Level 1
1208 * @tc.require: issuesIAFBOS
1209 */
1210 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestoreEx_0100, testing::ext::TestSize.Level1)
1211 {
1212 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestoreEx_0100";
1213 try {
1214 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1215 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1216 auto ret = extBackupJs->CallJSRestoreEx();
1217 EXPECT_EQ(ret, EINVAL);
1218
__anonc3409c9d1402(ErrCode, std::string)1219 extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1220 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1221 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1222 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1223 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1502(uv_work_t* work) 1224 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1225 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1226 param->retParser(nullptr, nullptr);
1227 return -1;
1228 })));
1229 ret = extBackupJs->CallJSRestoreEx();
1230 EXPECT_EQ(ret, EINVAL);
1231
1232 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1233 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1234 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1235 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1236 EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1602(uv_work_t* work) 1237 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1238 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1239 param->retParser(nullptr, nullptr);
1240 return -1;
1241 })));
1242 ret = extBackupJs->CallJSRestoreEx();
1243 EXPECT_EQ(ret, EINVAL);
1244 } catch (...) {
1245 EXPECT_TRUE(false);
1246 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestoreEx.";
1247 }
1248 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestoreEx_0100";
1249 }
1250
1251 /**
1252 * @tc.number: SUB_backup_ext_js_CallJSRestoreEx_0200
1253 * @tc.name: SUB_backup_ext_js_CallJSRestoreEx_0200
1254 * @tc.desc: 测试 CallJSRestoreEx 各个分支成功与失败
1255 * @tc.size: MEDIUM
1256 * @tc.type: FUNC
1257 * @tc.level Level 1
1258 * @tc.require: issuesIAFBOS
1259 */
1260 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestoreEx_0200, testing::ext::TestSize.Level1)
1261 {
1262 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestoreEx_0200";
1263 try {
__anonc3409c9d1702(ErrCode, std::string)1264 extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1265 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1266 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1267 EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1268 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1269 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1270 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1271 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1802(uv_work_t* work) 1272 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1273 int value = 0;
1274 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1275 param->retParser(nullptr, reinterpret_cast<napi_value>(&value));
1276 return -1;
1277 })));
1278 auto ret = extBackupJs->CallJSRestoreEx();
1279 EXPECT_EQ(ret, EINVAL);
1280 } catch (...) {
1281 EXPECT_TRUE(false);
1282 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestoreEx.";
1283 }
1284 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestoreEx_0200";
1285 }
1286
1287 /**
1288 * @tc.number: SUB_backup_ext_js_CallJSRestore_0100
1289 * @tc.name: SUB_backup_ext_js_CallJSRestore_0100
1290 * @tc.desc: 测试 CallJSRestore 各个分支成功与失败
1291 * @tc.size: MEDIUM
1292 * @tc.type: FUNC
1293 * @tc.level Level 1
1294 * @tc.require: issuesIAFBOS
1295 */
1296 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestore_0100, testing::ext::TestSize.Level1)
1297 {
1298 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestore_0100";
1299 try {
1300 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1301 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1302 auto ret = extBackupJs->CallJSRestore();
1303 EXPECT_EQ(ret, EINVAL);
1304
__anonc3409c9d1902(ErrCode, std::string)1305 extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1306 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1307 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1308 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
__anonc3409c9d1a02(uv_work_t* work) 1309 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1310 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1311 param->retParser(nullptr, nullptr);
1312 return -1;
1313 })));
1314 ret = extBackupJs->CallJSRestore();
1315 EXPECT_EQ(ret, EINVAL);
1316
1317 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1318 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1319 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1320 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1321 EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1b02(uv_work_t* work) 1322 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1323 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1324 param->retParser(nullptr, nullptr);
1325 return -1;
1326 })));
1327 ret = extBackupJs->CallJSRestore();
1328 EXPECT_EQ(ret, EINVAL);
1329 } catch (...) {
1330 EXPECT_TRUE(false);
1331 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestore.";
1332 }
1333 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestore_0100";
1334 }
1335
1336 /**
1337 * @tc.number: SUB_backup_ext_js_CallJSRestore_0200
1338 * @tc.name: SUB_backup_ext_js_CallJSRestore_0200
1339 * @tc.desc: 测试 CallJSRestore 各个分支成功与失败
1340 * @tc.size: MEDIUM
1341 * @tc.type: FUNC
1342 * @tc.level Level 1
1343 * @tc.require: issuesIAFBOS
1344 */
1345 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestore_0200, testing::ext::TestSize.Level1)
1346 {
1347 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestore_0200";
1348 try {
__anonc3409c9d1c02(ErrCode, std::string)1349 extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1350 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1351 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1352 EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1353 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1354 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1355 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1356 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1d02(uv_work_t* work) 1357 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1358 int value = 0;
1359 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1360 param->retParser(nullptr, reinterpret_cast<napi_value>(&value));
1361 return -1;
1362 })));
1363 auto ret = extBackupJs->CallJSRestore();
1364 EXPECT_EQ(ret, EINVAL);
1365 } catch (...) {
1366 EXPECT_TRUE(false);
1367 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestore.";
1368 }
1369 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestore_0200";
1370 }
1371
1372 /**
1373 * @tc.number: SUB_backup_ext_js_GetBackupInfo_0100
1374 * @tc.name: SUB_backup_ext_js_GetBackupInfo_0100
1375 * @tc.desc: 测试 GetBackupInfo 各个分支成功与失败
1376 * @tc.size: MEDIUM
1377 * @tc.type: FUNC
1378 * @tc.level Level 1
1379 * @tc.require: issuesIAFBOS
1380 */
1381 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetBackupInfo_0100, testing::ext::TestSize.Level1)
1382 {
1383 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetBackupInfo_0100";
1384 try {
1385 extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
1386 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1387 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1388 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1e02(ErrCode, std::string)1389 auto ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1390 EXPECT_EQ(ret, EINVAL);
1391
1392 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1393 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1394 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1395 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d1f02(uv_work_t* work) 1396 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1397 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1398 param->retParser(nullptr, nullptr);
1399 return -1;
1400 })));
__anonc3409c9d2002(ErrCode, std::string)1401 ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1402 EXPECT_EQ(ret, EINVAL);
1403 } catch (...) {
1404 EXPECT_TRUE(false);
1405 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetBackupInfo.";
1406 }
1407 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetBackupInfo_0100";
1408 }
1409
1410 /**
1411 * @tc.number: SUB_backup_ext_js_GetBackupInfo_0200
1412 * @tc.name: SUB_backup_ext_js_GetBackupInfo_0200
1413 * @tc.desc: 测试 GetBackupInfo 各个分支成功与失败
1414 * @tc.size: MEDIUM
1415 * @tc.type: FUNC
1416 * @tc.level Level 1
1417 * @tc.require: issuesIAFBOS
1418 */
1419 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetBackupInfo_0200, testing::ext::TestSize.Level1)
1420 {
1421 GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetBackupInfo_0200";
1422 try {
1423 extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
1424 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1425 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1426 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1427 EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1428 .WillOnce(Return(napi_ok));
__anonc3409c9d2102(uv_work_t* work) 1429 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1430 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1431 param->retParser(nullptr, nullptr);
1432 return -1;
1433 })));
__anonc3409c9d2202(ErrCode, std::string)1434 auto ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1435 EXPECT_EQ(ret, EINVAL);
1436
1437 EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1438 EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1439 EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1440 EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1441 .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1442 EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1443 EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1444 EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonc3409c9d2302(uv_work_t* work) 1445 EXPECT_CALL(*napiMock, uv_queue_work(_, _, _, _)).WillOnce(WithArgs<1>(Invoke([](uv_work_t* work) {
1446 int value = 0;
1447 CallJsParam *param = reinterpret_cast<CallJsParam *>(work->data);
1448 param->retParser(nullptr, reinterpret_cast<napi_value>(&value));
1449 return -1;
1450 })));
__anonc3409c9d2402(ErrCode, std::string)1451 ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1452 EXPECT_EQ(ret, EINVAL);
1453 } catch (...) {
1454 EXPECT_TRUE(false);
1455 GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetBackupInfo.";
1456 }
1457 GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetBackupInfo_0200";
1458 }
1459 } // namespace OHOS::FileManagement::Backup