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