• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-2023 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 
16 #define private public
17 #include "admin_manager_test.h"
18 #undef private
19 #include <vector>
20 
21 #include "admin_manager.h"
22 #include "iplugin.h"
23 #include "permission_manager.h"
24 #include "utils.h"
25 
26 using namespace testing::ext;
27 
28 namespace OHOS {
29 namespace EDM {
30 namespace TEST {
31 constexpr int32_t TEST_USER_ID = 101;
32 constexpr int HUGE_ADMIN_SIZE = 100;
33 constexpr int POLICY_CODE = 100;
34 
SetUp()35 void AdminManagerTest::SetUp()
36 {
37     PermissionManager::GetInstance()->AddPermission("ohos.permission.EDM_TEST_PERMISSION",
38         IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, POLICY_CODE);
39     PermissionManager::GetInstance()->AddPermission("ohos.permission.EDM_TEST_ENT_PERMISSION",
40         IPlugin::PermissionType::SUPER_DEVICE_ADMIN, POLICY_CODE);
41     adminMgr_ = AdminManager::GetInstance();
42     adminMgr_->Init();
43     adminMgr_->ClearAdmins();
44 }
45 
TearDown()46 void AdminManagerTest::TearDown()
47 {
48     std::vector<std::shared_ptr<Admin>> userAdmin;
49     adminMgr_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
50     for (const auto &admin : userAdmin) {
51         adminMgr_->DeleteAdmin(admin->adminInfo_.packageName_, DEFAULT_USER_ID);
52     }
53     adminMgr_->GetAdminByUserId(TEST_USER_ID, userAdmin);
54     for (const auto &admin : userAdmin) {
55         adminMgr_->DeleteAdmin(admin->adminInfo_.packageName_, TEST_USER_ID);
56     }
57     adminMgr_->ClearAdmins();
58     PermissionManager::DestroyInstance();
59 }
60 
61 /**
62  * @tc.name: TestGetAdminByUserId
63  * @tc.desc: Test AdminManager::GetAdminByUserId function.
64  * @tc.type: FUNC
65  */
66 HWTEST_F(AdminManagerTest, TestGetAdminByUserId, TestSize.Level1)
67 {
68     ErrCode res;
69     std::vector<std::shared_ptr<Admin>> userAdmin;
70     std::vector<std::string> permissions;
71     AppExecFwk::ExtensionAbilityInfo abilityInfo;
72     abilityInfo.bundleName = "com.edm.test.demo";
73     abilityInfo.name = "testDemo";
74     EntInfo entInfo;
75     entInfo.enterpriseName = "company";
76     entInfo.description = "technology company in wuhan";
77     permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
78     Admin admin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
79     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, admin);
80     ASSERT_TRUE(res == ERR_OK);
81     adminMgr_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
82     ASSERT_TRUE(userAdmin.size() == 1);
83 
84     admin.adminInfo_.adminType_ = AdminType::ENT;
85     admin.adminInfo_.packageName_ = "com.edm.test.demo1";
86     admin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION", "ohos.permission.EDM_TEST_ENT_PERMISSION"};
87     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, admin);
88     ASSERT_TRUE(res == ERR_OK);
89 
90     adminMgr_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
91     ASSERT_TRUE(userAdmin.size() == 2);
92 }
93 
94 /**
95  * @tc.name: TestGetAdminByPkgName
96  * @tc.desc: Test AdminManager::GetAdminByPkgName function.
97  * @tc.type: FUNC
98  */
99 HWTEST_F(AdminManagerTest, TestGetAdminByPkgName, TestSize.Level1)
100 {
101     ErrCode res;
102     std::vector<std::shared_ptr<Admin>> allAdmin;
103     std::vector<std::string> permissions;
104     AppExecFwk::ExtensionAbilityInfo abilityInfo;
105     abilityInfo.bundleName = "com.edm.test.demo";
106     abilityInfo.name = "testDemo";
107     EntInfo entInfo;
108     entInfo.enterpriseName = "company";
109     entInfo.description = "technology company in wuhan";
110     permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
111     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
112     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
113     ASSERT_TRUE(res == ERR_OK);
114 
115     edmAdmin.adminInfo_.adminType_ = AdminType::ENT;
116     edmAdmin.adminInfo_.packageName_ = "com.edm.test.demo1";
117     edmAdmin.adminInfo_.className_ = "testDemo";
118     edmAdmin.adminInfo_.entInfo_.enterpriseName = "company";
119     edmAdmin.adminInfo_.entInfo_.description = "technology company in wuhan";
120     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION",
121         "ohos.permission.EDM_TEST_ENT_PERMISSION"};
122     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
123     ASSERT_TRUE(res == ERR_OK);
124 
125     std::shared_ptr<Admin> admin;
126     admin = adminMgr_->GetAdminByPkgName("com.edm.test.demo", DEFAULT_USER_ID);
127     ASSERT_TRUE(admin != nullptr);
128 
129     admin = adminMgr_->GetAdminByPkgName("com.edm.test.demo1", DEFAULT_USER_ID);
130     ASSERT_TRUE(admin != nullptr);
131 }
132 
133 /**
134  * @tc.name: TestDeleteAdmin
135  * @tc.desc: Test AdminManager::DeleteAdmin function.
136  * @tc.type: FUNC
137  */
138 HWTEST_F(AdminManagerTest, TestDeleteAdmin, TestSize.Level1)
139 {
140     ErrCode res;
141     std::vector<std::shared_ptr<Admin>> userAdmin;
142     std::vector<std::string> permissions;
143     AppExecFwk::ExtensionAbilityInfo abilityInfo;
144     abilityInfo.bundleName = "com.edm.test.demo";
145     abilityInfo.name = "testDemo";
146     EntInfo entInfo;
147     entInfo.enterpriseName = "company";
148     entInfo.description = "technology company in wuhan";
149     permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
150     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
151     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
152     ASSERT_TRUE(res == ERR_OK);
153 
154     edmAdmin.adminInfo_.adminType_ = AdminType::ENT;
155     edmAdmin.adminInfo_.packageName_ = "com.edm.test.demo1";
156     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION",
157         "ohos.permission.EDM_TEST_ENT_PERMISSION"};
158     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
159     ASSERT_TRUE(res == ERR_OK);
160 
161     res = adminMgr_->DeleteAdmin("com.edm.test.demo", DEFAULT_USER_ID);
162     ASSERT_TRUE(res == ERR_OK);
163     adminMgr_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
164     ASSERT_TRUE(userAdmin.size() == 1);
165 
166     res = adminMgr_->DeleteAdmin("com.edm.test.demo1", DEFAULT_USER_ID);
167     ASSERT_TRUE(res == ERR_OK);
168     adminMgr_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
169     ASSERT_TRUE(userAdmin.empty());
170 }
171 
172 /**
173  * @tc.name: TestSetAdminValue
174  * @tc.desc: Test AdminManager::SetAdminValue function.
175  * @tc.type: FUNC
176  */
177 HWTEST_F(AdminManagerTest, TestSetAdminValue, TestSize.Level0)
178 {
179     std::shared_ptr<Admin> admin;
180     std::string bundleName = "com.edm.test.demo";
181     ErrCode res;
182     AppExecFwk::ExtensionAbilityInfo abilityInfo;
183     abilityInfo.bundleName = bundleName;
184     abilityInfo.name = "testDemo";
185     EntInfo entInfo;
186     entInfo.enterpriseName = "company";
187     entInfo.description = "technology company in wuhan";
188     std::vector<std::string> permissions;
189 
190     abilityInfo.bundleName = bundleName + "1";
191     permissions = {};
192     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
193     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
194     ASSERT_TRUE(res == ERR_OK);
195     admin = adminMgr_->GetAdminByPkgName(edmAdmin.adminInfo_.packageName_, DEFAULT_USER_ID);
196     ASSERT_TRUE(admin != nullptr);
197 
198     edmAdmin.adminInfo_.packageName_ = bundleName + "2";
199     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_ENT_PERMISSION"};
200     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
201     ASSERT_TRUE(res == ERR_OK);
202     admin = adminMgr_->GetAdminByPkgName(edmAdmin.adminInfo_.packageName_, DEFAULT_USER_ID);
203     ASSERT_TRUE(admin != nullptr);
204 
205     edmAdmin.adminInfo_.packageName_ = bundleName + "3";
206     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION_FAIL",
207         "ohos.permission.EDM_TEST_PERMISSION"};
208     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
209     ASSERT_TRUE(res == ERR_OK);
210     admin = adminMgr_->GetAdminByPkgName(edmAdmin.adminInfo_.packageName_, DEFAULT_USER_ID);
211     ASSERT_TRUE(admin != nullptr);
212 
213     edmAdmin.adminInfo_.packageName_ = bundleName + "4";
214     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION"};
215     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
216     ASSERT_TRUE(res == ERR_OK);
217     admin = adminMgr_->GetAdminByPkgName(edmAdmin.adminInfo_.packageName_, DEFAULT_USER_ID);
218     ASSERT_TRUE(admin != nullptr);
219 
220     edmAdmin.adminInfo_.adminType_ = AdminType::ENT;
221     edmAdmin.adminInfo_.packageName_ = bundleName + "5";
222     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_ENT_PERMISSION",
223         "ohos.permission.EDM_TEST_PERMISSION"};
224     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
225     ASSERT_TRUE(res == ERR_OK);
226     admin = adminMgr_->GetAdminByPkgName(edmAdmin.adminInfo_.packageName_, DEFAULT_USER_ID);
227     ASSERT_TRUE(admin != nullptr);
228 }
229 
230 /**
231  * @tc.name: TestSetAdminValueHuge
232  * @tc.desc: Test AdminManager::SetAdminValue function.
233  * @tc.type: FUNC
234  */
235 HWTEST_F(AdminManagerTest, TestSetAdminValueHuge, TestSize.Level1)
236 {
237     std::shared_ptr<Admin> admin;
238     std::string bundleName = "com.edm.test.demo";
239     ErrCode res;
240     AppExecFwk::ExtensionAbilityInfo abilityInfo;
241     abilityInfo.bundleName = bundleName;
242     abilityInfo.name = "testDemo";
243     EntInfo entInfo;
244     entInfo.enterpriseName = "company";
245     entInfo.description = "technology company in wuhan";
246     std::vector<std::string> permissions;
247     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
248     for (int i = 0; i < HUGE_ADMIN_SIZE; ++i) {
249         edmAdmin.adminInfo_.packageName_ = bundleName + std::to_string(i);
250         edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION"};
251         res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
252         ASSERT_TRUE(res == ERR_OK);
253         admin = adminMgr_->GetAdminByPkgName(edmAdmin.adminInfo_.packageName_, DEFAULT_USER_ID);
254         ASSERT_TRUE(admin != nullptr);
255     }
256     std::vector<std::shared_ptr<Admin>> userAdmin;
257     adminMgr_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
258     ASSERT_TRUE(userAdmin.size() == HUGE_ADMIN_SIZE);
259 }
260 
261 /**
262  * @tc.name: TestUpdateAdmin
263  * @tc.desc: Test AdminManager::UpdateAdmin function.
264  * @tc.type: FUNC
265  */
266 HWTEST_F(AdminManagerTest, TestUpdateAdmin, TestSize.Level1)
267 {
268     std::string bundleName = "com.edm.test.demo";
269 
270     ErrCode res;
271     AppExecFwk::ExtensionAbilityInfo abilityInfo;
272     abilityInfo.bundleName = bundleName;
273     abilityInfo.name = "testDemo";
274     EntInfo entInfo;
275     entInfo.enterpriseName = "company";
276     entInfo.description = "technology company in wuhan";
277 
278     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_PERMISSION_FAIL",
279         "ohos.permission.EDM_TEST_ENT_PERMISSION"};
280     std::vector<std::string> reqPermissions;
281     PermissionManager::GetInstance()->GetAdminGrantedPermission(permissions, AdminType::ENT, reqPermissions);
282     ASSERT_TRUE(reqPermissions.size() == 1);
283     Admin edmAdmin(abilityInfo, AdminType::ENT, entInfo, reqPermissions, false);
284     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
285     std::vector<std::shared_ptr<Admin>> userAdmin;
286     adminMgr_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
287     ASSERT_TRUE(userAdmin.size() == 1);
288     ASSERT_TRUE(userAdmin.at(0)->adminInfo_.permission_.size() == 1);
289 
290     permissions = {"ohos.permission.EDM_TEST_PERMISSION_FAIL", "ohos.permission.EDM_TEST_PERMISSION",
291         "ohos.permission.EDM_TEST_ENT_PERMISSION"};
292     PermissionManager::GetInstance()->GetAdminGrantedPermission(permissions, AdminType::ENT, reqPermissions);
293     ASSERT_TRUE(reqPermissions.size() == 2);
294     Admin updateAdmin(abilityInfo, AdminType::ENT, entInfo, reqPermissions, false);
295     res = adminMgr_->UpdateAdmin(userAdmin.at(0), DEFAULT_USER_ID, updateAdmin);
296     ASSERT_TRUE(res == ERR_OK);
297     adminMgr_->GetAdminByUserId(DEFAULT_USER_ID, userAdmin);
298     ASSERT_TRUE(userAdmin.size() == 1);
299     ASSERT_TRUE(userAdmin.at(0)->adminInfo_.permission_.size() == 2);
300 }
301 
302 /**
303  * @tc.name: TestIsSuperAdmin
304  * @tc.desc: Test AdminManager::IsSuperAdmin function.
305  * @tc.type: FUNC
306  */
307 HWTEST_F(AdminManagerTest, TestIsSuperAdmin, TestSize.Level1)
308 {
309     std::string bundleName = "com.edm.test.demo";
310     AppExecFwk::ExtensionAbilityInfo abilityInfo;
311     abilityInfo.bundleName = bundleName;
312     abilityInfo.name = "testDemo";
313     EntInfo entInfo;
314     entInfo.enterpriseName = "company";
315     entInfo.description = "technology company in wuhan";
316 
317     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_ENT_PERMISSION"};
318     Admin edmAdmin(abilityInfo, AdminType::ENT, entInfo, permissions, false);
319     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
320     ASSERT_TRUE(adminMgr_->IsSuperOrSubSuperAdmin(bundleName));
321 }
322 
323 /**
324  * @tc.name: TestIsByodAdmin001
325  * @tc.desc: Test AdminManager::IsByodAdmin function.
326  * @tc.type: FUNC
327  */
328 HWTEST_F(AdminManagerTest, TestIsByodAdmin001, TestSize.Level1)
329 {
330     std::string bundleName = "com.edm.test.demo";
331     ASSERT_TRUE(!adminMgr_->IsByodAdmin(bundleName, DEFAULT_USER_ID));
332     AppExecFwk::ExtensionAbilityInfo abilityInfo;
333     abilityInfo.bundleName = bundleName;
334     abilityInfo.name = "testDemo";
335     EntInfo entInfo;
336     entInfo.enterpriseName = "company";
337     entInfo.description = "technology company in wuhan";
338 
339     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_ENT_PERMISSION"};
340     Admin edmAdmin(abilityInfo, AdminType::BYOD, entInfo, permissions, false);
341     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
342     ASSERT_TRUE(adminMgr_->IsByodAdmin(bundleName, DEFAULT_USER_ID));
343 }
344 
345 /**
346  * @tc.name: TestIsByodAdmin002
347  * @tc.desc: Test AdminManager::IsByodAdmin admin is normal
348  * @tc.type: FUNC
349  */
350 HWTEST_F(AdminManagerTest, TestIsByodAdmin002, TestSize.Level1)
351 {
352     std::string bundleName = "com.edm.test.demo";
353     AppExecFwk::ExtensionAbilityInfo abilityInfo;
354     abilityInfo.bundleName = bundleName;
355     abilityInfo.name = "testDemo";
356     EntInfo entInfo;
357     entInfo.enterpriseName = "company";
358     entInfo.description = "technology company in wuhan";
359 
360     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_ENT_PERMISSION"};
361     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
362     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
363     ASSERT_TRUE(!adminMgr_->IsByodAdmin(bundleName, DEFAULT_USER_ID));
364 }
365 
366 /**
367  * @tc.name: TestIsSuperAdminExist
368  * @tc.desc: Test AdminManager::IsSuperAdminExist function.
369  * @tc.type: FUNC
370  */
371 HWTEST_F(AdminManagerTest, TestIsSuperAdminExist, TestSize.Level1)
372 {
373     std::string bundleName = "com.edm.test.demo";
374     AppExecFwk::ExtensionAbilityInfo abilityInfo;
375     abilityInfo.bundleName = bundleName;
376     abilityInfo.name = "testDemo";
377     EntInfo entInfo;
378     entInfo.enterpriseName = "company";
379     entInfo.description = "technology company in wuhan";
380 
381     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_ENT_PERMISSION"};
382     Admin edmAdmin(abilityInfo, AdminType::ENT, entInfo, permissions, false);
383     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
384     edmAdmin.adminInfo_.adminType_ = AdminType::NORMAL;
385     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION"};
386     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
387     ASSERT_TRUE(adminMgr_->IsSuperAdminExist());
388 }
389 
390 /**
391  * @tc.name: TestIsByodAdminExist
392  * @tc.desc: Test AdminManager::IsByodAdminExist function.
393  * @tc.type: FUNC
394  */
395 HWTEST_F(AdminManagerTest, TestIsByodAdminExist, TestSize.Level1)
396 {
397     std::string bundleName = "com.edm.test.demo";
398     AppExecFwk::ExtensionAbilityInfo abilityInfo;
399     abilityInfo.bundleName = bundleName;
400     abilityInfo.name = "testDemo";
401     EntInfo entInfo;
402     entInfo.enterpriseName = "company";
403     entInfo.description = "technology company in wuhan";
404     ASSERT_FALSE(adminMgr_->IsByodAdminExist());
405     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_ENT_PERMISSION"};
406     Admin edmAdmin(abilityInfo, AdminType::BYOD, entInfo, permissions, false);
407     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
408     edmAdmin.adminInfo_.adminType_ = AdminType::NORMAL;
409     edmAdmin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION"};
410     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
411     ASSERT_TRUE(adminMgr_->IsByodAdminExist());
412 }
413 
414 /**
415  * @tc.name: TestGetAdminBySubscribeEvent
416  * @tc.desc: Test AdminManager::GetAdminBySubscribeEvent function.
417  * @tc.type: FUNC
418  */
419 HWTEST_F(AdminManagerTest, TestGetAdminBySubscribeEvent, TestSize.Level1)
420 {
421     AppExecFwk::ExtensionAbilityInfo abilityInfo;
422     abilityInfo.bundleName = "com.edm.test.demo";
423     abilityInfo.name = "testDemo";
424     EntInfo entInfo;
425     entInfo.enterpriseName = "company";
426     entInfo.description = "technology company in wuhan";
427     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
428     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
429     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
430     edmAdmin.adminInfo_.packageName_ = "com.edm.test.demo1";
431     edmAdmin.adminInfo_.className_ = "testDemo1";
432     edmAdmin.adminInfo_.entInfo_.enterpriseName = "company1";
433     edmAdmin.adminInfo_.entInfo_.description = "technology company in wuhan1";
434     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
435     edmAdmin.adminInfo_.packageName_ = "com.edm.test.demo2";
436     edmAdmin.adminInfo_.className_ = "testDemo2";
437     edmAdmin.adminInfo_.entInfo_.enterpriseName = "company2";
438     edmAdmin.adminInfo_.entInfo_.description = "technology company in wuhan2";
439     adminMgr_->SetAdminValue(TEST_USER_ID, edmAdmin);
440 
441     const std::vector<uint32_t> events = {0, 1};
442     adminMgr_->SaveSubscribeEvents(events, "com.edm.test.demo", DEFAULT_USER_ID);
443     const std::vector<uint32_t> events1 = {1};
444     adminMgr_->SaveSubscribeEvents(events1, "com.edm.test.demo2", TEST_USER_ID);
445 
446     std::unordered_map<int32_t, std::vector<std::shared_ptr<Admin>>> subscribeAdmins;
447     adminMgr_->GetAdminBySubscribeEvent(ManagedEvent::BUNDLE_ADDED, subscribeAdmins);
448     ASSERT_TRUE(subscribeAdmins[DEFAULT_USER_ID].size() == 1);
449     ASSERT_TRUE(subscribeAdmins.find(TEST_USER_ID) == subscribeAdmins.end());
450 }
451 
452 /**
453  * @tc.name: TestSaveSubscribeEvents
454  * @tc.desc: Test AdminManager::SaveSubscribeEvents function.
455  * @tc.type: FUNC
456  */
457 HWTEST_F(AdminManagerTest, TestSaveSubscribeEvents, TestSize.Level1)
458 {
459     AppExecFwk::ExtensionAbilityInfo abilityInfo;
460     abilityInfo.bundleName = "com.edm.test.demo";
461     abilityInfo.name = "testDemo";
462     EntInfo entInfo;
463     entInfo.enterpriseName = "company";
464     entInfo.description = "technology company in wuhan";
465     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
466     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
467     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
468 
469     std::shared_ptr<Admin> admin = adminMgr_->GetAdminByPkgName(abilityInfo.bundleName, DEFAULT_USER_ID);
470     ASSERT_TRUE(admin != nullptr);
471     std::vector<uint32_t> events = {0};
472     adminMgr_->SaveSubscribeEvents(events, abilityInfo.bundleName, DEFAULT_USER_ID);
473     admin = adminMgr_->GetAdminByPkgName(abilityInfo.bundleName, DEFAULT_USER_ID);
474     ASSERT_TRUE(admin->adminInfo_.managedEvents_.size() == 1);
475     events.push_back(1);
476     adminMgr_->SaveSubscribeEvents(events, abilityInfo.bundleName, DEFAULT_USER_ID);
477     admin = adminMgr_->GetAdminByPkgName(abilityInfo.bundleName, DEFAULT_USER_ID);
478     ASSERT_TRUE(admin->adminInfo_.managedEvents_.size() > 1);
479 }
480 
481 /**
482  * @tc.name: TestRemoveSubscribeEvents
483  * @tc.desc: Test AdminManager::RemoveSubscribeEvents function.
484  * @tc.type: FUNC
485  */
486 HWTEST_F(AdminManagerTest, TestRemoveSubscribeEvents, TestSize.Level1)
487 {
488     AppExecFwk::ExtensionAbilityInfo abilityInfo;
489     abilityInfo.bundleName = "com.edm.test.demo";
490     abilityInfo.name = "testDemo";
491     EntInfo entInfo;
492     entInfo.enterpriseName = "company";
493     entInfo.description = "technology company in wuhan";
494     std::vector<std::string> permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
495     Admin edmAdmin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
496     adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
497 
498     std::shared_ptr<Admin> admin = adminMgr_->GetAdminByPkgName(abilityInfo.bundleName, DEFAULT_USER_ID);
499     ASSERT_TRUE(admin != nullptr);
500 
501     std::vector<uint32_t> events = {0};
502     adminMgr_->SaveSubscribeEvents(events, abilityInfo.bundleName, DEFAULT_USER_ID);
503 
504     events = {1};
505     adminMgr_->RemoveSubscribeEvents(events, abilityInfo.bundleName, DEFAULT_USER_ID);
506     admin = adminMgr_->GetAdminByPkgName(abilityInfo.bundleName, DEFAULT_USER_ID);
507     ASSERT_TRUE(admin->adminInfo_.managedEvents_.size() == 1);
508     events.push_back(0);
509     adminMgr_->RemoveSubscribeEvents(events, abilityInfo.bundleName, DEFAULT_USER_ID);
510     admin = adminMgr_->GetAdminByPkgName(abilityInfo.bundleName, DEFAULT_USER_ID);
511     ASSERT_TRUE(admin->adminInfo_.managedEvents_.empty());
512 }
513 
514 /**
515  * @tc.name: TestSaveAuthorizedAdmin
516  * @tc.desc: Test AdminManager::SaveAuthorizedAdmin.
517  * @tc.type: FUNC
518  */
519 HWTEST_F(AdminManagerTest, TestSaveAuthorizedAdmin, TestSize.Level1)
520 {
521     std::vector<std::shared_ptr<Admin>> allAdmin;
522     AppExecFwk::ExtensionAbilityInfo abilityInfo;
523     abilityInfo.bundleName = "com.edm.test.demo";
524     abilityInfo.name = "testDemo";
525     EntInfo entInfo("test", "this is test");
526     std::vector<std::string> permissions{"ohos.permission.EDM_TEST_PERMISSION"};
527     Admin edmAdmin(abilityInfo, AdminType::ENT, entInfo, permissions, false);
528     ErrCode res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
529     ASSERT_TRUE(res == ERR_OK);
530 
531     AppExecFwk::ExtensionAbilityInfo subAbilityInfo;
532     subAbilityInfo.bundleName = "com.edm.test.demo1";
533     Admin subSuperAdmin(subAbilityInfo, AdminType::SUB_SUPER_ADMIN, entInfo, permissions, true);
534     subSuperAdmin.SetParentAdminName(abilityInfo.bundleName);
535     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, subSuperAdmin);
536     ASSERT_TRUE(res == ERR_OK);
537 
538     std::shared_ptr<Admin> admin;
539     admin = adminMgr_->GetAdminByPkgName(subAbilityInfo.bundleName, DEFAULT_USER_ID);
540     ASSERT_TRUE(admin != nullptr);
541     ASSERT_TRUE(admin->GetAdminType() == AdminType::SUB_SUPER_ADMIN);
542     ASSERT_TRUE(admin->GetParentAdminName() == abilityInfo.bundleName);
543 
544     res = adminMgr_->DeleteAdmin(abilityInfo.bundleName, DEFAULT_USER_ID);
545     ASSERT_TRUE(res == ERR_OK);
546     res = adminMgr_->DeleteAdmin(subAbilityInfo.bundleName, DEFAULT_USER_ID);
547     ASSERT_TRUE(res == ERR_OK);
548 }
549 
550 /**
551  * @tc.name: TestGetSubSuperAdminsByParentName
552  * @tc.desc: Test AdminManager::GetSubSuperAdminsByParentName.
553  * @tc.type: FUNC
554  */
555 HWTEST_F(AdminManagerTest, TestGetSubSuperAdminsByParentName, TestSize.Level1)
556 {
557     std::vector<std::string> subAdminNames;
558     ErrCode res = adminMgr_->GetSubSuperAdminsByParentName("com.edm.test.demo1", subAdminNames);
559     ASSERT_TRUE(res == ERR_EDM_SUPER_ADMIN_NOT_FOUND);
560 
561     std::vector<std::shared_ptr<Admin>> allAdmin;
562     AppExecFwk::ExtensionAbilityInfo abilityInfo;
563     abilityInfo.bundleName = "com.edm.test.demo";
564     abilityInfo.name = "testDemo";
565     EntInfo entInfo("test", "this is test");
566     std::vector<std::string> permissions{"ohos.permission.EDM_TEST_PERMISSION"};
567     Admin edmAdmin(abilityInfo, AdminType::ENT, entInfo, permissions, false);
568     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, edmAdmin);
569     adminMgr_->Dump();
570     AppExecFwk::ExtensionAbilityInfo subAbilityInfo;
571     subAbilityInfo.bundleName = "com.edm.test.demo1";
572     Admin subSuperAdmin(subAbilityInfo, AdminType::SUB_SUPER_ADMIN, entInfo, permissions, false);
573     subSuperAdmin.SetParentAdminName(abilityInfo.bundleName);
574     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, subSuperAdmin);
575     ASSERT_TRUE(res == ERR_OK);
576 
577     res = adminMgr_->GetSubSuperAdminsByParentName("com.edm.test.demo2", subAdminNames);
578     ASSERT_TRUE(res == ERR_OK);
579     ASSERT_TRUE(subAdminNames.empty());
580 
581     res = adminMgr_->GetSubSuperAdminsByParentName(abilityInfo.bundleName, subAdminNames);
582     ASSERT_TRUE(res == ERR_OK);
583     ASSERT_TRUE(std::find(subAdminNames.begin(), subAdminNames.end(), subAbilityInfo.bundleName) !=
584         subAdminNames.end());
585 }
586 
587 /**
588  * @tc.name: TestGetAdmins
589  * @tc.desc: Test AdminManager::TestGetAdmins.
590  * @tc.type: FUNC
591  */
592 HWTEST_F(AdminManagerTest, TestGetAdmins, TestSize.Level1)
593 {
594     ErrCode res;
595     std::vector<std::string> permissions;
596     AppExecFwk::ExtensionAbilityInfo abilityInfo;
597     abilityInfo.bundleName = "com.edm.test.demo";
598     abilityInfo.name = "testDemo";
599     EntInfo entInfo;
600     entInfo.enterpriseName = "company";
601     entInfo.description = "technology company in wuhan";
602     permissions = {"ohos.permission.EDM_TEST_PERMISSION"};
603     Admin admin(abilityInfo, AdminType::NORMAL, entInfo, permissions, false);
604     res = adminMgr_->SetAdminValue(TEST_USER_ID, admin);
605     ASSERT_TRUE(res == ERR_OK);
606 
607     std::vector<std::shared_ptr<Admin>> userAdmins;
608     adminMgr_->GetAdmins(userAdmins, TEST_USER_ID);
609     int32_t sizeofAdmin = userAdmins.size();
610     ASSERT_TRUE(sizeofAdmin == 1);
611     std::shared_ptr<Admin> userAdmin = userAdmins[0];
612     ASSERT_TRUE(userAdmin != nullptr);
613     ASSERT_TRUE(userAdmin->adminInfo_.adminType_ == AdminType::NORMAL);
614     userAdmins.clear();
615     res = adminMgr_->DeleteAdmin(abilityInfo.bundleName, TEST_USER_ID);
616     ASSERT_TRUE(res == ERR_OK);
617 
618     admin.adminInfo_.adminType_ = AdminType::BYOD;
619     admin.adminInfo_.packageName_ = "com.edm.test.demo1";
620     admin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION", "ohos.permission.EDM_TEST_ENT_PERMISSION"};
621     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, admin);
622     ASSERT_TRUE(res == ERR_OK);
623     admin.adminInfo_.adminType_ = AdminType::ENT;
624     admin.adminInfo_.packageName_ = "com.edm.test.demo2";
625     admin.adminInfo_.permission_ = {"ohos.permission.EDM_TEST_PERMISSION", "ohos.permission.EDM_TEST_ENT_PERMISSION"};
626     res = adminMgr_->SetAdminValue(DEFAULT_USER_ID, admin);
627     ASSERT_TRUE(res == ERR_OK);
628 
629     adminMgr_->GetAdmins(userAdmins, DEFAULT_USER_ID);
630     sizeofAdmin = userAdmins.size();
631     ASSERT_TRUE(sizeofAdmin == 2);
632     userAdmin = userAdmins[0];
633     ASSERT_TRUE(userAdmin != nullptr);
634     ASSERT_TRUE(userAdmin->adminInfo_.adminType_ == AdminType::BYOD);
635     userAdmin = userAdmins[1];
636     ASSERT_TRUE(userAdmin != nullptr);
637     ASSERT_TRUE(userAdmin->adminInfo_.adminType_ == AdminType::ENT);
638 }
639 } // namespace TEST
640 } // namespace EDM
641 } // namespace OHOS