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 "permission_checker_test.h"
17
18 #include <gtest/gtest.h>
19
20 #include <string>
21 #include <vector>
22
23 #include "ipc_skeleton.h"
24 #include "tokenid_kit.h"
25
26 using namespace testing;
27 using namespace testing::ext;
28
29 namespace OHOS {
30 namespace EDM {
31 namespace TEST {
32
SetUp()33 void PermissionCheckerTest::SetUp()
34 {
35 appMgrMock_ = std::make_shared<EdmAppManagerImplMock>();
36 bundleMgrMock_ = std::make_shared<EdmBundleManagerImplMock>();
37 osAccountMgrMock_ = std::make_shared<EdmOsAccountManagerImplMock>();
38 accessTokenMgrMock_ = std::make_shared<EdmAccessTokenManagerImplMock>();
39 factoryMock_ = std::make_shared<ExternalManagerFactoryMock>();
40
41 permissionChecker_ = std::make_shared<PermissionCheckerMock>();
42
43 EXPECT_CALL(*permissionChecker_, GetExternalManagerFactory).WillRepeatedly(DoAll(Return(factoryMock_)));
44 EXPECT_CALL(*factoryMock_, CreateBundleManager).WillRepeatedly(DoAll(Return(bundleMgrMock_)));
45 EXPECT_CALL(*factoryMock_, CreateAppManager).WillRepeatedly(DoAll(Return(appMgrMock_)));
46 EXPECT_CALL(*factoryMock_, CreateOsAccountManager).WillRepeatedly(DoAll(Return(osAccountMgrMock_)));
47 EXPECT_CALL(*factoryMock_, CreateAccessTokenManager).WillRepeatedly(DoAll(Return(accessTokenMgrMock_)));
48 }
49
TearDown()50 void PermissionCheckerTest::TearDown() {}
51
52 /**
53 * @tc.name: TestIsDebugTure
54 * @tc.desc: Test PermissionChecker IsDebug func.
55 * @tc.type: FUNC
56 */
57 HWTEST_F(PermissionCheckerTest, TestIsDebugTrue, TestSize.Level1)
58 {
59 EXPECT_CALL(*accessTokenMgrMock_, IsDebug).WillOnce(DoAll(Return(true)));
60 bool ret = permissionChecker_->CheckIsDebug();
61 ASSERT_TRUE(ret);
62 }
63
64 /**
65 * @tc.name: TestIsDebugFalse
66 * @tc.desc: Test PermissionChecker IsDebug func.
67 * @tc.type: FUNC
68 */
69 HWTEST_F(PermissionCheckerTest, TestIsDebugFalse, TestSize.Level1)
70 {
71 EXPECT_CALL(*accessTokenMgrMock_, IsDebug).WillOnce(DoAll(Return(false)));
72 bool ret = permissionChecker_->CheckIsDebug();
73 ASSERT_FALSE(ret);
74 }
75
76 /**
77 * @tc.name: TestIsSystemAppOrNativeTrue
78 * @tc.desc: Test PermissionChecker IsSystemAppOrNative func.
79 * @tc.type: FUNC
80 */
81 HWTEST_F(PermissionCheckerTest, TestIsSystemAppOrNativeTrue, TestSize.Level1)
82 {
83 EXPECT_CALL(*accessTokenMgrMock_, IsSystemAppOrNative).WillOnce(DoAll(Return(true)));
84 bool ret = permissionChecker_->CheckIsSystemAppOrNative();
85 ASSERT_TRUE(ret);
86 }
87
88 /**
89 * @tc.name: TestIsSystemAppOrNativeFalse
90 * @tc.desc: Test PermissionChecker IsSystemAppOrNative func.
91 * @tc.type: FUNC
92 */
93 HWTEST_F(PermissionCheckerTest, TestIsSystemAppOrNativeFalse, TestSize.Level1)
94 {
95 EXPECT_CALL(*accessTokenMgrMock_, IsSystemAppOrNative).WillOnce(DoAll(Return(false)));
96 bool ret = permissionChecker_->CheckIsSystemAppOrNative();
97 ASSERT_FALSE(ret);
98 }
99
100 /**
101 * @tc.name: TestVerifyCallingPermissionTrue
102 * @tc.desc: Test PermissionChecker VerifyCallingPermission func.
103 * @tc.type: FUNC
104 */
105 HWTEST_F(PermissionCheckerTest, TestVerifyCallingPermissionTrue, TestSize.Level1)
106 {
107 Security::AccessToken::AccessTokenID tokenId = IPCSkeleton::GetCallingTokenID();
108 EXPECT_CALL(*accessTokenMgrMock_, VerifyCallingPermission).WillOnce(DoAll(Return(true)));
109 bool ret = permissionChecker_->VerifyCallingPermission(tokenId, "per");
110 ASSERT_TRUE(ret);
111 }
112
113 /**
114 * @tc.name: TestVerifyCallingPermissionFalse
115 * @tc.desc: Test PermissionChecker VerifyCallingPermission func.
116 * @tc.type: FUNC
117 */
118 HWTEST_F(PermissionCheckerTest, TestVerifyCallingPermissionFalse, TestSize.Level1)
119 {
120 Security::AccessToken::AccessTokenID tokenId = IPCSkeleton::GetCallingTokenID();
121 EXPECT_CALL(*accessTokenMgrMock_, VerifyCallingPermission).WillOnce(DoAll(Return(false)));
122 bool ret = permissionChecker_->VerifyCallingPermission(tokenId, "per");
123 ASSERT_FALSE(ret);
124 }
125 } // namespace TEST
126 } // namespace EDM
127 } // namespace OHOS
128