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