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 }