From 5cba64c80199e51f5eb1fe4d27cdef6db1906100 Mon Sep 17 00:00:00 2001 From: wangpggg Date: Wed, 26 Feb 2025 08:50:12 +0800 Subject: [PATCH] add ut Signed-off-by: wangpeng --- tests/mock/napi/include/napi_mock.h | 60 +- tests/mock/napi/src/napi_mock.cpp | 5 + .../backup_ext/ext_backup_js_test.cpp | 308 +++++++-- .../module_ipc/service_incremental_test.cpp | 611 +++++++++++------- 4 files changed, 666 insertions(+), 318 deletions(-) diff --git a/tests/mock/napi/include/napi_mock.h b/tests/mock/napi/include/napi_mock.h index 796d02ca5..907a39ebc 100644 --- a/tests/mock/napi/include/napi_mock.h +++ b/tests/mock/napi/include/napi_mock.h @@ -61,43 +61,45 @@ public: virtual napi_status napi_open_handle_scope(napi_env, napi_handle_scope*) = 0; virtual napi_status napi_close_handle_scope(napi_env, napi_handle_scope) = 0; virtual napi_status napi_is_exception_pending(napi_env, bool*) = 0; + virtual napi_status napi_fatal_exception(napi_env, napi_value) = 0; public: static inline std::shared_ptr napi = nullptr; }; class NapiMock : public Napi { public: - MOCK_METHOD2(napi_get_uv_event_loop, napi_status(napi_env, struct uv_loop_s**)); - MOCK_METHOD6(napi_call_function, napi_status(napi_env, napi_value, napi_value, size_t, const napi_value*, + MOCK_METHOD(napi_status, napi_get_uv_event_loop, (napi_env, struct uv_loop_s**)); + MOCK_METHOD(napi_status, napi_call_function, (napi_env, napi_value, napi_value, size_t, const napi_value*, napi_value*)); - MOCK_METHOD3(napi_get_reference_value, napi_status(napi_env, napi_ref, napi_value*)); - MOCK_METHOD4(napi_get_named_property, napi_status(napi_env, napi_value, const char*, napi_value*)); - MOCK_METHOD3(napi_send_event, napi_status(napi_env, const std::function, napi_event_priority)); - MOCK_METHOD3(napi_get_value_int32, napi_status(napi_env, napi_value, int32_t*)); - MOCK_METHOD3(napi_get_value_int64, napi_status(napi_env, napi_value, int64_t*)); - MOCK_METHOD3(napi_create_int64, napi_status(napi_env, int64_t, napi_value*)); - MOCK_METHOD4(napi_create_string_utf8, napi_status(napi_env, const char*, size_t, napi_value*)); - MOCK_METHOD3(napi_create_int32, napi_status(napi_env, int32_t, napi_value*)); - MOCK_METHOD5(napi_get_value_string_utf8, napi_status(napi_env, napi_value, char*, size_t, size_t*)); - MOCK_METHOD3(napi_get_boolean, napi_status(napi_env, bool, napi_value*)); - MOCK_METHOD2(napi_create_array, napi_status(napi_env, napi_value*)); - MOCK_METHOD3(napi_get_array_length, napi_status(napi_env, napi_value, uint32_t*)); - MOCK_METHOD4(napi_get_element, napi_status(napi_env, napi_value, uint32_t, napi_value*)); - MOCK_METHOD4(napi_escape_handle, napi_status(napi_env, napi_escapable_handle_scope, napi_value, napi_value*)); - MOCK_METHOD2(napi_get_null, napi_status(napi_env, napi_value*)); - MOCK_METHOD2(napi_create_object, napi_status(napi_env, napi_value*)); - MOCK_METHOD3(napi_create_array_with_length, napi_status(napi_env, size_t, napi_value*)); - MOCK_METHOD3(napi_create_double, napi_status(napi_env, double, napi_value*)); - MOCK_METHOD4(napi_set_named_property, napi_status(napi_env, napi_value, const char*, napi_value)); - MOCK_METHOD2(napi_get_and_clear_last_exception, napi_status(napi_env, napi_value*)); - MOCK_METHOD6(napi_get_cb_info, napi_status(napi_env, napi_callback_info, size_t*, napi_value*, napi_value*, + MOCK_METHOD(napi_status, napi_get_reference_value, (napi_env, napi_ref, napi_value*)); + MOCK_METHOD(napi_status, napi_get_named_property, (napi_env, napi_value, const char*, napi_value*)); + MOCK_METHOD(napi_status, napi_send_event, (napi_env, const std::function, napi_event_priority)); + MOCK_METHOD(napi_status, napi_get_value_int32, (napi_env, napi_value, int32_t*)); + MOCK_METHOD(napi_status, napi_get_value_int64, (napi_env, napi_value, int64_t*)); + MOCK_METHOD(napi_status, napi_create_int64, (napi_env, int64_t, napi_value*)); + MOCK_METHOD(napi_status, napi_create_string_utf8, (napi_env, const char*, size_t, napi_value*)); + MOCK_METHOD(napi_status, napi_create_int32, (napi_env, int32_t, napi_value*)); + MOCK_METHOD(napi_status, napi_get_value_string_utf8, (napi_env, napi_value, char*, size_t, size_t*)); + MOCK_METHOD(napi_status, napi_get_boolean, (napi_env, bool, napi_value*)); + MOCK_METHOD(napi_status, napi_create_array, (napi_env, napi_value*)); + MOCK_METHOD(napi_status, napi_get_array_length, (napi_env, napi_value, uint32_t*)); + MOCK_METHOD(napi_status, napi_get_element, (napi_env, napi_value, uint32_t, napi_value*)); + MOCK_METHOD(napi_status, napi_escape_handle, (napi_env, napi_escapable_handle_scope, napi_value, napi_value*)); + MOCK_METHOD(napi_status, napi_get_null, (napi_env, napi_value*)); + MOCK_METHOD(napi_status, napi_create_object, (napi_env, napi_value*)); + MOCK_METHOD(napi_status, napi_create_array_with_length, (napi_env, size_t, napi_value*)); + MOCK_METHOD(napi_status, napi_create_double, (napi_env, double, napi_value*)); + MOCK_METHOD(napi_status, napi_set_named_property, (napi_env, napi_value, const char*, napi_value)); + MOCK_METHOD(napi_status, napi_get_and_clear_last_exception, (napi_env, napi_value*)); + MOCK_METHOD(napi_status, napi_get_cb_info, (napi_env, napi_callback_info, size_t*, napi_value*, napi_value*, void**)); - MOCK_METHOD3(napi_is_promise, napi_status(napi_env, napi_value, bool*)); - MOCK_METHOD3(napi_is_callable, napi_status(napi_env, napi_value, bool*)); - MOCK_METHOD6(napi_create_function, napi_status(napi_env, const char*, size_t, napi_callback, void*, napi_value*)); - MOCK_METHOD2(napi_open_handle_scope, napi_status(napi_env, napi_handle_scope*)); - MOCK_METHOD2(napi_close_handle_scope, napi_status(napi_env, napi_handle_scope)); - MOCK_METHOD2(napi_is_exception_pending, napi_status(napi_env, bool*)); + MOCK_METHOD(napi_status, napi_is_promise, (napi_env, napi_value, bool*)); + MOCK_METHOD(napi_status, napi_is_callable, (napi_env, napi_value, bool*)); + MOCK_METHOD(napi_status, napi_create_function, (napi_env, const char*, size_t, napi_callback, void*, napi_value*)); + MOCK_METHOD(napi_status, napi_open_handle_scope, (napi_env, napi_handle_scope*)); + MOCK_METHOD(napi_status, napi_close_handle_scope, (napi_env, napi_handle_scope)); + MOCK_METHOD(napi_status, napi_is_exception_pending, (napi_env, bool*)); + MOCK_METHOD(napi_status, napi_fatal_exception, (napi_env, napi_value)); }; } // namespace OHOS::FileManagement::Backup #endif // TEST_UNITTEST_MOCK_NAPI_H \ No newline at end of file diff --git a/tests/mock/napi/src/napi_mock.cpp b/tests/mock/napi/src/napi_mock.cpp index f7390ad98..5274eecb4 100644 --- a/tests/mock/napi/src/napi_mock.cpp +++ b/tests/mock/napi/src/napi_mock.cpp @@ -162,4 +162,9 @@ NAPI_EXTERN napi_status napi_close_handle_scope(napi_env env, napi_handle_scope napi_status napi_is_exception_pending(napi_env env, bool* result) { return OHOS::FileManagement::Backup::Napi::napi->napi_is_exception_pending(env, result); +} + +napi_status napi_fatal_exception(napi_env env, napi_value err) +{ + return OHOS::FileManagement::Backup::Napi::napi->napi_fatal_exception(env, err); } \ No newline at end of file diff --git a/tests/unittests/backup_ext/ext_backup_js_test.cpp b/tests/unittests/backup_ext/ext_backup_js_test.cpp index d58138fcb..9d3757cd4 100644 --- a/tests/unittests/backup_ext/ext_backup_js_test.cpp +++ b/tests/unittests/backup_ext/ext_backup_js_test.cpp @@ -231,10 +231,15 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCallback_0100, testing::ext:: try { napi_env env = nullptr; napi_callback_info info = nullptr; - EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + + g_extBackupCount = 0; auto ret = PromiseCallback(env, info); EXPECT_TRUE(ret == nullptr); + g_extBackupCount = 1; + EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + ret = PromiseCallback(env, info); + EXPECT_TRUE(ret == nullptr); EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); ret = PromiseCallback(env, info); @@ -276,6 +281,23 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCatchCallback_0100, testing:: EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)) .WillOnce(DoAll(SetArgPointee(&callback), Return(napi_ok))); EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_invalid_arg)); + ret = PromiseCatchCallback(env, info); + EXPECT_TRUE(ret == nullptr); + + g_extBackupCount = 0; + EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(&callback), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_ok)); + ret = PromiseCatchCallback(env, info); + EXPECT_TRUE(ret == nullptr); + + g_extBackupCount = 1; + EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(&callback), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_ok)); ret = PromiseCatchCallback(env, info); EXPECT_TRUE(ret == nullptr); } catch (...) { @@ -300,10 +322,16 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCallbackEx_0100, testing::ext try { napi_env env = nullptr; napi_callback_info info = nullptr; - EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + + g_extBackupCount = 0; auto ret = PromiseCallbackEx(env, info); EXPECT_TRUE(ret == nullptr); + g_extBackupCount = 1; + EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + ret = PromiseCallbackEx(env, info); + EXPECT_TRUE(ret == nullptr); + struct CallbackInfoEx callback([](ErrCode, std::string){}); EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)) .WillOnce(DoAll(SetArgPointee(&callback), Return(napi_ok))); @@ -341,6 +369,23 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_PromiseCatchCallbackEx_0100, testing EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)) .WillOnce(DoAll(SetArgPointee(&callback), Return(napi_ok))); EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_invalid_arg)); + ret = PromiseCatchCallbackEx(env, info); + EXPECT_TRUE(ret == nullptr); + + g_extBackupCount = 0; + EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(&callback), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_ok)); + ret = PromiseCatchCallbackEx(env, info); + EXPECT_TRUE(ret == nullptr); + + g_extBackupCount = 1; + EXPECT_CALL(*napiMock, napi_get_cb_info(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(&callback), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_fatal_exception(_, _)).WillOnce(Return(napi_ok)); ret = PromiseCatchCallbackEx(env, info); EXPECT_TRUE(ret == nullptr); } catch (...) { @@ -402,24 +447,61 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromise_0100, testing::ext: EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - auto ret = CallCatchPromise(*jsRuntime, result, callbackInfo); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallCatchPromise(*jsRuntime, result, callbackInfo); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallCatchPromise(*jsRuntime, result, callbackInfo); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo)); + + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromise."; + } + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromise_0100"; +} + +/** + * @tc.number: SUB_backup_ext_js_CallCatchPromise_0200 + * @tc.name: SUB_backup_ext_js_CallCatchPromise_0200 + * @tc.desc: 测试 CallCatchPromise 各个分支成功与失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issuesIAFBOS + */ +HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromise_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallCatchPromise_0200"; + try { + napi_value result = nullptr; + struct CallbackInfo *callbackInfo = nullptr; + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallCatchPromise(*jsRuntime, result, callbackInfo)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); @@ -429,13 +511,12 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromise_0100, testing::ext: EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallCatchPromise(*jsRuntime, result, callbackInfo); - EXPECT_TRUE(ret); + EXPECT_TRUE(CallCatchPromise(*jsRuntime, result, callbackInfo)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromise."; } - GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromise_0100"; + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromise_0200"; } /** @@ -457,36 +538,40 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromise_0100, testing::ext::Test EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - auto ret = CallPromise(*jsRuntime, result, callbackInfo); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallPromise(*jsRuntime, result, callbackInfo); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallPromise(*jsRuntime, result, callbackInfo); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo)); - EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); - EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr)); - EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)) - .WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo)); + + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); - EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); - EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); - ret = CallPromise(*jsRuntime, result, callbackInfo); - EXPECT_FALSE(ret); + EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromise."; @@ -509,6 +594,17 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromise_0200, testing::ext::Test try { napi_value result = nullptr; struct CallbackInfo *callbackInfo = nullptr; + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallPromise(*jsRuntime, result, callbackInfo)); + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); @@ -520,8 +616,7 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromise_0200, testing::ext::Test EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)) .WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); - auto ret = CallPromise(*jsRuntime, result, callbackInfo); - EXPECT_TRUE(ret); + EXPECT_TRUE(CallPromise(*jsRuntime, result, callbackInfo)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromise."; @@ -548,24 +643,61 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromiseEx_0100, testing::ex EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - auto ret = CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx)); + + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromiseEx."; + } + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromiseEx_0100"; +} + +/** + * @tc.number: SUB_backup_ext_js_CallCatchPromiseEx_0200 + * @tc.name: SUB_backup_ext_js_CallCatchPromiseEx_0200 + * @tc.desc: 测试 CallCatchPromiseEx 各个分支成功与失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issuesIAFBOS + */ +HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromiseEx_0200, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallCatchPromiseEx_0200"; + try { + napi_value result = nullptr; + struct CallbackInfoEx *callbackInfoEx = nullptr; + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); @@ -575,13 +707,12 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallCatchPromiseEx_0100, testing::ex EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_TRUE(ret); + EXPECT_TRUE(CallCatchPromiseEx(*jsRuntime, result, callbackInfoEx)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallCatchPromiseEx."; } - GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromiseEx_0100"; + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallCatchPromiseEx_0200"; } /** @@ -603,36 +734,30 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0100, testing::ext::Te EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - auto ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx)); - EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); - EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr)); - EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)) - .WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); - EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); - EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); - EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); - ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_FALSE(ret); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx."; @@ -655,6 +780,16 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0200, testing::ext::Te try { napi_value result = nullptr; struct CallbackInfoEx *callbackInfoEx = nullptr; + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoEx)); + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); @@ -666,8 +801,7 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0200, testing::ext::Te EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)) .WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); - auto ret = CallPromiseEx(*jsRuntime, result, callbackInfoEx); - EXPECT_TRUE(ret); + EXPECT_TRUE(CallPromiseEx(*jsRuntime, result, callbackInfoEx)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx."; @@ -694,24 +828,61 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0300, testing::ext::Te EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - auto ret = CallPromiseEx(*jsRuntime, result, callbackInfoBackup); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_invalid_arg)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallPromiseEx(*jsRuntime, result, callbackInfoBackup); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallPromiseEx(*jsRuntime, result, callbackInfoBackup); - EXPECT_FALSE(ret); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup)); + + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup)); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx."; + } + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0300"; +} + +/** + * @tc.number: SUB_backup_ext_js_CallPromiseEx_0400 + * @tc.name: SUB_backup_ext_js_CallPromiseEx_0400 + * @tc.desc: 测试 CallPromiseEx 各个分支成功与失败 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issuesIAFBOS + */ +HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0400, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_CallPromiseEx_0400"; + try { + napi_value result = nullptr; + struct CallbackInfoBackup *callbackInfoBackup = nullptr; + EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); + EXPECT_CALL(*napiMock, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_is_callable(_, _, _)) + .WillOnce(DoAll(SetArgPointee(true), Return(napi_ok))); + EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); + EXPECT_FALSE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup)); EXPECT_CALL(*napiMock, napi_open_handle_scope(_, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); @@ -721,13 +892,12 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_CallPromiseEx_0300, testing::ext::Te EXPECT_CALL(*napiMock, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_call_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); EXPECT_CALL(*napiMock, napi_close_handle_scope(_, _)).WillOnce(Return(napi_ok)); - ret = CallPromiseEx(*jsRuntime, result, callbackInfoBackup); - EXPECT_TRUE(ret); + EXPECT_TRUE(CallPromiseEx(*jsRuntime, result, callbackInfoBackup)); } catch (...) { EXPECT_TRUE(false); GTEST_LOG_(INFO) << "ExtBackupJsTest-an exception occurred by CallPromiseEx."; } - GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0300"; + GTEST_LOG_(INFO) << "ExtBackupJsTest-end SUB_backup_ext_js_CallPromiseEx_0400"; } /** @@ -746,19 +916,20 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_AttachBackupExtensionContext_0100, t auto ret = AttachBackupExtensionContext(nullptr, nullptr, nullptr); EXPECT_TRUE(ret == nullptr); - int env = 0; - ret = AttachBackupExtensionContext(reinterpret_cast(&env), nullptr, nullptr); + auto value = make_shared(); + ret = AttachBackupExtensionContext(nullptr, value.get(), nullptr); EXPECT_TRUE(ret == nullptr); - auto value = make_shared(); + int env = 0; + weak_ptr ptr = value; EXPECT_CALL(*extBackupMock, CreateExtBackupJsContext(_, _)).WillOnce(Return(nullptr)); - ret = AttachBackupExtensionContext(reinterpret_cast(&env), value.get(), nullptr); + ret = AttachBackupExtensionContext(reinterpret_cast(&env), reinterpret_cast(&ptr), nullptr); EXPECT_TRUE(ret == nullptr); EXPECT_CALL(*extBackupMock, CreateExtBackupJsContext(_, _)) .WillOnce(Return(reinterpret_cast(&env))); EXPECT_CALL(*extBackupMock, LoadSystemModuleByEngine(_, _, _, _)).WillOnce(Return(nullptr)); - ret = AttachBackupExtensionContext(reinterpret_cast(&env), value.get(), nullptr); + ret = AttachBackupExtensionContext(reinterpret_cast(&env), reinterpret_cast(&ptr), nullptr); EXPECT_TRUE(ret == nullptr); } catch (...) { EXPECT_TRUE(false); @@ -780,9 +951,10 @@ HWTEST_F(ExtBackupJsTest, SUB_backup_ext_js_ExportJsContext_0100, testing::ext:: { GTEST_LOG_(INFO) << "ExtBackupJsTest-begin SUB_backup_ext_js_ExportJsContext_0100"; try { + extBackupJs->jsObj_ = nullptr; EXPECT_CALL(*extBackupMock, GetNapiEnv()).WillOnce(Return(nullptr)); extBackupJs->ExportJsContext(); - EXPECT_TRUE(extBackupJs->jsObj_ == nullptr); + EXPECT_TRUE(true); extBackupJs->jsObj_ = make_unique(); auto refMock = static_cast(extBackupJs->jsObj_.get()); diff --git a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp index 2cd98147c..fbbe9d945 100644 --- a/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_incremental_test.cpp @@ -1,17 +1,17 @@ /* -* Copyright (c) 2024-2025 Huawei Device Co., Ltd. -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ + * Copyright (c) 2024-2025 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include @@ -502,14 +502,14 @@ void ServiceIncrementalTest::TearDownTestCase() } /** -* @tc.number: SUB_ServiceIncremental_GetLocalCapabilitiesIncremental_0000 -* @tc.name: SUB_ServiceIncremental_GetLocalCapabilitiesIncremental_0000 -* @tc.desc: 测试 GetLocalCapabilitiesIncremental 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_GetLocalCapabilitiesIncremental_0000 + * @tc.name: SUB_ServiceIncremental_GetLocalCapabilitiesIncremental_0000 + * @tc.desc: 测试 GetLocalCapabilitiesIncremental 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetLocalCapabilitiesIncremental_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_GetLocalCapabilitiesIncremental_0000"; @@ -544,14 +544,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetLocalCapabilitiesIncr } /** -* @tc.number: SUB_ServiceIncremental_StartGetFdTask_0000 -* @tc.name: SUB_ServiceIncremental_StartGetFdTask_0000 -* @tc.desc: 测试 StartGetFdTask 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_StartGetFdTask_0000 + * @tc.name: SUB_ServiceIncremental_StartGetFdTask_0000 + * @tc.desc: 测试 StartGetFdTask 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_StartGetFdTask_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_StartGetFdTask_0000"; @@ -594,14 +594,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_StartGetFdTask_0000, Tes } /** -* @tc.number: SUB_ServiceIncremental_StartGetFdTask_0100 -* @tc.name: SUB_ServiceIncremental_StartGetFdTask_0100 -* @tc.desc: 测试 StartGetFdTask 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_StartGetFdTask_0100 + * @tc.name: SUB_ServiceIncremental_StartGetFdTask_0100 + * @tc.desc: 测试 StartGetFdTask 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_StartGetFdTask_0100, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_StartGetFdTask_0100"; @@ -633,14 +633,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_StartGetFdTask_0100, Tes } /** -* @tc.number: SUB_ServiceIncremental_RefreshBundleDataSize_0000 -* @tc.name: SUB_ServiceIncremental_RefreshBundleDataSize_0000 -* @tc.desc: 测试 RefreshBundleDataSize 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_RefreshBundleDataSize_0000 + * @tc.name: SUB_ServiceIncremental_RefreshBundleDataSize_0000 + * @tc.desc: 测试 RefreshBundleDataSize 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_RefreshBundleDataSize_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_RefreshBundleDataSize_0000"; @@ -684,14 +684,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_RefreshBundleDataSize_00 } /** -* @tc.number: SUB_ServiceIncremental_GetAppLocalListAndDoIncrementalBackup_0000 -* @tc.name: SUB_ServiceIncremental_GetAppLocalListAndDoIncrementalBackup_0000 -* @tc.desc: 测试 GetAppLocalListAndDoIncrementalBackup 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_GetAppLocalListAndDoIncrementalBackup_0000 + * @tc.name: SUB_ServiceIncremental_GetAppLocalListAndDoIncrementalBackup_0000 + * @tc.desc: 测试 GetAppLocalListAndDoIncrementalBackup 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetAppLocalListAndDoIncrementalBackup_0000, TestSize.Level1) { GTEST_LOG_(INFO) << @@ -723,14 +723,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetAppLocalListAndDoIncr } /** -* @tc.number: SUB_ServiceIncremental_InitIncrementalBackupSession_0000 -* @tc.name: SUB_ServiceIncremental_InitIncrementalBackupSession_0000 -* @tc.desc: 测试 InitIncrementalBackupSession 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_InitIncrementalBackupSession_0000 + * @tc.name: SUB_ServiceIncremental_InitIncrementalBackupSession_0000 + * @tc.desc: 测试 InitIncrementalBackupSession 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_InitIncrementalBackupSession_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_InitIncrementalBackupSession_0000"; @@ -773,14 +773,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_InitIncrementalBackupSes } /** -* @tc.number: SUB_ServiceIncremental_InitIncrementalBackupSession_0100 -* @tc.name: SUB_ServiceIncremental_InitIncrementalBackupSession_0100 -* @tc.desc: 测试 InitIncrementalBackupSession with errMsg的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_InitIncrementalBackupSession_0100 + * @tc.name: SUB_ServiceIncremental_InitIncrementalBackupSession_0100 + * @tc.desc: 测试 InitIncrementalBackupSession with errMsg的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_InitIncrementalBackupSession_0100, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_InitIncrementalBackupSession_0100"; @@ -831,14 +831,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_InitIncrementalBackupSes } /** -* @tc.number: SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0000 -* @tc.name: SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0000 -* @tc.desc: 测试 AppendBundlesIncrementalBackupSession 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0000 + * @tc.name: SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0000 + * @tc.desc: 测试 AppendBundlesIncrementalBackupSession 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0000, TestSize.Level1) { GTEST_LOG_(INFO) << @@ -871,14 +871,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppendBundlesIncremental } /** -* @tc.number: SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0100 -* @tc.name: SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0100 -* @tc.desc: 测试 AppendBundlesIncrementalBackupSession 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0100 + * @tc.name: SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0100 + * @tc.desc: 测试 AppendBundlesIncrementalBackupSession 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppendBundlesIncrementalBackupSession_0100, TestSize.Level1) { GTEST_LOG_(INFO) << @@ -917,14 +917,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppendBundlesIncremental } /** -* @tc.number: SUB_ServiceIncremental_PublishIncrementalFile_0000 -* @tc.name: SUB_ServiceIncremental_PublishIncrementalFile_0000 -* @tc.desc: 测试 PublishIncrementalFile 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_PublishIncrementalFile_0000 + * @tc.name: SUB_ServiceIncremental_PublishIncrementalFile_0000 + * @tc.desc: 测试 PublishIncrementalFile 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_PublishIncrementalFile_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_PublishIncrementalFile_0000"; @@ -980,14 +980,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_PublishIncrementalFile_0 } /** -* @tc.number: SUB_ServiceIncremental_PublishSAIncrementalFile_0000 -* @tc.name: SUB_ServiceIncremental_PublishSAIncrementalFile_0000 -* @tc.desc: 测试 PublishSAIncrementalFile 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_PublishSAIncrementalFile_0000 + * @tc.name: SUB_ServiceIncremental_PublishSAIncrementalFile_0000 + * @tc.desc: 测试 PublishSAIncrementalFile 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_PublishSAIncrementalFile_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_PublishSAIncrementalFile_0000"; @@ -1027,14 +1027,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_PublishSAIncrementalFile } /** -* @tc.number: SUB_ServiceIncremental_AppIncrementalFileReady_0000 -* @tc.name: SUB_ServiceIncremental_AppIncrementalFileReady_0000 -* @tc.desc: 测试 AppIncrementalFileReady 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_AppIncrementalFileReady_0000 + * @tc.name: SUB_ServiceIncremental_AppIncrementalFileReady_0000 + * @tc.desc: 测试 AppIncrementalFileReady 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppIncrementalFileReady_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_AppIncrementalFileReady_0000"; @@ -1071,14 +1071,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppIncrementalFileReady_ } /** -* @tc.number: SUB_ServiceIncremental_AppIncrementalFileReady_0100 -* @tc.name: SUB_ServiceIncremental_AppIncrementalFileReady_0100 -* @tc.desc: 测试 AppIncrementalFileReady 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_AppIncrementalFileReady_0100 + * @tc.name: SUB_ServiceIncremental_AppIncrementalFileReady_0100 + * @tc.desc: 测试 AppIncrementalFileReady 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppIncrementalFileReady_0100, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_AppIncrementalFileReady_0100"; @@ -1112,14 +1112,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppIncrementalFileReady_ } /** -* @tc.number: SUB_ServiceIncremental_AppIncrementalFileReady_0200 -* @tc.name: SUB_ServiceIncremental_AppIncrementalFileReady_0200 -* @tc.desc: 测试 AppIncrementalFileReady 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_AppIncrementalFileReady_0200 + * @tc.name: SUB_ServiceIncremental_AppIncrementalFileReady_0200 + * @tc.desc: 测试 AppIncrementalFileReady 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppIncrementalFileReady_0200, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_AppIncrementalFileReady_0200"; @@ -1205,14 +1205,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppIncrementalFileReady_ } /** -* @tc.number: SUB_ServiceIncremental_AppIncrementalDone_0000 -* @tc.name: SUB_ServiceIncremental_AppIncrementalDone_0000 -* @tc.desc: 测试 AppIncrementalDone 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_AppIncrementalDone_0000 + * @tc.name: SUB_ServiceIncremental_AppIncrementalDone_0000 + * @tc.desc: 测试 AppIncrementalDone 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppIncrementalDone_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_AppIncrementalDone_0000"; @@ -1262,14 +1262,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_AppIncrementalDone_0000, } /** -* @tc.number: SUB_ServiceIncremental_GetIncrementalFileHandle_0000 -* @tc.name: SUB_ServiceIncremental_GetIncrementalFileHandle_0000 -* @tc.desc: 测试 GetIncrementalFileHandle 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_GetIncrementalFileHandle_0000 + * @tc.name: SUB_ServiceIncremental_GetIncrementalFileHandle_0000 + * @tc.desc: 测试 GetIncrementalFileHandle 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetIncrementalFileHandle_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_GetIncrementalFileHandle_0000"; @@ -1311,14 +1311,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetIncrementalFileHandle } /** -* @tc.number: SUB_ServiceIncremental_GetIncrementalFileHandle_0100 -* @tc.name: SUB_ServiceIncremental_GetIncrementalFileHandle_0100 -* @tc.desc: 测试 GetIncrementalFileHandle 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_GetIncrementalFileHandle_0100 + * @tc.name: SUB_ServiceIncremental_GetIncrementalFileHandle_0100 + * @tc.desc: 测试 GetIncrementalFileHandle 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetIncrementalFileHandle_0100, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_GetIncrementalFileHandle_0100"; @@ -1364,14 +1364,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetIncrementalFileHandle } /** -* @tc.number: SUB_ServiceIncremental_IncrementalBackup_0000 -* @tc.name: SUB_ServiceIncremental_IncrementalBackup_0000 -* @tc.desc: 测试 IncrementalBackup 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_IncrementalBackup_0000 + * @tc.name: SUB_ServiceIncremental_IncrementalBackup_0000 + * @tc.desc: 测试 IncrementalBackup 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_IncrementalBackup_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_IncrementalBackup_0000"; @@ -1424,14 +1424,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_IncrementalBackup_0000, } /** -* @tc.number: SUB_ServiceIncremental_IncrementalBackup_0100 -* @tc.name: SUB_ServiceIncremental_IncrementalBackup_0100 -* @tc.desc: 测试 IncrementalBackup 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_IncrementalBackup_0100 + * @tc.name: SUB_ServiceIncremental_IncrementalBackup_0100 + * @tc.desc: 测试 IncrementalBackup 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_IncrementalBackup_0100, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_IncrementalBackup_0100"; @@ -1475,14 +1475,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_IncrementalBackup_0100, } /** -* @tc.number: SUB_ServiceIncremental_IncrementalBackup_0200 -* @tc.name: SUB_ServiceIncremental_IncrementalBackup_0200 -* @tc.desc: 测试 IncrementalBackup 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_IncrementalBackup_0200 + * @tc.name: SUB_ServiceIncremental_IncrementalBackup_0200 + * @tc.desc: 测试 IncrementalBackup 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_IncrementalBackup_0200, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_IncrementalBackup_0200"; @@ -1518,14 +1518,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_IncrementalBackup_0200, } /** -* @tc.number: SUB_ServiceIncremental_NotifyCallerCurAppIncrementDone_0000 -* @tc.name: SUB_ServiceIncremental_NotifyCallerCurAppIncrementDone_0000 -* @tc.desc: 测试 NotifyCallerCurAppIncrementDone 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_NotifyCallerCurAppIncrementDone_0000 + * @tc.name: SUB_ServiceIncremental_NotifyCallerCurAppIncrementDone_0000 + * @tc.desc: 测试 NotifyCallerCurAppIncrementDone 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_NotifyCallerCurAppIncrementDone_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_NotifyCallerCurAppIncrementDone_0000"; @@ -1555,14 +1555,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_NotifyCallerCurAppIncrem } /** -* @tc.number: SUB_ServiceIncremental_SendUserIdToApp_0000 -* @tc.name: SUB_ServiceIncremental_SendUserIdToApp_0000 -* @tc.desc: 测试 SendUserIdToApp 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_SendUserIdToApp_0000 + * @tc.name: SUB_ServiceIncremental_SendUserIdToApp_0000 + * @tc.desc: 测试 SendUserIdToApp 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_SendUserIdToApp_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_SendUserIdToApp_0000"; @@ -1590,14 +1590,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_SendUserIdToApp_0000, Te } /** -* @tc.number: SUB_ServiceIncremental_SetCurrentBackupSessProperties_0000 -* @tc.name: SUB_ServiceIncremental_SetCurrentBackupSessProperties_0000 -* @tc.desc: 测试 SetCurrentBackupSessProperties 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_SetCurrentBackupSessProperties_0000 + * @tc.name: SUB_ServiceIncremental_SetCurrentBackupSessProperties_0000 + * @tc.desc: 测试 SetCurrentBackupSessProperties 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_SetCurrentBackupSessProperties_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_SetCurrentBackupSessProperties_0000"; @@ -1640,14 +1640,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_SetCurrentBackupSessProp } /** -* @tc.number: SUB_ServiceIncremental_Release_0000 -* @tc.name: SUB_ServiceIncremental_Release_0000 -* @tc.desc: 测试 Release 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_Release_0000 + * @tc.name: SUB_ServiceIncremental_Release_0000 + * @tc.desc: 测试 Release 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_Release_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_Release_0000"; @@ -1682,14 +1682,14 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_Release_0000, TestSize.L } /** -* @tc.number: SUB_ServiceIncremental_SetBundleIncDataInfo_0000 -* @tc.name: SUB_ServiceIncremental_SetBundleIncDataInfo_0000 -* @tc.desc: 测试 SetBundleIncDataInfo 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_SetBundleIncDataInfo_0000 + * @tc.name: SUB_ServiceIncremental_SetBundleIncDataInfo_0000 + * @tc.desc: 测试 SetBundleIncDataInfo 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_SetBundleIncDataInfo_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_SetBundleIncDataInfo_0000"; @@ -1716,14 +1716,126 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_SetBundleIncDataInfo_000 } /** -* @tc.number: SUB_ServiceIncremental_Cancel_0000 -* @tc.name: SUB_ServiceIncremental_Cancel_0000 -* @tc.desc: 测试 Cancel 的正常/异常分支 -* @tc.size: MEDIUM -* @tc.type: FUNC -* @tc.level Level 1 -* @tc.require: issueIAKC3I -*/ + * @tc.number: SUB_ServiceIncremental_CancelTask_0000 + * @tc.name: SUB_ServiceIncremental_CancelTask_0000 + * @tc.desc: 测试 CancelTask 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_CancelTask_0000, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_CancelTask_0000"; + try { + service->CancelTask("", nullptr); + EXPECT_TRUE(true); + + auto session_ = service->session_; + service->session_ = nullptr; + service->CancelTask("", service); + service->session_ = session_; + EXPECT_TRUE(true); + + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(nullptr)); + service->CancelTask("", service); + EXPECT_TRUE(true); + + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(nullptr)); + service->CancelTask("", service); + EXPECT_TRUE(true); + + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); + EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*session, StopExtTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*connect, DisconnectBackupExtAbility()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); + service->CancelTask("", service); + EXPECT_TRUE(true); + + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); + EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*session, StopExtTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*connect, DisconnectBackupExtAbility()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP)); + EXPECT_CALL(*session, GetIsIncrementalBackup()).WillOnce(Return(false)); + service->CancelTask("", service); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceIncrementalTest-an exception occurred by CancelTask."; + } + GTEST_LOG_(INFO) << "ServiceIncrementalTest-end SUB_ServiceIncremental_CancelTask_0000"; +} + +/** + * @tc.number: SUB_ServiceIncremental_CancelTask_0100 + * @tc.name: SUB_ServiceIncremental_CancelTask_0100 + * @tc.desc: 测试 CancelTask 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_CancelTask_0100, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_CancelTask_0100"; + try { + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); + EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*session, StopExtTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*connect, DisconnectBackupExtAbility()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::BACKUP)) + .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); + EXPECT_CALL(*session, GetIsIncrementalBackup()).WillOnce(Return(true)); + service->CancelTask("", service); + EXPECT_TRUE(true); + + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); + EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*session, StopExtTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*connect, DisconnectBackupExtAbility()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE)); + EXPECT_CALL(*session, ValidRestoreDataType(_)).WillOnce(Return(false)); + service->CancelTask("", service); + EXPECT_TRUE(true); + + EXPECT_CALL(*session, GetExtConnection(_)).WillOnce(Return(connect)); + EXPECT_CALL(*connect, GetBackupExtProxy()).WillOnce(Return(svcProxy)); + EXPECT_CALL(*svcProxy, HandleClear()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, StopFwkTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*session, StopExtTimer(_)).WillOnce(Return(false)); + EXPECT_CALL(*connect, DisconnectBackupExtAbility()).WillOnce(Return(BError(BError::Codes::OK).GetCode())); + EXPECT_CALL(*session, GetScenario()).WillOnce(Return(IServiceReverse::Scenario::RESTORE)) + .WillOnce(Return(IServiceReverse::Scenario::UNDEFINED)); + EXPECT_CALL(*session, ValidRestoreDataType(_)).WillOnce(Return(true)); + service->CancelTask("", service); + EXPECT_TRUE(true); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceIncrementalTest-an exception occurred by CancelTask."; + } + GTEST_LOG_(INFO) << "ServiceIncrementalTest-end SUB_ServiceIncremental_CancelTask_0100"; +} + +/** + * @tc.number: SUB_ServiceIncremental_Cancel_0000 + * @tc.name: SUB_ServiceIncremental_Cancel_0000 + * @tc.desc: 测试 Cancel 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_Cancel_0000, TestSize.Level1) { GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_Cancel_0000"; @@ -1812,4 +1924,61 @@ HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_Cancel_0100, TestSize.Le } GTEST_LOG_(INFO) << "ServiceIncrementalTest-end SUB_ServiceIncremental_Cancel_0100"; } + +/** + * @tc.number: SUB_ServiceIncremental_GetExtensionMutex_0000 + * @tc.name: SUB_ServiceIncremental_GetExtensionMutex_0000 + * @tc.desc: 测试 GetExtensionMutex 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_GetExtensionMutex_0000, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_GetExtensionMutex_0000"; + try { + BundleName bundleName = "bundleName"; + service->backupExtMutexMap_.clear(); + auto ret = service->GetExtensionMutex(bundleName); + EXPECT_TRUE(ret != nullptr); + + ret = service->GetExtensionMutex(bundleName); + EXPECT_TRUE(ret != nullptr); + service->backupExtMutexMap_.clear(); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceIncrementalTest-an exception occurred by GetExtensionMutex."; + } + GTEST_LOG_(INFO) << "ServiceIncrementalTest-end SUB_ServiceIncremental_GetExtensionMutex_0000"; +} + +/** + * @tc.number: SUB_ServiceIncremental_RemoveExtensionMutex_0000 + * @tc.name: SUB_ServiceIncremental_RemoveExtensionMutex_0000 + * @tc.desc: 测试 RemoveExtensionMutex 的正常/异常分支 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: issueIAKC3I + */ +HWTEST_F(ServiceIncrementalTest, SUB_ServiceIncremental_RemoveExtensionMutex_0000, TestSize.Level1) +{ + GTEST_LOG_(INFO) << "ServiceIncrementalTest-begin SUB_ServiceIncremental_RemoveExtensionMutex_0000"; + try { + BundleName bundleName = "bundleName"; + service->backupExtMutexMap_.clear(); + service->RemoveExtensionMutex(bundleName); + EXPECT_TRUE(true); + + service->backupExtMutexMap_[bundleName] = nullptr; + service->RemoveExtensionMutex(bundleName); + EXPECT_TRUE(true); + service->backupExtMutexMap_.clear(); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "ServiceIncrementalTest-an exception occurred by RemoveExtensionMutex."; + } + GTEST_LOG_(INFO) << "ServiceIncrementalTest-end SUB_ServiceIncremental_RemoveExtensionMutex_0000"; +} } \ No newline at end of file -- Gitee