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