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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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