1 /*
2  * Copyright (c) 2024 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 #include <gtest/gtest.h>
17 
18 #include "admin.h"
19 
20 using namespace testing::ext;
21 using namespace testing;
22 
23 namespace OHOS {
24 namespace EDM {
25 namespace TEST {
26 const std::string TEST_PERMISSION = "ohos.permission.EDM_TEST_PERMISSION";
27 const std::string TEST_PERMISSION_FAIL = "ohos.permission.EDM_TEST_PERMISSION_FAIL";
28 const std::string TEST_BUNDLE_NAME = "com.edm.test.demo";
29 const std::string TEST_ABILITY_NAME = "com.edm.test.demo.Ability";
30 class AdminTest : public testing::Test {};
31 /**
32  * @tc.name: TestCheckPermissionWithPermissionEmpty
33  * @tc.desc: Test AdminManager::CheckPermission.
34  * @tc.type: FUNC
35  */
36 HWTEST_F(AdminTest, TestCheckPermissionWithPermissionEmpty, TestSize.Level1)
37 {
38     AppExecFwk::ExtensionAbilityInfo abilityInfo;
39     EntInfo entInfo;
40     std::vector<std::string> permissions;
41     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::ENT, entInfo, permissions, true);
42     bool ret = admin->CheckPermission(TEST_PERMISSION);
43     ASSERT_FALSE(ret);
44 }
45 
46 /**
47  * @tc.name: TestCheckPermissionWithInvalidPermission
48  * @tc.desc: Test AdminManager::CheckPermission.
49  * @tc.type: FUNC
50  */
51 HWTEST_F(AdminTest, TestCheckPermissionWithInvalidPermission, TestSize.Level1)
52 {
53     AppExecFwk::ExtensionAbilityInfo abilityInfo;
54     EntInfo entInfo;
55     std::vector<std::string> permissions;
56     permissions.push_back(TEST_PERMISSION_FAIL);
57     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::ENT, entInfo, permissions, true);
58     bool ret = admin->CheckPermission(TEST_PERMISSION);
59     ASSERT_FALSE(ret);
60 }
61 
62 /**
63  * @tc.name: TestCheckPermission
64  * @tc.desc: Test AdminManager::CheckPermission.
65  * @tc.type: FUNC
66  */
67 HWTEST_F(AdminTest, TestCheckPermission, TestSize.Level1)
68 {
69     AppExecFwk::ExtensionAbilityInfo abilityInfo;
70     EntInfo entInfo;
71     std::vector<std::string> permissions;
72     permissions.push_back(TEST_PERMISSION);
73     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::ENT, entInfo, permissions, true);
74     bool ret = admin->CheckPermission(TEST_PERMISSION);
75     ASSERT_TRUE(ret);
76 }
77 
78 /**
79  * @tc.name: TestGetAdminTypeWithSuperAdmin
80  * @tc.desc: Test AdminManager::GetAdminType.
81  * @tc.type: FUNC
82  */
83 HWTEST_F(AdminTest, TestGetAdminTypeWithSuperAdmin, TestSize.Level1)
84 {
85     AppExecFwk::ExtensionAbilityInfo abilityInfo;
86     EntInfo entInfo;
87     std::vector<std::string> permissions;
88     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::ENT, entInfo, permissions, true);
89     AdminType adminType = admin->GetAdminType();
90     ASSERT_TRUE(adminType == AdminType::ENT);
91 }
92 
93 /**
94  * @tc.name: TestGetAdminTypeWithNormalAdmin
95  * @tc.desc: Test AdminManager::GetAdminType.
96  * @tc.type: FUNC
97  */
98 HWTEST_F(AdminTest, TestGetAdminTypeWithNormalAdmin, TestSize.Level1)
99 {
100     AppExecFwk::ExtensionAbilityInfo abilityInfo;
101     EntInfo entInfo;
102     std::vector<std::string> permissions;
103     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::NORMAL, entInfo, permissions, true);
104     AdminType adminType = admin->GetAdminType();
105     ASSERT_TRUE(adminType == AdminType::NORMAL);
106 }
107 
108 /**
109  * @tc.name: TestGetAdminTypeWithUnknownAdmin
110  * @tc.desc: Test AdminManager::GetAdminType.
111  * @tc.type: FUNC
112  */
113 HWTEST_F(AdminTest, TestGetAdminTypeWithUnknownAdmin, TestSize.Level1)
114 {
115     AppExecFwk::ExtensionAbilityInfo abilityInfo;
116     EntInfo entInfo;
117     std::vector<std::string> permissions;
118     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::UNKNOWN, entInfo, permissions, true);
119     AdminType adminType = admin->GetAdminType();
120     ASSERT_TRUE(adminType == AdminType::UNKNOWN);
121 }
122 
123 /**
124  * @tc.name: TestGetParentAdminNameWithSuperAdmin
125  * @tc.desc: Test AdminManager::GetParentAdminName.
126  * @tc.type: FUNC
127  */
128 HWTEST_F(AdminTest, TestGetParentAdminNameWithSuperAdmin, TestSize.Level1)
129 {
130     AppExecFwk::ExtensionAbilityInfo abilityInfo;
131     EntInfo entInfo;
132     std::vector<std::string> permissions;
133     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::ENT, entInfo, permissions, true);
134     std::string parentAdminName = admin->GetParentAdminName();
135     ASSERT_TRUE(parentAdminName.empty());
136 }
137 
138 /**
139  * @tc.name: TestGetParentAdminNameWithNormalAdmin
140  * @tc.desc: Test AdminManager::GetParentAdminName.
141  * @tc.type: FUNC
142  */
143 HWTEST_F(AdminTest, TestGetParentAdminNameWithNormalAdmin, TestSize.Level1)
144 {
145     AppExecFwk::ExtensionAbilityInfo abilityInfo;
146     EntInfo entInfo;
147     std::vector<std::string> permissions;
148     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::NORMAL, entInfo, permissions, true);
149     std::string parentAdminName = admin->GetParentAdminName();
150     ASSERT_TRUE(parentAdminName.empty());
151 }
152 
153 /**
154  * @tc.name: TestGetParentAdminNameWithUnknownAdmin
155  * @tc.desc: Test AdminManager::GetParentAdminName.
156  * @tc.type: FUNC
157  */
158 HWTEST_F(AdminTest, TestGetParentAdminNameWithUnknownAdmin, TestSize.Level1)
159 {
160     AppExecFwk::ExtensionAbilityInfo abilityInfo;
161     EntInfo entInfo;
162     std::vector<std::string> permissions;
163     std::shared_ptr<Admin> admin = std::make_shared<Admin>(abilityInfo, AdminType::UNKNOWN, entInfo, permissions, true);
164     std::string parentAdminName = admin->GetParentAdminName();
165     ASSERT_TRUE(parentAdminName.empty());
166 }
167 } // namespace TEST
168 } // namespace EDM
169 } // namespace OHOS