From dd20cc314dec3f29a19f42ac25280bd4bc5103c4 Mon Sep 17 00:00:00 2001 From: wangpggg Date: Wed, 7 Aug 2024 14:54:19 +0800 Subject: [PATCH] add ut to cover branches Signed-off-by: wangpeng --- .../js_file_access_ext_ability_other_test.cpp | 462 ++++++++++++++++++ test/unittest/mock/assistant.h | 7 + test/unittest/mock/js_native_api_mock.cpp | 17 + 3 files changed, 486 insertions(+) diff --git a/test/unittest/js_file_access_ext_ability_other_test.cpp b/test/unittest/js_file_access_ext_ability_other_test.cpp index 9230e98a..5bdc9777 100644 --- a/test/unittest/js_file_access_ext_ability_other_test.cpp +++ b/test/unittest/js_file_access_ext_ability_other_test.cpp @@ -479,4 +479,466 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ConstructQueryAr GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ConstructQueryArg_0001"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_StartWatcher_0000 + * @tc.name: js_file_access_ext_ability_StartWatcher_0000 + * @tc.desc: Test function of StartWatcher interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StartWatcher_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StartWatcher_0000"; + try { + EXPECT_NE(ability, nullptr); + Uri uri(""); + + // 模拟调用CallJsMethod失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->StartWatcher(uri); + EXPECT_EQ(result, EINVAL); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StartWatcher_0000"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_StartWatcher_0001 + * @tc.name: js_file_access_ext_ability_StartWatcher_0001 + * @tc.desc: Test function of StartWatcher interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StartWatcher_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StartWatcher_0001"; + try { + EXPECT_NE(ability, nullptr); + napi_value rslt = nullptr; + Uri uri(""); + ability->jsObj_ = make_shared(); + + // 模拟获取nativeUri为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->StartWatcher(uri); + EXPECT_EQ(result, false); + + // 模拟创建FuncCallback失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_function(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + result = ability->StartWatcher(uri); + EXPECT_EQ(result, false); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StartWatcher_0001"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_StartWatcher_0002 + * @tc.name: js_file_access_ext_ability_StartWatcher_0002 + * @tc.desc: Test function of StartWatcher interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StartWatcher_0002, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StartWatcher_0002"; + try { + EXPECT_NE(ability, nullptr); + napi_value rslt = nullptr; + Uri uri(""); + ability->jsObj_ = make_shared(); + + // 模拟获取ret失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(DoAll(SetArgPointee(E_IPCS), Return(napi_ok))); + auto result = ability->StartWatcher(uri); + EXPECT_EQ(result, E_IPCS); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StartWatcher_0002"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_StartWatcher_0003 + * @tc.name: js_file_access_ext_ability_StartWatcher_0003 + * @tc.desc: Test function of StartWatcher interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StartWatcher_0003, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StartWatcher_0003"; + try { + EXPECT_NE(ability, nullptr); + napi_value rslt = nullptr; + Uri uri(""); + string path = "test"; + ability->jsObj_ = make_shared(); + + // 模拟StartWatcher调用成功 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(DoAll(SetArgPointee(ERR_OK), Return(napi_ok))); + auto result = ability->StartWatcher(uri); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StartWatcher_0003"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_StopWatcher_0000 + * @tc.name: js_file_access_ext_ability_StopWatcher_0000 + * @tc.desc: Test function of StopWatcher interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StopWatcher_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StopWatcher_0000"; + try { + EXPECT_NE(ability, nullptr); + Uri uri(""); + + // 模拟调用CallJsMethod失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->StopWatcher(uri); + EXPECT_EQ(result, EINVAL); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StopWatcher_0000"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_StopWatcher_0001 + * @tc.name: js_file_access_ext_ability_StopWatcher_0001 + * @tc.desc: Test function of StopWatcher interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StopWatcher_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StopWatcher_0001"; + try { + EXPECT_NE(ability, nullptr); + Uri uri(""); + ability->jsObj_ = make_shared(); + + // 模拟获取nativeUri为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->StopWatcher(uri); + EXPECT_EQ(result, false); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StopWatcher_0001"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_StopWatcher_0002 + * @tc.name: js_file_access_ext_ability_StopWatcher_0002 + * @tc.desc: Test function of StopWatcher interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StopWatcher_0002, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StopWatcher_0002"; + try { + EXPECT_NE(ability, nullptr); + napi_value rslt = nullptr; + Uri uri(""); + ability->jsObj_ = make_shared(); + + // 模拟获取ret失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(DoAll(SetArgPointee(E_IPCS), Return(napi_ok))); + auto result = ability->StopWatcher(uri); + EXPECT_EQ(result, E_IPCS); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StopWatcher_0002"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_StopWatcher_0003 + * @tc.name: js_file_access_ext_ability_StopWatcher_0003 + * @tc.desc: Test function of StopWatcher interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_StopWatcher_0003, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_StopWatcher_0003"; + try { + EXPECT_NE(ability, nullptr); + napi_value rslt = nullptr; + Uri uri(""); + string path = "test"; + ability->jsObj_ = make_shared(); + + // 模拟StopWatcher调用成功 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(DoAll(SetArgPointee(ERR_OK), Return(napi_ok))); + auto result = ability->StopWatcher(uri); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_StopWatcher_0003"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_FuncCallback_0000 + * @tc.name: js_file_access_ext_ability_FuncCallback_0000 + * @tc.desc: Test function of FuncCallback interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_FuncCallback_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_FuncCallback_0000"; + try { + EXPECT_NE(ability, nullptr); + int value = 0; + napi_env env = nullptr; + napi_callback_info info = nullptr; + + auto result = ability->FuncCallback(env, info); + EXPECT_TRUE(result == nullptr); + + env = reinterpret_cast(&value); + EXPECT_CALL(*insMoc, napi_get_undefined(_, _)).WillOnce(Return(napi_ok)); + result = ability->FuncCallback(env, info); + EXPECT_TRUE(result == nullptr); + + info = reinterpret_cast(&value); + EXPECT_CALL(*insMoc, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*insMoc, napi_get_undefined(_, _)).WillOnce(Return(napi_ok)); + result = ability->FuncCallback(env, info); + EXPECT_TRUE(result == nullptr); + + EXPECT_CALL(*insMoc, napi_get_cb_info(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee((0)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_undefined(_, _)).WillOnce(Return(napi_ok)); + result = ability->FuncCallback(env, info); + EXPECT_TRUE(result == nullptr); + + EXPECT_CALL(*insMoc, napi_get_cb_info(_, _, _, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*insMoc, napi_get_undefined(_, _)).WillOnce(Return(napi_ok)); + result = ability->FuncCallback(env, info); + EXPECT_TRUE(result == nullptr); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_FuncCallback_0000"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ParserQueryFileJsResult_0000 + * @tc.name: js_file_access_ext_ability_ParserQueryFileJsResult_0000 + * @tc.desc: Test function of ParserQueryFileJsResult interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ParserQueryFileJsResult_0000, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ParserQueryFileJsResult_0000"; + try { + EXPECT_NE(ability, nullptr); + napi_value rslt = nullptr; + napi_env env = nullptr; + napi_value nativeValue = {}; + JsFileAccessExtAbility::Value> value; + + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->ParserQueryFileJsResult(env, nativeValue, value); + EXPECT_FALSE(result); + + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + result = ability->ParserQueryFileJsResult(env, nativeValue, value); + EXPECT_FALSE(result); + + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg)); + result = ability->ParserQueryFileJsResult(env, nativeValue, value); + EXPECT_FALSE(result); + + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ParserQueryFileJsResult(env, nativeValue, value); + EXPECT_TRUE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ParserQueryFileJsResult_0000"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ParserQueryFileJsResult_0001 + * @tc.name: js_file_access_ext_ability_ParserQueryFileJsResult_0001 + * @tc.desc: Test function of ParserQueryFileJsResult interface for ERROR. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ParserQueryFileJsResult_0001, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ParserQueryFileJsResult_0001"; + try { + EXPECT_NE(ability, nullptr); + napi_value rslt = nullptr; + napi_env env = nullptr; + napi_value nativeValue = {}; + JsFileAccessExtAbility::Value> value; + + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(1), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->ParserQueryFileJsResult(env, nativeValue, value); + EXPECT_FALSE(result); + + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(1), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + result = ability->ParserQueryFileJsResult(env, nativeValue, value); + EXPECT_FALSE(result); + + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(1), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + result = ability->ParserQueryFileJsResult(env, nativeValue, value); + EXPECT_TRUE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ParserQueryFileJsResult_0001"; } \ No newline at end of file diff --git a/test/unittest/mock/assistant.h b/test/unittest/mock/assistant.h index e2746383..8e320261 100644 --- a/test/unittest/mock/assistant.h +++ b/test/unittest/mock/assistant.h @@ -56,6 +56,9 @@ public: virtual napi_status napi_create_array_with_length(napi_env, size_t, napi_value*) = 0; virtual napi_status napi_create_double(napi_env, double, napi_value*) = 0; virtual napi_status napi_set_named_property(napi_env, napi_value, const char*, napi_value) = 0; + virtual napi_status napi_create_function(napi_env, const char*, size_t, napi_callback, void*, napi_value*) = 0; + virtual napi_status napi_get_cb_info(napi_env, napi_callback_info, size_t*, napi_value*, napi_value*, void**) = 0; + virtual napi_status napi_get_undefined(napi_env, napi_value*) = 0; public: static inline std::shared_ptr ins_ = nullptr; }; @@ -87,6 +90,10 @@ public: 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_METHOD6(napi_create_function, napi_status(napi_env, const char*, size_t, napi_callback, void*, napi_value*)); + MOCK_METHOD6(napi_get_cb_info, napi_status(napi_env, napi_callback_info, size_t*, napi_value*, napi_value*, + void**)); + MOCK_METHOD2(napi_get_undefined, napi_status(napi_env, napi_value*)); }; } // End of namespace FileAccessFwk diff --git a/test/unittest/mock/js_native_api_mock.cpp b/test/unittest/mock/js_native_api_mock.cpp index 039aeb46..5d79a197 100644 --- a/test/unittest/mock/js_native_api_mock.cpp +++ b/test/unittest/mock/js_native_api_mock.cpp @@ -126,4 +126,21 @@ napi_status napi_create_double(napi_env env, double value, napi_value* result) napi_status napi_set_named_property(napi_env env, napi_value object, const char* utf8Name, napi_value value) { return OHOS::FileAccessFwk::Assistant::ins_->napi_set_named_property(env, object, utf8Name, value); +} + +napi_status napi_create_function(napi_env env, const char* utf8name, size_t length, napi_callback cb, void* data, + napi_value* result) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_create_function(env, utf8name, length, cb, data, result); +} + +napi_status napi_get_cb_info(napi_env env, napi_callback_info cbinfo, size_t* argc, napi_value* argv, + napi_value* thisArg, void** data) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_get_cb_info(env, cbinfo, argc, argv, thisArg, data); +} + +napi_status napi_get_undefined(napi_env env, napi_value* result) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_get_undefined(env, result); } \ No newline at end of file -- Gitee