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