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 #include <gtest/gtest.h>
17 #include <numeric>
18 
19 #include "access_token_helper.h"
20 #include "mock_constant.h"
21 #include "tokenid_kit.h"
22 
23 namespace OHOS {
24 namespace EventFwk {
25 using namespace testing::ext;
26 using namespace OHOS::Security::AccessToken;
27 
28 class CommonEventAccessTokenHelperTest : public testing::Test {
29 public:
CommonEventAccessTokenHelperTest()30     CommonEventAccessTokenHelperTest()
31     {}
~CommonEventAccessTokenHelperTest()32     ~CommonEventAccessTokenHelperTest()
33     {}
34 
35     static void SetUpTestCase(void);
36     static void TearDownTestCase(void);
37     void SetUp();
38     void TearDown();
39 };
40 
SetUpTestCase(void)41 void CommonEventAccessTokenHelperTest::SetUpTestCase(void)
42 {}
43 
TearDownTestCase(void)44 void CommonEventAccessTokenHelperTest::TearDownTestCase(void)
45 {}
46 
SetUp(void)47 void CommonEventAccessTokenHelperTest::SetUp(void)
48 {}
49 
TearDown(void)50 void CommonEventAccessTokenHelperTest::TearDown(void)
51 {}
52 
53 /**
54  * @tc.name: IsDlpHap_0100
55  * @tc.desc: Judge DLP accessToken
56  * @tc.type: FUNC
57  * @tc.require: I582VA
58  */
HWTEST_F(CommonEventAccessTokenHelperTest,IsDlpHap_0100,Level1)59 HWTEST_F(CommonEventAccessTokenHelperTest, IsDlpHap_0100, Level1)
60 {
61     GTEST_LOG_(INFO) << "IsDlpHap_0100 start";
62 
63     AccessTokenID callerToken = DLP_PERMISSION_GRANTED;
64     EXPECT_TRUE(AccessTokenHelper::IsDlpHap(callerToken));
65 
66     callerToken = PERMISSION_GRANTED;
67     EXPECT_FALSE(AccessTokenHelper::IsDlpHap(callerToken));
68 
69     GTEST_LOG_(INFO) << "IsDlpHap_0100 end";
70 }
71 
72 /**
73  * @tc.name: VerifyNativeToken_0100
74  * @tc.desc: Judge DLP accessToken
75  * @tc.type: FUNC
76  * @tc.require: I5R11Y
77  */
HWTEST_F(CommonEventAccessTokenHelperTest,VerifyNativeToken_0100,Level1)78 HWTEST_F(CommonEventAccessTokenHelperTest, VerifyNativeToken_0100, Level1)
79 {
80     AccessTokenID callerToken = DLP_PERMISSION_GRANTED;
81     EXPECT_FALSE(AccessTokenHelper::VerifyNativeToken(callerToken));
82 
83     callerToken = PERMISSION_GRANTED;
84     EXPECT_FALSE(AccessTokenHelper::VerifyNativeToken(callerToken));
85 }
86 
87 /**
88  * @tc.name: VerifyAccessToken_0100
89  * @tc.desc: Judge DLP accessToken
90  * @tc.type: FUNC
91  * @tc.require: I5R11Y
92  */
HWTEST_F(CommonEventAccessTokenHelperTest,VerifyAccessToken_0100,Level1)93 HWTEST_F(CommonEventAccessTokenHelperTest, VerifyAccessToken_0100, Level1)
94 {
95     std::string permission = "PERMISSION";
96     AccessTokenID callerToken = DLP_PERMISSION_GRANTED;
97     EXPECT_FALSE(AccessTokenHelper::VerifyAccessToken(callerToken, permission));
98 
99     callerToken = PERMISSION_GRANTED;
100     EXPECT_FALSE(AccessTokenHelper::VerifyAccessToken(callerToken, permission));
101 }
102 
103 /**
104  * @tc.name: AccessTokenHelper_0100
105  * @tc.desc: test RecordSensitivePermissionUsage function and tokenType != ATokenTypeEnum::TOKEN_HAP.
106  * @tc.type: FUNC
107  */
HWTEST_F(CommonEventAccessTokenHelperTest,AccessTokenHelper_0100,Level1)108 HWTEST_F(CommonEventAccessTokenHelperTest, AccessTokenHelper_0100, Level1)
109 {
110     GTEST_LOG_(INFO) << "AccessTokenHelper_0100 start";
111     std::shared_ptr<AccessTokenHelper> accessTokenHelper = std::make_shared<AccessTokenHelper>();
112     ASSERT_NE(nullptr, accessTokenHelper);
113     AccessTokenID callerToken = PERMISSION_GRANTED;
114     std::string event = "aa";
115     accessTokenHelper->RecordSensitivePermissionUsage(callerToken, event);
116     GTEST_LOG_(INFO) << "AccessTokenHelper_0100 end";
117 }
118 
119 /**
120  * @tc.name: AccessTokenHelper_0200
121  * @tc.desc: test RecordSensitivePermissionUsage function and tokenType == ATokenTypeEnum::TOKEN_HAP.
122  * @tc.type: FUNC
123  */
HWTEST_F(CommonEventAccessTokenHelperTest,AccessTokenHelper_0200,Level1)124 HWTEST_F(CommonEventAccessTokenHelperTest, AccessTokenHelper_0200, Level1)
125 {
126     GTEST_LOG_(INFO) << "AccessTokenHelper_0200 start";
127     std::shared_ptr<AccessTokenHelper> accessTokenHelper = std::make_shared<AccessTokenHelper>();
128     ASSERT_NE(nullptr, accessTokenHelper);
129     AccessTokenID callerToken = DLP_PERMISSION_GRANTED;
130     std::string event = "aa";
131     accessTokenHelper->RecordSensitivePermissionUsage(callerToken, event);
132     GTEST_LOG_(INFO) << "AccessTokenHelper_0200 end";
133 }
134 
135 /**
136  * @tc.name: IsSystemApp_0100
137  * @tc.desc: Judge DLP accessToken
138  * @tc.type: FUNC
139  * @tc.require: I582VA
140  */
HWTEST_F(CommonEventAccessTokenHelperTest,IsSystemApp_0100,Level1)141 HWTEST_F(CommonEventAccessTokenHelperTest, IsSystemApp_0100, Level1)
142 {
143     GTEST_LOG_(INFO) << "IsSystemApp_0100 start";
144     std::shared_ptr<AccessTokenHelper> accessTokenHelper = std::make_shared<AccessTokenHelper>();
145     ASSERT_NE(nullptr, accessTokenHelper);
146     AccessTokenID callerToken = DLP_PERMISSION_GRANTED;
147     EXPECT_TRUE(AccessTokenHelper::IsDlpHap(callerToken));
148     bool result = AccessTokenHelper::IsSystemApp();
149     EXPECT_EQ(result, false);
150 
151     GTEST_LOG_(INFO) << "IsSystemApp_0100 end";
152 }
153 
154 /**
155  * @tc.name: IsSystemApp_0200
156  * @tc.desc: Judge DLP accessToken
157  * @tc.type: FUNC
158  * @tc.require: I582VA
159  */
HWTEST_F(CommonEventAccessTokenHelperTest,IsSystemApp_0200,Level1)160 HWTEST_F(CommonEventAccessTokenHelperTest, IsSystemApp_0200, Level1)
161 {
162     GTEST_LOG_(INFO) << "IsSystemApp_0200 start";
163 
164     std::shared_ptr<AccessTokenHelper> accessTokenHelper = std::make_shared<AccessTokenHelper>();
165     ASSERT_NE(nullptr, accessTokenHelper);
166     AccessTokenID callerToken = PERMISSION_GRANTED;
167     EXPECT_FALSE(AccessTokenHelper::IsDlpHap(callerToken));
168     bool result = AccessTokenHelper::IsSystemApp();
169     EXPECT_EQ(result, false);
170     GTEST_LOG_(INFO) << "IsSystemApp_0200 end";
171 }
172 }
173 }