From be560ea248be57a72b09d333f801288081274cc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=9B=B7?= Date: Wed, 18 Jun 2025 21:48:14 +0800 Subject: [PATCH 1/2] modify dele cred MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张雷 --- .../include/device_manager_service_impl.h | 4 +- .../src/device_manager_service_impl.cpp | 32 +- ...Test_device_manager_service_impl_first.cpp | 297 +++++++++++++++++- .../mock/device_manager_service_impl_mock.h | 2 + 4 files changed, 317 insertions(+), 18 deletions(-) diff --git a/services/implementation/include/device_manager_service_impl.h b/services/implementation/include/device_manager_service_impl.h index 7e22d16a8..cf9ceba0a 100644 --- a/services/implementation/include/device_manager_service_impl.h +++ b/services/implementation/include/device_manager_service_impl.h @@ -264,10 +264,10 @@ private: std::map &delProfileMap, std::vector> &delACLInfoVec, std::vector &userIdVec); - void GetDelACLInfoVec(const int32_t &accessTokenId, + void GetDelACLInfoVec(int32_t accessTokenId, std::vector &profiles, std::vector> &delACLInfoVec, std::vector &userIdVec, - const uint32_t &userId); + const DevUserInfo &info); void DeleteAclByDelProfileMap( const std::map &delProfileMap, diff --git a/services/implementation/src/device_manager_service_impl.cpp b/services/implementation/src/device_manager_service_impl.cpp index 0d3886893..8f5a642ad 100644 --- a/services/implementation/src/device_manager_service_impl.cpp +++ b/services/implementation/src/device_manager_service_impl.cpp @@ -2342,12 +2342,15 @@ int32_t DeviceManagerServiceImpl::ProcessAppUninstall(int32_t userId, int32_t ac std::string localUdid = std::string(localDeviceId); std::vector> delACLInfoVec; std::vector userIdVec; - GetDelACLInfoVec(accessTokenId, profiles, delACLInfoVec, userIdVec, userId); - + DevUserInfo info; + info.deviceId = localUdid; + info.userId = userId; + GetDelACLInfoVec(accessTokenId, profiles, delACLInfoVec, userIdVec, info); + if (delACLInfoVec.size() == 0 || userIdVec.size() == 0) { return DM_OK; } - + CHECK_NULL_RETURN(hiChainConnector_, ERR_DM_POINT_NULL); hiChainConnector_->DeleteGroupByACL(delACLInfoVec, userIdVec); return DM_OK; @@ -2438,15 +2441,12 @@ void DeviceManagerServiceImpl::DeleteAclByTokenId(const int32_t accessTokenId, } } -void DeviceManagerServiceImpl::GetDelACLInfoVec(const int32_t &accessTokenId, +void DeviceManagerServiceImpl::GetDelACLInfoVec(int32_t accessTokenId, std::vector &profiles, std::vector> &delACLInfoVec, std::vector &userIdVec, - const uint32_t &userId) + const DevUserInfo &info) { std::map delProfileMap; - char localDeviceId[DEVICE_UUID_LENGTH] = {0}; - GetDevUdid(localDeviceId, DEVICE_UUID_LENGTH); - std::string localUdid = std::string(localDeviceId); for (auto &item : profiles) { int64_t accesssertokenId = item.GetAccesser().GetAccesserTokenId(); int64_t accessseetokenId = item.GetAccessee().GetAccesseeTokenId(); @@ -2455,23 +2455,24 @@ void DeviceManagerServiceImpl::GetDelACLInfoVec(const int32_t &accessTokenId, continue; } if (accessTokenId == static_cast(accesssertokenId) && - userId == item.GetAccesser().GetAccesserUserId() && - localUdid == item.GetAccessee().GetAccesseeDeviceId()) { + info.userId == item.GetAccesser().GetAccesserUserId() && + info.deviceId == item.GetAccessee().GetAccesseeDeviceId()) { DmOfflineParam offlineParam; delProfileMap[item.GetAccessControlId()] = item; - DeviceProfileConnector::GetInstance().CacheAcerAclId(item, offlineParam.needDelAclInfos); + DeviceProfileConnector::GetInstance().CacheAceeAclId(item, offlineParam.needDelAclInfos); DeleteSkCredAndAcl(offlineParam.needDelAclInfos); if (item.GetBindLevel() == USER) { userIdVec.push_back(item.GetAccessee().GetAccesseeUserId()); delACLInfoVec.push_back(std::pair(item.GetAccessee().GetAccesseeUserId(), item.GetAccesser().GetAccesserDeviceId())); } + continue; } if (accessTokenId == static_cast(accessseetokenId) && - userId == item.GetAccessee().GetAccesseeUserId() && - localUdid == item.GetAccesser().GetAccesserDeviceId()) { + info.userId == item.GetAccessee().GetAccesseeUserId() && + info.deviceId == item.GetAccesser().GetAccesserDeviceId()) { DmOfflineParam offlineParam; - DeviceProfileConnector::GetInstance().CacheAceeAclId(item, offlineParam.needDelAclInfos); + DeviceProfileConnector::GetInstance().CacheAcerAclId(item, offlineParam.needDelAclInfos); delProfileMap[item.GetAccessControlId()] = item; DeleteSkCredAndAcl(offlineParam.needDelAclInfos); if (item.GetBindLevel() == USER) { @@ -2479,9 +2480,10 @@ void DeviceManagerServiceImpl::GetDelACLInfoVec(const int32_t &accessTokenId, delACLInfoVec.push_back(std::pair(item.GetAccesser().GetAccesserUserId(), item.GetAccessee().GetAccesseeDeviceId())); } + continue; } } - DeleteAclByDelProfileMap(delProfileMap, profiles, localUdid); + DeleteAclByDelProfileMap(delProfileMap, profiles, info.deviceId); } void DeviceManagerServiceImpl::DeleteAclByDelProfileMap( diff --git a/test/unittest/UTTest_device_manager_service_impl_first.cpp b/test/unittest/UTTest_device_manager_service_impl_first.cpp index 3badcf299..f6fb91abb 100644 --- a/test/unittest/UTTest_device_manager_service_impl_first.cpp +++ b/test/unittest/UTTest_device_manager_service_impl_first.cpp @@ -63,6 +63,110 @@ void DeviceManagerServiceImplFirstTest::TearDownTestCase() } namespace { + void AddAccessControlProfileSecond(std::vector& accessControlProfiles) +{ + int32_t userId = 123456; + int32_t bindType = 256; + int32_t deviceIdType = 1; + uint32_t bindLevel = 3; + uint32_t status = 1; + uint32_t authenticationType = 2; + uint32_t accesserId = 1; + uint32_t tokenId = 1001; + + std::string oldAccountId = "oldAccountId"; + std::string newAccountId = "newAccountId"; + std::string deviceIdEr = "remoteDeviceId"; + std::string deviceIdEe = "localDeviceId"; + std::string trustDeviceId = "localDeviceId"; + + DistributedDeviceProfile::Accesser accesser; + accesser.SetAccesserId(accesserId); + accesser.SetAccesserDeviceId(deviceIdEr); + accesser.SetAccesserUserId(userId); + accesser.SetAccesserAccountId(oldAccountId); + accesser.SetAccesserTokenId(tokenId); + accesser.SetAccesserBundleName("bundleName1"); + accesser.SetAccesserHapSignature("uph1"); + accesser.SetAccesserBindLevel(bindLevel); + + DistributedDeviceProfile::Accessee accessee; + accessee.SetAccesseeId(accesserId); + accessee.SetAccesseeDeviceId(deviceIdEe); + accessee.SetAccesseeUserId(userId); + accessee.SetAccesseeAccountId(newAccountId); + accessee.SetAccesseeTokenId(tokenId); + accessee.SetAccesseeBundleName("bundleName2"); + accessee.SetAccesseeHapSignature("uph1"); + accessee.SetAccesseeBindLevel(bindLevel); + + DistributedDeviceProfile::AccessControlProfile profileFifth; + profileFifth.SetAccessControlId(accesserId); + profileFifth.SetAccesserId(accesserId); + profileFifth.SetAccesseeId(accesserId); + profileFifth.SetTrustDeviceId(trustDeviceId); + profileFifth.SetBindType(bindType); + profileFifth.SetAuthenticationType(authenticationType); + profileFifth.SetDeviceIdType(deviceIdType); + profileFifth.SetStatus(status); + profileFifth.SetBindLevel(bindLevel); + profileFifth.SetAccesser(accesser); + profileFifth.SetAccessee(accessee); + accessControlProfiles.push_back(profileFifth); +} + +void AddAccessControlProfileFirst(std::vector& accessControlProfiles) +{ + int32_t userId = 123456; + int32_t bindType = 256; + int32_t deviceIdType = 1; + uint32_t bindLevel = 1; + uint32_t status = 1; + uint32_t authenticationType = 2; + uint32_t accesserId = 1; + uint32_t tokenId = 1001; + + std::string oldAccountId = "oldAccountId"; + std::string newAccountId = "newAccountId"; + std::string deviceIdEr = "remoteDeviceId"; + std::string deviceIdEe = "localDeviceId"; + std::string trustDeviceId = "123456"; + + DistributedDeviceProfile::Accesser accesser; + accesser.SetAccesserId(accesserId); + accesser.SetAccesserDeviceId(deviceIdEr); + accesser.SetAccesserUserId(userId); + accesser.SetAccesserAccountId(oldAccountId); + accesser.SetAccesserTokenId(tokenId); + accesser.SetAccesserBundleName("bundleName"); + accesser.SetAccesserHapSignature("uph1"); + accesser.SetAccesserBindLevel(bindLevel); + + DistributedDeviceProfile::Accessee accessee; + accessee.SetAccesseeId(accesserId); + accessee.SetAccesseeDeviceId(deviceIdEe); + accessee.SetAccesseeUserId(userId); + accessee.SetAccesseeAccountId(newAccountId); + accessee.SetAccesseeTokenId(tokenId); + accessee.SetAccesseeBundleName("bundleName"); + accessee.SetAccesseeHapSignature("uph1"); + accessee.SetAccesseeBindLevel(bindLevel); + + DistributedDeviceProfile::AccessControlProfile profileFifth; + profileFifth.SetAccessControlId(accesserId); + profileFifth.SetAccesserId(accesserId); + profileFifth.SetAccesseeId(accesserId); + profileFifth.SetTrustDeviceId(trustDeviceId); + profileFifth.SetBindType(bindType); + profileFifth.SetAuthenticationType(authenticationType); + profileFifth.SetDeviceIdType(deviceIdType); + profileFifth.SetStatus(status); + profileFifth.SetBindLevel(bindLevel); + profileFifth.SetAccesser(accesser); + profileFifth.SetAccessee(accessee); + accessControlProfiles.push_back(profileFifth); +} + HWTEST_F(DeviceManagerServiceImplFirstTest, GetDeviceIdAndUserId_101, testing::ext::TestSize.Level1) { int32_t userId = 1; @@ -303,7 +407,7 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, HandleShareUnbindBroadCast_001, test EXPECT_CALL(*deviceProfileConnectorMock_, GetAccessControlProfile()) .WillOnce(Return(profiles)); EXPECT_CALL(*deviceProfileConnectorMock_, DeleteAccessControlById(_)) - .Times(0); + .Times(::testing::AtLeast(0)); deviceManagerServiceImpl_->HandleShareUnbindBroadCast(credId, userId, localUdid); } @@ -784,6 +888,197 @@ HWTEST_F(DeviceManagerServiceImplFirstTest, DeleteAclByTokenId_002, testing::ext EXPECT_TRUE(delACLInfoVec.empty()); EXPECT_TRUE(userIdVec.empty()); } + +HWTEST_F(DeviceManagerServiceImplFirstTest, DeleteAclByDelProfileMap_001, testing::ext::TestSize.Level1) +{ + std::map delProfileMap; + delProfileMap[1] = DistributedDeviceProfile::AccessControlProfile(); + + std::vector profiles; + DistributedDeviceProfile::AccessControlProfile profile1; + profile1.SetAccessControlId(1); + profiles.push_back(profile1); + + DeviceManagerServiceImpl serviceImpl; + serviceImpl.DeleteAclByDelProfileMap(delProfileMap, profiles, "localUdid"); + + EXPECT_TRUE(profiles.empty()); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, DeleteAclByDelProfileMap_002, testing::ext::TestSize.Level1) +{ + std::map delProfileMap; + + std::vector profiles; + DistributedDeviceProfile::AccessControlProfile profile1; + profile1.SetAccessControlId(1); + profiles.push_back(profile1); + + DeviceManagerServiceImpl serviceImpl; + serviceImpl.DeleteAclByDelProfileMap(delProfileMap, profiles, "localUdid"); + + EXPECT_FALSE(profiles.empty()); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, DeleteAclByDelProfileMap_003, testing::ext::TestSize.Level1) +{ + std::map delProfileMap; + delProfileMap[1] = DistributedDeviceProfile::AccessControlProfile(); + + std::vector profiles; + DistributedDeviceProfile::AccessControlProfile profile1; + profile1.SetAccessControlId(2); + profiles.push_back(profile1); + + DeviceManagerServiceImpl serviceImpl; + serviceImpl.DeleteAclByDelProfileMap(delProfileMap, profiles, "localUdid"); + + EXPECT_FALSE(profiles.empty()); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, GetDelACLInfoVec_001, testing::ext::TestSize.Level1) +{ + int32_t accessTokenId = 123; + std::vector profiles; + std::vector> delACLInfoVec; + std::vector userIdVec; + uint32_t userId = 456; + std::string deviceId = "device1"; + DevUserInfo info = { deviceId, userId }; + + DistributedDeviceProfile::AccessControlProfile profile1; + profile1.GetAccesser().SetAccesserTokenId(456); + profile1.GetAccessee().SetAccesseeTokenId(789); + profile1.GetAccesser().SetAccesserUserId(userId); + profile1.GetAccessee().SetAccesseeDeviceId("device1"); + profile1.SetAccessControlId(1); + + profiles.push_back(profile1); + + deviceManagerServiceImpl_->GetDelACLInfoVec(accessTokenId, profiles, delACLInfoVec, userIdVec, info); + + EXPECT_TRUE(delACLInfoVec.empty()); + EXPECT_TRUE(userIdVec.empty()); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, GetDelACLInfoVec_002, testing::ext::TestSize.Level1) +{ + int64_t accessTokenId = 123; + std::vector profiles; + std::vector> delACLInfoVec; + std::vector userIdVec; + int32_t userId = 456; + std::string deviceId = "device1"; + DevUserInfo info = { deviceId, userId }; + + DistributedDeviceProfile::Accesser accesser; + accesser.SetAccesserTokenId(accessTokenId); + accesser.SetAccesserUserId(userId); + + DistributedDeviceProfile::Accessee accessee; + accessee.SetAccesseeTokenId(accessTokenId); + accessee.SetAccesseeDeviceId("device1"); + + DistributedDeviceProfile::AccessControlProfile profileFifth; + profileFifth.SetAccessControlId(1); + profileFifth.SetBindLevel(1); + profileFifth.SetAccesser(accesser); + profileFifth.SetAccessee(accessee); + profiles.push_back(profileFifth); + + deviceManagerServiceImpl_->GetDelACLInfoVec(accessTokenId, profiles, delACLInfoVec, userIdVec, info); + + EXPECT_FALSE(delACLInfoVec.empty()); + EXPECT_FALSE(userIdVec.empty()); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, GetDelACLInfoVec_003, testing::ext::TestSize.Level1) +{ + int64_t accessTokenId = 123; + std::vector profiles; + std::vector> delACLInfoVec; + std::vector userIdVec; + int32_t userId = 456; + std::string deviceId = "device1"; + DevUserInfo info = { deviceId, userId }; + + DistributedDeviceProfile::Accesser accesser; + accesser.SetAccesserTokenId(accessTokenId); + accesser.SetAccesserDeviceId("device1"); + + DistributedDeviceProfile::Accessee accessee; + accessee.SetAccesseeTokenId(accessTokenId); + accessee.SetAccesseeUserId(userId); + + DistributedDeviceProfile::AccessControlProfile profileFifth; + profileFifth.SetAccessControlId(1); + profileFifth.SetBindLevel(1); + profileFifth.SetAccesser(accesser); + profileFifth.SetAccessee(accessee); + profiles.push_back(profileFifth); + + deviceManagerServiceImpl_->GetDelACLInfoVec(accessTokenId, profiles, delACLInfoVec, userIdVec, info); + + EXPECT_FALSE(delACLInfoVec.empty()); + EXPECT_FALSE(userIdVec.empty()); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, ProcessAppUninstall_001, testing::ext::TestSize.Level1) +{ + int32_t userId = 1; + int32_t accessTokenId = 2; + + std::vector profiles; + EXPECT_CALL(*deviceProfileConnectorMock_, GetAllAclIncludeLnnAcl()).WillOnce(Return(profiles)); + + int32_t result = deviceManagerServiceImpl_->ProcessAppUninstall(userId, accessTokenId); + + EXPECT_EQ(result, DM_OK); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, ProcessAppUninstall_002, testing::ext::TestSize.Level1) +{ + int32_t userId = 1; + int32_t accessTokenId = 2; + + std::vector profiles; + AddAccessControlProfileSecond(profiles); + EXPECT_CALL(*deviceProfileConnectorMock_, GetAllAclIncludeLnnAcl()).WillOnce(Return(profiles)); + + int32_t result = deviceManagerServiceImpl_->ProcessAppUninstall(userId, accessTokenId); + + EXPECT_EQ(result, DM_OK); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, ProcessAppUninstall_003, testing::ext::TestSize.Level1) +{ + int32_t userId = 1; + int32_t accessTokenId = 2; + + std::vector profiles; + AddAccessControlProfileFirst(profiles); + EXPECT_CALL(*deviceProfileConnectorMock_, GetAllAclIncludeLnnAcl()).WillOnce(Return(profiles)); + deviceManagerServiceImpl_->hiChainConnector_ = nullptr; + + int32_t result = deviceManagerServiceImpl_->ProcessAppUninstall(userId, accessTokenId); + + EXPECT_EQ(result, DM_OK); +} + +HWTEST_F(DeviceManagerServiceImplFirstTest, ProcessAppUninstall_004, testing::ext::TestSize.Level1) +{ + int32_t userId = 1; + int32_t accessTokenId = 2; + + std::vector profiles; + AddAccessControlProfileFirst(profiles); + EXPECT_CALL(*deviceProfileConnectorMock_, GetAllAclIncludeLnnAcl()).WillOnce(Return(profiles)); + deviceManagerServiceImpl_->hiChainConnector_ = std::make_shared(); + + int32_t result = deviceManagerServiceImpl_->ProcessAppUninstall(userId, accessTokenId); + + EXPECT_EQ(result, DM_OK); +} } // namespace } // namespace DistributedHardware } // namespace OHOS diff --git a/test/unittest/mock/device_manager_service_impl_mock.h b/test/unittest/mock/device_manager_service_impl_mock.h index 6a31d6008..a2fa812d9 100644 --- a/test/unittest/mock/device_manager_service_impl_mock.h +++ b/test/unittest/mock/device_manager_service_impl_mock.h @@ -62,6 +62,8 @@ public: MOCK_METHOD(int32_t, UnAuthenticateDevice, (const std::string &, const std::string &, int32_t)); MOCK_METHOD(int32_t, UnBindDevice, (const std::string &, const std::string &, int32_t, const std::string &)); MOCK_METHOD(bool, CheckSharePeerSrc, (const std::string &peerUdid, const std::string &localUdid)); + MOCK_METHOD(void, HandleCredentialDeleted, (const char *, const char *, const std::string &, + std::string &)); MOCK_METHOD(void, HandleCredentialDeleted, (const char *, const char *, const std::string &, std::string &)); MOCK_METHOD(void, HandleShareUnbindBroadCast, (const std::string &, const int32_t &, const std::string &)); -- Gitee From 326e150eb0cee814df6335113a2933cd943493b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=9B=B7?= Date: Wed, 18 Jun 2025 21:53:23 +0800 Subject: [PATCH 2/2] modify cred del MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 张雷 --- services/implementation/src/device_manager_service_impl.cpp | 1 - test/unittest/UTTest_device_manager_service_impl_first.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/services/implementation/src/device_manager_service_impl.cpp b/services/implementation/src/device_manager_service_impl.cpp index 8f5a642ad..8e73f01a8 100644 --- a/services/implementation/src/device_manager_service_impl.cpp +++ b/services/implementation/src/device_manager_service_impl.cpp @@ -2346,7 +2346,6 @@ int32_t DeviceManagerServiceImpl::ProcessAppUninstall(int32_t userId, int32_t ac info.deviceId = localUdid; info.userId = userId; GetDelACLInfoVec(accessTokenId, profiles, delACLInfoVec, userIdVec, info); - if (delACLInfoVec.size() == 0 || userIdVec.size() == 0) { return DM_OK; } diff --git a/test/unittest/UTTest_device_manager_service_impl_first.cpp b/test/unittest/UTTest_device_manager_service_impl_first.cpp index f6fb91abb..125eb6575 100644 --- a/test/unittest/UTTest_device_manager_service_impl_first.cpp +++ b/test/unittest/UTTest_device_manager_service_impl_first.cpp @@ -63,7 +63,7 @@ void DeviceManagerServiceImplFirstTest::TearDownTestCase() } namespace { - void AddAccessControlProfileSecond(std::vector& accessControlProfiles) +void AddAccessControlProfileSecond(std::vector& accessControlProfiles) { int32_t userId = 123456; int32_t bindType = 256; -- Gitee