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 <cinttypes>
17 #include <cstdio>
18
19 #include <gtest/gtest.h>
20 #include "ipc_skeleton.h"
21 #include "mmi_log.h"
22 #include "proto.h"
23 #include "tokenid_kit.h"
24
25 #include "define_multimodal.h"
26 #include "permission_helper.h"
27 #include "uds_server.h"
28
29 namespace OHOS {
30 namespace MMI {
31 namespace {
32 using namespace testing::ext;
33 const std::string INPUT_MONITORING = "ohos.permission.INPUT_MONITORING";
34 const std::string INPUT_INTERCEPTOR = "ohos.permission.INTERCEPT_INPUT_EVENT";
35 const std::string INPUT_DISPATCHCONTROL = "ohos.permission.INPUT_CONTROL_DISPATCHING";
36 } // namespace
37
38 class PermissionHelperTest : public testing::Test {
39 public:
SetUpTestCase(void)40 static void SetUpTestCase(void) {}
TearDownTestCase(void)41 static void TearDownTestCase(void) {}
42 };
43
44 /**
45 * @tc.name: PermissionHelperTest_GetTokenType
46 * @tc.desc: Test GetTokenType
47 * @tc.type: FUNC
48 * @tc.require:
49 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_GetTokenType, TestSize.Level1)50 HWTEST_F(PermissionHelperTest, PermissionHelperTest_GetTokenType, TestSize.Level1)
51 {
52 CALL_TEST_DEBUG;
53 uint32_t tokenId = 1;
54 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
55 tokenType = OHOS::Security::AccessToken::TOKEN_HAP;
56 int32_t result1 = PER_HELPER->GetTokenType();
57 EXPECT_EQ(result1, 2);
58
59 tokenId = 2;
60 tokenType = OHOS::Security::AccessToken::TOKEN_NATIVE;
61 int32_t result2 = PER_HELPER->GetTokenType();
62 EXPECT_EQ(result2, 2);
63
64 tokenId = 3;
65 tokenType = OHOS::Security::AccessToken::TOKEN_SHELL;
66 int32_t result3 = PER_HELPER->GetTokenType();
67 EXPECT_EQ(result3, 2);
68
69 tokenId = 4;
70 tokenType = OHOS::Security::AccessToken::TOKEN_INVALID;
71 int32_t result4 = PER_HELPER->GetTokenType();
72 EXPECT_EQ(result4, 2);
73 }
74
75 /**
76 * @tc.name: PermissionHelperTest_CheckDispatchControl_01
77 * @tc.desc: Test CheckDispatchControl
78 * @tc.type: FUNC
79 * @tc.require:
80 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckDispatchControl_01, TestSize.Level1)81 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckDispatchControl_01, TestSize.Level1)
82 {
83 CALL_TEST_DEBUG;
84 uint32_t tokenId = 1;
85 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
86 tokenType = OHOS::Security::AccessToken::TOKEN_HAP;
87 bool result1 = PER_HELPER->CheckDispatchControl();
88 EXPECT_TRUE(result1);
89
90 tokenId = 1;
91 tokenType = OHOS::Security::AccessToken::TOKEN_NATIVE;
92 bool result2 = PER_HELPER->CheckDispatchControl();
93 EXPECT_TRUE(result2);
94
95 tokenId = 3;
96 tokenType = OHOS::Security::AccessToken::TOKEN_SHELL;
97 bool result3 = PER_HELPER->CheckDispatchControl();
98 EXPECT_TRUE(result3);
99
100 tokenId = 4;
101 tokenType = OHOS::Security::AccessToken::TOKEN_INVALID;
102 bool result4 = PER_HELPER->CheckDispatchControl();
103 EXPECT_TRUE(result4);
104 }
105
106 /**
107 * @tc.name: PermissionHelperTest_CheckHapPermission_01
108 * @tc.desc: Test CheckHapPermission
109 * @tc.type: FUNC
110 * @tc.require:
111 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_01, TestSize.Level1)112 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_01, TestSize.Level1)
113 {
114 CALL_TEST_DEBUG;
115 uint32_t tokenId = 3;
116 std::string permissionCode = "access";
117 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
118 tokenType = OHOS::Security::AccessToken::TOKEN_NATIVE;
119 bool result = PER_HELPER->CheckHapPermission(tokenId, permissionCode);
120 ASSERT_FALSE(result);
121 }
122
123 /**
124 * @tc.name: PermissionHelperTest_CheckHapPermission_02
125 * @tc.desc: Test CheckHapPermission
126 * @tc.type: FUNC
127 * @tc.require:
128 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_02, TestSize.Level1)129 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_02, TestSize.Level1)
130 {
131 CALL_TEST_DEBUG;
132 uint32_t tokenId = 2;
133 std::string permissionCode = "access";
134 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
135 tokenType = OHOS::Security::AccessToken::TOKEN_HAP;
136 bool result = PER_HELPER->CheckHapPermission(tokenId, permissionCode);
137 ASSERT_FALSE(result);
138 }
139
140 /**
141 * @tc.name: PermissionHelperTest_CheckHapPermission_03
142 * @tc.desc: Test CheckHapPermission
143 * @tc.type: FUNC
144 * @tc.require:
145 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_03, TestSize.Level1)146 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_03, TestSize.Level1)
147 {
148 CALL_TEST_DEBUG;
149 uint32_t tokenId = 6;
150 std::string permissionCode = "access";
151 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
152 tokenType = OHOS::Security::AccessToken::TOKEN_SHELL;
153 bool result = PER_HELPER->CheckHapPermission(tokenId, permissionCode);
154 ASSERT_FALSE(result);
155 }
156
157 /**
158 * @tc.name: PermissionHelperTest_CheckHapPermission_04
159 * @tc.desc: Test CheckHapPermission
160 * @tc.type: FUNC
161 * @tc.require:
162 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_04, TestSize.Level1)163 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_04, TestSize.Level1)
164 {
165 CALL_TEST_DEBUG;
166 uint32_t tokenId = 5;
167 std::string permissionCode = "access denied";
168 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
169 tokenType = OHOS::Security::AccessToken::TOKEN_INVALID;
170 bool result = PER_HELPER->CheckHapPermission(tokenId, permissionCode);
171 ASSERT_FALSE(result);
172 }
173
174 /**
175 * @tc.name: PermissionHelperTest_CheckHapPermission_06
176 * @tc.desc: Test CheckHapPermission
177 * @tc.type: FUNC
178 * @tc.require:
179 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_06, TestSize.Level1)180 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_06, TestSize.Level1)
181 {
182 CALL_TEST_DEBUG;
183 uint32_t tokenId = 3;
184 std::string permissionCode = "access";
185 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
186 tokenType = OHOS::Security::AccessToken::TOKEN_HAP;
187 bool result = PER_HELPER->CheckHapPermission(permissionCode);
188 ASSERT_TRUE(result);
189 }
190
191 /**
192 * @tc.name: PermissionHelperTest_CheckHapPermission_07
193 * @tc.desc: Test CheckHapPermission
194 * @tc.type: FUNC
195 * @tc.require:
196 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_07, TestSize.Level1)197 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_07, TestSize.Level1)
198 {
199 CALL_TEST_DEBUG;
200 uint32_t tokenId = 2;
201 std::string permissionCode = "access";
202 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
203 tokenType = OHOS::Security::AccessToken::TOKEN_NATIVE;
204
205 int32_t ret = OHOS::Security::AccessToken::AccessTokenKit::VerifyAccessToken(tokenId, permissionCode);
206 ret = OHOS::Security::AccessToken::PERMISSION_GRANTED;
207 bool result = PER_HELPER->CheckHapPermission(permissionCode);
208 ASSERT_TRUE(result);
209 }
210
211 /**
212 * @tc.name: PermissionHelperTest_CheckHapPermission_08
213 * @tc.desc: Test CheckHapPermission
214 * @tc.type: FUNC
215 * @tc.require:
216 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_08, TestSize.Level1)217 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckHapPermission_08, TestSize.Level1)
218 {
219 CALL_TEST_DEBUG;
220 uint32_t tokenId = 3;
221 std::string permissionCode = "access";
222 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
223 tokenType = OHOS::Security::AccessToken::TOKEN_SHELL;
224 bool result = PER_HELPER->CheckHapPermission(permissionCode);
225 ASSERT_TRUE(result);
226 }
227
228 /**
229 * @tc.name: PermissionHelperTest_VerifySystemApp_01
230 * @tc.desc: Test VerifySystemApp
231 * @tc.type: FUNC
232 * @tc.require:
233 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_VerifySystemApp_01, TestSize.Level1)234 HWTEST_F(PermissionHelperTest, PermissionHelperTest_VerifySystemApp_01, TestSize.Level1)
235 {
236 CALL_TEST_DEBUG;
237 uint32_t callerToken = 3;
238 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(callerToken);
239 tokenType = OHOS::Security::AccessToken::ATokenTypeEnum::TOKEN_NATIVE;
240 bool result = PER_HELPER->VerifySystemApp();
241 EXPECT_TRUE(result);
242 }
243
244 /**
245 * @tc.name: PermissionHelperTest_VerifySystemApp_02
246 * @tc.desc: Test VerifySystemApp
247 * @tc.type: FUNC
248 * @tc.require:
249 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_VerifySystemApp_02, TestSize.Level1)250 HWTEST_F(PermissionHelperTest, PermissionHelperTest_VerifySystemApp_02, TestSize.Level1)
251 {
252 CALL_TEST_DEBUG;
253 uint32_t callerToken = 5;
254 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(callerToken);
255 tokenType = OHOS::Security::AccessToken::ATokenTypeEnum::TOKEN_SHELL;
256 bool result = PER_HELPER->VerifySystemApp();
257 EXPECT_TRUE(result);
258 }
259
260 /**
261 * @tc.name: PermissionHelperTest_CheckMonitor
262 * @tc.desc: Test CheckMonitor
263 * @tc.type: FUNC
264 * @tc.require:
265 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckMonitor, TestSize.Level1)266 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckMonitor, TestSize.Level1)
267 {
268 CALL_TEST_DEBUG;
269 uint32_t tokenId = 1;
270 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
271 tokenType = OHOS::Security::AccessToken::TOKEN_HAP;
272 bool result1 = PER_HELPER->CheckMonitor();
273 EXPECT_TRUE(result1);
274
275 tokenId = 2;
276 tokenType = OHOS::Security::AccessToken::TOKEN_NATIVE;
277 bool result2 = PER_HELPER->CheckMonitor();
278 EXPECT_TRUE(result2);
279
280 tokenId = 3;
281 tokenType = OHOS::Security::AccessToken::TOKEN_SHELL;
282 bool result3 = PER_HELPER->CheckMonitor();
283 EXPECT_TRUE(result3);
284
285 tokenId = 4;
286 tokenType = OHOS::Security::AccessToken::TOKEN_INVALID;
287 bool result4 = PER_HELPER->CheckMonitor();
288 EXPECT_TRUE(result4);
289 }
290
291 /**
292 * @tc.name: PermissionHelperTest_CheckInterceptor
293 * @tc.desc: Test CheckInterceptor
294 * @tc.type: FUNC
295 * @tc.require:
296 */
HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckInterceptor, TestSize.Level1)297 HWTEST_F(PermissionHelperTest, PermissionHelperTest_CheckInterceptor, TestSize.Level1)
298 {
299 CALL_TEST_DEBUG;
300 uint32_t tokenId = 1;
301 auto tokenType = OHOS::Security::AccessToken::AccessTokenKit::GetTokenTypeFlag(tokenId);
302 tokenType = OHOS::Security::AccessToken::TOKEN_HAP;
303 bool result1 = PER_HELPER->CheckInterceptor();
304 EXPECT_TRUE(result1);
305
306 tokenId = 2;
307 tokenType = OHOS::Security::AccessToken::TOKEN_NATIVE;
308 bool result2 = PER_HELPER->CheckInterceptor();
309 EXPECT_TRUE(result2);
310
311 tokenId = 3;
312 tokenType = OHOS::Security::AccessToken::TOKEN_SHELL;
313 bool result3 = PER_HELPER->CheckInterceptor();
314 EXPECT_TRUE(result3);
315
316 tokenId = 4;
317 tokenType = OHOS::Security::AccessToken::TOKEN_INVALID;
318 bool result4 = PER_HELPER->CheckInterceptor();
319 EXPECT_TRUE(result4);
320 }
321 } // namespace MMI
322 } // namespace OHOS