1 /*
2 * Copyright (c) 2024 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 "asset_system_api_test.h"
17
18 #include <cstring>
19 #include <gtest/gtest.h>
20
21 #include "nativetoken_kit.h"
22 #include "token_setproc.h"
23
24 #include "asset_system_api.h"
25 #include "asset_system_type.h"
26 #include "asset_test_common.h"
27
28 using namespace testing::ext;
29 namespace UnitTest::AssetSystemApiTest {
GrantSelfPermission()30 int GrantSelfPermission()
31 {
32 const char *permissions[] = {
33 "ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS"
34 };
35 NativeTokenInfoParams info = {
36 .dcapsNum = 0,
37 .permsNum = 1,
38 .aclsNum = 0,
39 .dcaps = nullptr,
40 .perms = permissions,
41 .acls = nullptr,
42 .processName = "asset_bin_test",
43 .aplStr = "system_basic",
44 };
45 uint64_t tokenId = GetAccessTokenId(&info);
46 return SetSelfTokenID(tokenId);
47 }
48
49 class AssetSystemApiTest : public testing::Test {
50 public:
51 static void SetUpTestCase(void);
52
53 static void TearDownTestCase(void);
54
55 void SetUp(void);
56
57 void TearDown(void);
58 };
59
SetUpTestCase(void)60 void AssetSystemApiTest::SetUpTestCase(void)
61 {
62 ASSERT_EQ(0, GrantSelfPermission());
63 }
64
TearDownTestCase(void)65 void AssetSystemApiTest::TearDownTestCase(void)
66 {
67 }
68
SetUp(void)69 void AssetSystemApiTest::SetUp(void)
70 {
71 }
72
TearDown(void)73 void AssetSystemApiTest::TearDown(void)
74 {
75 }
76
77 /**
78 * @tc.name: AssetSystemApiTest.AssetSystemApiTest001
79 * @tc.desc: Test asset func AssetAdd specific user id, expect SUCCESS
80 * @tc.type: FUNC
81 * @tc.result:0
82 */
83 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest001, TestSize.Level0)
84 {
85 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
86 AssetAttr attr[] = {
87 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
88 { .tag = SEC_ASSET_TAG_SECRET, .value.blob = funcName },
89 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
90 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID },
91 { .tag = SEC_ASSET_TAG_REQUIRE_PASSWORD_SET, .value.boolean = false },
92 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_NONE },
93 { .tag = SEC_ASSET_TAG_SYNC_TYPE, .value.u32 = SEC_ASSET_SYNC_TYPE_NEVER },
94 { .tag = SEC_ASSET_TAG_CONFLICT_RESOLUTION, .value.u32 = SEC_ASSET_CONFLICT_OVERWRITE },
95 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_1, .value.blob = funcName },
96 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_2, .value.blob = funcName },
97 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_3, .value.blob = funcName },
98 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_4, .value.blob = funcName },
99 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_1, .value.blob = funcName },
100 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_2, .value.blob = funcName },
101 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_3, .value.blob = funcName },
102 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_4, .value.blob = funcName },
103 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_1, .value.blob = funcName },
104 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_2, .value.blob = funcName },
105 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_3, .value.blob = funcName },
106 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_4, .value.blob = funcName }
107 };
108 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetAdd(attr, ARRAY_SIZE(attr)));
109 AssetResultSet resultSet = { 0 };
110 ASSERT_EQ(SEC_ASSET_SUCCESS, QueryByAliasSdk(__func__, &resultSet));
111 ASSERT_EQ(1, resultSet.count);
112 AssetResult result = resultSet.results[0];
113 ASSERT_TRUE(CheckMatchAttrResultSdk(attr, ARRAY_SIZE(attr), &result));
114 AssetFreeResultSet(&resultSet);
115 ASSERT_EQ(SEC_ASSET_SUCCESS, RemoveByAliasSdk(__func__));
116 }
117
118 /**
119 * @tc.name: AssetSystemApiTest.AssetSystemApiTest002
120 * @tc.desc: Test asset func AssetQuery specific user id, expect SUCCESS
121 * @tc.type: FUNC
122 * @tc.result:0
123 */
124 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest002, TestSize.Level0)
125 {
126 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
127 AssetAttr addAttr[] = {
128 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
129 { .tag = SEC_ASSET_TAG_SECRET, .value.blob = funcName },
130 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID },
131 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
132 };
133 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetAdd(addAttr, ARRAY_SIZE(addAttr)));
134
135 AssetResultSet resultSet = { 0 };
136 AssetAttr queryAttr[] = {
137 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
138 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID },
139 { .tag = SEC_ASSET_TAG_RETURN_TYPE, .value.u32 = SEC_ASSET_RETURN_ALL }
140 };
141 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetQuery(queryAttr, ARRAY_SIZE(queryAttr), &resultSet));
142 ASSERT_EQ(1, resultSet.count);
143
144 AssetFreeResultSet(&resultSet);
145 ASSERT_EQ(SEC_ASSET_SUCCESS, RemoveByAliasSdk(__func__));
146 }
147
148 /**
149 * @tc.name: AssetSystemApiTest.AssetSystemApiTest003
150 * @tc.desc: Test asset func AssetRemove, expect SUCCESS
151 * @tc.type: FUNC
152 * @tc.result:0
153 */
154 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest003, TestSize.Level0)
155 {
156 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
157 AssetAttr attr[] = {
158 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
159 { .tag = SEC_ASSET_TAG_SECRET, .value.blob = funcName },
160 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
161 { .tag = SEC_ASSET_TAG_REQUIRE_PASSWORD_SET, .value.boolean = false },
162 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID },
163 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_NONE },
164 { .tag = SEC_ASSET_TAG_SYNC_TYPE, .value.u32 = SEC_ASSET_SYNC_TYPE_NEVER },
165 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_1, .value.blob = funcName },
166 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_2, .value.blob = funcName },
167 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_3, .value.blob = funcName },
168 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_4, .value.blob = funcName },
169 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_1, .value.blob = funcName },
170 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_2, .value.blob = funcName },
171 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_3, .value.blob = funcName },
172 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_4, .value.blob = funcName },
173 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_1, .value.blob = funcName },
174 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_2, .value.blob = funcName },
175 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_3, .value.blob = funcName },
176 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_4, .value.blob = funcName }
177 };
178 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetAdd(attr, ARRAY_SIZE(attr)));
179 AssetAttr attr2[] = {
180 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
181 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
182 { .tag = SEC_ASSET_TAG_REQUIRE_PASSWORD_SET, .value.boolean = false },
183 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID },
184 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_NONE },
185 { .tag = SEC_ASSET_TAG_SYNC_TYPE, .value.u32 = SEC_ASSET_SYNC_TYPE_NEVER },
186 { .tag = SEC_ASSET_TAG_IS_PERSISTENT, .value.boolean = false },
187 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_1, .value.blob = funcName },
188 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_2, .value.blob = funcName },
189 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_3, .value.blob = funcName },
190 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_4, .value.blob = funcName },
191 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_1, .value.blob = funcName },
192 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_2, .value.blob = funcName },
193 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_3, .value.blob = funcName },
194 { .tag = SEC_ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_4, .value.blob = funcName },
195 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_1, .value.blob = funcName },
196 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_2, .value.blob = funcName },
197 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_3, .value.blob = funcName },
198 { .tag = SEC_ASSET_TAG_DATA_LABEL_CRITICAL_4, .value.blob = funcName }
199 };
200 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetRemove(attr2, ARRAY_SIZE(attr2)));
201 }
202
203 /**
204 * @tc.name: AssetSystemApiTest.AssetSystemApiTest004
205 * @tc.desc: Test asset func AssetPreQuery, AssetPostQuery expect SUCCESS
206 * @tc.type: FUNC
207 * @tc.result:0
208 */
209 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest004, TestSize.Level0)
210 {
211 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
212 AssetAttr attr[] = {
213 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
214 { .tag = SEC_ASSET_TAG_SECRET, .value.blob = funcName },
215 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID },
216 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
217 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_ANY }
218 };
219 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetAdd(attr, ARRAY_SIZE(attr)));
220
221 AssetBlob challenge = { 0 };
222 AssetAttr attr2[] = {
223 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
224 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID }
225 };
226 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetPreQuery(attr2, ARRAY_SIZE(attr2), &challenge));
227
228 AssetAttr attr3[] = {
229 { .tag = SEC_ASSET_TAG_AUTH_CHALLENGE, .value.blob = challenge },
230 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID }
231 };
232 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetPostQuery(attr3, ARRAY_SIZE(attr3)));
233
234 AssetAttr attr4[] = {
235 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
236 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID }
237 };
238 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetRemove(attr4, ARRAY_SIZE(attr4)));
239 }
240
241 /**
242 * @tc.name: AssetSystemApiTest.AssetSystemApiTest005
243 * @tc.desc: Test asset func AssetUpdate expect SUCCESS
244 * @tc.type: FUNC
245 * @tc.result:0
246 */
247 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest005, TestSize.Level0)
248 {
249 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
250 AssetAttr attr[] = {
251 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
252 { .tag = SEC_ASSET_TAG_SECRET, .value.blob = funcName },
253 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID },
254 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
255 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_ANY }
256 };
257 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetAdd(attr, ARRAY_SIZE(attr)));
258
259 AssetAttr queryAttr[] = {
260 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
261 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = SPECIFIC_USER_ID },
262 };
263 const char *secretNew = "secret_new";
264 AssetAttr updateAttr[] = {
265 { .tag = SEC_ASSET_TAG_SECRET, .value.blob =
266 { .size = strlen(secretNew), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(secretNew)) } }
267 };
268 ASSERT_EQ(SEC_ASSET_SUCCESS, AssetUpdate(queryAttr, ARRAY_SIZE(queryAttr), updateAttr, ARRAY_SIZE(updateAttr)));
269
270 ASSERT_EQ(SEC_ASSET_SUCCESS, RemoveByAliasSdk(__func__));
271 }
272
273 /**
274 * @tc.name: AssetSystemApiTest.AssetSystemApiTest006
275 * @tc.desc: Test asset func AssetAdd expect FAIL
276 * @tc.type: FUNC
277 * @tc.result:0
278 */
279 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest006, TestSize.Level0)
280 {
281 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
282 AssetAttr attr[] = {
283 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
284 { .tag = SEC_ASSET_TAG_SECRET, .value.blob = funcName },
285 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = -1 },
286 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
287 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_ANY }
288 };
289 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetAdd(attr, ARRAY_SIZE(attr)));
290 AssetAttr attr2[] = {
291 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
292 { .tag = SEC_ASSET_TAG_SECRET, .value.blob = funcName },
293 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = 0 },
294 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
295 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_ANY }
296 };
297 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetAdd(attr2, ARRAY_SIZE(attr2)));
298 }
299
300 /**
301 * @tc.name: AssetSystemApiTest.AssetSystemApiTest007
302 * @tc.desc: Test asset func AssetQuery expect FAIL
303 * @tc.type: FUNC
304 * @tc.result:0
305 */
306 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest007, TestSize.Level0)
307 {
308 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
309 AssetResultSet resultSet = { 0 };
310 AssetAttr queryAttr[] = {
311 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
312 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = -1 },
313 { .tag = SEC_ASSET_TAG_RETURN_TYPE, .value.u32 = SEC_ASSET_RETURN_ALL }
314 };
315 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetQuery(queryAttr, ARRAY_SIZE(queryAttr), &resultSet));
316 AssetAttr queryAttr2[] = {
317 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
318 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = 0 },
319 { .tag = SEC_ASSET_TAG_RETURN_TYPE, .value.u32 = SEC_ASSET_RETURN_ALL }
320 };
321 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetQuery(queryAttr2, ARRAY_SIZE(queryAttr2), &resultSet));
322 }
323
324 /**
325 * @tc.name: AssetSystemApiTest.AssetSystemApiTest008
326 * @tc.desc: Test asset func AssetRemove expect FAIL
327 * @tc.type: FUNC
328 * @tc.result:0
329 */
330 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest008, TestSize.Level0)
331 {
332 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
333 AssetAttr attr[] = {
334 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
335 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
336 { .tag = SEC_ASSET_TAG_REQUIRE_PASSWORD_SET, .value.boolean = false },
337 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = -1 },
338 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_NONE },
339 { .tag = SEC_ASSET_TAG_SYNC_TYPE, .value.u32 = SEC_ASSET_SYNC_TYPE_NEVER },
340 { .tag = SEC_ASSET_TAG_IS_PERSISTENT, .value.boolean = false }
341 };
342 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetRemove(attr, ARRAY_SIZE(attr)));
343 AssetAttr attr2[] = {
344 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
345 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
346 { .tag = SEC_ASSET_TAG_REQUIRE_PASSWORD_SET, .value.boolean = false },
347 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = 0 },
348 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_NONE },
349 { .tag = SEC_ASSET_TAG_SYNC_TYPE, .value.u32 = SEC_ASSET_SYNC_TYPE_NEVER },
350 { .tag = SEC_ASSET_TAG_IS_PERSISTENT, .value.boolean = false }
351 };
352 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetRemove(attr2, ARRAY_SIZE(attr2)));
353 }
354
355 /**
356 * @tc.name: AssetSystemApiTest.AssetSystemApiTest009
357 * @tc.desc: Test asset func AssetPreQuery expect FAIL
358 * @tc.type: FUNC
359 * @tc.result:0
360 */
361 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest009, TestSize.Level0)
362 {
363 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
364 AssetBlob challenge = { 0 };
365 AssetAttr attr[] = {
366 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
367 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = -1 }
368 };
369 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetPreQuery(attr, ARRAY_SIZE(attr), &challenge));
370 AssetAttr attr2[] = {
371 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
372 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = 0 }
373 };
374 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetPreQuery(attr2, ARRAY_SIZE(attr2), &challenge));
375 }
376
377 /**
378 * @tc.name: AssetSystemApiTest.AssetSystemApiTest010
379 * @tc.desc: Test asset func AssetPostQuery expect FAIL
380 * @tc.type: FUNC
381 * @tc.result:0
382 */
383 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest010, TestSize.Level0)
384 {
385 AssetBlob challenge = { 0 };
386 AssetAttr attr[] = {
387 { .tag = SEC_ASSET_TAG_AUTH_CHALLENGE, .value.blob = challenge },
388 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = -1 }
389 };
390 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetPostQuery(attr, ARRAY_SIZE(attr)));
391 AssetAttr attr2[] = {
392 { .tag = SEC_ASSET_TAG_AUTH_CHALLENGE, .value.blob = challenge },
393 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = 0 }
394 };
395 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetPostQuery(attr2, ARRAY_SIZE(attr2)));
396 }
397
398 /**
399 * @tc.name: AssetSystemApiTest.AssetSystemApiTest011
400 * @tc.desc: Test asset func AssetAdd expect FAIL
401 * @tc.type: FUNC
402 * @tc.result:0
403 */
404 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest011, TestSize.Level0)
405 {
406 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
407 AssetAttr attr[] = {
408 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
409 { .tag = SEC_ASSET_TAG_SECRET, .value.blob = funcName },
410 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = NOT_FOUND_USER_ID },
411 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
412 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_ANY }
413 };
414 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetAdd(attr, ARRAY_SIZE(attr)));
415 }
416
417 /**
418 * @tc.name: AssetSystemApiTest.AssetSystemApiTest012
419 * @tc.desc: Test asset func AssetQuery expect FAIL
420 * @tc.type: FUNC
421 * @tc.result:0
422 */
423 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest012, TestSize.Level0)
424 {
425 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
426 AssetResultSet resultSet = { 0 };
427 AssetAttr queryAttr[] = {
428 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
429 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = NOT_FOUND_USER_ID },
430 { .tag = SEC_ASSET_TAG_RETURN_TYPE, .value.u32 = SEC_ASSET_RETURN_ALL }
431 };
432 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetQuery(queryAttr, ARRAY_SIZE(queryAttr), &resultSet));
433 }
434
435 /**
436 * @tc.name: AssetSystemApiTest.AssetSystemApiTest013
437 * @tc.desc: Test asset func AssetRemove expect FAIL
438 * @tc.type: FUNC
439 * @tc.result:0
440 */
441 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest013, TestSize.Level0)
442 {
443 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
444 AssetAttr attr[] = {
445 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
446 { .tag = SEC_ASSET_TAG_ACCESSIBILITY, .value.u32 = SEC_ASSET_ACCESSIBILITY_DEVICE_UNLOCKED },
447 { .tag = SEC_ASSET_TAG_REQUIRE_PASSWORD_SET, .value.boolean = false },
448 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = NOT_FOUND_USER_ID },
449 { .tag = SEC_ASSET_TAG_AUTH_TYPE, .value.u32 = SEC_ASSET_AUTH_TYPE_NONE },
450 { .tag = SEC_ASSET_TAG_SYNC_TYPE, .value.u32 = SEC_ASSET_SYNC_TYPE_NEVER },
451 { .tag = SEC_ASSET_TAG_IS_PERSISTENT, .value.boolean = false }
452 };
453 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetRemove(attr, ARRAY_SIZE(attr)));
454 }
455
456 /**
457 * @tc.name: AssetSystemApiTest.AssetSystemApiTest014
458 * @tc.desc: Test asset func AssetPreQuery expect FAIL
459 * @tc.type: FUNC
460 * @tc.result:0
461 */
462 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest014, TestSize.Level0)
463 {
464 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
465 AssetBlob challenge = { 0 };
466 AssetAttr attr[] = {
467 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
468 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = NOT_FOUND_USER_ID }
469 };
470 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetPreQuery(attr, ARRAY_SIZE(attr), &challenge));
471 }
472
473 /**
474 * @tc.name: AssetSystemApiTest.AssetSystemApiTest015
475 * @tc.desc: Test asset func AssetPostQuery expect FAIL
476 * @tc.type: FUNC
477 * @tc.result:0
478 */
479 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest015, TestSize.Level0)
480 {
481 AssetBlob challenge = { 0 };
482 AssetAttr attr[] = {
483 { .tag = SEC_ASSET_TAG_AUTH_CHALLENGE, .value.blob = challenge },
484 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = NOT_FOUND_USER_ID }
485 };
486 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT, AssetPostQuery(attr, ARRAY_SIZE(attr)));
487 }
488
489 /**
490 * @tc.name: AssetSystemApiTest.AssetSystemApiTest016
491 * @tc.desc: Test asset func AssetUpdate expect FAIL
492 * @tc.type: FUNC
493 * @tc.result:0
494 */
495 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest016, TestSize.Level0)
496 {
497 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
498 AssetAttr queryAttr[] = {
499 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
500 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = NOT_FOUND_USER_ID },
501 };
502 const char *secretNew = "secret_new";
503 AssetAttr updateAttr[] = {
504 { .tag = SEC_ASSET_TAG_SECRET, .value.blob =
505 { .size = strlen(secretNew), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(secretNew)) } }
506 };
507 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT,
508 AssetUpdate(queryAttr, ARRAY_SIZE(queryAttr), updateAttr, ARRAY_SIZE(updateAttr)));
509 }
510
511 /**
512 * @tc.name: AssetSystemApiTest.AssetSystemApiTest017
513 * @tc.desc: Test asset func AssetUpdate expect FAIL
514 * @tc.type: FUNC
515 * @tc.result:0
516 */
517 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest017, TestSize.Level0)
518 {
519 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
520 AssetAttr queryAttr[] = {
521 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
522 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = 0 },
523 };
524 const char *secretNew = "secret_new";
525 AssetAttr updateAttr[] = {
526 { .tag = SEC_ASSET_TAG_SECRET, .value.blob =
527 { .size = strlen(secretNew), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(secretNew)) } }
528 };
529 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT,
530 AssetUpdate(queryAttr, ARRAY_SIZE(queryAttr), updateAttr, ARRAY_SIZE(updateAttr)));
531 }
532
533 /**
534 * @tc.name: AssetSystemApiTest.AssetSystemApiTest018
535 * @tc.desc: Test asset func AssetUpdate expect FAIL
536 * @tc.type: FUNC
537 * @tc.result:0
538 */
539 HWTEST_F(AssetSystemApiTest, AssetSystemApiTest018, TestSize.Level0)
540 {
541 AssetBlob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
542 AssetAttr queryAttr[] = {
543 { .tag = SEC_ASSET_TAG_ALIAS, .value.blob = funcName },
544 { .tag = SEC_ASSET_TAG_USER_ID, .value.u32 = -1 },
545 };
546 const char *secretNew = "secret_new";
547 AssetAttr updateAttr[] = {
548 { .tag = SEC_ASSET_TAG_SECRET, .value.blob =
549 { .size = strlen(secretNew), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(secretNew)) } }
550 };
551 ASSERT_EQ(SEC_ASSET_INVALID_ARGUMENT,
552 AssetUpdate(queryAttr, ARRAY_SIZE(queryAttr), updateAttr, ARRAY_SIZE(updateAttr)));
553 }
554 }