From fb54a1ecde909be019288b3a26754cdb7e59d60b Mon Sep 17 00:00:00 2001 From: dengrenqi <1069093439@qq.com> Date: Tue, 2 Jul 2024 16:01:10 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=B4=E6=B5=8B?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/backup_sa/src/module_ipc/service.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index 78677ef60..028df4347 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -410,6 +410,7 @@ ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, auto restoreBundleNames = SvcRestoreDepsManager::GetInstance().GetRestoreBundleNames(restoreInfos, restoreType); if (restoreBundleNames.empty()) { session_->DecreaseSessionCnt(); + HILOGW("restoreBundleNames is empty.") return BError(BError::Codes::OK); } session_->AppendBundles(restoreBundleNames); -- Gitee From 050e9a384cccd86f794cc2fabcdd3858754da58e Mon Sep 17 00:00:00 2001 From: dengrenqi <1069093439@qq.com> Date: Tue, 2 Jul 2024 16:36:49 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=B4=E6=B5=8B?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- services/backup_sa/src/module_ipc/service.cpp | 2 +- tests/unittests/backup_sa/module_ipc/service_stub_test.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index 028df4347..858607e48 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -410,7 +410,7 @@ ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, auto restoreBundleNames = SvcRestoreDepsManager::GetInstance().GetRestoreBundleNames(restoreInfos, restoreType); if (restoreBundleNames.empty()) { session_->DecreaseSessionCnt(); - HILOGW("restoreBundleNames is empty.") + HILOGW("restoreBundleNames is empty.");; return BError(BError::Codes::OK); } session_->AppendBundles(restoreBundleNames); diff --git a/tests/unittests/backup_sa/module_ipc/service_stub_test.cpp b/tests/unittests/backup_sa/module_ipc/service_stub_test.cpp index 71765843c..7bad49ed1 100644 --- a/tests/unittests/backup_sa/module_ipc/service_stub_test.cpp +++ b/tests/unittests/backup_sa/module_ipc/service_stub_test.cpp @@ -442,7 +442,7 @@ HWTEST_F(ServiceStubTest, SUB_backup_sa_ServiceStub_AppDone_0100, testing::ext:: EXPECT_CALL(*service, AppDone(_)).WillOnce(Return(0)); EXPECT_CALL(*messageParcelMock, WriteInt32(_)).WillOnce(Return(false)); err = service->CmdAppDone(data, reply); - EXPECT_EQ(err, BError(BError::Codes::SA_BROKEN_IPC)); + EXPECT_EQ(err, BError(BError::Codes::SA_INVAL_ARG)); EXPECT_CALL(*messageParcelMock, ReadBool(_)).WillOnce(Return(true)); EXPECT_CALL(*service, AppDone(_)).WillOnce(Return(0)); -- Gitee From b7d431333f050ef8088263f2cd8df52bdeb59593 Mon Sep 17 00:00:00 2001 From: dengrenqi <1069093439@qq.com> Date: Mon, 29 Jul 2024 14:23:58 +0800 Subject: [PATCH 3/3] =?UTF-8?q?UT=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dengrenqi <1069093439@qq.com> --- tests/mock/cJson/include/cJsonMock.h | 58 ++ tests/mock/cJson/src/cJsonMock.cpp | 69 ++ tests/unittests/backup_utils/BUILD.gn | 54 ++ ...son_service_disposal_config_other_test.cpp | 620 ++++++++++++++++++ .../b_jsonutil/b_jsonutil_test.cpp | 41 ++ 5 files changed, 842 insertions(+) create mode 100644 tests/mock/cJson/include/cJsonMock.h create mode 100644 tests/mock/cJson/src/cJsonMock.cpp create mode 100644 tests/unittests/backup_utils/b_json/b_json_service_disposal_config_other_test.cpp diff --git a/tests/mock/cJson/include/cJsonMock.h b/tests/mock/cJson/include/cJsonMock.h new file mode 100644 index 000000000..6d47050cd --- /dev/null +++ b/tests/mock/cJson/include/cJsonMock.h @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2024 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. + */ +#ifndef OHOS_FILEMGMT_BACKUP_CJSON_MOCK_H +#define OHOS_FILEMGMT_BACKUP_CJSON_MOCK_H + +#include +#include + +namespace OHOS::FileManagement::Backup { +class CJson { +public: + CJson() = default; + virtual ~CJson() = default; + +public: + virtual cJSON *cJSON_CreateArray() = 0; + virtual cJSON *cJSON_CreateObject() = 0; + virtual char *cJSON_Print(const cJSON *item) = 0; + virtual cJSON *cJSON_Parse(const char *value) = 0; + virtual cJSON *cJSON_GetObjectItem(const cJSON *const object, const char *const string) = 0; + virtual void cJSON_Delete(cJSON *item) = 0; + virtual cJSON_bool cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item) = 0; + virtual int cJSON_GetArraySize(const cJSON *array) = 0; + virtual cJSON_bool cJSON_AddItemToArray(cJSON *array, cJSON *item); + virtual cJSON *cJSON_AddStringToObject(cJSON *const object, const char *const name, const char *const string); + +public: + static inline std::shared_ptr cJsonPtr = nullptr; +}; + +class CJsonMock : public CJson { +public: + MOCK_METHOD3(cJSON_AddItemToObject, cJSON_bool(cJSON *object, const char *string, cJSON *item)); + MOCK_METHOD1(cJSON_Delete, void(cJSON *item)); + MOCK_METHOD0(cJSON_CreateObject, cJSON *()); + MOCK_METHOD0(cJSON_CreateArray, cJSON *()); + MOCK_METHOD1(cJSON_Print, char *(const cJSON *item)); + MOCK_METHOD1(cJSON_Parse, cJSON *(const char *value)); + MOCK_METHOD2(cJSON_GetObjectItem, cJSON *(const cJSON *const object, const char *const string)); + MOCK_METHOD1(cJSON_GetArraySize, int(const cJSON *array)); + MOCK_METHOD2(cJSON_AddItemToArray, cJSON_bool(cJSON *array, cJSON *item)); + MOCK_METHOD3(cJSON_AddStringToObject, + cJSON *(cJSON *const object, const char *const name, const char *const string)); +}; +} // namespace OHOS::FileManagement::Backup +#endif \ No newline at end of file diff --git a/tests/mock/cJson/src/cJsonMock.cpp b/tests/mock/cJson/src/cJsonMock.cpp new file mode 100644 index 000000000..8aa2427dd --- /dev/null +++ b/tests/mock/cJson/src/cJsonMock.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2024 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 + +#include "cJsonMock.h" + +using namespace OHOS::FileManagement::Backup; + +CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void) +{ + return CJson::cJsonPtr->cJSON_CreateArray(); +} + +CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void) +{ + return CJson::cJsonPtr->cJSON_CreateObject(); +} + +CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item) +{ + return CJson::cJsonPtr->cJSON_Print(item); +} + +CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value) +{ + return CJson::cJsonPtr->cJSON_Parse(value); +} + +CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON *const object, const char *const string) +{ + return CJson::cJsonPtr->cJSON_GetObjectItem(object, string); +} + +CJSON_PUBLIC(void) cJSON_Delete(cJSON *item) +{ + return CJson::cJsonPtr->cJSON_Delete(item); +} + +CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item) +{ + return CJson::cJsonPtr->cJSON_AddItemToObject(object, string, item); +} + +CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array) +{ + return CJson::cJsonPtr->cJSON_GetArraySize(array); +} + +CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item) +{ + return CJson::cJsonPtr->cJSON_AddItemToArray(array, item); +} + +CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string) +{ + return CJson::cJsonPtr->cJSON_AddStringToObject(object, name, string); +} \ No newline at end of file diff --git a/tests/unittests/backup_utils/BUILD.gn b/tests/unittests/backup_utils/BUILD.gn index c2eea6177..2b54e05c8 100644 --- a/tests/unittests/backup_utils/BUILD.gn +++ b/tests/unittests/backup_utils/BUILD.gn @@ -103,9 +103,11 @@ ohos_unittest("b_json_test") { sources = [ "${path_backup}/utils/src/b_json/b_json_entity_extension_config.cpp", + "${path_backup}/utils/src/b_json/b_json_service_disposal_config.cpp", "b_json/b_json_cached_entity_test.cpp", "b_json/b_json_entity_ext_manage_test.cpp", "b_json/b_json_entity_extension_config_test.cpp", + "b_json/b_json_service_disposal_config_test.cpp", "b_json/b_report_entity_test.cpp", ] sources += backup_mock_parameter_src @@ -125,6 +127,7 @@ ohos_unittest("b_json_test") { ] external_deps = [ + "cJSON:cjson", "c_utils:utils", "hilog:libhilog", ] @@ -241,12 +244,63 @@ ohos_unittest("b_process_test") { use_exceptions = true } +ohos_unittest("b_json_other_test") { + branch_protector_ret = "pac_ret" + + module_out_path = path_module_out_tests + + sources = [ + "${path_backup}/tests/mock/cJson/src/cJsonMock.cpp", + "${path_backup}/tests/unittests/backup_utils/b_json/b_json_service_disposal_config_other_test.cpp", + "${path_backup}/utils/src/b_json/b_json_service_disposal_config.cpp", + ] + sources += backup_mock_parameter_src + + include_dirs = [ + "${path_backup}/utils", + "${path_base}/include", + "${path_backup}/tests/mock/cJson/include", + ] + include_dirs += backup_mock_parameter_include_dirs + + deps = [ + "${path_backup}/interfaces/innerkits/native:sandbox_helper_native", + "${path_backup}/tests/utils:backup_test_utils", + "${path_backup}/utils/:backup_utils", + "${path_googletest}:gmock_main", + "${path_jsoncpp}:jsoncpp", + ] + + external_deps = [ + "cJSON:cjson", + "c_utils:utils", + "hilog:libhilog", + ] + + defines = [ + "LOG_TAG=\"app_file_service\"", + "LOG_DOMAIN=0xD004303", + "private = public", + "protected = public", + ] + + sanitize = { + integer_overflow = true + cfi = true + cfi_cross_dso = true + debug = false + } + + use_exceptions = true +} + group("backup_test") { testonly = true deps = [ ":b_error_test", ":b_file_test", + ":b_json_other_test", ":b_json_test", ":b_process_test", ":b_tarball_cmdline_test", diff --git a/tests/unittests/backup_utils/b_json/b_json_service_disposal_config_other_test.cpp b/tests/unittests/backup_utils/b_json/b_json_service_disposal_config_other_test.cpp new file mode 100644 index 000000000..aa2e944d6 --- /dev/null +++ b/tests/unittests/backup_utils/b_json/b_json_service_disposal_config_other_test.cpp @@ -0,0 +1,620 @@ +/* + * Copyright (c) 2024 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 +#include +#include +#include +#include +#include +#include + +#include "json/value.h" +#include + +#include "b_error/b_error.h" +#include "b_error/b_excep_utils.h" +#include "b_json/b_json_service_disposal_config.h" +#include "cJsonMock.h" + +namespace OHOS::FileManagement::Backup { +using namespace std; +using namespace testing; + +namespace { +const string PATH = "/data/service/el2/100/backup/"; +const string CONFIG_NAME = "RestoreDisposalConfig.json"; +} // namespace + +class BJsonServiceDisposalConfigTest : public testing::Test { +public: + // 所有测试用例执行之前执行 + static void SetUpTestCase(void); + // 所有测试用例执行之后执行 + static void TearDownTestCase(void); + // 每次测试用例执行之前执行 + void SetUp(); + // 每次测试用例执行之后执行 + void TearDown(); + + static inline shared_ptr cJsonMock = nullptr; +}; + +void BJsonServiceDisposalConfigTest::TearDown() {} + +void BJsonServiceDisposalConfigTest::SetUp() +{ + string filePath = PATH + CONFIG_NAME; + bool result = remove(filePath.c_str()); + if (result) { + GTEST_LOG_(INFO) << "delete file success."; + } else { + GTEST_LOG_(INFO) << "delete file failed."; + } +} + +void BJsonServiceDisposalConfigTest::SetUpTestCase() +{ + cJsonMock = make_shared(); + CJson::cJsonPtr = cJsonMock; +} + +void BJsonServiceDisposalConfigTest::TearDownTestCase() +{ + CJson::cJsonPtr = nullptr; + cJsonMock = nullptr; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0102 + * @tc.name: SUB_Disposal_Config_Test_0102 + * @tc.desc: 测试配置文件存在的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, SUB_Disposal_Config_Test_0102, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin SUB_Disposal_Config_Test_0102"; + try { + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end SUB_Disposal_Config_Test_0102"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0103 + * @tc.name: SUB_Disposal_Config_Test_0103 + * @tc.desc: 测试配置文件存在的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, SUB_Disposal_Config_Test_0103, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin SUB_Disposal_Config_Test_0103"; + try { + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + BJsonDisposalConfig config; + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end SUB_Disposal_Config_Test_0103"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0104 + * @tc.name: SUB_Disposal_Config_Test_0104 + * @tc.desc: 测试配置文件存在的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, SUB_Disposal_Config_Test_0104, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin SUB_Disposal_Config_Test_0104"; + try { + int cjson = 0; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end SUB_Disposal_Config_Test_0104"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0202 + * @tc.name: Disposal_Config_Test_0202 + * @tc.desc: 测试写入失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0202, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0202"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0202"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0203 + * @tc.name: Disposal_Config_Test_0203 + * @tc.desc: 测试写入失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0203, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0203"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0203"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0204 + * @tc.name: Disposal_Config_Test_0204 + * @tc.desc: 测试写入失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0204, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0204"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0204"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0205 + * @tc.name: Disposal_Config_Test_0205 + * @tc.desc: 测试写入失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0205, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0205"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0205"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0303 + * @tc.name: Disposal_Config_Test_0303 + * @tc.desc: 测试删除失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0303, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0303"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetArraySize(_)).WillOnce(Return(0)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retDel = config.DeleteFromDisposalConfigFile(bundleName); + EXPECT_FALSE(retDel); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0303"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0304 + * @tc.name: Disposal_Config_Test_0304 + * @tc.desc: 测试删除失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0304, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0304"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + bool retDel = config.DeleteFromDisposalConfigFile(bundleName); + EXPECT_FALSE(retDel); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0304"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0305 + * @tc.name: Disposal_Config_Test_0305 + * @tc.desc: 测试删除失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0305, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0305"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retDel = config.DeleteFromDisposalConfigFile(bundleName); + EXPECT_FALSE(retDel); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0305"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0402 + * @tc.name: Disposal_Config_Test_0402 + * @tc.desc: 测试判断失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0402, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0402"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retIf = config.IfBundleNameInDisposalConfigFile(bundleName); + EXPECT_FALSE(retIf); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0402"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0403 + * @tc.name: Disposal_Config_Test_0403 + * @tc.desc: 测试判断失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0403, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0403"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + bool retIf = config.IfBundleNameInDisposalConfigFile(bundleName); + EXPECT_FALSE(retIf); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0403"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0502 + * @tc.name: Disposal_Config_Test_0502 + * @tc.desc: 测试获取失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0502, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0502"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + vector bundleNameList = config.GetBundleNameFromConfigFile(); + bool result = false; + if (bundleNameList.size() == 1) { + result = true; + } + EXPECT_FALSE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0502"; +} + +/* * + * @tc.number: SUB_Disposal_Config_Test_0503 + * @tc.name: Disposal_Config_Test_0503 + * @tc.desc: 测试获取失败的情况 + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 1 + * @tc.require: IAAMIK + */ +HWTEST_F(BJsonServiceDisposalConfigTest, Disposal_Config_Test_0503, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-begin Disposal_Config_Test_0503"; + try { + string filePath = PATH + CONFIG_NAME; + int cjson = 0; + string str = "test"; + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateArray()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToObject(_, _, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + BJsonDisposalConfig config; + EXPECT_EQ(access(filePath.c_str(), F_OK), 0); + const string bundleName = "test1"; + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_GetObjectItem(_, _)).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_CreateObject()).WillOnce(Return(reinterpret_cast(&cjson))); + EXPECT_CALL(*cJsonMock, cJSON_AddStringToObject(_, _, _)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_AddItemToArray(_, _)).WillOnce(Return(true)); + EXPECT_CALL(*cJsonMock, cJSON_Print(_)).WillOnce(Return(nullptr)); + EXPECT_CALL(*cJsonMock, cJSON_Delete(_)).WillOnce(Return()); + bool retAdd = config.AppendIntoDisposalConfigFile(bundleName); + EXPECT_FALSE(retAdd); + EXPECT_CALL(*cJsonMock, cJSON_Parse(_)).WillOnce(Return(nullptr)); + vector bundleNameList = config.GetBundleNameFromConfigFile(); + bool result = false; + if (bundleNameList.size() == 1) { + result = true; + } + EXPECT_FALSE(result); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-an exception occurred by construction."; + } + GTEST_LOG_(INFO) << "BJsonServiceDisposalConfigTest-end Disposal_Config_Test_0503"; +} +} // namespace OHOS::FileManagement::Backup \ No newline at end of file diff --git a/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_test.cpp b/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_test.cpp index 48ac9af1b..2fc8b0f7a 100644 --- a/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_test.cpp +++ b/tests/unittests/backup_utils/b_jsonutil/b_jsonutil_test.cpp @@ -103,4 +103,45 @@ HWTEST_F(BJsonUtilTest, b_jsonutil_BuildBundleInfos_0100, testing::ext::TestSize } GTEST_LOG_(INFO) << "BJsonUtilTest-end b_dir_BuildBundleInfos_0100"; } + +/** + * @tc.number: b_jsonutil_BuildBundleInfos_0101 + * @tc.name: b_jsonutil_BuildBundleInfos_0101 + * @tc.desc: Test function of BuildBundleInfos interface for SUCCESS. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 0 + * @tc.require: I6F3GV + */ +HWTEST_F(BJsonUtilTest, b_jsonutil_BuildBundleInfos_0101, testing::ext::TestSize.Level0) +{ + GTEST_LOG_(INFO) << "BJsonUtilTest-begin BuildBundleInfos_0101"; + try { + std::vector bundleNames; + std::string bundleName = "com.hos.app01:1"; + std::string bundleName1 = "com.hos.app02"; + bundleNames.push_back(bundleName); + bundleNames.push_back(bundleName1); + std::string pattern = ":"; + std::vector detailInfos; + std::string detail01 = "{ + "infos" : [ { + "details" : [ { + "detail" : [ { "source" : "com.ohos.app01", "target" : "com.hos.app01" } ], + "type" : "app_mapping_relation" } ], + "type" : "broadcast" } ] + }"; + detailInfos.push_back(detail01); + int32_t userId = 100; + std::vector realBundleNames; + std::map> bundleNameDetailMap = + BJsonUtil::BuildBundleInfos(bundleNames, detailInfos, realBundleNames, userId); + bundleNameDetailMap + EXPECT_EQ(0, bundleNameDetailMap.size()); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(INFO) << "BJsonUtilTest-an exception occurred."; + } + GTEST_LOG_(INFO) << "BJsonUtilTest-end b_jsonutil_BuildBundleInfos_0101"; +} } // namespace OHOS::FileManagement::Backup \ No newline at end of file -- Gitee