diff --git a/test/dslm_unit_test/BUILD.gn b/test/dslm_unit_test/BUILD.gn index b25fa58ab5823fac044ded84b10adf2752de116b..552aedf6e8e4eb73a10dbdde907bf4af5d91aaa0 100644 --- a/test/dslm_unit_test/BUILD.gn +++ b/test/dslm_unit_test/BUILD.gn @@ -47,12 +47,12 @@ if (os_level == "standard") { module_out_path = "${part_name}/${target_name}" sources = [ - "../../baselib/msglib/src/utils/messenger_utils.c", "../../baselib/utils/src/utils_work_queue.c", "../../oem_property/ohos/standard/dslm_ohos_credential.c", "../../services/dfx/dslm_bigdata.cpp", "../../services/dfx/dslm_hidumper.c", "../../services/dfx/dslm_hitrace.cpp", + "../../services/msg/dslm_messenger_wrapper.c", "../../services/sa/common/dslm_rpc_process.c", "dslm_baselib_utils_test.cpp", "dslm_memory_mock.cpp", @@ -88,7 +88,6 @@ if (os_level == "standard") { "../../oem_property/ohos/standard:dslm_ohos_cred_obj", "../../services/common:service_common_obj", "../../services/dslm:service_dslm_test_obj", - "../../services/msg:service_msg_obj", "//third_party/googletest:gmock", ] diff --git a/test/dslm_unit_test/dslm_baselib_utils_test.cpp b/test/dslm_unit_test/dslm_baselib_utils_test.cpp index cc63c477c7571a5b5b69c519b3802e5e45bf863f..fc427ee7d9b2b3420666fe8d39603fb9b4f9e53d 100644 --- a/test/dslm_unit_test/dslm_baselib_utils_test.cpp +++ b/test/dslm_unit_test/dslm_baselib_utils_test.cpp @@ -253,6 +253,10 @@ HWTEST_F(DslmBaselibUtilsTest, Base64UrlDecodeApp_case1, TestSize.Level0) { uint8_t src[] = {'a', '-', '_', 'd', '\0'}; uint8_t *to = nullptr; + { + int32_t ret = Base64UrlDecodeApp(nullptr, nullptr); + EXPECT_EQ(0, ret); + } { int32_t ret = Base64UrlDecodeApp(nullptr, &to); @@ -280,6 +284,11 @@ HWTEST_F(DslmBaselibUtilsTest, Base64DecodeApp_case1, TestSize.Level0) { uint8_t *to = nullptr; + { + int32_t ret = Base64DecodeApp(nullptr, nullptr); + EXPECT_EQ(0, ret); + } + { int32_t ret = Base64DecodeApp(nullptr, &to); EXPECT_EQ(0, ret); @@ -361,6 +370,7 @@ HWTEST_F(DslmBaselibUtilsTest, DestroyJson_case1, TestSize.Level0) DslmJsonHandle handle = DslmCreateJson(str); DslmDestroyJson(nullptr); + DslmAddFieldBoolToJson(nullptr, nullptr, true); DslmAddFieldBoolToJson(nullptr, field, true); DslmAddFieldIntToJson(nullptr, field, 0); DslmAddFieldIntArrayToJson(nullptr, field, arr, sizeof(arr)); @@ -375,6 +385,21 @@ HWTEST_F(DslmBaselibUtilsTest, DestroyJson_case1, TestSize.Level0) EXPECT_EQ(0, ret); } + { + uint32_t ret = DslmGetJsonFieldIntArray(nullptr, nullptr, nullptr, 0); + EXPECT_EQ(0U, ret); + } + + { + uint32_t ret = DslmGetJsonFieldIntArray(handle, nullptr, nullptr, 0); + EXPECT_EQ(0U, ret); + } + + { + uint32_t ret = DslmGetJsonFieldIntArray(handle, str, nullptr, 0); + EXPECT_EQ(0U, ret); + } + { uint32_t ret = DslmGetJsonFieldIntArray(nullptr, str, arr, sizeof(arr)); EXPECT_EQ(0U, ret); diff --git a/test/dslm_unit_test/dslm_msg_interface_mock.cpp b/test/dslm_unit_test/dslm_msg_interface_mock.cpp index 84e04d11edc576fa229e507d3da7f6c7e36cbd19..c40485c25b2c2e2fe1f6bb2eac5c4a41cacc4b88 100644 --- a/test/dslm_unit_test/dslm_msg_interface_mock.cpp +++ b/test/dslm_unit_test/dslm_msg_interface_mock.cpp @@ -89,44 +89,69 @@ void DslmMsgInterfaceMock::MakeMsgReceivedFrom(const DeviceIdentify *devId, cons } extern "C" { -Messenger *CreateMessengerImpl(const MessengerConfig *config) +Messenger *CreateMessenger(const MessengerConfig *config) { (void)config; return g_messenger; } -void DestroyMessengerImpl(Messenger *messenger) +void DestroyMessenger(Messenger *messenger) { (void)messenger; } -bool IsMessengerReadyImpl(const Messenger *messenger) +bool IsMessengerReady(const Messenger *messenger) { return GetDslmMsgInterface()->IsMessengerReady(messenger); } -uint64_t SendMsgToImpl(const Messenger *messenger, uint64_t transNo, const DeviceIdentify *devId, const uint8_t *msg, +void SendMsgTo(const Messenger *messenger, uint64_t transNo, const DeviceIdentify *devId, const uint8_t *msg, uint32_t msgLen) { - return GetDslmMsgInterface()->SendMsgTo(messenger, transNo, devId, msg, msgLen); + (void)GetDslmMsgInterface()->SendMsgTo(messenger, transNo, devId, msg, msgLen); } -bool GetDeviceOnlineStatusImpl(const Messenger *messenger, const DeviceIdentify *devId, int32_t *level) +bool GetDeviceOnlineStatus(const Messenger *messenger, const DeviceIdentify *devId, int32_t *level) { return GetDslmMsgInterface()->GetDeviceOnlineStatus(messenger, devId, level); } -bool GetSelfDeviceIdentifyImpl(const Messenger *messenger, DeviceIdentify *devId, int32_t *level) +bool GetSelfDeviceIdentify(const Messenger *messenger, DeviceIdentify *devId, int32_t *level) { return GetDslmMsgInterface()->GetSelfDeviceIdentify(messenger, devId, level); } -void ForEachDeviceProcessImpl(const Messenger *messenger, const DeviceProcessor processor, void *para) +void ForEachDeviceProcess(const Messenger *messenger, const DeviceProcessor processor, void *para) { - return; + static_cast(messenger); + DeviceIdentify ident = { + .length = 64, + .identity = {0x0a, 0x0a, 0x0a, 0x0a}, + }; + processor(&ident, 1, nullptr); +} + +bool GetDeviceStatisticInfo(const Messenger *messenger, const DeviceIdentify *devId, StatisticInformation *info) +{ + static_cast(messenger); + static_cast(devId); + static_cast(info); + return true; +} + +bool MessengerGetSelfDeviceIdentify(DeviceIdentify *devId, int32_t *level) +{ + static_cast(devId); + *level = 1; + return true; +} + +bool MessengerGetNetworkIdByDeviceIdentify(const DeviceIdentify *devId, char *networkId, uint32_t len) +{ + return true; } -bool GetDeviceStatisticInfoImpl(const Messenger *messenger, const DeviceIdentify *devId, StatisticInformation *info) +bool MessengerGetDeviceIdentifyByNetworkId(const char *networkId, DeviceIdentify *devId) { return true; } diff --git a/test/dslm_unit_test/dslm_test.cpp b/test/dslm_unit_test/dslm_test.cpp index 5407ba4c365abe8d950f7ae7cbcb2c75e6c93cf3..ec61d61bae95149ae84526d2efb823d5f5f63095 100644 --- a/test/dslm_unit_test/dslm_test.cpp +++ b/test/dslm_unit_test/dslm_test.cpp @@ -30,6 +30,7 @@ #include "device_security_defines.h" #include "device_security_info.h" #include "device_security_level_defines.h" +#include "dslm_bigdata.h" #include "dslm_core_defines.h" #include "dslm_core_process.h" #include "dslm_credential.h" @@ -52,6 +53,7 @@ #include "messenger_device_status_manager.h" #include "utils_datetime.h" #include "utils_mem.h" +#include "utils_timer.h" #include "utils_tlv.h" #include "utils_work_queue.h" @@ -424,6 +426,8 @@ void DslmTest::SetUpTestCase() static const char *perms[] = { "ohos.permission.PLACE_CALL", "ohos.permission.ACCESS_IDS", + "ohos.permission.ACCESS_SERVICE_DM", + "ohos.permission.DISTRIBUTED_DATASYNC", }; uint64_t tokenId; NativeTokenInfoParams infoInstance = { @@ -1396,6 +1400,7 @@ HWTEST_F(DslmTest, InitSelfDeviceSecureLevel_case1, TestSize.Level0) info = GetDslmDeviceInfo(&device); ASSERT_NE(nullptr, info); EXPECT_GE(info->credInfo.credLevel, 1U); + DslmUtilsStopTimerTask(info->timeHandle); mockMsg.MakeDeviceOffline(&device); } @@ -1418,6 +1423,7 @@ HWTEST_F(DslmTest, InitSelfDeviceSecureLevel_case2, TestSize.Level0) BlockCheckDeviceStatus(&device, STATE_SUCCESS, 5000); EXPECT_EQ(STATE_FAILED, info->machine.currState); EXPECT_LT(5U, info->queryTimes); + DslmUtilsStopTimerTask(info->timeHandle); mockMsg.MakeDeviceOffline(&device); } @@ -1619,7 +1625,7 @@ HWTEST_F(DslmTest, VerifyDeviceInfoResponse_case4, TestSize.Level0) { int32_t ret = VerifyDeviceInfoResponse(&device, &msg); - EXPECT_EQ(ERR_CHALLENGE_ERR, ret); + EXPECT_NE(0, ret); } { @@ -1683,6 +1689,22 @@ HWTEST_F(DslmTest, OnMsgSendResultNotifier_case1, TestSize.Level0) uint32_t ret = OnMsgSendResultNotifier(nullptr, transNo, result); EXPECT_EQ(SUCCESS, ret); } + + { + NiceMock mockMsg; + mockMsg.MakeDeviceOnline(&identify); + DslmDeviceInfo *deviceInfo = GetDslmDeviceInfo(&identify); + ASSERT_NE(deviceInfo, nullptr); + deviceInfo->machine.currState = STATE_WAITING_CRED_RSP; + ScheduleDslmStateMachine(deviceInfo, EVENT_MSG_SEND_FAILED, &result); + EXPECT_EQ(deviceInfo->machine.currState, STATE_WAITING_CRED_RSP); + + uint32_t res = 2; // ERR_SESSION_OPEN_FAILED + ScheduleDslmStateMachine(deviceInfo, EVENT_MSG_SEND_FAILED, &res); + EXPECT_GE(deviceInfo->machine.currState, 0); + ScheduleDslmStateMachine(deviceInfo, EVENT_DEVICE_OFFLINE, &res); + mockMsg.MakeDeviceOffline(&identify); + } } HWTEST_F(DslmTest, OnPeerStatusReceiver_case1, TestSize.Level0) @@ -1994,105 +2016,52 @@ HWTEST_F(DslmTest, RequestDeviceSecurityInfoAsync_case1, TestSize.Level0) HWTEST_F(DslmTest, DslmDumper_case1, TestSize.Level0) { DslmDumper(-1); -} - -HWTEST_F(DslmTest, CreateQueueMsgData_case1, TestSize.Level0) -{ - const DeviceIdentify device = {DEVICE_ID_MAX_LEN, {'a', 'b', 'c', 'd', 'e', 'f', 'g'}}; - const uint8_t msg[] = {'1', '2'}; - uint32_t msgLen = 0; - uint32_t queueDataLen = 0; - - EXPECT_EQ(nullptr, CreateQueueMsgData(&device, msg, msgLen, &queueDataLen)); - - EXPECT_EQ(nullptr, CreateQueueMsgData(nullptr, msg, msgLen, &queueDataLen)); - - EXPECT_EQ(nullptr, CreateQueueMsgData(&device, nullptr, msgLen, &queueDataLen)); - msgLen = 2; - EXPECT_EQ(nullptr, CreateQueueMsgData(&device, msg, msgLen, nullptr)); - - (void)CreateQueueMsgData(&device, msg, msgLen, &queueDataLen); + ReportAppInvokeEvent(nullptr); + ReportSecurityInfoSyncEvent(nullptr); + auto handle = DslmUtilsStartPeriodicTimerTask(100, [](const void *context) { return; }, nullptr); + ASSERT_NE(handle, 0); + DslmUtilsStopTimerTask(handle); } -HWTEST_F(DslmTest, CreateMessenger_case1, TestSize.Level0) +HWTEST_F(DslmTest, DslmQueue_case1, TestSize.Level0) { - MessengerConfig config = { - .pkgName = GetMessengerPackageName(), - .primarySockName = GetMessengerPrimarySessionName(), - .secondarySockName = GetMessengerSecondarySessionName(), - .messageReceiver = OnPeerMsgReceived, - .statusReceiver = OnPeerStatusReceiver, - .sendResultNotifier = OnSendResultNotifier, - }; - - WorkQueue *processQueue = CreateWorkQueue(MESSENGER_PROCESS_QUEUE_SIZE, MESSENGER_PROCESS_QUEUE_NAME); - - bool result = InitDeviceSocketManager(processQueue, &config); - - EXPECT_EQ(false, InitDeviceSocketManager(nullptr, &config)); - - EXPECT_EQ(false, InitDeviceSocketManager(processQueue, nullptr)); - - result = InitDeviceStatusManager(processQueue, config.pkgName, config.statusReceiver); - - EXPECT_EQ(false, InitDeviceStatusManager(nullptr, config.pkgName, config.statusReceiver)); - - EXPECT_EQ(false, InitDeviceStatusManager(processQueue, nullptr, config.statusReceiver)); - - EXPECT_EQ(false, InitDeviceStatusManager(processQueue, config.pkgName, nullptr)); -} - -HWTEST_F(DslmTest, MessengerSendMsgTo_case1, TestSize.Level0) -{ - uint64_t transNo = 0xfe; - const DeviceIdentify device = {DEVICE_ID_MAX_LEN, {0}}; - const uint8_t msg[] = {'1', '2'}; - uint32_t msgLen = 2; - - MessengerSendMsgTo(transNo, &device, msg, msgLen); - - MessengerSendMsgTo(transNo, nullptr, msg, msgLen); - - MessengerSendMsgTo(transNo, &device, nullptr, msgLen); + auto queue = CreateWorkQueue(2, "test"); + ASSERT_NE(queue, nullptr); - MessengerSendMsgTo(transNo, &device, msg, 0); - - MessengerSendMsgTo(transNo, &device, msg, MSG_BUFF_MAX_LENGTH + 1); -} - -HWTEST_F(DslmTest, MessengerGetDeviceIdentifyByNetworkId_case1, TestSize.Level0) -{ - const char networkId[] = {'1', '2'}; - DeviceIdentify device = {DEVICE_ID_MAX_LEN, {0}}; - - EXPECT_EQ(false, MessengerGetDeviceIdentifyByNetworkId(networkId, &device)); - - EXPECT_EQ(false, MessengerGetDeviceIdentifyByNetworkId(nullptr, &device)); - - EXPECT_EQ(false, MessengerGetDeviceIdentifyByNetworkId(networkId, nullptr)); -} - -HWTEST_F(DslmTest, MessengerGetNetworkIdByDeviceIdentify_case1, TestSize.Level0) -{ - char networkId[DEVICE_ID_MAX_LEN + 1] = {0}; - const DeviceIdentify device = {DEVICE_ID_MAX_LEN, {0}}; - uint32_t len = 0; - - EXPECT_EQ(false, MessengerGetNetworkIdByDeviceIdentify(&device, networkId, len)); - - EXPECT_EQ(false, MessengerGetNetworkIdByDeviceIdentify(nullptr, networkId, len)); - - EXPECT_EQ(false, MessengerGetNetworkIdByDeviceIdentify(&device, nullptr, len)); -} - -HWTEST_F(DslmTest, MessengerGetSelfDeviceIdentify_case1, TestSize.Level0) -{ - DeviceIdentify device = {DEVICE_ID_MAX_LEN, {0}}; + auto proc = [](const uint8_t *data, uint32_t len) { return; }; + { + auto ret = QueueWork(queue, proc, nullptr, 0); + EXPECT_EQ(ret, WORK_QUEUE_OK); + } + { + auto ret = QueueWork(nullptr, nullptr, nullptr, 0); + EXPECT_EQ(ret, WORK_QUEUE_NULL_PTR); - EXPECT_EQ(false, MessengerGetSelfDeviceIdentify(nullptr, nullptr)); + ret = QueueWork(queue, nullptr, nullptr, 0); + EXPECT_EQ(ret, WORK_QUEUE_NULL_PTR); + } + { + auto sleepfunc = [](const uint8_t *data, uint32_t len) { this_thread::sleep_for(milliseconds(600)); }; + auto ret = QueueWork(queue, sleepfunc, nullptr, 0); + EXPECT_EQ(ret, WORK_QUEUE_OK); + ret = QueueWork(queue, sleepfunc, nullptr, 0); + (void)QueueWork(queue, proc, nullptr, 0); + (void)QueueWork(queue, proc, nullptr, 0); + (void)QueueWork(queue, proc, nullptr, 0); + (void)QueueWork(queue, proc, nullptr, 0); + (void)QueueWork(queue, proc, nullptr, 0); + EXPECT_GE(ret, WORK_QUEUE_OK); + } - EXPECT_EQ(false, MessengerGetSelfDeviceIdentify(&device, nullptr)); + { + auto ret = DestroyWorkQueue(queue); + EXPECT_EQ(ret, 0); + } + { + auto ret = DestroyWorkQueue(nullptr); + EXPECT_EQ(ret, WORK_QUEUE_NULL_PTR); + } } } // namespace DslmUnitTest } // namespace Security