• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gmock/gmock.h>
17 #include <gtest/gtest.h>
18 
19 #include "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, bool isBinary));
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         sptr<AppExecFwk::AbilityInfo> info = sptr(new AppExecFwk::AbilityInfo());
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 
235         g_extBackupCount = 0;
236         auto ret = PromiseCallback(env, info);
237         EXPECT_TRUE(ret == nullptr);
238 
239         g_extBackupCount = 1;
240         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
241         ret = PromiseCallback(env, info);
242         EXPECT_TRUE(ret == nullptr);
243 
244         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
245         ret = PromiseCallback(env, info);
246         EXPECT_TRUE(ret == nullptr);
247 
__anon0cdd84a50102(ErrCode, std::string)248         struct CallbackInfo callback([](ErrCode, std::string){});
249         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
250             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
251         ret = PromiseCallback(env, info);
252         EXPECT_TRUE(ret == nullptr);
253     } catch (...) {
254         EXPECT_TRUE(false);
255         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCallback.";
256     }
257     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCallback_0100";
258 }
259 
260 /**
261  * @tc.number: SUB_backup_ext_js_PromiseCatchCallback_0100
262  * @tc.name: SUB_backup_ext_js_PromiseCatchCallback_0100
263  * @tc.desc: 测试 PromiseCatchCallback 各个分支成功与失败
264  * @tc.size: MEDIUM
265  * @tc.type: FUNC
266  * @tc.level Level 1
267  * @tc.require: issuesIAFBOS
268  */
269 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCatchCallback_0100, testing::ext::TestSize.Level1)
270 {
271     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCatchCallback_0100";
272     try {
273         napi_env env = nullptr;
274         napi_callback_info info = nullptr;
275         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
276         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
277         auto ret = PromiseCatchCallback(env, info);
278         EXPECT_TRUE(ret == nullptr);
279 
__anon0cdd84a50202(ErrCode, std::string)280         struct CallbackInfo callback([](ErrCode, std::string){});
281         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
282             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
283         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
284         EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_invalid_arg));
285         ret = PromiseCatchCallback(env, info);
286         EXPECT_TRUE(ret == nullptr);
287 
288         g_extBackupCount = 0;
289         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
290             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
291         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
292         EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_ok));
293         ret = PromiseCatchCallback(env, info);
294         EXPECT_TRUE(ret == nullptr);
295 
296         g_extBackupCount = 1;
297         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
298             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
299         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
300         EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_ok));
301         ret = PromiseCatchCallback(env, info);
302         EXPECT_TRUE(ret == nullptr);
303     } catch (...) {
304         EXPECT_TRUE(false);
305         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCatchCallback.";
306     }
307     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCatchCallback_0100";
308 }
309 
310 /**
311  * @tc.number: SUB_backup_ext_js_PromiseCallbackEx_0100
312  * @tc.name: SUB_backup_ext_js_PromiseCallbackEx_0100
313  * @tc.desc: 测试 PromiseCallbackEx 各个分支成功与失败
314  * @tc.size: MEDIUM
315  * @tc.type: FUNC
316  * @tc.level Level 1
317  * @tc.require: issuesIAFBOS
318  */
319 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCallbackEx_0100, testing::ext::TestSize.Level1)
320 {
321     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCallbackEx_0100";
322     try {
323         napi_env env = nullptr;
324         napi_callback_info info = nullptr;
325 
326         g_extBackupCount = 0;
327         auto ret = PromiseCallbackEx(env, info);
328         EXPECT_TRUE(ret == nullptr);
329 
330         g_extBackupCount = 1;
331         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
332         ret = PromiseCallbackEx(env, info);
333         EXPECT_TRUE(ret == nullptr);
334 
__anon0cdd84a50302(ErrCode, std::string)335         struct CallbackInfoEx callback([](ErrCode, std::string){});
336         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
337             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
338         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
339         ret = PromiseCallbackEx(env, info);
340         EXPECT_TRUE(ret == nullptr);
341     } catch (...) {
342         EXPECT_TRUE(false);
343         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCallbackEx.";
344     }
345     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCallbackEx_0100";
346 }
347 
348 /**
349  * @tc.number: SUB_backup_ext_js_PromiseCatchCallbackEx_0100
350  * @tc.name: SUB_backup_ext_js_PromiseCatchCallbackEx_0100
351  * @tc.desc: 测试 PromiseCatchCallbackEx 各个分支成功与失败
352  * @tc.size: MEDIUM
353  * @tc.type: FUNC
354  * @tc.level Level 1
355  * @tc.require: issuesIAFBOS
356  */
357 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCatchCallbackEx_0100, testing::ext::TestSize.Level1)
358 {
359     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_PromiseCatchCallbackEx_0100";
360     try {
361         napi_env env = nullptr;
362         napi_callback_info info = nullptr;
363         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
364         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
365         auto ret = PromiseCatchCallbackEx(env, info);
366         EXPECT_TRUE(ret == nullptr);
367 
__anon0cdd84a50402(ErrCode, std::string)368         struct CallbackInfoEx callback([](ErrCode, std::string){});
369         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
370             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
371         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
372         EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_invalid_arg));
373         ret = PromiseCatchCallbackEx(env, info);
374         EXPECT_TRUE(ret == nullptr);
375 
376         g_extBackupCount = 0;
377         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
378             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
379         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
380         EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_ok));
381         ret = PromiseCatchCallbackEx(env, info);
382         EXPECT_TRUE(ret == nullptr);
383 
384         g_extBackupCount = 1;
385         EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _))
386             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIFTH>(&callback), Return(napi_ok)));
387         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
388         EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_ok));
389         ret = PromiseCatchCallbackEx(env, info);
390         EXPECT_TRUE(ret == nullptr);
391     } catch (...) {
392         EXPECT_TRUE(false);
393         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by PromiseCatchCallbackEx.";
394     }
395     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_PromiseCatchCallbackEx_0100";
396 }
397 
398 /**
399  * @tc.number: SUB_backup_ext_js_CheckPromise_0100
400  * @tc.name: SUB_backup_ext_js_CheckPromise_0100
401  * @tc.desc: 测试 CheckPromise 各个分支成功与失败
402  * @tc.size: MEDIUM
403  * @tc.type: FUNC
404  * @tc.level Level 1
405  * @tc.require: issuesIAFBOS
406  */
407 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CheckPromise_0100, testing::ext::TestSize.Level1)
408 {
409     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CheckPromise_0100";
410     try {
411         napi_env env = nullptr;
412         auto ret = CheckPromise(env, nullptr);
413         EXPECT_FALSE(ret);
414 
415         int value = 0;
416         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _)).WillOnce(Return(napi_invalid_arg));
417         ret = CheckPromise(env, reinterpret_cast<napi_value>(&value));
418         EXPECT_FALSE(ret);
419 
420         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
421             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
422         ret = CheckPromise(env, reinterpret_cast<napi_value>(&value));
423         EXPECT_TRUE(ret);
424     } catch (...) {
425         EXPECT_TRUE(false);
426         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CheckPromise.";
427     }
428     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CheckPromise_0100";
429 }
430 
431 /**
432  * @tc.number: SUB_backup_ext_js_CallCatchPromise_0100
433  * @tc.name: SUB_backup_ext_js_CallCatchPromise_0100
434  * @tc.desc: 测试 CallCatchPromise 各个分支成功与失败
435  * @tc.size: MEDIUM
436  * @tc.type: FUNC
437  * @tc.level Level 1
438  * @tc.require: issuesIAFBOS
439  */
440 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromise_0100, testing::ext::TestSize.Level1)
441 {
442     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallCatchPromise_0100";
443     try {
444         napi_value result = nullptr;
445         struct CallbackInfo *callbackInfo = nullptr;
446         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
447         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
448         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
449         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
450         EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo));
451 
452         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
453         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
454         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
455         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
456         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
457         EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo));
458 
459         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
460         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
461         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
462         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
463         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
464         EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo));
465 
466         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
467         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
468         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
469         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
470             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
471         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
472         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
473         EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo));
474     } catch (...) {
475         EXPECT_TRUE(false);
476         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromise.";
477     }
478     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromise_0100";
479 }
480 
481 /**
482  * @tc.number: SUB_backup_ext_js_CallCatchPromise_0200
483  * @tc.name: SUB_backup_ext_js_CallCatchPromise_0200
484  * @tc.desc: 测试 CallCatchPromise 各个分支成功与失败
485  * @tc.size: MEDIUM
486  * @tc.type: FUNC
487  * @tc.level Level 1
488  * @tc.require: issuesIAFBOS
489  */
490 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromise_0200, testing::ext::TestSize.Level1)
491 {
492     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallCatchPromise_0200";
493     try {
494         napi_value result = nullptr;
495         struct CallbackInfo *callbackInfo = nullptr;
496         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
497         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
498         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
499         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
500             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
501         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
502         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
503         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
504         EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo));
505 
506         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
507         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
508         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
509         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
510             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
511         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
512         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
513         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
514         EXPECT_TRUE(CallCatchPromise(*jsRuntime, result, callbackInfo));
515     } catch (...) {
516         EXPECT_TRUE(false);
517         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromise.";
518     }
519     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromise_0200";
520 }
521 
522 /**
523  * @tc.number: SUB_backup_ext_js_CallPromise_0100
524  * @tc.name: SUB_backup_ext_js_CallPromise_0100
525  * @tc.desc: 测试 CallPromise 各个分支成功与失败
526  * @tc.size: MEDIUM
527  * @tc.type: FUNC
528  * @tc.level Level 1
529  * @tc.require: issuesIAFBOS
530  */
531 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromise_0100, testing::ext::TestSize.Level1)
532 {
533     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromise_0100";
534     try {
535         napi_value result = nullptr;
536         struct CallbackInfo *callbackInfo = nullptr;
537         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
538         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
539         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
540         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
541         EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo));
542 
543         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
544         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
545         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
546         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
547         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
548         EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo));
549 
550         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
551         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
552         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
553         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
554         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
555         EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo));
556 
557         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
558         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
559         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
560         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
561             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
562         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
563         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
564         EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo));
565 
566         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
567         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
568         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
569         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
570             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
571         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
572         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
573         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
574         EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo));
575     } catch (...) {
576         EXPECT_TRUE(false);
577         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromise.";
578     }
579     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromise_0100";
580 }
581 
582 /**
583  * @tc.number: SUB_backup_ext_js_CallPromise_0200
584  * @tc.name: SUB_backup_ext_js_CallPromise_0200
585  * @tc.desc: 测试 CallPromise 各个分支成功与失败
586  * @tc.size: MEDIUM
587  * @tc.type: FUNC
588  * @tc.level Level 1
589  * @tc.require: issuesIAFBOS
590  */
591 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromise_0200, testing::ext::TestSize.Level1)
592 {
593     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromise_0200";
594     try {
595         napi_value result = nullptr;
596         struct CallbackInfo *callbackInfo = nullptr;
597         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
598         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
599         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok))
600             .WillOnce(Return(napi_invalid_arg));
601         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
602             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
603         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
604         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
605         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
606         EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo));
607 
608         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
609         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
610         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
611         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
612             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)))
613             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
614         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok))
615             .WillOnce(Return(napi_ok));
616         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok))
617             .WillOnce(Return(napi_ok));
618         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
619         EXPECT_TRUE(CallPromise(*jsRuntime, result, callbackInfo));
620     } catch (...) {
621         EXPECT_TRUE(false);
622         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromise.";
623     }
624     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromise_0200";
625 }
626 
627 /**
628  * @tc.number: SUB_backup_ext_js_CallCatchPromiseEx_0100
629  * @tc.name: SUB_backup_ext_js_CallCatchPromiseEx_0100
630  * @tc.desc: 测试 CallCatchPromiseEx 各个分支成功与失败
631  * @tc.size: MEDIUM
632  * @tc.type: FUNC
633  * @tc.level Level 1
634  * @tc.require: issuesIAFBOS
635  */
636 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromiseEx_0100, testing::ext::TestSize.Level1)
637 {
638     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallCatchPromiseEx_0100";
639     try {
640         napi_value result = nullptr;
641         struct CallbackInfoEx *callbackInfoEx = nullptr;
642         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
643         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
644         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
645         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
646         EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx));
647 
648         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
649         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
650         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
651         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
652         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
653         EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx));
654 
655         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
656         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
657         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
658         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
659         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
660         EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx));
661 
662         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
663         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
664         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
665         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
666             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
667         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
668         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
669         EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx));
670     } catch (...) {
671         EXPECT_TRUE(false);
672         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromiseEx.";
673     }
674     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromiseEx_0100";
675 }
676 
677 /**
678  * @tc.number: SUB_backup_ext_js_CallCatchPromiseEx_0200
679  * @tc.name: SUB_backup_ext_js_CallCatchPromiseEx_0200
680  * @tc.desc: 测试 CallCatchPromiseEx 各个分支成功与失败
681  * @tc.size: MEDIUM
682  * @tc.type: FUNC
683  * @tc.level Level 1
684  * @tc.require: issuesIAFBOS
685  */
686 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromiseEx_0200, testing::ext::TestSize.Level1)
687 {
688     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallCatchPromiseEx_0200";
689     try {
690         napi_value result = nullptr;
691         struct CallbackInfoEx *callbackInfoEx = nullptr;
692         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
693         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
694         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
695         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
696             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
697         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
698         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
699         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
700         EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx));
701 
702         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
703         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
704         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
705         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
706             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
707         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
708         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
709         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
710         EXPECT_TRUE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx));
711     } catch (...) {
712         EXPECT_TRUE(false);
713         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromiseEx.";
714     }
715     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromiseEx_0200";
716 }
717 
718 /**
719  * @tc.number: SUB_backup_ext_js_CallPromiseEx_0100
720  * @tc.name: SUB_backup_ext_js_CallPromiseEx_0100
721  * @tc.desc: 测试 CallPromiseEx 各个分支成功与失败
722  * @tc.size: MEDIUM
723  * @tc.type: FUNC
724  * @tc.level Level 1
725  * @tc.require: issuesIAFBOS
726  */
727 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0100, testing::ext::TestSize.Level1)
728 {
729     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromiseEx_0100";
730     try {
731         napi_value result = nullptr;
732         struct CallbackInfoEx *callbackInfoEx = nullptr;
733         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
734         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
735         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
736         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
737         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx));
738 
739         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
740         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
741         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
742         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
743         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
744         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx));
745 
746         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
747         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
748         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
749         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
750         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
751         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx));
752 
753         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
754         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
755         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
756         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
757             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
758         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
759         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
760         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx));
761     } catch (...) {
762         EXPECT_TRUE(false);
763         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx.";
764     }
765     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0100";
766 }
767 
768 /**
769  * @tc.number: SUB_backup_ext_js_CallPromiseEx_0200
770  * @tc.name: SUB_backup_ext_js_CallPromiseEx_0200
771  * @tc.desc: 测试 CallPromiseEx 各个分支成功与失败
772  * @tc.size: MEDIUM
773  * @tc.type: FUNC
774  * @tc.level Level 1
775  * @tc.require: issuesIAFBOS
776  */
777 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0200, testing::ext::TestSize.Level1)
778 {
779     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromiseEx_0200";
780     try {
781         napi_value result = nullptr;
782         struct CallbackInfoEx *callbackInfoEx = nullptr;
783         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
784         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
785         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
786         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
787             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
788         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
789         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
790         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _));
791         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx));
792 
793         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
794         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
795         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
796         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
797             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)))
798             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
799         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok))
800             .WillOnce(Return(napi_ok));
801         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok))
802             .WillOnce(Return(napi_ok));
803         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok));
804         EXPECT_TRUE(CallPromiseEx(*jsRuntime, result, callbackInfoEx));
805     } catch (...) {
806         EXPECT_TRUE(false);
807         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx.";
808     }
809     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0200";
810 }
811 
812 /**
813  * @tc.number: SUB_backup_ext_js_CallPromiseEx_0300
814  * @tc.name: SUB_backup_ext_js_CallPromiseEx_0300
815  * @tc.desc: 测试 CallPromiseEx 各个分支成功与失败
816  * @tc.size: MEDIUM
817  * @tc.type: FUNC
818  * @tc.level Level 1
819  * @tc.require: issuesIAFBOS
820  */
821 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0300, testing::ext::TestSize.Level1)
822 {
823     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromiseEx_0300";
824     try {
825         napi_value result = nullptr;
826         struct CallbackInfoBackup *callbackInfoBackup = nullptr;
827         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
828         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
829         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
830         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
831         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup));
832 
833         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
834         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
835         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
836         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg));
837         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
838         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup));
839 
840         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
841         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
842         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
843         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok));
844         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
845         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup));
846 
847         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
848         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
849         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
850         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
851             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
852         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
853         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
854         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup));
855     } catch (...) {
856         EXPECT_TRUE(false);
857         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx.";
858     }
859     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0300";
860 }
861 
862 /**
863  * @tc.number: SUB_backup_ext_js_CallPromiseEx_0400
864  * @tc.name: SUB_backup_ext_js_CallPromiseEx_0400
865  * @tc.desc: 测试 CallPromiseEx 各个分支成功与失败
866  * @tc.size: MEDIUM
867  * @tc.type: FUNC
868  * @tc.level Level 1
869  * @tc.require: issuesIAFBOS
870  */
871 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0400, testing::ext::TestSize.Level1)
872 {
873     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromiseEx_0400";
874     try {
875         napi_value result = nullptr;
876         struct CallbackInfoBackup *callbackInfoBackup = nullptr;
877         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
878         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
879         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
880         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
881             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
882         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
883         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
884         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
885         EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup));
886 
887         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
888         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
889         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
890         EXPECT_CALL(*napiMock, napi_is_callable(_, _, _))
891             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
892         EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
893         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
894         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
895         EXPECT_TRUE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup));
896     } catch (...) {
897         EXPECT_TRUE(false);
898         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx.";
899     }
900     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0400";
901 }
902 
903 /**
904  * @tc.number: SUB_backup_ext_js_AttachBackupExtensionContext_0100
905  * @tc.name: SUB_backup_ext_js_AttachBackupExtensionContext_0100
906  * @tc.desc: 测试 AttachBackupExtensionContext 各个分支成功与失败
907  * @tc.size: MEDIUM
908  * @tc.type: FUNC
909  * @tc.level Level 1
910  * @tc.require: issuesIAFBOS
911  */
912 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_AttachBackupExtensionContext_0100, testing::ext::TestSize.Level1)
913 {
914     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_AttachBackupExtensionContext_0100";
915     try {
916         auto ret = AttachBackupExtensionContext(nullptr, nullptr, nullptr);
917         EXPECT_TRUE(ret == nullptr);
918 
919         auto value = make_shared<ExtBackupContext>();
920         ret = AttachBackupExtensionContext(nullptr, value.get(), nullptr);
921         EXPECT_TRUE(ret == nullptr);
922 
923         int env = 0;
924         weak_ptr<ExtBackupContext> ptr = value;
925         EXPECT_CALL(*extBackupMock, CreateExtBackupJsContext(_, _)).WillOnce(Return(nullptr));
926         ret = AttachBackupExtensionContext(reinterpret_cast<napi_env>(&env), reinterpret_cast<void*>(&ptr), nullptr);
927         EXPECT_TRUE(ret == nullptr);
928 
929         EXPECT_CALL(*extBackupMock, CreateExtBackupJsContext(_, _))
930             .WillOnce(Return(reinterpret_cast<napi_value>(&env)));
931         EXPECT_CALL(*extBackupMock, LoadSystemModuleByEngine(_, _, _, _)).WillOnce(Return(nullptr));
932         ret = AttachBackupExtensionContext(reinterpret_cast<napi_env>(&env), reinterpret_cast<void*>(&ptr), nullptr);
933         EXPECT_TRUE(ret == nullptr);
934     } catch (...) {
935         EXPECT_TRUE(false);
936         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by AttachBackupExtensionContext.";
937     }
938     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_AttachBackupExtensionContext_0100";
939 }
940 
941 /**
942  * @tc.number: SUB_backup_ext_js_ExportJsContext_0100
943  * @tc.name: SUB_backup_ext_js_ExportJsContext_0100
944  * @tc.desc: 测试 ExportJsContext 各个分支成功与失败
945  * @tc.size: MEDIUM
946  * @tc.type: FUNC
947  * @tc.level Level 1
948  * @tc.require: issuesIAFBOS
949  */
950 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_ExportJsContext_0100, testing::ext::TestSize.Level1)
951 {
952     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_ExportJsContext_0100";
953     try {
954         extBackupJs->jsObj_ = nullptr;
955         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
956         extBackupJs->ExportJsContext();
957         EXPECT_TRUE(true);
958 
959         extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
960         auto refMock = static_cast<NativeReferenceMock*>(extBackupJs->jsObj_.get());
961         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
962         EXPECT_CALL(*refMock, GetNapiValue()).WillOnce(Return(nullptr));
963         extBackupJs->ExportJsContext();
964         EXPECT_TRUE(extBackupJs->jsObj_ != nullptr);
965 
966         int value = 0;
967         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
968         EXPECT_CALL(*refMock, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
969         extBackupJs->ExportJsContext();
970         EXPECT_TRUE(extBackupJs->jsObj_ != nullptr);
971     } catch (...) {
972         EXPECT_TRUE(false);
973         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by ExportJsContext.";
974     }
975     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_ExportJsContext_0100";
976 }
977 
978 /**
979  * @tc.number: SUB_backup_ext_js_CallJsMethod_0100
980  * @tc.name: SUB_backup_ext_js_CallJsMethod_0100
981  * @tc.desc: 测试 CallJsMethod 各个分支成功与失败
982  * @tc.size: MEDIUM
983  * @tc.type: FUNC
984  * @tc.level Level 1
985  * @tc.require: issuesIAFBOS
986  */
987 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsMethod_0100, testing::ext::TestSize.Level1)
988 {
989     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsMethod_0100";
990     try {
991         extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
992         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
993         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
994         auto ret = extBackupJs->CallJsMethod("", *jsRuntime, extBackupJs->jsObj_.get(), nullptr, nullptr);
995         EXPECT_EQ(ret, EINVAL);
996 
997         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
998         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
999         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1000         ret = extBackupJs->CallJsMethod("", *jsRuntime, extBackupJs->jsObj_.get(), nullptr, nullptr);
1001         EXPECT_EQ(ret, EINVAL);
1002     } catch (...) {
1003         EXPECT_TRUE(false);
1004         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsMethod.";
1005     }
1006     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsMethod_0100";
1007 }
1008 
1009 /**
1010  * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0100
1011  * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0100
1012  * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
1013  * @tc.size: MEDIUM
1014  * @tc.type: FUNC
1015  * @tc.level Level 1
1016  * @tc.require: issuesIAFBOS
1017  */
1018 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DoCallJsMethod_0100, testing::ext::TestSize.Level1)
1019 {
1020     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0100";
1021     try {
1022         auto ret = DoCallJsMethod(nullptr);
1023         EXPECT_EQ(ret, EINVAL);
1024 
1025         string funcName = "";
1026         InputArgsParser argParserIn = {};
1027         ResultValueParser retParserIn = {};
1028         auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
1029         ret = DoCallJsMethod(param.get());
1030         EXPECT_EQ(ret, EINVAL);
1031 
1032         param->jsRuntime = jsRuntime.get();
1033         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1034         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1035         ret = DoCallJsMethod(param.get());
1036         EXPECT_EQ(ret, EINVAL);
1037 
1038         int scope = 0;
__anon0cdd84a50502(napi_env, std::vector<napi_value> &)1039         param->argParser = [](napi_env, std::vector<napi_value> &){ return false; };
1040         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1041         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1042             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1043         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1044         ret = DoCallJsMethod(param.get());
1045         EXPECT_EQ(ret, EINVAL);
1046 
1047         auto ref = make_shared<NativeReferenceMock>();
__anon0cdd84a50602(napi_env, std::vector<napi_value> &)1048         param->argParser = [](napi_env, std::vector<napi_value> &){ return true; };
1049         param->jsObj = ref.get();
1050         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1051         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1052             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1053         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(nullptr));
1054         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1055         ret = DoCallJsMethod(param.get());
1056         EXPECT_EQ(ret, EINVAL);
1057     } catch (...) {
1058         EXPECT_TRUE(false);
1059         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
1060     }
1061     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0100";
1062 }
1063 
1064 /**
1065  * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0200
1066  * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0200
1067  * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
1068  * @tc.size: MEDIUM
1069  * @tc.type: FUNC
1070  * @tc.level Level 1
1071  * @tc.require: issuesIAFBOS
1072  */
1073 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DoCallJsMethod_0200, testing::ext::TestSize.Level1)
1074 {
1075     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0200";
1076     try {
1077         string funcName = "";
1078         InputArgsParser argParserIn = {};
1079         ResultValueParser retParserIn = {};
1080         auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
1081         auto ref = make_shared<NativeReferenceMock>();
1082         param->argParser = nullptr;
1083         param->retParser = nullptr;
1084         param->jsObj = ref.get();
1085 
1086         int scope = 0;
1087         napi_value value = nullptr;
1088         param->jsRuntime = jsRuntime.get();
1089         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1090         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1091             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1092         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
1093         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1094         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1095         auto ret = DoCallJsMethod(param.get());
1096         EXPECT_EQ(ret, EINVAL);
1097 
1098         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1099         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1100             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1101         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
1102         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1103         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1104         ret = DoCallJsMethod(param.get());
1105         EXPECT_EQ(ret, EINVAL);
1106 
__anon0cdd84a50702(napi_env, napi_value)1107         param->retParser = [](napi_env, napi_value){ return false; };
1108         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1109         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1110             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1111         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
1112         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1113         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
1114         EXPECT_CALL(*napiMock, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1115         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1116         ret = DoCallJsMethod(param.get());
1117         EXPECT_EQ(ret, EINVAL);
1118     } catch (...) {
1119         EXPECT_TRUE(false);
1120         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
1121     }
1122     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0200";
1123 }
1124 
1125 /**
1126  * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0300
1127  * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0300
1128  * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
1129  * @tc.size: MEDIUM
1130  * @tc.type: FUNC
1131  * @tc.level Level 1
1132  * @tc.require: issuesIAFBOS
1133  */
1134 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DoCallJsMethod_0300, testing::ext::TestSize.Level1)
1135 {
1136     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0300";
1137     try {
1138         string funcName = "";
1139         InputArgsParser argParserIn = {};
1140         ResultValueParser retParserIn = {};
1141         auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
1142         auto ref = make_shared<NativeReferenceMock>();
1143         param->argParser = nullptr;
1144         param->retParser = nullptr;
1145         param->jsObj = ref.get();
1146 
1147         int scope = 0;
1148         napi_value value = nullptr;
1149         param->jsRuntime = jsRuntime.get();
__anon0cdd84a50802(napi_env, napi_value)1150         param->retParser = [](napi_env, napi_value){ return true; };
1151         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1152         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1153             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1154         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
1155         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1156         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
1157         EXPECT_CALL(*napiMock, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1158         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1159         auto ret = DoCallJsMethod(param.get());
1160         EXPECT_EQ(ret, ERR_OK);
1161     } catch (...) {
1162         EXPECT_TRUE(false);
1163         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
1164     }
1165     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0300";
1166 }
1167 
1168 /**
1169  * @tc.number: SUB_backup_ext_js_InvokeAppExtMethod_0100
1170  * @tc.name: SUB_backup_ext_js_InvokeAppExtMethod_0100
1171  * @tc.desc: 测试 InvokeAppExtMethod 各个分支成功与失败
1172  * @tc.size: MEDIUM
1173  * @tc.type: FUNC
1174  * @tc.level Level 1
1175  * @tc.require: issuesIAFBOS
1176  */
1177 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_InvokeAppExtMethod_0100, testing::ext::TestSize.Level1)
1178 {
1179     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_InvokeAppExtMethod_0100";
1180     try {
1181         ErrCode errCode = BError(BError::Codes::OK);
1182         string result = "";
1183         auto ret = extBackupJs->InvokeAppExtMethod(errCode, result);
1184         EXPECT_EQ(ret, ERR_OK);
1185 
1186         result = "test";
1187         ret = extBackupJs->InvokeAppExtMethod(errCode, result);
1188         EXPECT_EQ(ret, ERR_OK);
1189 
1190         ret = extBackupJs->InvokeAppExtMethod(BError(BError::Codes::EXT_INVAL_ARG), result);
1191         EXPECT_EQ(ret, ERR_OK);
1192     } catch (...) {
1193         EXPECT_TRUE(false);
1194         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by InvokeAppExtMethod.";
1195     }
1196     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_InvokeAppExtMethod_0100";
1197 }
1198 
1199 /**
1200  * @tc.number: SUB_backup_ext_js_CallJsOnBackupEx_0100
1201  * @tc.name: SUB_backup_ext_js_CallJsOnBackupEx_0100
1202  * @tc.desc: 测试 CallJsOnBackupEx 各个分支成功与失败
1203  * @tc.size: MEDIUM
1204  * @tc.type: FUNC
1205  * @tc.level Level 1
1206  * @tc.require: issuesIAFBOS
1207  */
1208 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackupEx_0100, testing::ext::TestSize.Level1)
1209 {
1210     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackupEx_0100";
1211     try {
1212         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1213         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1214         auto ret = extBackupJs->CallJsOnBackupEx();
1215         EXPECT_EQ(ret, EINVAL);
1216 
__anon0cdd84a50902(ErrCode, std::string)1217         extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1218         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1219         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1220         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1221         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1222         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1223         ret = extBackupJs->CallJsOnBackupEx();
1224         EXPECT_EQ(ret, EINVAL);
1225 
1226         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1227         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1228         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1229             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1230         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1231         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1232         ret = extBackupJs->CallJsOnBackupEx();
1233         EXPECT_EQ(ret, EINVAL);
1234     } catch (...) {
1235         EXPECT_TRUE(false);
1236         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackupEx.";
1237     }
1238     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackupEx_0100";
1239 }
1240 
1241 /**
1242  * @tc.number: SUB_backup_ext_js_CallJsOnBackupEx_0200
1243  * @tc.name: SUB_backup_ext_js_CallJsOnBackupEx_0200
1244  * @tc.desc: 测试 CallJsOnBackupEx 各个分支成功与失败
1245  * @tc.size: MEDIUM
1246  * @tc.type: FUNC
1247  * @tc.level Level 1
1248  * @tc.require: issuesIAFBOS
1249  */
1250 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackupEx_0200, testing::ext::TestSize.Level1)
1251 {
1252     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackupEx_0200";
1253     try {
__anon0cdd84a50a02(ErrCode, std::string)1254         extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1255         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1256         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1257         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1258             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1259         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1260         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1261         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1262         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1263         auto ret = extBackupJs->CallJsOnBackupEx();
1264         EXPECT_EQ(ret, EINVAL);
1265     } catch (...) {
1266         EXPECT_TRUE(false);
1267         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackupEx.";
1268     }
1269     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackupEx_0200";
1270 }
1271 
1272 /**
1273  * @tc.number: SUB_backup_ext_js_CallJsOnBackup_0100
1274  * @tc.name: SUB_backup_ext_js_CallJsOnBackup_0100
1275  * @tc.desc: 测试 CallJsOnBackup 各个分支成功与失败
1276  * @tc.size: MEDIUM
1277  * @tc.type: FUNC
1278  * @tc.level Level 1
1279  * @tc.require: issuesIAFBOS
1280  */
1281 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackup_0100, testing::ext::TestSize.Level1)
1282 {
1283     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackup_0100";
1284     try {
1285         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1286         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1287         auto ret = extBackupJs->CallJsOnBackup();
1288         EXPECT_EQ(ret, EINVAL);
1289 
__anon0cdd84a50b02(ErrCode, std::string)1290         extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1291         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1292         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1293         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1294         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1295         ret = extBackupJs->CallJsOnBackup();
1296         EXPECT_EQ(ret, EINVAL);
1297 
1298         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1299         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1300         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1301             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1302         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1303         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1304         ret = extBackupJs->CallJsOnBackup();
1305         EXPECT_EQ(ret, EINVAL);
1306     } catch (...) {
1307         EXPECT_TRUE(false);
1308         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackup.";
1309     }
1310     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackup_0100";
1311 }
1312 
1313 /**
1314  * @tc.number: SUB_backup_ext_js_CallJsOnBackup_0200
1315  * @tc.name: SUB_backup_ext_js_CallJsOnBackup_0200
1316  * @tc.desc: 测试 CallJsOnBackup 各个分支成功与失败
1317  * @tc.size: MEDIUM
1318  * @tc.type: FUNC
1319  * @tc.level Level 1
1320  * @tc.require: issuesIAFBOS
1321  */
1322 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackup_0200, testing::ext::TestSize.Level1)
1323 {
1324     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackup_0200";
1325     try {
__anon0cdd84a50c02(ErrCode, std::string)1326         extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1327         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1328         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1329         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1330             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1331         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1332         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1333         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1334         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1335         auto ret = extBackupJs->CallJsOnBackup();
1336         EXPECT_EQ(ret, EINVAL);
1337     } catch (...) {
1338         EXPECT_TRUE(false);
1339         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackup.";
1340     }
1341     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackup_0200";
1342 }
1343 
1344 /**
1345  * @tc.number: SUB_backup_ext_js_CallJSRestoreEx_0100
1346  * @tc.name: SUB_backup_ext_js_CallJSRestoreEx_0100
1347  * @tc.desc: 测试 CallJSRestoreEx 各个分支成功与失败
1348  * @tc.size: MEDIUM
1349  * @tc.type: FUNC
1350  * @tc.level Level 1
1351  * @tc.require: issuesIAFBOS
1352  */
1353 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestoreEx_0100, testing::ext::TestSize.Level1)
1354 {
1355     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestoreEx_0100";
1356     try {
1357         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1358         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1359         auto ret = extBackupJs->CallJSRestoreEx();
1360         EXPECT_EQ(ret, EINVAL);
1361 
__anon0cdd84a50d02(ErrCode, std::string)1362         extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1363         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1364         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1365         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1366         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1367         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1368         ret = extBackupJs->CallJSRestoreEx();
1369         EXPECT_EQ(ret, EINVAL);
1370 
1371         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1372         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1373         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1374             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1375         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1376         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1377         ret = extBackupJs->CallJSRestoreEx();
1378         EXPECT_EQ(ret, EINVAL);
1379     } catch (...) {
1380         EXPECT_TRUE(false);
1381         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestoreEx.";
1382     }
1383     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestoreEx_0100";
1384 }
1385 
1386 /**
1387  * @tc.number: SUB_backup_ext_js_CallJSRestoreEx_0200
1388  * @tc.name: SUB_backup_ext_js_CallJSRestoreEx_0200
1389  * @tc.desc: 测试 CallJSRestoreEx 各个分支成功与失败
1390  * @tc.size: MEDIUM
1391  * @tc.type: FUNC
1392  * @tc.level Level 1
1393  * @tc.require: issuesIAFBOS
1394  */
1395 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestoreEx_0200, testing::ext::TestSize.Level1)
1396 {
1397     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestoreEx_0200";
1398     try {
__anon0cdd84a50e02(ErrCode, std::string)1399         extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1400         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1401         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1402         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1403             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1404         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1405         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1406         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1407         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1408         auto ret = extBackupJs->CallJSRestoreEx();
1409         EXPECT_EQ(ret, EINVAL);
1410     } catch (...) {
1411         EXPECT_TRUE(false);
1412         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestoreEx.";
1413     }
1414     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestoreEx_0200";
1415 }
1416 
1417 /**
1418  * @tc.number: SUB_backup_ext_js_CallJSRestore_0100
1419  * @tc.name: SUB_backup_ext_js_CallJSRestore_0100
1420  * @tc.desc: 测试 CallJSRestore 各个分支成功与失败
1421  * @tc.size: MEDIUM
1422  * @tc.type: FUNC
1423  * @tc.level Level 1
1424  * @tc.require: issuesIAFBOS
1425  */
1426 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestore_0100, testing::ext::TestSize.Level1)
1427 {
1428     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestore_0100";
1429     try {
1430         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1431         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
1432         auto ret = extBackupJs->CallJSRestore();
1433         EXPECT_EQ(ret, EINVAL);
1434 
__anon0cdd84a50f02(ErrCode, std::string)1435         extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1436         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1437         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1438         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1439         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1440         ret = extBackupJs->CallJSRestore();
1441         EXPECT_EQ(ret, EINVAL);
1442 
1443         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1444         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1445         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1446             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1447         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1448         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1449         ret = extBackupJs->CallJSRestore();
1450         EXPECT_EQ(ret, EINVAL);
1451     } catch (...) {
1452         EXPECT_TRUE(false);
1453         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestore.";
1454     }
1455     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestore_0100";
1456 }
1457 
1458 /**
1459  * @tc.number: SUB_backup_ext_js_CallJSRestore_0200
1460  * @tc.name: SUB_backup_ext_js_CallJSRestore_0200
1461  * @tc.desc: 测试 CallJSRestore 各个分支成功与失败
1462  * @tc.size: MEDIUM
1463  * @tc.type: FUNC
1464  * @tc.level Level 1
1465  * @tc.require: issuesIAFBOS
1466  */
1467 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestore_0200, testing::ext::TestSize.Level1)
1468 {
1469     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestore_0200";
1470     try {
__anon0cdd84a51002(ErrCode, std::string)1471         extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1472         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1473         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1474         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1475             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1476         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1477         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1478         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1479         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
1480         auto ret = extBackupJs->CallJSRestore();
1481         EXPECT_EQ(ret, EINVAL);
1482     } catch (...) {
1483         EXPECT_TRUE(false);
1484         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestore.";
1485     }
1486     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestore_0200";
1487 }
1488 
1489 /**
1490  * @tc.number: SUB_backup_ext_js_GetBackupInfo_0100
1491  * @tc.name: SUB_backup_ext_js_GetBackupInfo_0100
1492  * @tc.desc: 测试 GetBackupInfo 各个分支成功与失败
1493  * @tc.size: MEDIUM
1494  * @tc.type: FUNC
1495  * @tc.level Level 1
1496  * @tc.require: issuesIAFBOS
1497  */
1498 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetBackupInfo_0100, testing::ext::TestSize.Level1)
1499 {
1500     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetBackupInfo_0100";
1501     try {
1502         extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
1503         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1504         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
__anon0cdd84a51102(ErrCode, std::string)1505         auto ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1506         EXPECT_EQ(ret, EINVAL);
1507 
1508         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1509         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1510         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1511         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1512         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
__anon0cdd84a51202(ErrCode, std::string)1513         ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1514         EXPECT_EQ(ret, EINVAL);
1515     } catch (...) {
1516         EXPECT_TRUE(false);
1517         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetBackupInfo.";
1518     }
1519     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetBackupInfo_0100";
1520 }
1521 
1522 /**
1523  * @tc.number: SUB_backup_ext_js_GetBackupInfo_0200
1524  * @tc.name: SUB_backup_ext_js_GetBackupInfo_0200
1525  * @tc.desc: 测试 GetBackupInfo 各个分支成功与失败
1526  * @tc.size: MEDIUM
1527  * @tc.type: FUNC
1528  * @tc.level Level 1
1529  * @tc.require: issuesIAFBOS
1530  */
1531 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetBackupInfo_0200, testing::ext::TestSize.Level1)
1532 {
1533     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetBackupInfo_0200";
1534     try {
1535         extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
1536         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1537         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1538         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1539         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1540             .WillOnce(Return(napi_ok));
1541         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
__anon0cdd84a51302(ErrCode, std::string)1542         auto ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1543         EXPECT_EQ(ret, EINVAL);
1544 
1545         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1546         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1547         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1548             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1549         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1550         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1551         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1552         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
__anon0cdd84a51402(ErrCode, std::string)1553         ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1554         EXPECT_EQ(ret, EINVAL);
1555     } catch (...) {
1556         EXPECT_TRUE(false);
1557         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetBackupInfo.";
1558     }
1559     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetBackupInfo_0200";
1560 }
1561 
1562 /**
1563  * @tc.number: SUB_backup_ext_js_OnProcess_0100
1564  * @tc.name: SUB_backup_ext_js_OnProcess_0100
1565  * @tc.desc: 测试 OnProcess 各个分支成功与失败
1566  * @tc.size: MEDIUM
1567  * @tc.type: FUNC
1568  * @tc.level Level 1
1569  * @tc.require: issuesIAFBOS
1570  */
1571 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_OnProcess_0100, testing::ext::TestSize.Level1)
1572 {
1573     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_OnProcess_0100";
1574     try {
1575         extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
1576         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1577         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg));
__anon0cdd84a51502(ErrCode, std::string)1578         auto ret = extBackupJs->OnProcess([](ErrCode, std::string){});
1579         EXPECT_EQ(ret, EINVAL);
1580 
1581         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1582         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1583         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1584         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1585         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
__anon0cdd84a51602(ErrCode, std::string)1586         ret = extBackupJs->OnProcess([](ErrCode, std::string){});
1587         EXPECT_EQ(ret, EINVAL);
1588     } catch (...) {
1589         EXPECT_TRUE(false);
1590         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnProcess.";
1591     }
1592     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_OnProcess_0100";
1593 }
1594 
1595 /**
1596  * @tc.number: SUB_backup_ext_js_OnProcess_0200
1597  * @tc.name: SUB_backup_ext_js_OnProcess_0200
1598  * @tc.desc: 测试 OnProcess 各个分支成功与失败
1599  * @tc.size: MEDIUM
1600  * @tc.type: FUNC
1601  * @tc.level Level 1
1602  * @tc.require: issuesIAFBOS
1603  */
1604 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_OnProcess_0200, testing::ext::TestSize.Level1)
1605 {
1606     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_OnProcess_0200";
1607     try {
1608         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1609         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1610         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1611         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1612         .WillOnce(Return(napi_ok));
1613         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
__anon0cdd84a51702(ErrCode, std::string)1614         auto ret = extBackupJs->OnProcess([](ErrCode, std::string){});
1615         EXPECT_EQ(ret, EINVAL);
1616 
1617         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1618         EXPECT_CALL(*napiMock, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok));
1619         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1620         EXPECT_CALL(*napiMock, napi_send_event(_, _, _)).WillOnce(Return(napi_invalid_arg));
__anon0cdd84a51802(ErrCode, std::string)1621         ret = extBackupJs->OnProcess([](ErrCode, std::string){});
1622         EXPECT_EQ(ret, EINVAL);
1623     } catch (...) {
1624         EXPECT_TRUE(false);
1625         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnProcess.";
1626     }
1627     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_OnProcess_0200";
1628 }
1629 
1630 /**
1631  * @tc.number: SUB_backup_ext_js_InitTempPath_0100
1632  * @tc.name: SUB_backup_ext_js_InitTempPath_0100
1633  * @tc.desc: 测试 InitTempPath 各个分支成功与失败
1634  * @tc.size: MEDIUM
1635  * @tc.type: FUNC
1636  * @tc.level Level 1
1637  * @tc.require: issuesIAFBOS
1638  */
1639 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_InitTempPath_0100, testing::ext::TestSize.Level1)
1640 {
1641     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_InitTempPath_0100";
1642     try {
1643         std::string el2BackupDir(BConstants::PATH_BUNDLE_BACKUP_HOME);
1644         int ret = access(el2BackupDir.c_str(), F_OK);
1645         EXPECT_TRUE(ret != F_OK);
1646         std::string el1BackupDir(BConstants::PATH_BUNDLE_BACKUP_HOME_EL1);
1647         ret = access(el1BackupDir.c_str(), F_OK);
1648         EXPECT_TRUE(ret != F_OK);
1649         std::string bundleName = "testBundleName";
1650         extBackupJs->InitTempPath(bundleName);
1651         ret = access(el2BackupDir.c_str(), F_OK);
1652         EXPECT_EQ(ret, F_OK);
1653         ret = access(el1BackupDir.c_str(), F_OK);
1654         EXPECT_EQ(ret, F_OK);
1655         std::string el2RootPath = BConstants::BACKUP_DIR_PRE + BConstants::CONTEXT_ELS[0]; // 0: {"el1", "el2"}中的el1
1656         std::string el1RootPath = BConstants::BACKUP_DIR_PRE + BConstants::CONTEXT_ELS[1]; // 1: {"el1", "el2"}中的el2
1657         ForceRemoveDirectoryBMS(el2RootPath);
1658         ForceRemoveDirectoryBMS(el1RootPath);
1659     } catch (...) {
1660         EXPECT_TRUE(false);
1661         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnProcess.";
1662     }
1663     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_InitTempPath_0100";
1664 }
1665 } // namespace OHOS::FileManagement::Backup