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
16 #include <gtest/gtest.h>
17
18 #include "mock_native_token.h"
19 #include "system_ability_definition.h"
20 #include "system_ability_manager_client.h"
21 #define private public
22 #include "uri_permission_manager_stub_impl.h"
23 #undef private
24
25 using namespace testing;
26 using namespace testing::ext;
27
28 namespace OHOS {
29 namespace AAFwk {
30 class UriPermissionImplTest : public testing::Test {
31 public:
32 static void SetUpTestCase();
33 static void TearDownTestCase();
34 void SetUp() override;
35 void TearDown() override;
36 };
37
SetUpTestCase()38 void UriPermissionImplTest::SetUpTestCase()
39 {
40 AppExecFwk::MockNativeToken::SetNativeToken();
41 }
42
TearDownTestCase()43 void UriPermissionImplTest::TearDownTestCase() {}
44
SetUp()45 void UriPermissionImplTest::SetUp() {}
46
TearDown()47 void UriPermissionImplTest::TearDown() {}
48
49 /*
50 * Feature: URIPermissionManagerService
51 * Function: GrantUriPermission
52 * SubFunction: NA
53 * FunctionPoints: URIPermissionManagerService GrantUriPermission
54 */
55 HWTEST_F(UriPermissionImplTest, Upms_GrantUriPermission_001, TestSize.Level1)
56 {
57 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
58 ASSERT_NE(upms, nullptr);
59 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
60 Uri uri(uriStr);
61 unsigned int flag = 0;
62 std::string targetBundleName = "name2";
63 int autoremove = 1;
64 upms->GrantUriPermission(uri, flag, targetBundleName, autoremove);
65 }
66
67 /*
68 * Feature: URIPermissionManagerService
69 * Function: GrantUriPermission
70 * SubFunction: NA
71 * FunctionPoints: URIPermissionManagerService GrantUriPermission
72 */
73 HWTEST_F(UriPermissionImplTest, Upms_GrantUriPermission_002, TestSize.Level1)
74 {
75 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
76 ASSERT_NE(upms, nullptr);
77 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
78 Uri uri(uriStr);
79 unsigned int flag = 1;
80 std::string targetBundleName = "name2";
81 int autoremove = 1;
82 upms->GrantUriPermission(uri, flag, targetBundleName, autoremove);
83 }
84
85 /*
86 * Feature: URIPermissionManagerService
87 * Function: GrantUriPermission
88 * SubFunction: NA
89 * FunctionPoints: URIPermissionManagerService GrantUriPermission
90 */
91 HWTEST_F(UriPermissionImplTest, Upms_GrantUriPermission_003, TestSize.Level1)
92 {
93 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
94 ASSERT_NE(upms, nullptr);
95 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
96 Uri uri(uriStr);
97 unsigned int flag = 2;
98 MockSystemAbilityManager::isNullptr = false;
99 std::string targetBundleName = "name2";
100 int autoremove = 1;
101 upms->GrantUriPermission(uri, flag, targetBundleName, autoremove);
102 MockSystemAbilityManager::isNullptr = true;
103 }
104
105 /*
106 * Feature: URIPermissionManagerService
107 * Function: GrantUriPermission
108 * SubFunction: NA
109 * FunctionPoints: URIPermissionManagerService GrantUriPermission
110 */
111 HWTEST_F(UriPermissionImplTest, Upms_GrantUriPermission_004, TestSize.Level1)
112 {
113 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
114 ASSERT_NE(upms, nullptr);
115 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
116 Uri uri(uriStr);
117 unsigned int flag = 2;
118 std::string targetBundleName = "name2";
119 int autoremove = 1;
120 MockSystemAbilityManager::isNullptr = false;
121 StorageManager::StorageManagerServiceMock::isZero = false;
122 upms->GrantUriPermission(uri, flag, targetBundleName, autoremove);
123 MockSystemAbilityManager::isNullptr = true;
124 StorageManager::StorageManagerServiceMock::isZero = true;
125 }
126
127 /*
128 * Feature: URIPermissionManagerService
129 * Function: GrantUriPermission
130 * SubFunction: NA
131 * FunctionPoints: URIPermissionManagerService GrantUriPermission
132 */
133 HWTEST_F(UriPermissionImplTest, Upms_GrantUriPermission_005, TestSize.Level1)
134 {
135 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
136 ASSERT_NE(upms, nullptr);
137 unsigned int tmpFlag = 1;
138 uint32_t fromTokenId = 2;
139 uint32_t targetTokenId = 3;
140 std::string targetBundleName = "name2";
141 int autoremove = 1;
142 GrantInfo info = { tmpFlag, fromTokenId, targetTokenId, autoremove };
143 std::list<GrantInfo> infoList = { info };
144 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
145 upms->uriMap_.emplace(uriStr, infoList);
146 Uri uri(uriStr);
147 MockSystemAbilityManager::isNullptr = false;
148 upms->GrantUriPermission(uri, tmpFlag, targetBundleName, autoremove);
149 MockSystemAbilityManager::isNullptr = true;
150 }
151
152 /*
153 * Feature: URIPermissionManagerService
154 * Function: GrantUriPermission
155 * SubFunction: NA
156 * FunctionPoints: URIPermissionManagerService GrantUriPermission
157 */
158 HWTEST_F(UriPermissionImplTest, Upms_GrantUriPermission_006, TestSize.Level1)
159 {
160 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
161 ASSERT_NE(upms, nullptr);
162 unsigned int tmpFlag = 1;
163 uint32_t fromTokenId = 2;
164 uint32_t targetTokenId = 3;
165 std::string targetBundleName = "name2";
166 int autoremove = 1;
167 GrantInfo info = { tmpFlag, fromTokenId, targetTokenId, autoremove };
168 std::list<GrantInfo> infoList = { info };
169 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
170 upms->uriMap_.emplace(uriStr, infoList);
171 Uri uri(uriStr);
172 MockSystemAbilityManager::isNullptr = false;
173 unsigned int flag = 2;
174 upms->GrantUriPermission(uri, flag, targetBundleName, autoremove);
175 MockSystemAbilityManager::isNullptr = true;
176 }
177
178 /*
179 * Feature: URIPermissionManagerService
180 * Function: GrantUriPermission
181 * SubFunction: NA
182 * FunctionPoints: URIPermissionManagerService GrantUriPermission
183 */
184 HWTEST_F(UriPermissionImplTest, Upms_GrantUriPermission_007, TestSize.Level1)
185 {
186 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
187 ASSERT_NE(upms, nullptr);
188 unsigned int tmpFlag = 1;
189 uint32_t fromTokenId = 2;
190 uint32_t targetTokenId = 3;
191 std::string targetBundleName = "name2";
192 int autoremove = 1;
193 GrantInfo info = { tmpFlag, fromTokenId, targetTokenId, autoremove };
194 std::list<GrantInfo> infoList = { info };
195 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
196 upms->uriMap_.emplace(uriStr, infoList);
197 Uri uri(uriStr);
198 MockSystemAbilityManager::isNullptr = false;
199 unsigned int flag = 2;
200 upms->GrantUriPermission(uri, flag, targetBundleName, autoremove);
201 MockSystemAbilityManager::isNullptr = true;
202 }
203
204 /*
205 * Feature: URIPermissionManagerService
206 * Function: RevokeUriPermission
207 * SubFunction: NA
208 * FunctionPoints: URIPermissionManagerService RevokeUriPermission
209 */
210 HWTEST_F(UriPermissionImplTest, Upms_RevokeUriPermission_001, TestSize.Level1)
211 {
212 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
213 ASSERT_NE(upms, nullptr);
214 unsigned int tmpFlag = 1;
215 uint32_t fromTokenId = 2;
216 uint32_t targetTokenId = 3;
217 GrantInfo info = { tmpFlag, fromTokenId, targetTokenId };
218 std::list<GrantInfo> infoList = { info };
219 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
220 upms->uriMap_.emplace(uriStr, infoList);
221 upms->RevokeUriPermission(targetTokenId);
222 }
223
224 /*
225 * Feature: URIPermissionManagerService
226 * Function: RevokeUriPermission
227 * SubFunction: NA
228 * FunctionPoints: URIPermissionManagerService RevokeUriPermission
229 */
230 HWTEST_F(UriPermissionImplTest, Upms_RevokeUriPermission_002, TestSize.Level1)
231 {
232 auto upms = std::make_shared<UriPermissionManagerStubImpl>();
233 ASSERT_NE(upms, nullptr);
234 unsigned int tmpFlag = 1;
235 uint32_t fromTokenId = 2;
236 uint32_t targetTokenId = 3;
237 GrantInfo info = { tmpFlag, fromTokenId, targetTokenId };
238 std::list<GrantInfo> infoList = { info };
239 auto uriStr = "file://com.example.test/data/storage/el2/base/haps/entry/files/test_A.txt";
240 upms->uriMap_.emplace(uriStr, infoList);
241 uint32_t tokenId = 4;
242 upms->RevokeUriPermission(tokenId);
243 }
244
245 /*
246 * Feature: URIPermissionManagerService
247 * Function: ConnectManager
248 * SubFunction: NA
249 * FunctionPoints: URIPermissionManagerService ConnectManager
250 */
251 HWTEST_F(UriPermissionImplTest, Upms_ConnectManager_001, TestSize.Level1)
252 {
253 auto upms = std::make_unique<UriPermissionManagerStubImpl>();
254 ASSERT_NE(upms, nullptr);
255 SystemAbilityManagerClient::nullptrFlag = true;
256 sptr<StorageManager::IStorageManager> storageManager = nullptr;
257 upms->ConnectManager(storageManager, STORAGE_MANAGER_MANAGER_ID);
258 SystemAbilityManagerClient::nullptrFlag = false;
259 ASSERT_EQ(storageManager, nullptr);
260 }
261
262 /*
263 * Feature: URIPermissionManagerService
264 * Function: ConnectManager
265 * SubFunction: NA
266 * FunctionPoints: URIPermissionManagerService ConnectManager
267 */
268 HWTEST_F(UriPermissionImplTest, Upms_ConnectManager_002, TestSize.Level1)
269 {
270 auto upms = std::make_unique<UriPermissionManagerStubImpl>();
271 ASSERT_NE(upms, nullptr);
272 MockSystemAbilityManager::isNullptr = true;
273 sptr<StorageManager::IStorageManager> storageManager = nullptr;
274 upms->ConnectManager(storageManager, STORAGE_MANAGER_MANAGER_ID);
275 MockSystemAbilityManager::isNullptr = false;
276 ASSERT_EQ(storageManager, nullptr);
277 }
278 } // namespace AAFwk
279 } // namespace OHOS
280