• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025-2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #define private public
16 #include "admin_container_test.h"
17 #undef private
18 #include <vector>
19 
20 #include "admin_container.h"
21 
22 using namespace testing::ext;
23 
24 namespace OHOS {
25 namespace EDM {
26 namespace TEST {
27 constexpr int32_t DEFAULT_USER_ID = 100;
28 constexpr int32_t TEST_USER_ID = 101;
29 
SetUp()30 void AdminContainerTest::SetUp()
31 {
32     adminContainer_ = AdminContainer::GetInstance();
33     std::unordered_map<int32_t, std::vector<std::shared_ptr<Admin>>> admins;
34     adminContainer_->InitAdmins(admins);
35     adminContainer_->ClearAdmins();
36 }
37 
TearDown()38 void AdminContainerTest::TearDown()
39 {
40     std::vector<std::shared_ptr<Admin>> userAdmin;
41     adminContainer_->GetAdminCopyByUserId(DEFAULT_USER_ID, userAdmin);
42     for (const auto &admin : userAdmin) {
43         adminContainer_->DeleteAdmin(admin->adminInfo_.packageName_, DEFAULT_USER_ID);
44     }
45     adminContainer_->GetAdminCopyByUserId(TEST_USER_ID, userAdmin);
46     for (const auto &admin : userAdmin) {
47         adminContainer_->DeleteAdmin(admin->adminInfo_.packageName_, TEST_USER_ID);
48     }
49     adminContainer_->ClearAdmins();
50 }
51 
52 /**
53  * @tc.name: TestGetAdminByUserId
54  * @tc.desc: Test AdminContainer::GetAdminByUserId function.
55  * @tc.type: FUNC
56  */
57 HWTEST_F(AdminContainerTest, TestGetAdminByUserId, TestSize.Level1)
58 {
59     std::vector<std::shared_ptr<Admin>> userAdmin;
60     std::vector<std::string> permissions;
61     AppExecFwk::ExtensionAbilityInfo abilityInfo;
62     abilityInfo.bundleName = "com.edm.test.demo";
63     abilityInfo.name = "testDemo";
64     EntInfo entInfo;
65     entInfo.enterpriseName = "company";
66     entInfo.description = "technology company in wuhan";
67     permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
68     Admin admin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
69     adminContainer_->SetAdminByUserId(DEFAULT_USER_ID, admin);
70     adminContainer_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
71     ASSERT_TRUE(userAdmin.size() == 1);
72 
73     admin.adminInfo_.adminType_ = AdminType::ENT;
74     admin.adminInfo_.packageName_ = "com.edm.test.demo1";
75     admin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION", "ohos.permission.EDM_TEST_ENT_PERMISSION"};
76     adminContainer_->SetAdminByUserId(DEFAULT_USER_ID, admin);
77     adminContainer_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
78     ASSERT_TRUE(userAdmin.size() == 2);
79 }
80 
81 /**
82  * @tc.name: TestGetAdminCopyBySubscribeEvent
83  * @tc.desc: Test AdminContainer::GetAdminCopyBySubscribeEvent function.
84  * @tc.type: FUNC
85  */
86 HWTEST_F(AdminContainerTest, TestGetAdminCopyBySubscribeEvent, TestSize.Level1)
87 {
88     AppExecFwk::ExtensionAbilityInfo abilityInfo;
89     abilityInfo.bundleName = "com.edm.test.demo";
90     abilityInfo.name = "testDemo";
91     EntInfo entInfo;
92     entInfo.enterpriseName = "company";
93     entInfo.description = "technology company in wuhan";
94     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
95     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
96     edmAdmin.adminInfo_.managedEvents_ = {ManagedEvent::BUNDLE_ADDED, ManagedEvent::BUNDLE_REMOVED};
97     adminContainer_->SetAdminByUserId(DEFAULT_USER_ID, edmAdmin);
98 
99     edmAdmin.adminInfo_.packageName_ = "com.edm.test.demo1";
100     edmAdmin.adminInfo_.className_ = "testDemo1";
101     edmAdmin.adminInfo_.entInfo_.enterpriseName = "company1";
102     edmAdmin.adminInfo_.entInfo_.description = "technology company in wuhan1";
103     edmAdmin.adminInfo_.managedEvents_ = {};
104     adminContainer_->SetAdminByUserId(DEFAULT_USER_ID, edmAdmin);
105 
106     edmAdmin.adminInfo_.packageName_ = "com.edm.test.demo2";
107     edmAdmin.adminInfo_.className_ = "testDemo2";
108     edmAdmin.adminInfo_.entInfo_.enterpriseName = "company2";
109     edmAdmin.adminInfo_.entInfo_.description = "technology company in wuhan2";
110     edmAdmin.adminInfo_.managedEvents_ = {ManagedEvent::BUNDLE_REMOVED};
111     adminContainer_->SetAdminByUserId(TEST_USER_ID, edmAdmin);
112 
113     std::unordered_map<int32_t, std::vector<std::shared_ptr<Admin>>> subscribeAdmins;
114     adminContainer_->GetAdminCopyBySubscribeEvent(ManagedEvent::BUNDLE_ADDED, subscribeAdmins);
115     ASSERT_TRUE(subscribeAdmins[DEFAULT_USER_ID].size() == 1);
116     ASSERT_TRUE(subscribeAdmins.find(TEST_USER_ID) == subscribeAdmins.end());
117 }
118 
119 /**
120  * @tc.name: TestUpdateAdmin
121  * @tc.desc: Test AdminContainer::UpdateAdmin function.
122  * @tc.type: FUNC
123  */
124 HWTEST_F(AdminContainerTest, TestUpdateAdmin, TestSize.Level1)
125 {
126     std::string bundleName = "com.edm.test.demo";
127     std::string className = "testDemo";
128 
129     EntInfo entInfo1;
130     entInfo1.enterpriseName = "company1";
131     entInfo1.description = "technology company in wuhan";
132     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
133 
134     Admin edmAdmin;
135     edmAdmin.adminInfo_.packageName_ = bundleName;
136     edmAdmin.adminInfo_.className_ = className;
137     edmAdmin.adminInfo_.entInfo_ = entInfo1;
138     edmAdmin.adminInfo_.permission_= permissions;
139     edmAdmin.adminInfo_.managedEvents_ = {ManagedEvent::BUNDLE_REMOVED};
140     edmAdmin.adminInfo_.parentAdminName_ = "com.edm.test.demo1";
141     edmAdmin.adminInfo_.accessiblePolicies_ = {"ploicy1"};
142     edmAdmin.adminInfo_.adminType_ = AdminType::ENT;
143     edmAdmin.adminInfo_.runningMode_ = RunningMode::DEFAULT;
144     adminContainer_->SetAdminByUserId(DEFAULT_USER_ID, edmAdmin);
145 
146     EntInfo entInfo2;
147     entInfo2.enterpriseName = "company2";
148     entInfo2.description = "technology company in xian";
149     permissions = {"ohos.permission.EDM_TEST_PERMISSION_FAIL"};
150 
151     Admin updateAdmin;
152     updateAdmin.adminInfo_.packageName_ = bundleName;
153     updateAdmin.adminInfo_.className_ = className;
154     updateAdmin.adminInfo_.entInfo_ = entInfo2;
155     updateAdmin.adminInfo_.permission_= permissions;
156     updateAdmin.adminInfo_.managedEvents_ = {ManagedEvent::BUNDLE_ADDED};
157     updateAdmin.adminInfo_.parentAdminName_ = "com.edm.test.demo2";
158     updateAdmin.adminInfo_.accessiblePolicies_ = {"ploicy2"};
159     updateAdmin.adminInfo_.adminType_ = AdminType::NORMAL;
160     updateAdmin.adminInfo_.runningMode_ = RunningMode::MULTI_USER;
161 
162     adminContainer_->UpdateAdmin(DEFAULT_USER_ID, bundleName, CLASS_NAME | ENTI_NFO | PERMISSION | MANAGED_EVENTS |
163         PARENT_ADMIN_NAME | ACCESSIBLE_POLICIES | ADMIN_TYPE | IS_DEBUG | RUNNING_MODE, updateAdmin);
164 
165     std::vector<std::shared_ptr<Admin>> userAdmin;
166     adminContainer_->GetAdminCopyByUserId(DEFAULT_USER_ID, userAdmin);
167     ASSERT_TRUE(userAdmin.size() == 1);
168     std::shared_ptr<Admin> admin = userAdmin.at(0);
169 
170     ASSERT_EQ(admin->adminInfo_.className_, updateAdmin.adminInfo_.className_);
171     ASSERT_EQ(admin->adminInfo_.entInfo_.description, updateAdmin.adminInfo_.entInfo_.description);
172     ASSERT_EQ(admin->adminInfo_.entInfo_.enterpriseName, updateAdmin.adminInfo_.entInfo_.enterpriseName);
173     ASSERT_EQ(admin->adminInfo_.permission_[0], updateAdmin.adminInfo_.permission_[0]);
174     ASSERT_EQ(admin->adminInfo_.managedEvents_[0], updateAdmin.adminInfo_.managedEvents_[0]);
175     ASSERT_EQ(admin->adminInfo_.parentAdminName_, updateAdmin.adminInfo_.parentAdminName_);
176     ASSERT_EQ(admin->adminInfo_.accessiblePolicies_, updateAdmin.adminInfo_.accessiblePolicies_);
177     ASSERT_EQ(admin->adminInfo_.adminType_, updateAdmin.adminInfo_.adminType_);
178     ASSERT_EQ(admin->adminInfo_.runningMode_, updateAdmin.adminInfo_.runningMode_);
179 }
180 
181 /**
182  * @tc.name: TestDeleteAdmin
183  * @tc.desc: Test AdminContainer::DeleteAdmin function.
184  * @tc.type: FUNC
185  */
186 HWTEST_F(AdminContainerTest, TestDeleteAdmin, TestSize.Level1)
187 {
188     bool res;
189     std::vector<std::shared_ptr<Admin>> userAdmin;
190     std::vector<std::string> permissions;
191     AppExecFwk::ExtensionAbilityInfo abilityInfo;
192     abilityInfo.bundleName = "com.edm.test.demo";
193     abilityInfo.name = "testDemo";
194     EntInfo entInfo;
195     entInfo.enterpriseName = "company";
196     entInfo.description = "technology company in wuhan";
197     permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
198     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
199     adminContainer_->SetAdminByUserId(DEFAULT_USER_ID, edmAdmin);
200 
201     edmAdmin.adminInfo_.adminType_ = AdminType::ENT;
202     edmAdmin.adminInfo_.packageName_ = "com.edm.test.demo1";
203     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION",
204         "ohos.permission.EDM_TEST_ENT_PERMISSION"};
205     adminContainer_->SetAdminByUserId(DEFAULT_USER_ID, edmAdmin);
206 
207     res = adminContainer_->DeleteAdmin("com.edm.test.demo", DEFAULT_USER_ID);
208     ASSERT_TRUE(res);
209     adminContainer_->GetAdminCopyByUserId(DEFAULT_USER_ID, userAdmin);
210     ASSERT_TRUE(userAdmin.size() == 1);
211 
212     res = adminContainer_->DeleteAdmin("com.edm.test.demo1", DEFAULT_USER_ID);
213     ASSERT_TRUE(res);
214     adminContainer_->GetAdminCopyByUserId(DEFAULT_USER_ID, userAdmin);
215     ASSERT_TRUE(userAdmin.empty());
216 }
217 
218 /**
219  * @tc.name: TestSetAdminValue
220  * @tc.desc: Test AdminContainer::SetAdminByUserId function.
221  * @tc.type: FUNC
222  */
223 HWTEST_F(AdminContainerTest, TestSetAdminByUserId, TestSize.Level0)
224 {
225     std::shared_ptr<Admin> admin;
226     AppExecFwk::ExtensionAbilityInfo abilityInfo;
227     std::string bundleName = "com.edm.test.demo";
228     abilityInfo.bundleName = bundleName;
229     abilityInfo.name = "testDemo";
230     EntInfo entInfo;
231     entInfo.enterpriseName = "company";
232     entInfo.description = "technology company in wuhan";
233     std::vector<std::string> permissions {"ohos.permission.EDM_TEST_ENT_PERMISSION"};
234     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
235     adminContainer_->SetAdminByUserId(DEFAULT_USER_ID, edmAdmin);
236     std::vector<std::shared_ptr<Admin>> userAdmin;
237     adminContainer_->GetAdminCopyByUserId(DEFAULT_USER_ID, userAdmin);
238     ASSERT_EQ(userAdmin.size(), 1);
239     ASSERT_EQ(userAdmin[0]->adminInfo_.packageName_, bundleName);
240 }
241 } // namespace TEST
242 } // namespace EDM
243 } // namespace OHOS