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 }