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