• 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.Level0)
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.Level0)
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.Level0)
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.Level0)
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     permMgr.saveTaskDequeMap_[id].push_back("test");
104     permMgr.RevokeTempSavePermissionCount(static_cast<AccessTokenID>(0));
105 
106     permMgr.secHandler_ = std::make_shared<SecEventHandler>(nullptr);
107     permMgr.RevokeTempSavePermissionCount(static_cast<AccessTokenID>(0));
108     ASSERT_EQ(permMgr.applySaveCountMap_[id], 0);
109 }
110 
111 /**
112  * @tc.name: RevokeTempSavePermission001
113  * @tc.desc: Test invalid params
114  * @tc.type: FUNC
115  * @tc.require:
116  */
117 HWTEST_F(SecCompPermManagerTest, RevokeTempSavePermission001, TestSize.Level0)
118 {
119     SecCompPermManager permMgr;
120     permMgr.secHandler_ = nullptr;
121     AccessTokenID id = 0;
122     permMgr.saveTaskDequeMap_[id].push_back("test");
123     permMgr.RevokeTempSavePermission(id);
124     ASSERT_EQ(permMgr.saveTaskDequeMap_[id].size(), static_cast<size_t>(0));
125 
126     permMgr.secHandler_ = std::make_shared<SecEventHandler>(nullptr);
127     permMgr.saveTaskDequeMap_[id].push_back("test1");
128     permMgr.RevokeTempSavePermission(id);
129     permMgr.CancelAppRevokingPermisions(id);
130     ASSERT_EQ(permMgr.saveTaskDequeMap_[id].size(), static_cast<size_t>(0));
131 }
132 
133 /**
134  * @tc.name: RemoveAppGrantPermissionRecord001
135  * @tc.desc: Test invalid params
136  * @tc.type: FUNC
137  * @tc.require:
138  */
139 HWTEST_F(SecCompPermManagerTest, RemoveAppGrantPermissionRecord001, TestSize.Level0)
140 {
141     SecCompPermManager permMgr;
142     AccessTokenID id = 0;
143     permMgr.RemoveAppGrantPermissionRecord(id, "test");
144 
145     permMgr.grantMap_[id].insert("test");
146     permMgr.RemoveAppGrantPermissionRecord(id, "test");
147     ASSERT_EQ(permMgr.grantMap_[id].size(), static_cast<size_t>(0));
148 }
149 
150 /**
151  * @tc.name: RevokeAppPermission001
152  * @tc.desc: Test invalid params
153  * @tc.type: FUNC
154  * @tc.require:
155  */
156 HWTEST_F(SecCompPermManagerTest, RevokeAppPermission001, TestSize.Level0)
157 {
158     SecCompPermManager permMgr;
159     AccessTokenID id = 0;
160     ASSERT_EQ(permMgr.RevokeAppPermission(id, "test"), 0);
161 }
162 
163 /**
164  * @tc.name: VerifyPermission001
165  * @tc.desc: Test VerifyPermission
166  * @tc.type: FUNC
167  * @tc.require:
168  */
169 HWTEST_F(SecCompPermManagerTest, VerifyPermission001, TestSize.Level0)
170 {
171     SecCompPermManager permMgr;
172     AccessTokenID id = 1000;
173     ASSERT_FALSE(permMgr.VerifyPermission(id, LOCATION_COMPONENT));
174     ASSERT_FALSE(permMgr.VerifyPermission(id, PASTE_COMPONENT));
175     ASSERT_FALSE(permMgr.VerifyPermission(id, SAVE_COMPONENT));
176     ASSERT_FALSE(permMgr.VerifyPermission(id, static_cast<SecCompType>(-1)));
177 }
178 
179 /**
180  * @tc.name: DLP-GrantTempPermission001
181  * @tc.desc: Test DLP sandbox app grant save button
182  * @tc.type: FUNC
183  * @tc.require:
184  */
185 HWTEST_F(SecCompPermManagerTest, GrantTempPermission001, TestSize.Level0)
186 {
187     OHOS::Security::AccessToken::AccessTokenIDInner tokenInner = {
188         .tokenUniqueID = 0x00001,
189         .res = 1,
190         .dlpFlag = 1,
191         .type = OHOS::Security::AccessToken::TOKEN_HAP,
192         .version = 0,
193     };
194     OHOS::Security::AccessToken::AccessTokenID *tokenid =
195         reinterpret_cast<OHOS::Security::AccessToken::AccessTokenID *>(&tokenInner);
196     ASSERT_NE(0, *tokenid);
197     SecCompPermManager permMgr;
198     nlohmann::json jsonComponent;
199     ServiceTestCommon::BuildSaveComponentJson(jsonComponent);
200     std::string message;
201     SecCompBase* comp = SecCompInfoHelper::ParseComponent(SAVE_COMPONENT, jsonComponent, message);
202     ASSERT_NE(nullptr, comp);
203     std::shared_ptr<SecCompBase> shared_comp(comp);
204 
205     EXPECT_EQ(SC_SERVICE_ERROR_PERMISSION_OPER_FAIL,
206         permMgr.GrantTempPermission(*tokenid, shared_comp));
207 }