• 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 
__anonb69c5c870102(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 
__anonb69c5c870202(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 
__anonb69c5c870302(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 
__anonb69c5c870402(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         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
992         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
993         auto ret = extBackupJs->CallJsMethod("", *jsRuntime, extBackupJs->jsObj_.get(), nullptr, nullptr);
994         EXPECT_EQ(ret, EINVAL);
995     } catch (...) {
996         EXPECT_TRUE(false);
997         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsMethod.";
998     }
999     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsMethod_0100";
1000 }
1001 
1002 /**
1003  * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0100
1004  * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0100
1005  * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
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_DoCallJsMethod_0100, testing::ext::TestSize.Level1)
1012 {
1013     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0100";
1014     try {
1015         auto ret = DoCallJsMethod(nullptr);
1016         EXPECT_EQ(ret, EINVAL);
1017 
1018         string funcName = "";
1019         InputArgsParser argParserIn = {};
1020         ResultValueParser retParserIn = {};
1021         auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
1022         ret = DoCallJsMethod(param.get());
1023         EXPECT_EQ(ret, EINVAL);
1024 
1025         param->jsRuntime = jsRuntime.get();
1026         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1027         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1028         ret = DoCallJsMethod(param.get());
1029         EXPECT_EQ(ret, EINVAL);
1030 
1031         int scope = 0;
__anonb69c5c870502(napi_env, std::vector<napi_value> &)1032         param->argParser = [](napi_env, std::vector<napi_value> &){ return false; };
1033         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1034         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1035             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1036         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1037         ret = DoCallJsMethod(param.get());
1038         EXPECT_EQ(ret, EINVAL);
1039 
1040         auto ref = make_shared<NativeReferenceMock>();
__anonb69c5c870602(napi_env, std::vector<napi_value> &)1041         param->argParser = [](napi_env, std::vector<napi_value> &){ return true; };
1042         param->jsObj = ref.get();
1043         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1044         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1045             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1046         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(nullptr));
1047         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1048         ret = DoCallJsMethod(param.get());
1049         EXPECT_EQ(ret, EINVAL);
1050     } catch (...) {
1051         EXPECT_TRUE(false);
1052         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
1053     }
1054     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0100";
1055 }
1056 
1057 /**
1058  * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0200
1059  * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0200
1060  * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
1061  * @tc.size: MEDIUM
1062  * @tc.type: FUNC
1063  * @tc.level Level 1
1064  * @tc.require: issuesIAFBOS
1065  */
1066 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DoCallJsMethod_0200, testing::ext::TestSize.Level1)
1067 {
1068     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0200";
1069     try {
1070         string funcName = "";
1071         InputArgsParser argParserIn = {};
1072         ResultValueParser retParserIn = {};
1073         auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
1074         auto ref = make_shared<NativeReferenceMock>();
1075         param->argParser = nullptr;
1076         param->retParser = nullptr;
1077         param->jsObj = ref.get();
1078 
1079         int scope = 0;
1080         napi_value value = nullptr;
1081         param->jsRuntime = jsRuntime.get();
1082         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1083         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1084             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1085         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
1086         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1087         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1088         auto ret = DoCallJsMethod(param.get());
1089         EXPECT_EQ(ret, EINVAL);
1090 
1091         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1092         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1093             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1094         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
1095         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1096         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1097         ret = DoCallJsMethod(param.get());
1098         EXPECT_EQ(ret, EINVAL);
1099 
__anonb69c5c870702(napi_env, napi_value)1100         param->retParser = [](napi_env, napi_value){ return false; };
1101         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1102         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1103             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1104         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
1105         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1106         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
1107         EXPECT_CALL(*napiMock, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1108         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1109         ret = DoCallJsMethod(param.get());
1110         EXPECT_EQ(ret, EINVAL);
1111     } catch (...) {
1112         EXPECT_TRUE(false);
1113         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
1114     }
1115     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0200";
1116 }
1117 
1118 /**
1119  * @tc.number: SUB_backup_ext_js_DoCallJsMethod_0300
1120  * @tc.name: SUB_backup_ext_js_DoCallJsMethod_0300
1121  * @tc.desc: 测试 DoCallJsMethod 各个分支成功与失败
1122  * @tc.size: MEDIUM
1123  * @tc.type: FUNC
1124  * @tc.level Level 1
1125  * @tc.require: issuesIAFBOS
1126  */
1127 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_DoCallJsMethod_0300, testing::ext::TestSize.Level1)
1128 {
1129     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_DoCallJsMethod_0300";
1130     try {
1131         string funcName = "";
1132         InputArgsParser argParserIn = {};
1133         ResultValueParser retParserIn = {};
1134         auto param = make_shared<CallJsParam>(funcName, nullptr, nullptr, argParserIn, retParserIn);
1135         auto ref = make_shared<NativeReferenceMock>();
1136         param->argParser = nullptr;
1137         param->retParser = nullptr;
1138         param->jsObj = ref.get();
1139 
1140         int scope = 0;
1141         napi_value value = nullptr;
1142         param->jsRuntime = jsRuntime.get();
__anonb69c5c870802(napi_env, napi_value)1143         param->retParser = [](napi_env, napi_value){ return true; };
1144         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr));
1145         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(
1146             DoAll(SetArgPointee<ARG_INDEX_FIRST>(reinterpret_cast<napi_handle_scope>(&scope)), Return(napi_ok)));
1147         EXPECT_CALL(*ref, GetNapiValue()).WillOnce(Return(reinterpret_cast<napi_value>(&value)));
1148         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok));
1149         EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok));
1150         EXPECT_CALL(*napiMock, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok));
1151         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1152         auto ret = DoCallJsMethod(param.get());
1153         EXPECT_EQ(ret, ERR_OK);
1154     } catch (...) {
1155         EXPECT_TRUE(false);
1156         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by DoCallJsMethod.";
1157     }
1158     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_DoCallJsMethod_0300";
1159 }
1160 
1161 /**
1162  * @tc.number: SUB_backup_ext_js_InvokeAppExtMethod_0100
1163  * @tc.name: SUB_backup_ext_js_InvokeAppExtMethod_0100
1164  * @tc.desc: 测试 InvokeAppExtMethod 各个分支成功与失败
1165  * @tc.size: MEDIUM
1166  * @tc.type: FUNC
1167  * @tc.level Level 1
1168  * @tc.require: issuesIAFBOS
1169  */
1170 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_InvokeAppExtMethod_0100, testing::ext::TestSize.Level1)
1171 {
1172     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_InvokeAppExtMethod_0100";
1173     try {
1174         ErrCode errCode = BError(BError::Codes::OK);
1175         string result = "";
1176         auto ret = extBackupJs->InvokeAppExtMethod(errCode, result);
1177         EXPECT_EQ(ret, ERR_OK);
1178 
1179         result = "test";
1180         ret = extBackupJs->InvokeAppExtMethod(errCode, result);
1181         EXPECT_EQ(ret, ERR_OK);
1182 
1183         ret = extBackupJs->InvokeAppExtMethod(BError(BError::Codes::EXT_INVAL_ARG), result);
1184         EXPECT_EQ(ret, ERR_OK);
1185     } catch (...) {
1186         EXPECT_TRUE(false);
1187         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by InvokeAppExtMethod.";
1188     }
1189     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_InvokeAppExtMethod_0100";
1190 }
1191 
1192 /**
1193  * @tc.number: SUB_backup_ext_js_CallJsOnBackupEx_0100
1194  * @tc.name: SUB_backup_ext_js_CallJsOnBackupEx_0100
1195  * @tc.desc: 测试 CallJsOnBackupEx 各个分支成功与失败
1196  * @tc.size: MEDIUM
1197  * @tc.type: FUNC
1198  * @tc.level Level 1
1199  * @tc.require: issuesIAFBOS
1200  */
1201 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackupEx_0100, testing::ext::TestSize.Level1)
1202 {
1203     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackupEx_0100";
1204     try {
__anonb69c5c870902(ErrCode, std::string)1205         extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1206         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1207         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1208         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1209         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1210         auto ret = extBackupJs->CallJsOnBackupEx();
1211         EXPECT_EQ(ret, EINVAL);
1212 
1213         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1214         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1215             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1216         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1217         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1218         ret = extBackupJs->CallJsOnBackupEx();
1219         EXPECT_EQ(ret, EINVAL);
1220     } catch (...) {
1221         EXPECT_TRUE(false);
1222         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackupEx.";
1223     }
1224     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackupEx_0100";
1225 }
1226 
1227 /**
1228  * @tc.number: SUB_backup_ext_js_CallJsOnBackupEx_0200
1229  * @tc.name: SUB_backup_ext_js_CallJsOnBackupEx_0200
1230  * @tc.desc: 测试 CallJsOnBackupEx 各个分支成功与失败
1231  * @tc.size: MEDIUM
1232  * @tc.type: FUNC
1233  * @tc.level Level 1
1234  * @tc.require: issuesIAFBOS
1235  */
1236 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackupEx_0200, testing::ext::TestSize.Level1)
1237 {
1238     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackupEx_0200";
1239     try {
__anonb69c5c870a02(ErrCode, std::string)1240         extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1241         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1242         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1243             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1244         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1245         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1246         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1247         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1248         auto ret = extBackupJs->CallJsOnBackupEx();
1249         EXPECT_EQ(ret, EINVAL);
1250     } catch (...) {
1251         EXPECT_TRUE(false);
1252         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackupEx.";
1253     }
1254     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackupEx_0200";
1255 }
1256 
1257 /**
1258  * @tc.number: SUB_backup_ext_js_CallJsOnBackup_0100
1259  * @tc.name: SUB_backup_ext_js_CallJsOnBackup_0100
1260  * @tc.desc: 测试 CallJsOnBackup 各个分支成功与失败
1261  * @tc.size: MEDIUM
1262  * @tc.type: FUNC
1263  * @tc.level Level 1
1264  * @tc.require: issuesIAFBOS
1265  */
1266 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackup_0100, testing::ext::TestSize.Level1)
1267 {
1268     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackup_0100";
1269     try {
__anonb69c5c870b02(ErrCode, std::string)1270         extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1271         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1272         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1273         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1274         auto ret = extBackupJs->CallJsOnBackup();
1275         EXPECT_EQ(ret, EINVAL);
1276 
1277         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1278         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1279             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1280         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1281         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1282         ret = extBackupJs->CallJsOnBackup();
1283         EXPECT_EQ(ret, EINVAL);
1284     } catch (...) {
1285         EXPECT_TRUE(false);
1286         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackup.";
1287     }
1288     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackup_0100";
1289 }
1290 
1291 /**
1292  * @tc.number: SUB_backup_ext_js_CallJsOnBackup_0200
1293  * @tc.name: SUB_backup_ext_js_CallJsOnBackup_0200
1294  * @tc.desc: 测试 CallJsOnBackup 各个分支成功与失败
1295  * @tc.size: MEDIUM
1296  * @tc.type: FUNC
1297  * @tc.level Level 1
1298  * @tc.require: issuesIAFBOS
1299  */
1300 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJsOnBackup_0200, testing::ext::TestSize.Level1)
1301 {
1302     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJsOnBackup_0200";
1303     try {
__anonb69c5c870c02(ErrCode, std::string)1304         extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1305         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1306         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1307             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1308         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1309         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1310         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1311         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1312         auto ret = extBackupJs->CallJsOnBackup();
1313         EXPECT_EQ(ret, EINVAL);
1314     } catch (...) {
1315         EXPECT_TRUE(false);
1316         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJsOnBackup.";
1317     }
1318     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJsOnBackup_0200";
1319 }
1320 
1321 /**
1322  * @tc.number: SUB_backup_ext_js_CallJSRestoreEx_0100
1323  * @tc.name: SUB_backup_ext_js_CallJSRestoreEx_0100
1324  * @tc.desc: 测试 CallJSRestoreEx 各个分支成功与失败
1325  * @tc.size: MEDIUM
1326  * @tc.type: FUNC
1327  * @tc.level Level 1
1328  * @tc.require: issuesIAFBOS
1329  */
1330 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestoreEx_0100, testing::ext::TestSize.Level1)
1331 {
1332     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestoreEx_0100";
1333     try {
__anonb69c5c870d02(ErrCode, std::string)1334         extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1335         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1336         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1337         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1338         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1339         auto ret = extBackupJs->CallJSRestoreEx();
1340         EXPECT_EQ(ret, EINVAL);
1341 
1342         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1343         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1344             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1345         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1346         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1347         ret = extBackupJs->CallJSRestoreEx();
1348         EXPECT_EQ(ret, EINVAL);
1349     } catch (...) {
1350         EXPECT_TRUE(false);
1351         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestoreEx.";
1352     }
1353     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestoreEx_0100";
1354 }
1355 
1356 /**
1357  * @tc.number: SUB_backup_ext_js_CallJSRestoreEx_0200
1358  * @tc.name: SUB_backup_ext_js_CallJSRestoreEx_0200
1359  * @tc.desc: 测试 CallJSRestoreEx 各个分支成功与失败
1360  * @tc.size: MEDIUM
1361  * @tc.type: FUNC
1362  * @tc.level Level 1
1363  * @tc.require: issuesIAFBOS
1364  */
1365 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestoreEx_0200, testing::ext::TestSize.Level1)
1366 {
1367     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestoreEx_0200";
1368     try {
__anonb69c5c870e02(ErrCode, std::string)1369         extBackupJs->callbackInfoEx_ = std::make_shared<CallbackInfoEx>([](ErrCode, std::string){});
1370         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1371         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1372             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1373         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1374         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1375         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1376         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1377         auto 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_0200";
1384 }
1385 
1386 /**
1387  * @tc.number: SUB_backup_ext_js_CallJSRestore_0100
1388  * @tc.name: SUB_backup_ext_js_CallJSRestore_0100
1389  * @tc.desc: 测试 CallJSRestore 各个分支成功与失败
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_CallJSRestore_0100, testing::ext::TestSize.Level1)
1396 {
1397     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestore_0100";
1398     try {
__anonb69c5c870f02(ErrCode, std::string)1399         extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1400         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1401         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1402         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1403         auto ret = extBackupJs->CallJSRestore();
1404         EXPECT_EQ(ret, EINVAL);
1405 
1406         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1407         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1408             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1409         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1410         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1411         ret = extBackupJs->CallJSRestore();
1412         EXPECT_EQ(ret, EINVAL);
1413     } catch (...) {
1414         EXPECT_TRUE(false);
1415         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestore.";
1416     }
1417     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestore_0100";
1418 }
1419 
1420 /**
1421  * @tc.number: SUB_backup_ext_js_CallJSRestore_0200
1422  * @tc.name: SUB_backup_ext_js_CallJSRestore_0200
1423  * @tc.desc: 测试 CallJSRestore 各个分支成功与失败
1424  * @tc.size: MEDIUM
1425  * @tc.type: FUNC
1426  * @tc.level Level 1
1427  * @tc.require: issuesIAFBOS
1428  */
1429 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallJSRestore_0200, testing::ext::TestSize.Level1)
1430 {
1431     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallJSRestore_0200";
1432     try {
__anonb69c5c871002(ErrCode, std::string)1433         extBackupJs->callbackInfo_ = std::make_shared<CallbackInfo>([](ErrCode, std::string){});
1434         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1435         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1436             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1437         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1438         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1439         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1440         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1441         auto ret = extBackupJs->CallJSRestore();
1442         EXPECT_EQ(ret, EINVAL);
1443     } catch (...) {
1444         EXPECT_TRUE(false);
1445         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallJSRestore.";
1446     }
1447     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallJSRestore_0200";
1448 }
1449 
1450 /**
1451  * @tc.number: SUB_backup_ext_js_GetBackupInfo_0100
1452  * @tc.name: SUB_backup_ext_js_GetBackupInfo_0100
1453  * @tc.desc: 测试 GetBackupInfo 各个分支成功与失败
1454  * @tc.size: MEDIUM
1455  * @tc.type: FUNC
1456  * @tc.level Level 1
1457  * @tc.require: issuesIAFBOS
1458  */
1459 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetBackupInfo_0100, testing::ext::TestSize.Level1)
1460 {
1461     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetBackupInfo_0100";
1462     try {
1463         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1464         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1465         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1466         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871102(ErrCode, std::string)1467         auto ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1468         EXPECT_EQ(ret, EINVAL);
1469     } catch (...) {
1470         EXPECT_TRUE(false);
1471         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetBackupInfo.";
1472     }
1473     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetBackupInfo_0100";
1474 }
1475 
1476 /**
1477  * @tc.number: SUB_backup_ext_js_GetBackupInfo_0200
1478  * @tc.name: SUB_backup_ext_js_GetBackupInfo_0200
1479  * @tc.desc: 测试 GetBackupInfo 各个分支成功与失败
1480  * @tc.size: MEDIUM
1481  * @tc.type: FUNC
1482  * @tc.level Level 1
1483  * @tc.require: issuesIAFBOS
1484  */
1485 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetBackupInfo_0200, testing::ext::TestSize.Level1)
1486 {
1487     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetBackupInfo_0200";
1488     try {
1489         extBackupJs->jsObj_ = make_unique<NativeReferenceMock>();
1490         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1491         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1492         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1493             .WillOnce(Return(napi_ok));
1494             EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871202(ErrCode, std::string)1495         auto ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1496         EXPECT_EQ(ret, EINVAL);
1497 
1498         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1499         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1500             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1501         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1502         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1503         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1504         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871302(ErrCode, std::string)1505         ret = extBackupJs->GetBackupInfo([](ErrCode, std::string){});
1506         EXPECT_EQ(ret, EINVAL);
1507     } catch (...) {
1508         EXPECT_TRUE(false);
1509         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetBackupInfo.";
1510     }
1511     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetBackupInfo_0200";
1512 }
1513 
1514 /**
1515  * @tc.number: SUB_backup_ext_js_OnProcess_0100
1516  * @tc.name: SUB_backup_ext_js_OnProcess_0100
1517  * @tc.desc: 测试 OnProcess 各个分支成功与失败
1518  * @tc.size: MEDIUM
1519  * @tc.type: FUNC
1520  * @tc.level Level 1
1521  * @tc.require: issuesIAFBOS
1522  */
1523 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_OnProcess_0100, testing::ext::TestSize.Level1)
1524 {
1525     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_OnProcess_0100";
1526     try {
1527         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1528         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1529         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1530         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871402(ErrCode, std::string)1531         auto ret = extBackupJs->OnProcess([](ErrCode, std::string){});
1532         EXPECT_EQ(ret, EINVAL);
1533     } catch (...) {
1534         EXPECT_TRUE(false);
1535         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnProcess.";
1536     }
1537     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_OnProcess_0100";
1538 }
1539 
1540 /**
1541  * @tc.number: SUB_backup_ext_js_OnProcess_0200
1542  * @tc.name: SUB_backup_ext_js_OnProcess_0200
1543  * @tc.desc: 测试 OnProcess 各个分支成功与失败
1544  * @tc.size: MEDIUM
1545  * @tc.type: FUNC
1546  * @tc.level Level 1
1547  * @tc.require: issuesIAFBOS
1548  */
1549 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_OnProcess_0200, testing::ext::TestSize.Level1)
1550 {
1551     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_OnProcess_0200";
1552     try {
1553         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1554         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1555         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1556         .WillOnce(Return(napi_ok));
1557         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871502(ErrCode, std::string)1558         auto ret = extBackupJs->OnProcess([](ErrCode, std::string){});
1559         EXPECT_EQ(ret, EINVAL);
1560 
1561         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1562         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1563         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871602(ErrCode, std::string)1564         ret = extBackupJs->OnProcess([](ErrCode, std::string){});
1565         EXPECT_EQ(ret, EINVAL);
1566     } catch (...) {
1567         EXPECT_TRUE(false);
1568         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnProcess.";
1569     }
1570     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_OnProcess_0200";
1571 }
1572 
1573 /**
1574  * @tc.number: SUB_backup_ext_js_InitTempPath_0100
1575  * @tc.name: SUB_backup_ext_js_InitTempPath_0100
1576  * @tc.desc: 测试 InitTempPath 各个分支成功与失败
1577  * @tc.size: MEDIUM
1578  * @tc.type: FUNC
1579  * @tc.level Level 1
1580  * @tc.require: issuesIAFBOS
1581  */
1582 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_InitTempPath_0100, testing::ext::TestSize.Level1)
1583 {
1584     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_InitTempPath_0100";
1585     try {
1586         std::string el2BackupDir(BConstants::PATH_BUNDLE_BACKUP_HOME);
1587         int ret = access(el2BackupDir.c_str(), F_OK);
1588         EXPECT_TRUE(ret != F_OK);
1589         std::string el1BackupDir(BConstants::PATH_BUNDLE_BACKUP_HOME_EL1);
1590         ret = access(el1BackupDir.c_str(), F_OK);
1591         EXPECT_TRUE(ret != F_OK);
1592         std::string bundleName = "testBundleName";
1593         extBackupJs->InitTempPath(bundleName);
1594         ret = access(el2BackupDir.c_str(), F_OK);
1595         EXPECT_EQ(ret, F_OK);
1596         ret = access(el1BackupDir.c_str(), F_OK);
1597         EXPECT_EQ(ret, F_OK);
1598         std::string el2RootPath = BConstants::BACKUP_DIR_PRE + BConstants::CONTEXT_ELS[0]; // 0: {"el1", "el2"}中的el1
1599         std::string el1RootPath = BConstants::BACKUP_DIR_PRE + BConstants::CONTEXT_ELS[1]; // 1: {"el1", "el2"}中的el2
1600         ForceRemoveDirectoryBMS(el2RootPath);
1601         ForceRemoveDirectoryBMS(el1RootPath);
1602     } catch (...) {
1603         EXPECT_TRUE(false);
1604         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnProcess.";
1605     }
1606     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_InitTempPath_0100";
1607 }
1608 
1609 /**
1610  * @tc.number: SUB_backup_ext_js_OnRelease_0100
1611  * @tc.name: SUB_backup_ext_js_OnRelease_0100
1612  * @tc.desc: 测试 OnRelease 各个分支成功与失败
1613  * @tc.size: MEDIUM
1614  * @tc.type: FUNC
1615  * @tc.level Level 1
1616  * @tc.require: issuesIAFBOS
1617  */
1618 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_OnRelease_0100, testing::ext::TestSize.Level1)
1619 {
1620     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_OnRelease_0100";
1621     try {
1622         int32_t scenario = 1;
1623         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1624         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1625         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1626         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871702(ErrCode, std::string)1627         auto ret = extBackupJs->OnRelease([](ErrCode, std::string){}, scenario);
1628         EXPECT_EQ(ret, EINVAL);
1629     } catch (...) {
1630         EXPECT_TRUE(false);
1631         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnRelease.";
1632     }
1633     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_OnRelease_0100";
1634 }
1635 
1636 /**
1637  * @tc.number: SUB_backup_ext_js_OnRelease_0200
1638  * @tc.name: SUB_backup_ext_js_OnRelease_0200
1639  * @tc.desc: 测试 OnRelease 各个分支成功与失败
1640  * @tc.size: MEDIUM
1641  * @tc.type: FUNC
1642  * @tc.level Level 1
1643  * @tc.require: issuesIAFBOS
1644  */
1645 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_OnRelease_0200, testing::ext::TestSize.Level1)
1646 {
1647     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_OnRelease_0200";
1648     try {
1649         int32_t scenario = 1;
1650         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1651         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1652         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok))
1653         .WillOnce(Return(napi_ok));
1654         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871802(ErrCode, std::string)1655         auto ret = extBackupJs->OnRelease([](ErrCode, std::string){}, scenario);
1656         EXPECT_EQ(ret, EINVAL);
1657 
1658         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1659         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1660         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871902(ErrCode, std::string)1661         ret = extBackupJs->OnRelease([](ErrCode, std::string){}, scenario);
1662         EXPECT_EQ(ret, EINVAL);
1663     } catch (...) {
1664         EXPECT_TRUE(false);
1665         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by OnRelease.";
1666     }
1667     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_OnRelease_0200";
1668 }
1669 
1670 /**
1671  * @tc.number: SUB_backup_ext_js_GetBackupCompatibilityInfo_0100
1672  * @tc.name: SUB_backup_ext_js_GetBackupCompatibilityInfo_0100
1673  * @tc.desc: 测试 GetBackupCompatibilityInfo 各个分支成功与失败
1674  * @tc.size: MEDIUM
1675  * @tc.type: FUNC
1676  * @tc.level Level 1
1677  * @tc.require: issuesIAFBOS
1678  */
1679 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetBackupCompatibilityInfo_0100, testing::ext::TestSize.Level1)
1680 {
1681     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetBackupCompatibilityInfo_0100";
1682     try {
1683         std::string extInfo = "";
1684         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1685         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1686         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1687         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871a02(ErrCode, std::string)1688         auto ret = extBackupJs->GetBackupCompatibilityInfo([](ErrCode, std::string){}, extInfo);
1689         EXPECT_EQ(ret, EINVAL);
1690 
1691         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1692         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1693             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1694         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1695         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871b02(ErrCode, std::string)1696         ret = extBackupJs->GetBackupCompatibilityInfo([](ErrCode, std::string){}, extInfo);
1697         EXPECT_EQ(ret, EINVAL);
1698     } catch (...) {
1699         EXPECT_TRUE(false);
1700         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetBackupCompatibilityInfo.";
1701     }
1702     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetBackupCompatibilityInfo_0100";
1703 }
1704 
1705 /**
1706  * @tc.number: SUB_backup_ext_js_GetBackupCompatibilityInfo_0200
1707  * @tc.name: SUB_backup_ext_js_GetBackupCompatibilityInfo_0200
1708  * @tc.desc: 测试 GetBackupCompatibilityInfo 各个分支成功与失败
1709  * @tc.size: MEDIUM
1710  * @tc.type: FUNC
1711  * @tc.level Level 1
1712  * @tc.require: issuesIAFBOS
1713  */
1714 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetBackupCompatibilityInfo_0200, testing::ext::TestSize.Level1)
1715 {
1716     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetBackupCompatibilityInfo_0200";
1717     try {
1718         std::string extInfo = "";
1719         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1720         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1721             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1722         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1723         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1724         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1725         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871c02(ErrCode, std::string)1726         auto ret = extBackupJs->GetBackupCompatibilityInfo([](ErrCode, std::string){}, extInfo);
1727         EXPECT_EQ(ret, EINVAL);
1728     } catch (...) {
1729         EXPECT_TRUE(false);
1730         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetBackupCompatibilityInfo.";
1731     }
1732     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetBackupCompatibilityInfo_0200";
1733 }
1734 
1735 /**
1736  * @tc.number: SUB_backup_ext_js_GetRestoreCompatibilityInfo_0100
1737  * @tc.name: SUB_backup_ext_js_GetRestoreCompatibilityInfo_0100
1738  * @tc.desc: 测试 GetRestoreCompatibilityInfo 各个分支成功与失败
1739  * @tc.size: MEDIUM
1740  * @tc.type: FUNC
1741  * @tc.level Level 1
1742  * @tc.require: issuesIAFBOS
1743  */
1744 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetRestoreCompatibilityInfo_0100, testing::ext::TestSize.Level1)
1745 {
1746     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetRestoreCompatibilityInfo_0100";
1747     try {
1748         std::string extInfo = "";
1749         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1750         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _)).WillOnce(Return(napi_ok));
1751         EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
1752         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871d02(ErrCode, std::string)1753         auto ret = extBackupJs->GetRestoreCompatibilityInfo([](ErrCode, std::string){}, extInfo);
1754         EXPECT_EQ(ret, EINVAL);
1755 
1756         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1757         EXPECT_CALL(*napiMock, napi_is_exception_pending(_, _))
1758             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_FIRST>(true), Return(napi_ok)));
1759         EXPECT_CALL(*napiMock, napi_get_and_clear_last_exception(_, _)).WillOnce(Return(napi_invalid_arg));
1760         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871e02(ErrCode, std::string)1761         ret = extBackupJs->GetRestoreCompatibilityInfo([](ErrCode, std::string){}, extInfo);
1762         EXPECT_EQ(ret, EINVAL);
1763     } catch (...) {
1764         EXPECT_TRUE(false);
1765         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetRestoreCompatibilityInfo.";
1766     }
1767     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetRestoreCompatibilityInfo_0100";
1768 }
1769 
1770 /**
1771  * @tc.number: SUB_backup_ext_js_GetRestoreCompatibilityInfo_0200
1772  * @tc.name: SUB_backup_ext_js_GetRestoreCompatibilityInfo_0200
1773  * @tc.desc: 测试 GetRestoreCompatibilityInfo 各个分支成功与失败
1774  * @tc.size: MEDIUM
1775  * @tc.type: FUNC
1776  * @tc.level Level 1
1777  * @tc.require: issuesIAFBOS
1778  */
1779 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_GetRestoreCompatibilityInfo_0200, testing::ext::TestSize.Level1)
1780 {
1781     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_GetRestoreCompatibilityInfo_0200";
1782     try {
1783         std::string extInfo = "";
1784         EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr));
1785         EXPECT_CALL(*napiMock, napi_is_promise(_, _, _))
1786             .WillOnce(DoAll(SetArgPointee<ARG_INDEX_SECOND>(true), Return(napi_ok)));
1787         EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok));
1788         EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok));
1789         EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1790         EXPECT_CALL(*napiMock, napi_send_cancelable_event(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg));
__anonb69c5c871f02(ErrCode, std::string)1791         auto ret = extBackupJs->GetRestoreCompatibilityInfo([](ErrCode, std::string){}, extInfo);
1792         EXPECT_EQ(ret, EINVAL);
1793     } catch (...) {
1794         EXPECT_TRUE(false);
1795         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by GetRestoreCompatibilityInfo.";
1796     }
1797     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_GetRestoreCompatibilityInfo_0200";
1798 }
1799 
1800 /**
1801  * @tc.number: SUB_backup_ext_js_ParseCompatibilityInfo_0100
1802  * @tc.name: SUB_backup_ext_js_ParseCompatibilityInfo_0100
1803  * @tc.desc: 测试 ParseCompatibilityInfo 各个分支成功与失败
1804  * @tc.size: MEDIUM
1805  * @tc.type: FUNC
1806  * @tc.level Level 1
1807  * @tc.require: issuesIAFBOS
1808  */
1809 HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_ParseCompatibilityInfo_0100, testing::ext::TestSize.Level1)
1810 {
1811     GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_ParseCompatibilityInfo_0100";
1812     try {
1813         std::vector<napi_value> argv;
1814         auto ext = extBackupJs->extInfo_;
1815         extBackupJs->extInfo_ = "ext_info";
1816         EXPECT_CALL(*napiMock, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok));
1817         auto ret = extBackupJs->ParseCompatibilityInfo()(nullptr, argv);
1818         EXPECT_TRUE(ret);
1819 
1820         EXPECT_CALL(*napiMock, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_invalid_arg));
1821         ret = extBackupJs->ParseCompatibilityInfo()(nullptr, argv);
1822         extBackupJs->extInfo_ = ext;
1823         EXPECT_FALSE(ret);
1824     } catch (...) {
1825         EXPECT_TRUE(false);
1826         GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by ParseCompatibilityInfo.";
1827     }
1828     GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_ParseCompatibilityInfo_0100";
1829 }
1830 } // namespace OHOS::FileManagement::Backup