diff --git a/interfaces/innerkits/accesstoken/BUILD.gn b/interfaces/innerkits/accesstoken/BUILD.gn index 95c8b1f17a2232c6da2ac5d919f767621337dd89..ba7893f5d09e145c97f65252def48322e1529c94 100644 --- a/interfaces/innerkits/accesstoken/BUILD.gn +++ b/interfaces/innerkits/accesstoken/BUILD.gn @@ -57,5 +57,8 @@ ohos_shared_library("libaccesstoken_sdk") { "samgr_standard:samgr_proxy", ] - cflags_cc = [ "-DHILOG_ENABLE" ] + cflags_cc = [ + "-DHILOG_ENABLE", + "-DDEBUG_API_PERFORMANCE", + ] } diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp index 9a660715964ce4d89057bfda99a1db177330345f..f8ba04b10bc354f484edc93b5b47b301d57361e0 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp @@ -47,7 +47,14 @@ AccessTokenID AccessTokenKit::AllocLocalTokenID(const std::string& remoteDeviceI { ACCESSTOKEN_LOG_INFO(LABEL, "%{public}s called, deviceID=%{public}s tokenID=%{public}d", __func__, remoteDeviceID.c_str(), remoteTokenID); +#ifdef DEBUG_API_PERFORMANCE + ACCESSTOKEN_LOG_INFO(LABEL, "api_performance:start call"); + AccessTokenID resID = AccessTokenManagerClient::GetInstance().AllocLocalTokenID(remoteDeviceID, remoteTokenID); + ACCESSTOKEN_LOG_INFO(LABEL, "api_performance:end call"); + return resID; +#else return AccessTokenManagerClient::GetInstance().AllocLocalTokenID(remoteDeviceID, remoteTokenID); +#endif } int AccessTokenKit::UpdateHapToken(AccessTokenID tokenID, const std::string& appIDDesc, const HapPolicyParams& policy) diff --git a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp index 5761c17f33b370aaaf9904826b008c61892419cd..3aa4e9dc16860a90ae3bbcaadd5f072f15c8786e 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp @@ -3044,22 +3044,58 @@ HWTEST_F(AccessTokenKitTest, AllocLocalTokenID001, TestSize.Level1) /** * @tc.name: GetAllNativeTokenInfo001 - * @tc.desc: get already mapping tokenInfo, makesure ipc right + * @tc.desc: get all native token with dcaps * @tc.type: FUNC * @tc.require:AR000GK6T6 */ HWTEST_F(AccessTokenKitTest, GetAllNativeTokenInfo001, TestSize.Level1) { ACCESSTOKEN_LOG_INFO(LABEL, "GetAllNativeTokenInfo001 start."); + + std::vector nativeTokenInfosRes; + int ret = AccessTokenKit::GetAllNativeTokenInfo(nativeTokenInfosRes); + ASSERT_EQ(ret, RET_SUCCESS); } /** * @tc.name: SetRemoteNativeTokenInfo001 - * @tc.desc: get already mapping tokenInfo, makesure ipc right + * @tc.desc: set already mapping tokenInfo * @tc.type: FUNC * @tc.require:AR000GK6T6 */ HWTEST_F(AccessTokenKitTest, SetRemoteNativeTokenInfo001, TestSize.Level1) { - ACCESSTOKEN_LOG_INFO(LABEL, "GetAllNativeTokenInfo001 start."); + ACCESSTOKEN_LOG_INFO(LABEL, "SetRemoteNativeTokenInfo001 start."); + std::string deviceID = "ea82205d1f9964346ee12e17ec0f362bb7203fca7c62d82899ffa917f9cbe6b2"; + + NativeTokenInfo native1 = { + .apl = APL_NORMAL, + .ver = 1, + .processName = "native_test1", + .dcap = {"SYSDCAP", "DMSDCAP"}, + .tokenID = 0x28000000, + .tokenAttr = 0 + }; + + std::vector nativeTokenInfoList; + nativeTokenInfoList.emplace_back(native1); + + int ret = AccessTokenKit::SetRemoteNativeTokenInfo(deviceID, nativeTokenInfoList); + ASSERT_EQ(ret, RET_SUCCESS); + + AccessTokenID mapID = AccessTokenKit::GetRemoteNativeTokenID(deviceID, 0x28000000); + ASSERT_NE(mapID, 0); + + NativeTokenInfo resultInfo; + ret = AccessTokenKit::GetNativeTokenInfo(mapID, resultInfo); + ASSERT_EQ(ret, RET_SUCCESS); + + ASSERT_EQ(resultInfo.apl, native1.apl); + ASSERT_EQ(resultInfo.ver, native1.ver); + ASSERT_EQ(resultInfo.processName, native1.processName); + ASSERT_EQ(resultInfo.dcap.size(), 2); + ASSERT_EQ(resultInfo.dcap[0], "SYSDCAP"); + ASSERT_EQ(resultInfo.dcap[1], "DMSDCAP"); + ASSERT_EQ(resultInfo.tokenID, mapID); + ASSERT_EQ(resultInfo.tokenAttr, native1.tokenAttr); } \ No newline at end of file diff --git a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp index 20123787e2449beb1b35753b68f770658c59daaf..997da72d38acd1d0f03043cb875ae405b4ef72c0 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp @@ -266,7 +266,7 @@ int AccessTokenManagerService::GetAllNativeTokenInfo(std::vector& nativeTokenInfoParcel) { - ACCESSTOKEN_LOG_INFO(LABEL, "%{public}s called, deviceID: 0x%{public}s", __func__, deviceID.c_str()); + ACCESSTOKEN_LOG_INFO(LABEL, "%{public}s called, deviceID: %{public}s", __func__, deviceID.c_str()); std::vector nativeList; diff --git a/services/tokensyncmanager/BUILD.gn b/services/tokensyncmanager/BUILD.gn index 000a1b4577e3f69756e908aa2cec187efae0eb07..3bc2dda6c645bf0b520ef4bf4fb50bfca10ebc2a 100644 --- a/services/tokensyncmanager/BUILD.gn +++ b/services/tokensyncmanager/BUILD.gn @@ -61,7 +61,10 @@ ohos_shared_library("token_sync_manager_service") { "src/service/token_sync_manager_stub.cpp", ] - cflags_cc = [ "-DHILOG_ENABLE" ] + cflags_cc = [ + "-DHILOG_ENABLE", + "-DDEBUG_API_PERFORMANCE", + ] deps = [ "//base/security/access_token/frameworks/accesstoken:accesstoken_communication_adapter_cxx", diff --git a/services/tokensyncmanager/src/remote/soft_bus_channel.cpp b/services/tokensyncmanager/src/remote/soft_bus_channel.cpp index 97e028db7ed32afd65c9633feb2f4aea8eeb098d..7fe78a6d14c5cd2437df24f9297e5ac2a8c2c9c2 100644 --- a/services/tokensyncmanager/src/remote/soft_bus_channel.cpp +++ b/services/tokensyncmanager/src/remote/soft_bus_channel.cpp @@ -184,7 +184,9 @@ std::string SoftBusChannel::ExecuteCommand(const std::string &commandName, const void SoftBusChannel::HandleDataReceived(int session, const unsigned char *bytes, int length) { ACCESSTOKEN_LOG_DEBUG(LABEL, "HandleDataReceived"); - +#ifdef DEBUG_API_PERFORMANCE + ACCESSTOKEN_LOG_INFO(LABEL, "api_performance:recieve message from softbus"); +#endif if (session <= 0 || length <= 0) { ACCESSTOKEN_LOG_ERROR(LABEL, "invalid params: session: %{public}d, data length: %{public}d", session, length); return; @@ -294,6 +296,9 @@ int SoftBusChannel::SendRequestBytes(const unsigned char *bytes, const int bytes } ACCESSTOKEN_LOG_DEBUG(LABEL, "send len (after compress len)= %{public}d", bytesLength); +#ifdef DEBUG_API_PERFORMANCE + ACCESSTOKEN_LOG_INFO(LABEL, "api_performance:send command to softbus"); +#endif int result = ::SendBytes(session_, bytes, bytesLength); if (result != Constant::SUCCESS) { ACCESSTOKEN_LOG_ERROR(LABEL, "fail to send! result= %{public}d", result); diff --git a/services/tokensyncmanager/src/remote/soft_bus_manager.cpp b/services/tokensyncmanager/src/remote/soft_bus_manager.cpp index 33e22c8a48dd37e3ddd3568a6b3d90228d355d7d..fae3e97ddc76031a7dc971d6efa00cd4116480d0 100644 --- a/services/tokensyncmanager/src/remote/soft_bus_manager.cpp +++ b/services/tokensyncmanager/src/remote/soft_bus_manager.cpp @@ -154,6 +154,10 @@ void SoftBusManager::Destroy() int32_t SoftBusManager::OpenSession(const std::string &deviceId) { +#ifdef DEBUG_API_PERFORMANCE + ACCESSTOKEN_LOG_INFO(LABEL, "api_performance:start open session"); +#endif + DeviceInfo info; bool result = DeviceInfoManager::GetInstance().GetDeviceInfo(deviceId, DeviceIdType::UNKNOWN, info); if (result == false) { @@ -185,6 +189,9 @@ int32_t SoftBusManager::OpenSession(const std::string &deviceId) } break; } +#ifdef DEBUG_API_PERFORMANCE + ACCESSTOKEN_LOG_INFO(LABEL, "api_performance:start open session success"); +#endif int64_t state = SoftBusSessionListener::GetSessionState(sessionId); if (state < 0) { ACCESSTOKEN_LOG_ERROR(LABEL, "openSession, timeout, session: %{public}" PRId64, state); diff --git a/services/tokensyncmanager/test/unittest/token_sync_service/token_sync_service_test.cpp b/services/tokensyncmanager/test/unittest/token_sync_service/token_sync_service_test.cpp index f27049517506f6dfd633b36ee7f9cdc3579a4d22..51c4aa2aa4050a1c321797c78ce2eec40fc78c4c 100644 --- a/services/tokensyncmanager/test/unittest/token_sync_service/token_sync_service_test.cpp +++ b/services/tokensyncmanager/test/unittest/token_sync_service/token_sync_service_test.cpp @@ -38,6 +38,15 @@ using namespace std; using namespace OHOS::Security::AccessToken; using namespace testing::ext; static std::vector threads_; +static std::shared_ptr g_ptrDeviceStateCallback = + std::make_shared(); +static std::string g_networkID = "deviceid-1"; +static DmDeviceInfo g_devInfo = { + // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 + .deviceId = "deviceid-1", + .deviceName = "remote_mock", + .deviceTypeId = 1 +}; namespace { static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, SECURITY_DOMAIN_ACCESSTOKEN, "AccessTokenKitTest"}; @@ -54,14 +63,18 @@ void TokenSyncServiceTest::SetUpTestCase() void TokenSyncServiceTest::TearDownTestCase() {} void TokenSyncServiceTest::SetUp() -{ -} +{} void TokenSyncServiceTest::TearDown() { for (auto it = threads_.begin(); it != threads_.end(); it++) { it->join(); } threads_.clear(); + + if (g_ptrDeviceStateCallback != nullptr) { + g_ptrDeviceStateCallback->OnDeviceOffline(g_devInfo); + sleep(1); + } } namespace { @@ -88,13 +101,14 @@ void SendTaskThread() CompressMock(sendJson, sendBuffer, sendLen); SoftBusSessionListener::OnBytesReceived(1, sendBuffer, sendLen); + free(sendBuffer); } /** * @tc.name: GetRemoteHapTokenInfo001 * @tc.desc: test remote hap send func * @tc.type: FUNC - * @tc.require:AR000GK6T5 + * @tc.require:AR000GK6T5 AR000GK6T9 */ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo001, TestSize.Level1) { @@ -112,31 +126,18 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo001, TestSize.Level1) threads_.emplace_back(std::thread(SendTaskThread)); - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - - ptrDeviceStateCallback->OnDeviceOnline(devInfo); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); int ret = OHOS::DelayedSingleton::GetInstance()->GetRemoteHapTokenInfo( - networkID, 0x20100000); + g_networkID, 0x20100000); ASSERT_EQ(ret, RET_SUCCESS); - AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(networkID, 0x20100000); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20100000); ASSERT_NE(mapID, (AccessTokenID)0); HapTokenInfo tokeInfo; ret = AccessTokenKit::GetHapTokenInfo(mapID, tokeInfo); ASSERT_EQ(ret, RET_SUCCESS); - - ptrDeviceStateCallback->OnDeviceOffline(devInfo); } static PermissionDef g_infoManagerTestPermDef1 = { @@ -195,7 +196,7 @@ static HapPolicyParams g_infoManagerTestPolicyPrams = { * @tc.name: GetRemoteHapTokenInfo002 * @tc.desc: test remote hap recv func * @tc.type: FUNC - * @tc.require:AR000GK6T5 + * @tc.require:AR000GK6T5 AR000GK6T9 */ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo002, TestSize.Level1) { @@ -210,7 +211,6 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo002, TestSize.Level1) tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams); ASSERT_NE(0, tokenIdEx.tokenIdExStruct.tokenID); - // create recv message std::string jsonBefore = "{\"commandName\":\"SyncRemoteHapTokenCommand\",\"id\":\"0065e65f-\",\"jsonPayload\":" "\"{\\\"HapTokenInfo\\\":{\\\"apl\\\":1,\\\"appID\\\":\\\"\\\",\\\"bundleName\\\":\\\"\\\"," @@ -229,18 +229,7 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo002, TestSize.Level1) int recvLen = 0x1000; CompressMock(recvJson, recvBuffer, recvLen); - // device online - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - ptrDeviceStateCallback->OnDeviceOnline(devInfo); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); SoftBusSessionListener::OnBytesReceived(1, recvBuffer, recvLen); @@ -249,19 +238,18 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo002, TestSize.Level1) sleep(1); count ++; } + free(recvBuffer); ResetSendMessFlagMock(); std::string uuidMessage = GetUuidMock(); ASSERT_EQ(uuidMessage, "0065e65f-"); - - ptrDeviceStateCallback->OnDeviceOffline(devInfo); } /** * @tc.name: GetRemoteHapTokenInfo003 * @tc.desc: test remote hap send func, but get tokenInfo is wrong * @tc.type: FUNC - * @tc.require:AR000GK6T5 + * @tc.require:AR000GK6T5 AR000GK6T9 */ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo003, TestSize.Level1) { @@ -280,33 +268,20 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo003, TestSize.Level1) threads_.emplace_back(std::thread(SendTaskThread)); - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - - ptrDeviceStateCallback->OnDeviceOnline(devInfo); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); OHOS::DelayedSingleton::GetInstance()->GetRemoteHapTokenInfo( - networkID, 0x20100000); + g_networkID, 0x20100000); - AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(networkID, 0x20100000); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20100000); ASSERT_EQ(mapID, (AccessTokenID)0); - - ptrDeviceStateCallback->OnDeviceOffline(devInfo); } /** * @tc.name: GetRemoteHapTokenInfo004 * @tc.desc: test remote hap send func, but json payload lost parameter * @tc.type: FUNC - * @tc.require:AR000GK6T5 + * @tc.require:AR000GK6T5 AR000GK6T9 */ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo004, TestSize.Level1) { @@ -325,33 +300,20 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo004, TestSize.Level1) threads_.emplace_back(std::thread(SendTaskThread)); - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - - ptrDeviceStateCallback->OnDeviceOnline(devInfo); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); OHOS::DelayedSingleton::GetInstance()->GetRemoteHapTokenInfo( - networkID, 0x20100000); + g_networkID, 0x20100000); - AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(networkID, 0x20100000); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20100000); ASSERT_EQ(mapID, (AccessTokenID)0); - - ptrDeviceStateCallback->OnDeviceOffline(devInfo); } /** * @tc.name: GetRemoteHapTokenInfo005 * @tc.desc: test remote hap send func, but json payload parameter type is wrong * @tc.type: FUNC - * @tc.require:AR000GK6T5 + * @tc.require:AR000GK6T5 AR000GK6T9 */ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo005, TestSize.Level1) { @@ -371,33 +333,20 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo005, TestSize.Level1) threads_.emplace_back(std::thread(SendTaskThread)); - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - - ptrDeviceStateCallback->OnDeviceOnline(devInfo); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); OHOS::DelayedSingleton::GetInstance()->GetRemoteHapTokenInfo( - networkID, 0x20100000); + g_networkID, 0x20100000); - AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(networkID, 0x20100000); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20100000); ASSERT_EQ(mapID, (AccessTokenID)0); - - ptrDeviceStateCallback->OnDeviceOffline(devInfo); } /** * @tc.name: GetRemoteHapTokenInfo006 * @tc.desc: test remote hap send func, but json payload parameter format is wrong * @tc.type: FUNC - * @tc.require:AR000GK6T5 + * @tc.require:AR000GK6T5 AR000GK6T9 */ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo006, TestSize.Level1) { @@ -417,33 +366,20 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo006, TestSize.Level1) threads_.emplace_back(std::thread(SendTaskThread)); - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - - ptrDeviceStateCallback->OnDeviceOnline(devInfo); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); OHOS::DelayedSingleton::GetInstance()->GetRemoteHapTokenInfo( - networkID, 0x20100000); + g_networkID, 0x20100000); - AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(networkID, 0x20100000); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20100000); ASSERT_EQ(mapID, (AccessTokenID)0); - - ptrDeviceStateCallback->OnDeviceOffline(devInfo); } /** * @tc.name: GetRemoteHapTokenInfo007 * @tc.desc: test remote hap send func, statusCode is wrong * @tc.type: FUNC - * @tc.require:AR000GK6T5 + * @tc.require:AR000GK6T5 AR000GK6T9 */ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo007, TestSize.Level1) { @@ -464,33 +400,21 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo007, TestSize.Level1) threads_.emplace_back(std::thread(SendTaskThread)); - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - ptrDeviceStateCallback->OnDeviceOnline(devInfo); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); OHOS::DelayedSingleton::GetInstance()->GetRemoteHapTokenInfo( - networkID, 0x20100000); + g_networkID, 0x20100000); - AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(networkID, 0x20100000); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20100000); ASSERT_EQ(mapID, (AccessTokenID)0); - - ptrDeviceStateCallback->OnDeviceOffline(devInfo); } /** * @tc.name: GetRemoteHapTokenInfo008 * @tc.desc: test remote hap recv func, tokenID is not exist * @tc.type: FUNC - * @tc.require:AR000GK6T5 + * @tc.require:AR000GK6T5 AR000GK6T9 */ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo008, TestSize.Level1) { @@ -520,19 +444,7 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo008, TestSize.Level1) int recvLen = 0x1000; CompressMock(recvJson, recvBuffer, recvLen); - // device online - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - ptrDeviceStateCallback->OnDeviceOnline(devInfo); - + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); SoftBusSessionListener::OnBytesReceived(1, recvBuffer, recvLen); int count = 0; @@ -540,17 +452,16 @@ HWTEST_F(TokenSyncServiceTest, GetRemoteHapTokenInfo008, TestSize.Level1) sleep(1); count ++; } + free(recvBuffer); ResetSendMessFlagMock(); std::string uuidMessage = GetUuidMock(); ASSERT_EQ(uuidMessage, "0065e65f-"); - - ptrDeviceStateCallback->OnDeviceOffline(devInfo); } /** * @tc.name: SyncNativeTokens001 - * @tc.desc: when device is online, sync remote nativetokens which has dcap + * @tc.desc: when device is online, sync remote nativetokens which have dcap * @tc.type: FUNC * @tc.require:AR000GK6T6 */ @@ -560,9 +471,9 @@ HWTEST_F(TokenSyncServiceTest, SyncNativeTokens001, TestSize.Level1) g_jsonBefore = "{\"commandName\":\"SyncRemoteNativeTokenCommand\", \"id\":\""; g_jsonAfter = "\",\"jsonPayload\":\"{\\\"NativeTokenInfos\\\":[{\\\"apl\\\":3,\\\"processName\\\":\\\"attest\\\"," - "\\\"tokenAttr\\\":0,\\\"tokenId\\\":671836008,\\\"version\\\":1," + "\\\"tokenAttr\\\":0,\\\"tokenId\\\":671088640,\\\"version\\\":1," "\\\"dcaps\\\":[\\\"SYSDCAP\\\",\\\"DMSDCAP\\\"]}," - "{\\\"APL\\\":3,\\\"processName\\\":\\\"attest1\\\",\\\"tokenAttr\\\":0,\\\"tokenId\\\":671836018," + "{\\\"apl\\\":3,\\\"processName\\\":\\\"attest1\\\",\\\"tokenAttr\\\":0,\\\"tokenId\\\":671088641," "\\\"version\\\":1,\\\"dcaps\\\":[\\\"SYSDCAP\\\",\\\"DMSDCAP\\\"]}]," "\\\"commandName\\\":\\\"SyncRemoteNativeTokenCommand\\\"," "\\\"dstDeviceId\\\":\\\"deviceid-1\\\",\\\"dstDeviceLevel\\\":\\\"\\\",\\\"message\\\":\\\"success\\\"," @@ -573,34 +484,359 @@ HWTEST_F(TokenSyncServiceTest, SyncNativeTokens001, TestSize.Level1) threads_.emplace_back(std::thread(SendTaskThread)); - std::string networkID = "deviceid-1"; - std::string deviceName = "remote_mock"; - // udid = deviceid-1:udid-001 uuid = deviceid-1:uuid-001 - DmDeviceInfo devInfo; - strcpy(devInfo.deviceId, networkID.c_str()); - strcpy(devInfo.deviceName, deviceName.c_str()); - devInfo.deviceTypeId = 1; - - std::shared_ptr ptrDeviceStateCallback = - std::make_shared(); - - ptrDeviceStateCallback->OnDeviceOnline(devInfo); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); sleep(6); - AccessTokenID mapID = AccessTokenKit::GetRemoteNativeTokenID(networkID, 0x280b6768); + AccessTokenID mapID = AccessTokenKit::GetRemoteNativeTokenID(g_networkID, 0x28000000); ASSERT_NE(mapID, (AccessTokenID)0); int ret = AccessTokenKit::CheckNativeDCap(mapID, "SYSDCAP"); ASSERT_EQ(ret, RET_SUCCESS); ret = AccessTokenKit::CheckNativeDCap(mapID, "DMSDCAP"); ASSERT_EQ(ret, RET_SUCCESS); - mapID = AccessTokenKit::GetRemoteNativeTokenID(networkID, 0x280b6772); + mapID = AccessTokenKit::GetRemoteNativeTokenID(g_networkID, 0x28000001); ASSERT_NE(mapID, (AccessTokenID)0); ret = AccessTokenKit::CheckNativeDCap(mapID, "SYSDCAP"); ASSERT_EQ(ret, RET_SUCCESS); ret = AccessTokenKit::CheckNativeDCap(mapID, "DMSDCAP"); ASSERT_EQ(ret, RET_SUCCESS); +} + +/** + * @tc.name: SyncNativeTokens002 + * @tc.desc: when device is online, sync remote nativetoken which has no dcaps + * @tc.type: FUNC + * @tc.require:AR000GK6T6 + */ +HWTEST_F(TokenSyncServiceTest, SyncNativeTokens002, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "SyncNativeTokens002 start."); + g_jsonBefore = "{\"commandName\":\"SyncRemoteNativeTokenCommand\", \"id\":\""; + // 0x28000001 token has no dcaps + g_jsonAfter = + "\",\"jsonPayload\":\"{\\\"NativeTokenInfos\\\":[{\\\"apl\\\":3,\\\"processName\\\":\\\"attest\\\"," + "\\\"tokenAttr\\\":0,\\\"tokenId\\\":671088640,\\\"version\\\":1," + "\\\"dcaps\\\":[\\\"SYSDCAP\\\",\\\"DMSDCAP\\\"]}," + "{\\\"apl\\\":3,\\\"processName\\\":\\\"attest1\\\",\\\"tokenAttr\\\":0,\\\"tokenId\\\":671088641," + "\\\"version\\\":1,\\\"dcaps\\\":[]}]," + "\\\"commandName\\\":\\\"SyncRemoteNativeTokenCommand\\\"," + "\\\"dstDeviceId\\\":\\\"deviceid-1\\\",\\\"dstDeviceLevel\\\":\\\"\\\",\\\"message\\\":\\\"success\\\"," + "\\\"requestVersion\\\":2,\\\"responseDeviceId\\\":\\\"deviceid-1:udid-001\\\"," + "\\\"responseVersion\\\":2,\\\"srcDeviceId\\\":\\\"local:udid-001\\\"," + "\\\"srcDeviceLevel\\\":\\\"\\\",\\\"statusCode\\\":0,\\\"uniqueId\\\":\\\"SyncRemoteNativeTokenCommand\\\"}\"," + "\"type\":\"response\"}"; + + threads_.emplace_back(std::thread(SendTaskThread)); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); + + sleep(6); + + AccessTokenID mapID = AccessTokenKit::GetRemoteNativeTokenID(g_networkID, 0x28000000); + ASSERT_NE(mapID, (AccessTokenID)0); + int ret = AccessTokenKit::CheckNativeDCap(mapID, "SYSDCAP"); + ASSERT_EQ(ret, RET_SUCCESS); + ret = AccessTokenKit::CheckNativeDCap(mapID, "DMSDCAP"); + ASSERT_EQ(ret, RET_SUCCESS); + + mapID = AccessTokenKit::GetRemoteNativeTokenID(g_networkID, 0x28000001); + ASSERT_EQ(mapID, (AccessTokenID)0); +} + +/** + * @tc.name: SyncNativeTokens003 + * @tc.desc: when device is online, sync remote nativetokens status failed + * @tc.type: FUNC + * @tc.require:AR000GK6T6 + */ +HWTEST_F(TokenSyncServiceTest, SyncNativeTokens003, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "SyncNativeTokens003 start."); + g_jsonBefore = "{\"commandName\":\"SyncRemoteNativeTokenCommand\", \"id\":\""; + g_jsonAfter = + "\",\"jsonPayload\":\"{\\\"NativeTokenInfos\\\":[{\\\"apl\\\":3,\\\"processName\\\":\\\"attest\\\"," + "\\\"tokenAttr\\\":0,\\\"tokenId\\\":671088640,\\\"version\\\":1," + "\\\"dcaps\\\":[\\\"SYSDCAP\\\",\\\"DMSDCAP\\\"]}," + "{\\\"apl\\\":3,\\\"processName\\\":\\\"attest1\\\",\\\"tokenAttr\\\":0,\\\"tokenId\\\":671088641," + "\\\"version\\\":1,\\\"dcaps\\\":[\\\"SYSDCAP\\\",\\\"DMSDCAP\\\"]}]," + "\\\"commandName\\\":\\\"SyncRemoteNativeTokenCommand\\\"," + "\\\"dstDeviceId\\\":\\\"deviceid-1\\\",\\\"dstDeviceLevel\\\":\\\"\\\",\\\"message\\\":\\\"success\\\"," + "\\\"requestVersion\\\":2,\\\"responseDeviceId\\\":\\\"deviceid-1:udid-001\\\"," + "\\\"responseVersion\\\":2,\\\"srcDeviceId\\\":\\\"local:udid-001\\\"," + "\\\"srcDeviceLevel\\\":\\\"\\\",\\\"statusCode\\\":-2," + "\\\"uniqueId\\\":\\\"SyncRemoteNativeTokenCommand\\\"}\",\"type\":\"response\"}"; + + + threads_.emplace_back(std::thread(SendTaskThread)); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); + + sleep(6); + + AccessTokenID mapID = AccessTokenKit::GetRemoteNativeTokenID(g_networkID, 0x28000000); + ASSERT_EQ(mapID, (AccessTokenID)0); + + mapID = AccessTokenKit::GetRemoteNativeTokenID(g_networkID, 0x28000001); + ASSERT_EQ(mapID, (AccessTokenID)0); +} + +/** + * @tc.name: SyncNativeTokens004 + * @tc.desc: when device is online, sync remote nativetokens which parameter is wrong + * @tc.type: FUNC + * @tc.require:AR000GK6T6 + */ +HWTEST_F(TokenSyncServiceTest, SyncNativeTokens004, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "SyncNativeTokens004 start."); + g_jsonBefore = "{\"commandName\":\"SyncRemoteNativeTokenCommand\", \"id\":\""; + // apl is error + g_jsonAfter = + "\",\"jsonPayload\":\"{\\\"NativeTokenInfos\\\":[{\\\"apl\\\":11,\\\"processName\\\":\\\"attest\\\"," + "\\\"tokenAttr\\\":0,\\\"tokenId\\\":671088640,\\\"version\\\":1," + "\\\"dcaps\\\":[\\\"SYSDCAP\\\",\\\"DMSDCAP\\\"]}," + "{\\\"apl\\\":11,\\\"processName\\\":\\\"attest1\\\",\\\"tokenAttr\\\":0,\\\"tokenId\\\":671088641," + "\\\"version\\\":1,\\\"dcaps\\\":[\\\"SYSDCAP\\\",\\\"DMSDCAP\\\"]}]," + "\\\"commandName\\\":\\\"SyncRemoteNativeTokenCommand\\\"," + "\\\"dstDeviceId\\\":\\\"deviceid-1\\\",\\\"dstDeviceLevel\\\":\\\"\\\",\\\"message\\\":\\\"success\\\"," + "\\\"requestVersion\\\":2,\\\"responseDeviceId\\\":\\\"deviceid-1:udid-001\\\"," + "\\\"responseVersion\\\":2,\\\"srcDeviceId\\\":\\\"local:udid-001\\\"," + "\\\"srcDeviceLevel\\\":\\\"\\\",\\\"statusCode\\\":0,\\\"uniqueId\\\":\\\"SyncRemoteNativeTokenCommand\\\"}\"," + "\"type\":\"response\"}"; + + threads_.emplace_back(std::thread(SendTaskThread)); + + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); + + sleep(6); + + AccessTokenID mapID = AccessTokenKit::GetRemoteNativeTokenID(g_networkID, 0x28000000); + ASSERT_EQ(mapID, (AccessTokenID)0); + + mapID = AccessTokenKit::GetRemoteNativeTokenID(g_networkID, 0x28000001); + ASSERT_EQ(mapID, (AccessTokenID)0); +} + +/** + * @tc.name: SyncNativeTokens005 + * @tc.desc: test remote hap recv func + * @tc.type: FUNC + * @tc.require:AR000GK6T5 + */ +HWTEST_F(TokenSyncServiceTest, SyncNativeTokens005, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "SyncNativeTokens005 start."); + + std::string recvJson = + "{\"commandName\":\"SyncRemoteNativeTokenCommand\",\"id\":\"ec23cd2d-\",\"jsonPayload\":" + "\"{\\\"NativeTokenInfos\\\":null,\\\"commandName\\\":\\\"SyncRemoteNativeTokenCommand\\\"," + "\\\"dstDeviceId\\\":\\\"local:udid-001\\\",\\\"dstDeviceLevel\\\":\\\"\\\",\\\"message\\\":\\\"success\\\"," + "\\\"requestTokenId\\\":,\\\"requestVersion\\\":2,\\\"responseDeviceId\\\":\\\"\\\",\\\"responseVersion\\\":2," + "\\\"srcDeviceId\\\":\\\"deviceid-1\\\",\\\"srcDeviceLevel\\\":\\\"\\\",\\\"statusCode\\\":100001," + "\\\"uniqueId\\\":\\\"SyncRemoteNativeTokenCommand\\\"}\",\"type\":\"request\"}"; + + unsigned char *recvBuffer = (unsigned char *)malloc(0x1000); + int recvLen = 0x1000; + CompressMock(recvJson, recvBuffer, recvLen); + + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); + SoftBusSessionListener::OnBytesReceived(1, recvBuffer, recvLen); + + int count = 0; + while (!GetSendMessFlagMock() && count < 10) { + sleep(1); + count ++; + } + free(recvBuffer); + + ResetSendMessFlagMock(); + std::string uuidMessage = GetUuidMock(); + ASSERT_EQ(uuidMessage, "ec23cd2d-"); +} + +namespace { +PermissionStateFull g_infoManagerTestUpdateState1 = { + .grantFlags = {1}, + .grantStatus = {PermissionState::PERMISSION_DENIED}, + .isGeneral = true, + .permissionName = "ohos.permission.CAMERA", + .resDeviceID = {"local"} +}; + +PermissionStateFull g_infoManagerTestUpdateState2 = { + .permissionName = "ohos.permission.ANSWER_CALL", + .isGeneral = false, + .grantFlags = {1, 2}, + .grantStatus = {PermissionState::PERMISSION_DENIED, PermissionState::PERMISSION_DENIED}, + .resDeviceID = {"device 1", "device 2"} +}; + +HapTokenInfo g_remoteHapInfoBasic = { + .apl = APL_NORMAL, + .ver = 1, + .userID = 1, + .bundleName = "accesstoken_test", + .instIndex = 1, + .appID = "testtesttesttest", + .deviceID = "0", + .tokenID = 0x20000001, + .tokenAttr = 0 +}; + +HapTokenInfoForSync g_remoteHapInfo = { + .baseInfo = g_remoteHapInfoBasic, + .permStateList = {g_infoManagerTestUpdateState1, g_infoManagerTestUpdateState2} +}; +} + +/** + * @tc.name: UpdateRemoteHapTokenCommand001 + * @tc.desc: recv mapping hap token update message + * @tc.type: FUNC + * @tc.require:AR000GK6TB + */ +HWTEST_F(TokenSyncServiceTest, UpdateRemoteHapTokenCommand001, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "UpdateRemoteHapTokenCommand001 start."); + sleep(1); + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); + sleep(6); + + int ret = AccessTokenKit::SetRemoteHapTokenInfo(g_networkID, g_remoteHapInfo); + ASSERT_EQ(ret, RET_SUCCESS); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20000001); + ASSERT_NE(mapID, 0); + + HapTokenInfo mapInfo; + ret = AccessTokenKit::GetHapTokenInfo(mapID, mapInfo); + ASSERT_EQ(ret, RET_SUCCESS); + + ret = AccessTokenKit::VerifyAccessToken(mapID, "ohos.permission.CAMERA"); + ASSERT_EQ(ret, PERMISSION_DENIED); + + std::string recvJson = + "{\"commandName\":\"UpdateRemoteHapTokenCommand\",\"id\":\"ec23cd2d-\",\"jsonPayload\":" + "\"{\\\"HapTokenInfos\\\":{\\\"apl\\\":1,\\\"appID\\\":\\\"testtesttesttest\\\"," + "\\\"bundleName\\\":\\\"accesstoken_test\\\",\\\"deviceID\\\":\\\"0\\\",\\\"instIndex\\\":0," + "\\\"permState\\\":[{\\\"grantConfig\\\":[{\\\"grantFlags\\\":2,\\\"grantStatus\\\":0," + "\\\"resDeviceID\\\":\\\"local\\\"}],\\\"isGeneral\\\":true," + "\\\"permissionName\\\":\\\"ohos.permission.CAMERA\\\"},{\\\"grantConfig\\\":[{\\\"grantFlags\\\":1," + "\\\"grantStatus\\\":-1,\\\"resDeviceID\\\":\\\"device 1\\\"},{\\\"grantFlags\\\":2,\\\"grantStatus\\\":-1," + "\\\"resDeviceID\\\":\\\"device 2\\\"}],\\\"isGeneral\\\":false," + "\\\"permissionName\\\":\\\"ohos.permission.ANSWER_CALL\\\"}],\\\"tokenAttr\\\":0,\\\"tokenID\\\":536870913," + "\\\"userID\\\":1,\\\"version\\\":1},\\\"commandName\\\":\\\"UpdateRemoteHapTokenCommand\\\"," + "\\\"dstDeviceId\\\":\\\"local:udid-001\\\",\\\"dstDeviceLevel\\\":\\\"\\\",\\\"message\\\":\\\"success\\\"," + "\\\"requestTokenId\\\":536870913,\\\"requestVersion\\\":2,\\\"responseDeviceId\\\":\\\"\\\"," + "\\\"responseVersion\\\":2," + "\\\"srcDeviceId\\\":\\\"deviceid-1\\\",\\\"srcDeviceLevel\\\":\\\"\\\",\\\"statusCode\\\":100001," + "\\\"uniqueId\\\":\\\"UpdateRemoteHapTokenCommand\\\"}\",\"type\":\"request\"}"; + + unsigned char *recvBuffer = (unsigned char *)malloc(0x1000); + int recvLen = 0x1000; + CompressMock(recvJson, recvBuffer, recvLen); + SoftBusSessionListener::OnBytesReceived(1, recvBuffer, recvLen); + sleep(2); + + free(recvBuffer); + + ret = AccessTokenKit::VerifyAccessToken(mapID, "ohos.permission.CAMERA"); + + ASSERT_EQ(ret, PERMISSION_GRANTED); + + recvJson = + "{\"commandName\":\"UpdateRemoteHapTokenCommand\",\"id\":\"ec23cd2d-\",\"jsonPayload\":" + "\"{\\\"HapTokenInfos\\\":{\\\"apl\\\":2,\\\"appID\\\":\\\"testtesttesttest\\\"," + "\\\"bundleName\\\":\\\"accesstoken_test\\\",\\\"deviceID\\\":\\\"0\\\",\\\"instIndex\\\":0," + "\\\"permState\\\":[{\\\"grantConfig\\\":[{\\\"grantFlags\\\":2,\\\"grantStatus\\\":0," + "\\\"resDeviceID\\\":\\\"local\\\"}],\\\"isGeneral\\\":true," + "\\\"permissionName\\\":\\\"ohos.permission.CAMERA\\\"},{\\\"grantConfig\\\":[{\\\"grantFlags\\\":1," + "\\\"grantStatus\\\":-1,\\\"resDeviceID\\\":\\\"device 1\\\"},{\\\"grantFlags\\\":2,\\\"grantStatus\\\":-1," + "\\\"resDeviceID\\\":\\\"device 2\\\"}],\\\"isGeneral\\\":false," + "\\\"permissionName\\\":\\\"ohos.permission.ANSWER_CALL\\\"}],\\\"tokenAttr\\\":0,\\\"tokenID\\\":536870913," + "\\\"userID\\\":1,\\\"version\\\":1},\\\"commandName\\\":\\\"UpdateRemoteHapTokenCommand\\\"," + "\\\"dstDeviceId\\\":\\\"local:udid-001\\\",\\\"dstDeviceLevel\\\":\\\"\\\",\\\"message\\\":\\\"success\\\"," + "\\\"requestTokenId\\\":536870913,\\\"requestVersion\\\":2,\\\"responseDeviceId\\\":\\\"\\\"," + "\\\"responseVersion\\\":2," + "\\\"srcDeviceId\\\":\\\"deviceid-1\\\",\\\"srcDeviceLevel\\\":\\\"\\\",\\\"statusCode\\\":100001," + "\\\"uniqueId\\\":\\\"UpdateRemoteHapTokenCommand\\\"}\",\"type\":\"request\"}"; + + recvBuffer = (unsigned char *)malloc(0x1000); + recvLen = 0x1000; + CompressMock(recvJson, recvBuffer, recvLen); + SoftBusSessionListener::OnBytesReceived(1, recvBuffer, recvLen); + sleep(2); + free(recvBuffer); + + ret = AccessTokenKit::GetHapTokenInfo(mapID, mapInfo); + ASSERT_EQ(ret, RET_SUCCESS); + ASSERT_EQ(mapInfo.apl, 2); +} + +/** + * @tc.name: DeleteRemoteTokenCommand001 + * @tc.desc: recv delete mapping hap token update message + * @tc.type: FUNC + * @tc.require:AR000GK6TC + */ +HWTEST_F(TokenSyncServiceTest, DeleteRemoteTokenCommand001, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "DeleteRemoteTokenCommand001 start."); + + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); + + int ret = AccessTokenKit::SetRemoteHapTokenInfo(g_networkID, g_remoteHapInfo); + ASSERT_EQ(ret, RET_SUCCESS); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20000001); + ASSERT_NE(mapID, 0); + + HapTokenInfo mapInfo; + ret = AccessTokenKit::GetHapTokenInfo(mapID, mapInfo); + ASSERT_EQ(ret, RET_SUCCESS); + + // create recv message + std::string recvJson = + "{\"commandName\":\"DeleteRemoteTokenCommand\",\"id\":\"9ff19cdf-\",\"jsonPayload\":" + "\"{\\\"commandName\\\":\\\"DeleteRemoteTokenCommand\\\"," + "\\\"dstDeviceId\\\":\\\"local:udid-001\\\",\\\"dstDeviceLevel\\\":\\\"\\\",\\\"message\\\":\\\"success\\\"," + "\\\"requestTokenId\\\":536870913,\\\"requestVersion\\\":2,\\\"responseDeviceId\\\":\\\"\\\"," + "\\\"responseVersion\\\":2," + "\\\"srcDeviceId\\\":\\\"deviceid-1\\\",\\\"srcDeviceLevel\\\":\\\"\\\",\\\"statusCode\\\":100001," + "\\\"tokenId\\\":536870913,\\\"uniqueId\\\":\\\"DeleteRemoteTokenCommand\\\"}\",\"type\":\"request\"}"; + + unsigned char *recvBuffer = (unsigned char *)malloc(0x1000); + int recvLen = 0x1000; + CompressMock(recvJson, recvBuffer, recvLen); + SoftBusSessionListener::OnBytesReceived(1, recvBuffer, recvLen); + sleep(2); + free(recvBuffer); + ret = AccessTokenKit::GetHapTokenInfo(mapID, mapInfo); + ASSERT_EQ(ret, RET_FAILED); +} + +/** + * @tc.name: DeviceOffline001 + * @tc.desc: test device offline, will delete + * @tc.type: FUNC + * @tc.require:AR000GK6TB + */ +HWTEST_F(TokenSyncServiceTest, DeviceOffline001, TestSize.Level1) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "DeviceOffline001 start."); + + // device online + g_ptrDeviceStateCallback->OnDeviceOnline(g_devInfo); + + int ret = AccessTokenKit::SetRemoteHapTokenInfo(g_networkID, g_remoteHapInfo); + ASSERT_EQ(ret, RET_SUCCESS); + AccessTokenID mapID = AccessTokenKit::AllocLocalTokenID(g_networkID, 0x20000001); + ASSERT_NE(mapID, 0); + + HapTokenInfo mapInfo; + ret = AccessTokenKit::GetHapTokenInfo(mapID, mapInfo); + ASSERT_EQ(ret, RET_SUCCESS); + + g_ptrDeviceStateCallback->OnDeviceOffline(g_devInfo); + sleep(1); - ptrDeviceStateCallback->OnDeviceOffline(devInfo); + ret = AccessTokenKit::GetHapTokenInfo(mapID, mapInfo); + ASSERT_EQ(ret, RET_FAILED); }