• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 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 #include "sec_comp_perm_manager_test.h"
16 
17 #include "accesstoken_kit.h"
18 #include "sec_comp_err.h"
19 #include "sec_comp_info_helper.h"
20 #include "sec_comp_log.h"
21 #include "service_test_common.h"
22 
23 using namespace testing::ext;
24 using namespace OHOS;
25 using namespace OHOS::Security::SecurityComponent;
26 using namespace OHOS::Security::AccessToken;
27 
28 namespace {
29 static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {
30     LOG_CORE, SECURITY_DOMAIN_SECURITY_COMPONENT, "SecCompPermManagerTest"};
31 }
32 
SetUpTestCase()33 void SecCompPermManagerTest::SetUpTestCase()
34 {}
35 
TearDownTestCase()36 void SecCompPermManagerTest::TearDownTestCase()
37 {}
38 
SetUp()39 void SecCompPermManagerTest::SetUp()
40 {
41     SC_LOG_INFO(LABEL, "setup");
42 }
43 
TearDown()44 void SecCompPermManagerTest::TearDown()
45 {
46 }
47 
48 /**
49  * @tc.name: DelaySaveRevokePermission001
50  * @tc.desc: Test invalid params
51  * @tc.type: FUNC
52  * @tc.require:
53  */
54 HWTEST_F(SecCompPermManagerTest, DelaySaveRevokePermission001, TestSize.Level1)
55 {
56     SecCompPermManager permMgr;
57     permMgr.secHandler_ = nullptr;
58     ASSERT_FALSE(permMgr.DelaySaveRevokePermission(static_cast<AccessTokenID>(0), ""));
59 }
60 
61 /**
62  * @tc.name: RevokeSavePermissionTask001
63  * @tc.desc: Test invalid params
64  * @tc.type: FUNC
65  * @tc.require:
66  */
67 HWTEST_F(SecCompPermManagerTest, RevokeSavePermissionTask001, TestSize.Level1)
68 {
69     SecCompPermManager permMgr;
70     permMgr.secHandler_ = nullptr;
71     ASSERT_FALSE(permMgr.RevokeSavePermissionTask(""));
72 }
73 
74 /**
75  * @tc.name: GrantTempSavePermission001
76  * @tc.desc: Test invalid params
77  * @tc.type: FUNC
78  * @tc.require:
79  */
80 HWTEST_F(SecCompPermManagerTest, GrantTempSavePermission001, TestSize.Level1)
81 {
82     SecCompPermManager permMgr;
83     permMgr.secHandler_ = nullptr;
84     ASSERT_EQ(permMgr.GrantTempSavePermission(static_cast<AccessTokenID>(0)),
85         SC_SERVICE_ERROR_PERMISSION_OPER_FAIL);
86 }
87 
88 /**
89  * @tc.name: RevokeTempSavePermissionCount001
90  * @tc.desc: Test invalid params
91  * @tc.type: FUNC
92  * @tc.require:
93  */
94 HWTEST_F(SecCompPermManagerTest, RevokeTempSavePermissionCount001, TestSize.Level1)
95 {
96     SecCompPermManager permMgr;
97     permMgr.secHandler_ = nullptr;
98     AccessTokenID id = 0;
99     permMgr.RevokeTempSavePermissionCount(id);
100 
101     permMgr.applySaveCountMap_[id] = 1;
102     permMgr.RevokeTempSavePermissionCount(static_cast<AccessTokenID>(0));
103     ASSERT_EQ(permMgr.applySaveCountMap_[id], 1);
104 }
105 
106 /**
107  * @tc.name: RevokeTempSavePermission001
108  * @tc.desc: Test invalid params
109  * @tc.type: FUNC
110  * @tc.require:
111  */
112 HWTEST_F(SecCompPermManagerTest, RevokeTempSavePermission001, TestSize.Level1)
113 {
114     SecCompPermManager permMgr;
115     permMgr.secHandler_ = nullptr;
116     AccessTokenID id = 0;
117     permMgr.saveTaskDequeMap_[id].push_back("test");
118     permMgr.RevokeTempSavePermission(id);
119     ASSERT_EQ(permMgr.saveTaskDequeMap_[id].size(), static_cast<size_t>(0));
120 
121     permMgr.secHandler_ = std::make_shared<SecEventHandler>(nullptr);
122     permMgr.saveTaskDequeMap_[id].push_back("test1");
123     permMgr.RevokeTempSavePermission(id);
124     permMgr.CancelAppRevokingPermisions(id);
125     ASSERT_EQ(permMgr.saveTaskDequeMap_[id].size(), static_cast<size_t>(0));
126 }
127 
128 /**
129  * @tc.name: RemoveAppGrantPermissionRecord001
130  * @tc.desc: Test invalid params
131  * @tc.type: FUNC
132  * @tc.require:
133  */
134 HWTEST_F(SecCompPermManagerTest, RemoveAppGrantPermissionRecord001, TestSize.Level1)
135 {
136     SecCompPermManager permMgr;
137     AccessTokenID id = 0;
138     permMgr.RemoveAppGrantPermissionRecord(id, "test");
139 
140     permMgr.grantMap_[id].insert("test");
141     permMgr.RemoveAppGrantPermissionRecord(id, "test");
142     ASSERT_EQ(permMgr.grantMap_[id].size(), static_cast<size_t>(0));
143 }
144 
145 /**
146  * @tc.name: RevokeAppPermission001
147  * @tc.desc: Test invalid params
148  * @tc.type: FUNC
149  * @tc.require:
150  */
151 HWTEST_F(SecCompPermManagerTest, RevokeAppPermission001, TestSize.Level1)
152 {
153     SecCompPermManager permMgr;
154     AccessTokenID id = 0;
155     ASSERT_EQ(permMgr.RevokeAppPermission(id, "test"), 0);
156 }
157 
158 /**
159  * @tc.name: VerifyPermission001
160  * @tc.desc: Test VerifyPermission
161  * @tc.type: FUNC
162  * @tc.require:
163  */
164 HWTEST_F(SecCompPermManagerTest, VerifyPermission001, TestSize.Level1)
165 {
166     SecCompPermManager permMgr;
167     AccessTokenID id = 1000;
168     ASSERT_FALSE(permMgr.VerifyPermission(id, LOCATION_COMPONENT));
169     ASSERT_FALSE(permMgr.VerifyPermission(id, PASTE_COMPONENT));
170     ASSERT_FALSE(permMgr.VerifyPermission(id, SAVE_COMPONENT));
171     ASSERT_FALSE(permMgr.VerifyPermission(id, static_cast<SecCompType>(-1)));
172 }
173 
174 /**
175  * @tc.name: DLP-GrantTempPermission001
176  * @tc.desc: Test DLP sandbox app grant save button
177  * @tc.type: FUNC
178  * @tc.require:
179  */
180 HWTEST_F(SecCompPermManagerTest, GrantTempPermission001, TestSize.Level1)
181 {
182     OHOS::Security::AccessToken::AccessTokenIDInner tokenInner = {
183         .tokenUniqueID = 0x00001,
184         .res = 1,
185         .dlpFlag = 1,
186         .type = OHOS::Security::AccessToken::TOKEN_HAP,
187         .version = 0,
188     };
189     OHOS::Security::AccessToken::AccessTokenID *tokenid =
190         reinterpret_cast<OHOS::Security::AccessToken::AccessTokenID *>(&tokenInner);
191     ASSERT_NE(0, *tokenid);
192     SecCompPermManager permMgr;
193     nlohmann::json jsonComponent;
194     ServiceTestCommon::BuildSaveComponentJson(jsonComponent);
195     SecCompBase* comp = SecCompInfoHelper::ParseComponent(SAVE_COMPONENT, jsonComponent);
196     ASSERT_NE(nullptr, comp);
197     std::shared_ptr<SecCompBase> shared_comp(comp);
198 
199     EXPECT_EQ(SC_SERVICE_ERROR_PERMISSION_OPER_FAIL,
200         permMgr.GrantTempPermission(*tokenid, shared_comp));
201 }