• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 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 <cinttypes>
17 #include <unistd.h>
18 #include <gtest/gtest.h>
19 #include "alg_loader.h"
20 #include "common_defs.h"
21 #include "compatible_sub_session.h"
22 #include "device_auth.h"
23 #include "device_auth_defines.h"
24 #include "device_auth_ext.h"
25 #include "hc_dev_info_mock.h"
26 #include "json_utils_mock.h"
27 #include "permission_adapter.h"
28 #include "json_utils.h"
29 #include "string_util.h"
30 #include "protocol_task_main_mock.h"
31 #include "securec.h"
32 #include "hc_file.h"
33 #include <dirent.h>
34 #include <fcntl.h>
35 #include <sys/types.h>
36 #include <sys/stat.h>
37 #include "hc_log.h"
38 #include "hc_types.h"
39 #include "base/security/device_auth/services/identity_service/src/identity_operation.c"
40 #include "base/security/device_auth/services/identity_service/src/identity_service_impl.c"
41 #include "base/security/device_auth/services/identity_service/session/src/cred_session_util.c"
42 #include "base/security/device_auth/services/data_manager/cred_data_manager/src/credential_data_manager.c"
43 
44 #include "cred_listener.h"
45 
46 using namespace std;
47 using namespace testing::ext;
48 
49 namespace {
50 #define TEST_RESULT_SUCCESS 0
51 #define TEST_APP_ID "TestAppId"
52 #define TEST_APP_ID1 "TestAppId1"
53 #define TEST_DEVICE_ID "TestDeviceId"
54 #define TEST_USER_ID "TestUserId"
55 #define TEST_CRED_ID "TestCredId"
56 #define TEST_CRED_TYPE 1
57 #define TEST_CRED_TYPE_1 2
58 #define TEST_CRED_TYPE_2 3
59 #define TEST_CRED_TYPE_3 4
60 #define TEST_REQ_ID 11111111
61 #define TEST_REQ_ID_S 22222222
62 #define TEST_REQ_ID_AUTH 12312121
63 #define TEST_REQ_ID_AUTH_S 4352345234534
64 #define TEST_OWNER_UID_1 1
65 #define TEST_OWNER_UID_2 2
66 #define TEST_CRED_INFO_ID "TestCredInfoId"
67 #define TEST_PIN_CODE "123456"
68 #define TEST_PIN_CODE_1 ""
69 #define QUERY_RESULT_NUM 0
70 #define QUERY_RESULT_NUM_2 2
71 #define DATA_LEN 10
72 #define DEFAULT_OS_ACCOUNT_ID 100
73 #define DEFAULT_VAL 0
74 #define DEFAULT_CHANNEL_TYPE 0
75 #define TEST_DEV_AUTH_SLEEP_TIME 50000
76 #define TEST_CRED_DATA_PATH "/data/service/el1/public/deviceauthMock/hccredential.dat"
77 static const char *TEST_DATA = "testData";
78 static const char *ADD_PARAMS =
79     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
80     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
81     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
82     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
83     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
84 static const char *CLIENT_AUTH_PARAMS =
85     "{\"credType\":2,\"keyFormat\":1,\"algorithmType\":1,\"subject\":1,"
86     "\"proofType\":1,\"method\":2,\"authorizedScope\":1,"
87     "\"keyValue\":\"1234567812345678123456781234567812345678123456781234567812345678\","
88     "\"deviceId\":\"52E2706717D5C39D736E134CC1E3BE1BAA2AA52DB7C76A37C749558BD2E6492C\",\"credOwner\":\"TestAppId\","
89     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
90     "\"peerUserSpaceId\":\"0\",\"extendInfo\":\"\"}";
91 static const char *SERVER_AUTH_PARAMS =
92     "{\"credType\":2,\"keyFormat\":1,\"algorithmType\":1,\"subject\":1,"
93     "\"proofType\":1,\"method\":2,\"authorizedScope\":1,"
94     "\"keyValue\":\"1234567812345678123456781234567812345678123456781234567812345678\","
95     "\"deviceId\":\"5420459D93FE773F9945FD64277FBA2CAB8FB996DDC1D0B97676FBB1242B3930\",\"credOwner\":\"TestAppId\","
96     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
97     "\"peerUserSpaceId\":\"0\",\"extendInfo\":\"\"}";
98 static const char *ADD_PARAMS1 =
99     "{\"credType\":0,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
100     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
101     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
102     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
103     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
104 static const char *ADD_PARAMS2 =
105     "{\"credType\":1,\"keyFormat\":0,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
106     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
107     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
108     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
109     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
110 static const char *ADD_PARAMS3 =
111     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":0,\"subject\":1,\"issuer\":1,"
112     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
113     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
114     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
115     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
116 static const char *ADD_PARAMS4 =
117     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":0,\"issuer\":1,"
118     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
119     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
120     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
121     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
122 static const char *ADD_PARAMS5 =
123     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":0,"
124     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
125     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
126     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
127     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
128 static const char *ADD_PARAMS6 =
129     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
130     "\"proofType\":0,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
131     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
132     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
133     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
134 static const char *ADD_PARAMS7 =
135     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
136     "\"proofType\":1,\"method\":0,\"authorizedScope\":1,\"userId\":\"TestUserId\","
137     "\"keyValue\":\"TestKeyValue\",\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
138     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
139     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
140 static const char *ADD_PARAMS8 =
141     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
142     "\"proofType\":1,\"method\":1,\"authorizedScope\":0,\"userId\":\"TestUserId\","
143     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
144     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
145     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
146 static const char *ADD_PARAMS9 =
147     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
148     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
149     "\"credOwner\":\"TestAppId\","
150     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
151     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
152 static const char *ADD_PARAMS10 =
153     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
154     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
155     "\"deviceId\":\"TestDeviceId\","
156     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
157     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
158 static const char *ADD_PARAMS11 =
159     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
160     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,"
161     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
162     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
163     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
164 static const char *ADD_PARAMS12 =
165     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
166     "\"proofType\":1,\"method\":2,\"authorizedScope\":1,\"userId\":\"TestUserId\","
167     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
168     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
169     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
170 static const char *ADD_PARAMS13 =
171     "{\"credType\":2,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
172     "\"proofType\":1,\"method\":2,\"authorizedScope\":1,\"userId\":\"TestUserId\","
173     "\"keyValue\":\"9A9A9A9A\",\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
174     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
175     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
176 static const char *ADD_PARAMS14 =
177     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
178     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
179     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId1\","
180     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
181     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
182 static const char *ADD_PARAMS15 =
183     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
184     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
185     "\"keyValue\":\"TestKeyValue\",\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
186     "\"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\"],"
187     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
188 static const char *ADD_PARAMS16 =
189     "{\"credId\":\"14993DDA9D\",\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
190     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
191     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
192     "\"peerUserSpaceId\":\"100\",\"extendInfo\":\"\"}";
193 static const char *ADD_PARAMS17 =
194     "{\"credType\":2,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,"
195     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,"
196     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\"}";
197 static const char *ADD_PARAMS18 =
198     "{\"credType\":3,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
199     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId0\","
200     "\"deviceId\":\"TestDeviceId0\",\"credOwner\":\"TestAppId\"}";
201 static const char *REQUEST_PARAMS =
202     "{\"authorizedScope\":1, \"authorizedAppList\":[\"TestName1\",\"TestName2\",\"TestName3\","
203     "\"TestName4\"],\"extendInfo\":\"\"}";
204 static const char *AGREE_PARAMS =
205     "{\"credType\":2, \"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\",\"subject\":1,"
206     "\"keyFormat\":2,\"proofType\":1,\"authorizedScope\":1,\"algorithmType\":3,\"peerUserSpaceId\":\"100\","
207     "\"keyValue\":\"3059301306072a8648ce3d020106082a8648ce3d030107034200043bb1f8107c6306bddcdb70cd9fee0e581"
208     "5bbd305184871cd2880657eb2cc88aeece1a7f076d9fff7e1114e3bc9dfa45b061b2755b46fc282ef59763b4c0288bd\"}";
209 static const char *BATCH_UPDATE_PARAMS =
210     "{\"baseInfo\":{\"credType\":3,\"keyFormat\":2,\"algorithmType\":3,\"subject\":2,\"authorizedScope\":2,"
211     "\"issuer\":1,\"proofType\":2,\"credOwner\":\"TestAppId\"},"
212     "\"updateLists\":[{\"userId\":\"TestUserId\",\"deviceId\":\"TestDeviceId\"}]}";
213 static const char *BATCH_UPDATE_PARAMS1 =
214     "{\"baseInfo\":{\"credType\":1,\"keyFormat\":2,\"algorithmType\":3,\"subject\":2,\"authorizedScope\":2,"
215     "\"issuer\":1,\"proofType\":2,\"credOwner\":\"TestAppId\"},"
216     "\"updateLists\":[{\"userId\":\"TestUserId\",\"deviceId\":\"TestDeviceId\"}]}";
217 
218 static const char *CRED_DATA =
219     "{\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
220     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
221     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
222 static const char *CRED_DATA_1 =
223     "{\"credType\":1,\"keyFormat\":4,\"algorithmType\":3,\"subject\":1,\"issuer\":1,"
224     "\"proofType\":1,\"method\":1,\"authorizedScope\":1,\"userId\":\"TestUserId\","
225     "\"deviceId\":\"TestDeviceId\",\"credOwner\":\"TestAppId\","
226     "\"peerUserSpaceId\":100,\"extendInfo\":\"\"}";
227 
228 static const char *QUERY_PARAMS = "{\"deviceId\":\"TestDeviceId\"}";
229 static const char *QUERY_PARAMS1 = "{\"deviceId\":\"TestDeviceId1\"}";
230 static const char *DEL_PARAMS = "{\"credOwner\":\"TestAppId\"}";
231 static const char *DEL_PARAMS1 = "{\"credOwner\":\"TestAppId\",\"userIdHash\":\"12D2\",\"deviceIdHash\":\"12D2\"}";
232 enum AsyncStatus {
233     ASYNC_STATUS_WAITING = 0,
234     ASYNC_STATUS_TRANSMIT = 1,
235     ASYNC_STATUS_FINISH = 2,
236     ASYNC_STATUS_ERROR = 3
237 };
238 
239 static AsyncStatus volatile g_asyncStatus;
240 static uint32_t g_transmitDataMaxLen = 2048;
241 static uint8_t g_transmitData[2048] = { 0 };
242 static uint32_t g_transmitDataLen = 0;
243 static bool g_isBind = false;
244 static char g_clientCredId[256] = { 0 };
245 static char g_serverCredId[256] = { 0 };
246 static const char *PIN_CODE = "000000";
247 
248 enum CredListenerStatus {
249     CRED_LISTENER_INIT = 0,
250     CRED_LISTENER_ON_ADD = 1,
251     CRED_LISTENER_ON_UPDATE = 2,
252     CRED_LISTENER_ON_DELETE = 3,
253 };
254 
255 static CredListenerStatus volatile g_credListenerStatus;
256 
TestOnCredAdd(const char * credId,const char * credInfo)257 static void TestOnCredAdd(const char *credId, const char *credInfo)
258 {
259     (void)credId;
260     (void)credInfo;
261     g_credListenerStatus = CRED_LISTENER_ON_ADD;
262 }
263 
TestOnCredUpdate(const char * credId,const char * credInfo)264 static void TestOnCredUpdate(const char *credId, const char *credInfo)
265 {
266     (void)credId;
267     (void)credInfo;
268     g_credListenerStatus = CRED_LISTENER_ON_UPDATE;
269 }
270 
TestOnCredDelete(const char * credId,const char * credInfo)271 static void TestOnCredDelete(const char *credId, const char *credInfo)
272 {
273     (void)credId;
274     (void)credInfo;
275     g_credListenerStatus = CRED_LISTENER_ON_DELETE;
276 }
277 
278 static CredChangeListener g_credChangeListener = {
279     .onCredAdd = TestOnCredAdd,
280     .onCredUpdate = TestOnCredUpdate,
281     .onCredDelete = TestOnCredDelete,
282 };
283 
DeleteDatabase()284 static void DeleteDatabase()
285 {
286     HcFileRemove(TEST_CRED_DATA_PATH);
287 }
288 
CompareSubject(Credential * credential,QueryCredentialParams * params)289 static bool CompareSubject(Credential *credential, QueryCredentialParams *params)
290 {
291     credential->subject = SUBJECT_ACCESSORY_DEVICE;
292     (void)CompareIntParams(params, credential);
293     credential->subject = DEFAULT_CRED_PARAM_VAL;
294     (void)CompareIntParams(params, credential);
295     params->subject = SUBJECT_MASTER_CONTROLLER;
296     credential->subject = SUBJECT_ACCESSORY_DEVICE;
297     (void)CompareIntParams(params, credential);
298     credential->subject = SUBJECT_MASTER_CONTROLLER;
299     bool ret = CompareIntParams(params, credential);
300     params->subject = DEFAULT_CRED_PARAM_VAL;
301     return ret;
302 }
303 
CompareIssuer(Credential * credential,QueryCredentialParams * params)304 static bool CompareIssuer(Credential *credential, QueryCredentialParams *params)
305 {
306     credential->issuer = SYSTEM_ACCOUNT;
307     (void)CompareIntParams(params, credential);
308     credential->issuer = DEFAULT_CRED_PARAM_VAL;
309     (void)CompareIntParams(params, credential);
310     params->issuer = SYSTEM_ACCOUNT;
311     credential->issuer = SYSTEM_ACCOUNT;
312     (void)CompareIntParams(params, credential);
313     credential->issuer = APP_ACCOUNT;
314     bool ret = CompareIntParams(params, credential);
315     params->issuer = DEFAULT_CRED_PARAM_VAL;
316     return ret;
317 }
318 
CompareOwnerUid(Credential * credential,QueryCredentialParams * params)319 static bool CompareOwnerUid(Credential *credential, QueryCredentialParams *params)
320 {
321     credential->ownerUid = TEST_OWNER_UID_1;
322     (void)CompareIntParams(params, credential);
323     credential->ownerUid = DEFAULT_CRED_PARAM_VAL;
324     (void)CompareIntParams(params, credential);
325     params->ownerUid = TEST_OWNER_UID_1;
326     credential->ownerUid = TEST_OWNER_UID_1;
327     (void)CompareIntParams(params, credential);
328     credential->ownerUid = TEST_OWNER_UID_2;
329     bool ret = CompareIntParams(params, credential);
330     params->ownerUid = DEFAULT_CRED_PARAM_VAL;
331     return ret;
332 }
333 
CompareAuthorziedScope(Credential * credential,QueryCredentialParams * params)334 static bool CompareAuthorziedScope(Credential *credential, QueryCredentialParams *params)
335 {
336     credential->authorizedScope = SCOPE_DEVICE;
337     (void)CompareIntParams(params, credential);
338     credential->authorizedScope = DEFAULT_CRED_PARAM_VAL;
339     (void)CompareIntParams(params, credential);
340     params->authorizedScope = SCOPE_DEVICE;
341     credential->authorizedScope = SCOPE_DEVICE;
342     (void)CompareIntParams(params, credential);
343     credential->authorizedScope = SCOPE_USER;
344     bool ret = CompareIntParams(params, credential);
345     params->authorizedScope = DEFAULT_CRED_PARAM_VAL;
346     return ret;
347 }
348 
CompareKeyFormat(Credential * credential,QueryCredentialParams * params)349 static bool CompareKeyFormat(Credential *credential, QueryCredentialParams *params)
350 {
351     credential->keyFormat = SYMMETRIC_KEY;
352     (void)CompareIntParams(params, credential);
353     credential->keyFormat = DEFAULT_CRED_PARAM_VAL;
354     (void)CompareIntParams(params, credential);
355     params->keyFormat = SYMMETRIC_KEY;
356     credential->keyFormat = SYMMETRIC_KEY;
357     (void)CompareIntParams(params, credential);
358     credential->keyFormat = ASYMMETRIC_PUB_KEY;
359     bool ret = CompareIntParams(params, credential);
360     params->keyFormat = DEFAULT_CRED_PARAM_VAL;
361     return ret;
362 }
363 
CompareAlgorithmType(Credential * credential,QueryCredentialParams * params)364 static bool CompareAlgorithmType(Credential *credential, QueryCredentialParams *params)
365 {
366     credential->algorithmType = ALGO_TYPE_AES_256;
367     (void)CompareIntParams(params, credential);
368     credential->algorithmType = DEFAULT_CRED_PARAM_VAL;
369     (void)CompareIntParams(params, credential);
370     params->algorithmType = ALGO_TYPE_AES_256;
371     credential->algorithmType = ALGO_TYPE_AES_256;
372     (void)CompareIntParams(params, credential);
373     credential->algorithmType = ALGO_TYPE_AES_128;
374     bool ret = CompareIntParams(params, credential);
375     params->algorithmType = DEFAULT_CRED_PARAM_VAL;
376     return ret;
377 }
378 
CompareProofType(Credential * credential,QueryCredentialParams * params)379 static bool CompareProofType(Credential *credential, QueryCredentialParams *params)
380 {
381     credential->proofType = PROOF_TYPE_PSK;
382     (void)CompareIntParams(params, credential);
383     credential->proofType = DEFAULT_CRED_PARAM_VAL;
384     (void)CompareIntParams(params, credential);
385     params->proofType = PROOF_TYPE_PSK;
386     credential->proofType = PROOF_TYPE_PSK;
387     (void)CompareIntParams(params, credential);
388     credential->proofType = PROOF_TYPE_PKI;
389     bool ret = CompareIntParams(params, credential);
390     params->proofType = DEFAULT_CRED_PARAM_VAL;
391     return ret;
392 }
393 
394 class GetCredMgrInstanceTest : public testing::Test {
395 public:
396     static void SetUpTestCase();
397     static void TearDownTestCase();
398     void SetUp();
399     void TearDown();
400 };
401 
SetUpTestCase()402 void GetCredMgrInstanceTest::SetUpTestCase() {}
TearDownTestCase()403 void GetCredMgrInstanceTest::TearDownTestCase() {}
404 
SetUp()405 void GetCredMgrInstanceTest::SetUp()
406 {
407     int ret = InitDeviceAuthService();
408     EXPECT_EQ(ret, IS_SUCCESS);
409 }
410 
TearDown()411 void GetCredMgrInstanceTest::TearDown()
412 {
413     DestroyDeviceAuthService();
414 }
415 
416 HWTEST_F(GetCredMgrInstanceTest, GetCredMgrInstanceTest001, TestSize.Level0)
417 {
418     const CredManager *cm = GetCredMgrInstance();
419     EXPECT_NE(cm, nullptr);
420 }
421 
422 HWTEST_F(GetCredMgrInstanceTest, GetCredMgrInstanceTest002, TestSize.Level0)
423 {
424     const CredManager *cm = GetCredMgrInstance();
425     EXPECT_NE(cm, nullptr);
426     char *returnData = nullptr;
427     cm->destroyInfo(nullptr);
428     cm->destroyInfo(&returnData);
429     returnData = static_cast<char *>(HcMalloc(DATA_LEN, 0));
430     int32_t ret = memcpy_s(returnData, DATA_LEN, TEST_DATA, HcStrlen(TEST_DATA));
431     cm->destroyInfo(&returnData);
432     EXPECT_EQ(ret, IS_SUCCESS);
433 }
434 
435 class CredMgrAddCredentialTest : public testing::Test {
436 public:
437     static void SetUpTestCase();
438     static void TearDownTestCase();
439     void SetUp();
440     void TearDown();
441 };
442 
SetUpTestCase()443 void CredMgrAddCredentialTest::SetUpTestCase() {}
TearDownTestCase()444 void CredMgrAddCredentialTest::TearDownTestCase() {}
445 
SetUp()446 void CredMgrAddCredentialTest::SetUp()
447 {
448     DeleteDatabase();
449     int ret = InitDeviceAuthService();
450     EXPECT_EQ(ret, IS_SUCCESS);
451 }
452 
TearDown()453 void CredMgrAddCredentialTest::TearDown()
454 {
455     DestroyDeviceAuthService();
456 }
457 
458 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest001, TestSize.Level0)
459 {
460     const CredManager *cm = GetCredMgrInstance();
461     ASSERT_NE(cm, nullptr);
462     char *returnData = nullptr;
463     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &returnData);
464     cm->destroyInfo(&returnData);
465     EXPECT_EQ(ret, IS_SUCCESS);
466 }
467 
468 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest002, TestSize.Level0)
469 {
470     const CredManager *cm = GetCredMgrInstance();
471     ASSERT_NE(cm, nullptr);
472     char *returnData = nullptr;
473     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, nullptr, &returnData);
474     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
475 }
476 
477 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest003, TestSize.Level0)
478 {
479     const CredManager *cm = GetCredMgrInstance();
480     ASSERT_NE(cm, nullptr);
481     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, nullptr);
482     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
483 }
484 
485 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest004, TestSize.Level0)
486 {
487     const CredManager *cm = GetCredMgrInstance();
488     ASSERT_NE(cm, nullptr);
489     char *returnData = nullptr;
490     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS1, &returnData);
491     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
492 }
493 
494 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest005, TestSize.Level0)
495 {
496     const CredManager *cm = GetCredMgrInstance();
497     ASSERT_NE(cm, nullptr);
498     char *returnData = nullptr;
499     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS2, &returnData);
500     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
501 }
502 
503 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest006, TestSize.Level0)
504 {
505     const CredManager *cm = GetCredMgrInstance();
506     ASSERT_NE(cm, nullptr);
507     char *returnData = nullptr;
508     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS3, &returnData);
509     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
510 }
511 
512 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest007, TestSize.Level0)
513 {
514     const CredManager *cm = GetCredMgrInstance();
515     ASSERT_NE(cm, nullptr);
516     char *returnData = nullptr;
517     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS4, &returnData);
518     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
519 }
520 
521 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest008, TestSize.Level0)
522 {
523     const CredManager *cm = GetCredMgrInstance();
524     ASSERT_NE(cm, nullptr);
525     char *returnData = nullptr;
526     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS5, &returnData);
527     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
528 }
529 
530 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest009, TestSize.Level0)
531 {
532     const CredManager *cm = GetCredMgrInstance();
533     ASSERT_NE(cm, nullptr);
534     char *returnData = nullptr;
535     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS6, &returnData);
536     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
537 }
538 
539 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest010, TestSize.Level0)
540 {
541     const CredManager *cm = GetCredMgrInstance();
542     ASSERT_NE(cm, nullptr);
543     char *returnData = nullptr;
544     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS7, &returnData);
545     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
546 }
547 
548 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest011, TestSize.Level0)
549 {
550     const CredManager *cm = GetCredMgrInstance();
551     ASSERT_NE(cm, nullptr);
552     char *returnData = nullptr;
553     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS8, &returnData);
554     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
555 }
556 
557 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest012, TestSize.Level0)
558 {
559     const CredManager *cm = GetCredMgrInstance();
560     ASSERT_NE(cm, nullptr);
561     char *returnData = nullptr;
562     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS9, &returnData);
563     EXPECT_EQ(ret, IS_ERR_JSON_GET);
564 }
565 
566 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest013, TestSize.Level0)
567 {
568     const CredManager *cm = GetCredMgrInstance();
569     ASSERT_NE(cm, nullptr);
570     char *returnData = nullptr;
571     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS10, &returnData);
572     EXPECT_EQ(ret, IS_ERR_JSON_GET);
573 }
574 
575 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest014, TestSize.Level0)
576 {
577     const CredManager *cm = GetCredMgrInstance();
578     ASSERT_NE(cm, nullptr);
579     char *returnData = nullptr;
580     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS11, &returnData);
581     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
582 }
583 
584 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest015, TestSize.Level0)
585 {
586     const CredManager *cm = GetCredMgrInstance();
587     ASSERT_NE(cm, nullptr);
588     char *returnData = nullptr;
589     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS12, &returnData);
590     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
591 }
592 
593 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest016, TestSize.Level0)
594 {
595     const CredManager *cm = GetCredMgrInstance();
596     ASSERT_NE(cm, nullptr);
597     char *returnData = nullptr;
598     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS13, &returnData);
599     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
600 }
601 
602 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest017, TestSize.Level0)
603 {
604     const CredManager *cm = GetCredMgrInstance();
605     ASSERT_NE(cm, nullptr);
606     char *returnData = nullptr;
607     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS15, &returnData);
608     EXPECT_EQ(ret, IS_ERR_KEYVALUE_METHOD_CONFLICT);
609 }
610 
611 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest018, TestSize.Level0)
612 {
613     const CredManager *cm = GetCredMgrInstance();
614     ASSERT_NE(cm, nullptr);
615     char *credId = nullptr;
616     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS16, &credId);
617     EXPECT_EQ(ret, IS_SUCCESS);
618     ret = cm->deleteCredential(DEFAULT_OS_ACCOUNT, credId);
619     HcFree(credId);
620     EXPECT_EQ(ret, IS_SUCCESS);
621 }
622 
623 HWTEST_F(CredMgrAddCredentialTest, CredMgrAddCredentialTest019, TestSize.Level0)
624 {
625     Credential *credential = CreateCredential();
626     ASSERT_NE(credential, nullptr);
627     QueryCredentialParams params = InitQueryCredentialParams();
628     bool ret = CompareIntParams(&params, credential);
629     EXPECT_EQ(ret, true);
630     params.credType = ACCOUNT_RELATED;
631     credential->credType = ACCOUNT_UNRELATED;
632     ret = CompareIntParams(&params, credential);
633     EXPECT_EQ(ret, false);
634     params.credType = DEFAULT_CRED_PARAM_VAL;
635     ret = CompareSubject(credential, &params);
636     EXPECT_EQ(ret, true);
637     ret = CompareIssuer(credential, &params);
638     EXPECT_EQ(ret, false);
639     ret = CompareOwnerUid(credential, &params);
640     EXPECT_EQ(ret, false);
641     ret = CompareAuthorziedScope(credential, &params);
642     EXPECT_EQ(ret, false);
643     ret = CompareKeyFormat(credential, &params);
644     EXPECT_EQ(ret, false);
645     ret = CompareAlgorithmType(credential, &params);
646     EXPECT_EQ(ret, false);
647     ret = CompareProofType(credential, &params);
648     EXPECT_EQ(ret, false);
649     DestroyCredential(credential);
650 }
651 
652 class CredMgrExportCredentialTest : public testing::Test {
653 public:
654     static void SetUpTestCase();
655     static void TearDownTestCase();
656     void SetUp();
657     void TearDown();
658 };
659 
660 
SetUpTestCase()661 void CredMgrExportCredentialTest::SetUpTestCase() {}
TearDownTestCase()662 void CredMgrExportCredentialTest::TearDownTestCase() {}
663 
SetUp()664 void CredMgrExportCredentialTest::SetUp()
665 {
666     DeleteDatabase();
667     int ret = InitDeviceAuthService();
668     EXPECT_EQ(ret, IS_SUCCESS);
669 }
670 
TearDown()671 void CredMgrExportCredentialTest::TearDown()
672 {
673     DestroyDeviceAuthService();
674 }
675 
676 HWTEST_F(CredMgrExportCredentialTest, CredMgrExportCredentialTest001, TestSize.Level0)
677 {
678     const CredManager *cm = GetCredMgrInstance();
679     ASSERT_NE(cm, nullptr);
680     char *credId = nullptr;
681     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
682     EXPECT_EQ(ret, IS_SUCCESS);
683     char *returnData = nullptr;
684     ret = cm->exportCredential(DEFAULT_OS_ACCOUNT, credId, &returnData);
685     HcFree(credId);
686     cm->destroyInfo(&returnData);
687     EXPECT_EQ(ret, IS_SUCCESS);
688 }
689 
690 HWTEST_F(CredMgrExportCredentialTest, CredMgrExportCredentialTest002, TestSize.Level0)
691 {
692     const CredManager *cm = GetCredMgrInstance();
693     ASSERT_NE(cm, nullptr);
694     char *credId = nullptr;
695     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS2, &credId);
696     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
697     char *returnData = nullptr;
698     ret = cm->exportCredential(DEFAULT_OS_ACCOUNT, credId, &returnData);
699     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
700 }
701 
702 HWTEST_F(CredMgrExportCredentialTest, CredMgrExportCredentialTest003, TestSize.Level0)
703 {
704     const CredManager *cm = GetCredMgrInstance();
705     ASSERT_NE(cm, nullptr);
706     char *credId = nullptr;
707     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
708     EXPECT_EQ(ret, IS_SUCCESS);
709     ret = cm->exportCredential(DEFAULT_OS_ACCOUNT, credId, nullptr);
710     HcFree(credId);
711     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
712 }
713 
714 HWTEST_F(CredMgrExportCredentialTest, CredMgrExportCredentialTest004, TestSize.Level0)
715 {
716     const CredManager *cm = GetCredMgrInstance();
717     ASSERT_NE(cm, nullptr);
718     char *credId = nullptr;
719     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
720     HcFree(credId);
721     EXPECT_EQ(ret, IS_SUCCESS);
722     char *returnData = nullptr;
723     ret = cm->exportCredential(DEFAULT_OS_ACCOUNT, nullptr, &returnData);
724     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
725 }
726 
727 class CredMgrQueryCredentialByParamsTest : public testing::Test {
728 public:
729     static void SetUpTestCase();
730     static void TearDownTestCase();
731     void SetUp();
732     void TearDown();
733 };
734 
SetUpTestCase()735 void CredMgrQueryCredentialByParamsTest::SetUpTestCase() {}
TearDownTestCase()736 void CredMgrQueryCredentialByParamsTest::TearDownTestCase() {}
737 
SetUp()738 void CredMgrQueryCredentialByParamsTest::SetUp()
739 {
740     DeleteDatabase();
741     int ret = InitDeviceAuthService();
742     EXPECT_EQ(ret, IS_SUCCESS);
743 }
744 
TearDown()745 void CredMgrQueryCredentialByParamsTest::TearDown()
746 {
747     DestroyDeviceAuthService();
748 }
749 
750 HWTEST_F(CredMgrQueryCredentialByParamsTest, CredMgrQueryCredentialByParamsTest001, TestSize.Level0)
751 {
752     const CredManager *cm = GetCredMgrInstance();
753     ASSERT_NE(cm, nullptr);
754     char *returnData = nullptr;
755     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &returnData);
756     HcFree(returnData);
757     returnData = nullptr;
758     EXPECT_EQ(ret, IS_SUCCESS);
759     ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS14, &returnData);
760     HcFree(returnData);
761     EXPECT_EQ(ret, IS_SUCCESS);
762     char *credIdList = nullptr;
763     ret = cm->queryCredentialByParams(DEFAULT_OS_ACCOUNT, QUERY_PARAMS, &credIdList);
764     EXPECT_EQ(ret, IS_SUCCESS);
765     CJson *jsonArr = CreateJsonFromString(credIdList);
766     int32_t size = GetItemNum(jsonArr);
767     HcFree(credIdList);
768     FreeJson(jsonArr);
769     EXPECT_EQ(size, QUERY_RESULT_NUM_2);
770 }
771 
772 HWTEST_F(CredMgrQueryCredentialByParamsTest, CredMgrQueryCredentialByParamsTest002, TestSize.Level0)
773 {
774     const CredManager *cm = GetCredMgrInstance();
775     ASSERT_NE(cm, nullptr);
776     char *credIdList = nullptr;
777     int32_t ret = cm->queryCredentialByParams(DEFAULT_OS_ACCOUNT, nullptr, &credIdList);
778     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
779 }
780 
781 HWTEST_F(CredMgrQueryCredentialByParamsTest, CredMgrQueryCredentialByParamsTest003, TestSize.Level0)
782 {
783     const CredManager *cm = GetCredMgrInstance();
784     ASSERT_NE(cm, nullptr);
785     int32_t ret = cm->queryCredentialByParams(DEFAULT_OS_ACCOUNT, QUERY_PARAMS, nullptr);
786     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
787 }
788 
789 HWTEST_F(CredMgrQueryCredentialByParamsTest, CredMgrQueryCredentialByParamsTest004, TestSize.Level0)
790 {
791     const CredManager *cm = GetCredMgrInstance();
792     ASSERT_NE(cm, nullptr);
793     char *returnData = nullptr;
794     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &returnData);
795     HcFree(returnData);
796     EXPECT_EQ(ret, IS_SUCCESS);
797     char *credIdList = nullptr;
798     ret = cm->queryCredentialByParams(DEFAULT_OS_ACCOUNT, QUERY_PARAMS1, &credIdList);
799     EXPECT_EQ(ret, IS_SUCCESS);
800     CJson *jsonArr = CreateJsonFromString(credIdList);
801     int32_t size = GetItemNum(jsonArr);
802     HcFree(credIdList);
803     FreeJson(jsonArr);
804     EXPECT_EQ(size, QUERY_RESULT_NUM);
805 }
806 
807 class CredMgrQueryCredInfoByCredIdTest : public testing::Test {
808 public:
809     static void SetUpTestCase();
810     static void TearDownTestCase();
811     void SetUp();
812     void TearDown();
813 };
814 
SetUpTestCase()815 void CredMgrQueryCredInfoByCredIdTest::SetUpTestCase() {}
TearDownTestCase()816 void CredMgrQueryCredInfoByCredIdTest::TearDownTestCase() {}
817 
SetUp()818 void CredMgrQueryCredInfoByCredIdTest::SetUp()
819 {
820     DeleteDatabase();
821     int ret = InitDeviceAuthService();
822     EXPECT_EQ(ret, IS_SUCCESS);
823 }
824 
TearDown()825 void CredMgrQueryCredInfoByCredIdTest::TearDown()
826 {
827     DestroyDeviceAuthService();
828 }
829 
830 HWTEST_F(CredMgrQueryCredInfoByCredIdTest, CredMgrQueryCredInfoByCredIdTest001, TestSize.Level0)
831 {
832     const CredManager *cm = GetCredMgrInstance();
833     ASSERT_NE(cm, nullptr);
834     char *credId = nullptr;
835     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
836     EXPECT_EQ(ret, IS_SUCCESS);
837     char *returnCredInfo = nullptr;
838     ret = cm->queryCredInfoByCredId(DEFAULT_OS_ACCOUNT, credId, &returnCredInfo);
839     HcFree(credId);
840     EXPECT_EQ(ret, IS_SUCCESS);
841     CJson *credInfoJson = CreateJsonFromString(returnCredInfo);
842     HcFree(returnCredInfo);
843     const char *deviceId = GetStringFromJson(credInfoJson, FIELD_DEVICE_ID);
844     EXPECT_EQ(IsStrEqual(deviceId, TEST_DEVICE_ID), true);
845     FreeJson(credInfoJson);
846 }
847 
848 HWTEST_F(CredMgrQueryCredInfoByCredIdTest, CredMgrQueryCredInfoByCredIdTest002, TestSize.Level0)
849 {
850     const CredManager *cm = GetCredMgrInstance();
851     ASSERT_NE(cm, nullptr);
852     char *returnCredInfo = nullptr;
853     int32_t ret = cm->queryCredInfoByCredId(DEFAULT_OS_ACCOUNT, nullptr, &returnCredInfo);
854     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
855 }
856 
857 HWTEST_F(CredMgrQueryCredInfoByCredIdTest, CredMgrQueryCredInfoByCredIdTest003, TestSize.Level0)
858 {
859     const CredManager *cm = GetCredMgrInstance();
860     ASSERT_NE(cm, nullptr);
861     char *credId = nullptr;
862     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS14, &credId);
863     EXPECT_EQ(ret, IS_SUCCESS);
864     ret = cm->queryCredInfoByCredId(DEFAULT_OS_ACCOUNT, credId, nullptr);
865     HcFree(credId);
866     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
867 }
868 
869 class CredMgrDeleteCredentialTest : public testing::Test {
870 public:
871     static void SetUpTestCase();
872     static void TearDownTestCase();
873     void SetUp();
874     void TearDown();
875 };
876 
SetUpTestCase()877 void CredMgrDeleteCredentialTest::SetUpTestCase() {}
TearDownTestCase()878 void CredMgrDeleteCredentialTest::TearDownTestCase() {}
879 
SetUp()880 void CredMgrDeleteCredentialTest::SetUp()
881 {
882     DeleteDatabase();
883     int ret = InitDeviceAuthService();
884     EXPECT_EQ(ret, IS_SUCCESS);
885 }
886 
TearDown()887 void CredMgrDeleteCredentialTest::TearDown()
888 {
889     DestroyDeviceAuthService();
890 }
891 
892 HWTEST_F(CredMgrDeleteCredentialTest, CredMgrDeleteCredentialTest001, TestSize.Level0)
893 {
894     const CredManager *cm = GetCredMgrInstance();
895     ASSERT_NE(cm, nullptr);
896     char *credId = nullptr;
897     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
898     EXPECT_EQ(ret, IS_SUCCESS);
899     ret = cm->deleteCredential(DEFAULT_OS_ACCOUNT, credId);
900     HcFree(credId);
901     EXPECT_EQ(ret, IS_SUCCESS);
902 }
903 
904 HWTEST_F(CredMgrDeleteCredentialTest, CredMgrDeleteCredentialTest003, TestSize.Level0)
905 {
906     const CredManager *cm = GetCredMgrInstance();
907     ASSERT_NE(cm, nullptr);
908     int32_t ret = cm->deleteCredential(DEFAULT_OS_ACCOUNT, nullptr);
909     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
910 }
911 
912 class CredMgrUpdateCredInfoTest : public testing::Test {
913 public:
914     static void SetUpTestCase();
915     static void TearDownTestCase();
916     void SetUp();
917     void TearDown();
918 };
919 
SetUpTestCase()920 void CredMgrUpdateCredInfoTest::SetUpTestCase() {}
TearDownTestCase()921 void CredMgrUpdateCredInfoTest::TearDownTestCase() {}
922 
SetUp()923 void CredMgrUpdateCredInfoTest::SetUp()
924 {
925     DeleteDatabase();
926     int ret = InitDeviceAuthService();
927     EXPECT_EQ(ret, IS_SUCCESS);
928 }
929 
TearDown()930 void CredMgrUpdateCredInfoTest::TearDown()
931 {
932     DestroyDeviceAuthService();
933 }
934 
935 HWTEST_F(CredMgrUpdateCredInfoTest, CredMgrUpdateCredInfoTest001, TestSize.Level0)
936 {
937     const CredManager *cm = GetCredMgrInstance();
938     ASSERT_NE(cm, nullptr);
939     char *credId = nullptr;
940     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
941     EXPECT_EQ(ret, IS_SUCCESS);
942     ret = cm->updateCredInfo(DEFAULT_OS_ACCOUNT, credId, REQUEST_PARAMS);
943     HcFree(credId);
944     EXPECT_EQ(ret, IS_SUCCESS);
945 }
946 
947 HWTEST_F(CredMgrUpdateCredInfoTest, CredMgrUpdateCredInfoTest002, TestSize.Level0)
948 {
949     const CredManager *cm = GetCredMgrInstance();
950     ASSERT_NE(cm, nullptr);
951     char *credId = nullptr;
952     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
953     EXPECT_EQ(ret, IS_SUCCESS);
954     ret = cm->updateCredInfo(DEFAULT_OS_ACCOUNT, credId, "");
955     HcFree(credId);
956     EXPECT_EQ(ret, IS_ERR_JSON_CREATE);
957 }
958 
959 HWTEST_F(CredMgrUpdateCredInfoTest, CredMgrUpdateCredInfoTest004, TestSize.Level0)
960 {
961     const CredManager *cm = GetCredMgrInstance();
962     ASSERT_NE(cm, nullptr);
963     char *credId = nullptr;
964     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
965     EXPECT_EQ(ret, IS_SUCCESS);
966     ret = cm->updateCredInfo(DEFAULT_OS_ACCOUNT, nullptr, REQUEST_PARAMS);
967     HcFree(credId);
968     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
969 }
970 
971 class CredMgrRegCredListenerTest : public testing::Test {
972 public:
973     static void SetUpTestCase();
974     static void TearDownTestCase();
975     void SetUp();
976     void TearDown();
977 };
978 
SetUpTestCase()979 void CredMgrRegCredListenerTest::SetUpTestCase() {}
TearDownTestCase()980 void CredMgrRegCredListenerTest::TearDownTestCase() {}
981 
SetUp()982 void CredMgrRegCredListenerTest::SetUp()
983 {
984     DeleteDatabase();
985     int ret = InitDeviceAuthService();
986     EXPECT_EQ(ret, IS_SUCCESS);
987 }
988 
TearDown()989 void CredMgrRegCredListenerTest::TearDown()
990 {
991     DestroyDeviceAuthService();
992 }
993 
994 HWTEST_F(CredMgrRegCredListenerTest, CredMgrRegCredListenerTest001, TestSize.Level0)
995 {
996     const CredManager *cm = GetCredMgrInstance();
997     ASSERT_NE(cm, nullptr);
998     CredChangeListener listener;
999     int32_t ret = cm->registerChangeListener(TEST_APP_ID, &listener);
1000     EXPECT_EQ(ret, IS_SUCCESS);
1001 }
1002 
1003 HWTEST_F(CredMgrRegCredListenerTest, CredMgrRegCredListenerTest002, TestSize.Level0)
1004 {
1005     const CredManager *cm = GetCredMgrInstance();
1006     ASSERT_NE(cm, nullptr);
1007     CredChangeListener listener;
1008     int32_t ret = cm->registerChangeListener(TEST_APP_ID, &listener);
1009     EXPECT_EQ(ret, IS_SUCCESS);
1010     ret = cm->registerChangeListener(TEST_APP_ID, &listener);
1011     EXPECT_EQ(ret, IS_SUCCESS);
1012 }
1013 
1014 HWTEST_F(CredMgrRegCredListenerTest, CredMgrRegCredListenerTest003, TestSize.Level0)
1015 {
1016     const CredManager *cm = GetCredMgrInstance();
1017     ASSERT_NE(cm, nullptr);
1018     CredChangeListener listener;
1019     int32_t ret = cm->registerChangeListener(nullptr, &listener);
1020     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1021 }
1022 
1023 HWTEST_F(CredMgrRegCredListenerTest, CredMgrRegCredListenerTest004, TestSize.Level0)
1024 {
1025     const CredManager *cm = GetCredMgrInstance();
1026     ASSERT_NE(cm, nullptr);
1027     int32_t ret = cm->registerChangeListener(TEST_APP_ID, nullptr);
1028     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1029 }
1030 
1031 HWTEST_F(CredMgrRegCredListenerTest, CredMgrRegCredListenerTest005, TestSize.Level0)
1032 {
1033     g_credListenerStatus = CRED_LISTENER_INIT;
1034     const CredManager *cm = GetCredMgrInstance();
1035     ASSERT_NE(cm, nullptr);
1036     int32_t ret = cm->registerChangeListener(TEST_APP_ID, &g_credChangeListener);
1037     EXPECT_EQ(ret, IS_SUCCESS);
1038     char *credId = nullptr;
1039     ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
1040     HcFree(credId);
1041     EXPECT_EQ(ret, IS_SUCCESS);
1042     EXPECT_EQ(g_credListenerStatus, CRED_LISTENER_ON_ADD);
1043 }
1044 
1045 HWTEST_F(CredMgrRegCredListenerTest, CredMgrRegCredListenerTest006, TestSize.Level0)
1046 {
1047     g_credListenerStatus = CRED_LISTENER_INIT;
1048     const CredManager *cm = GetCredMgrInstance();
1049     ASSERT_NE(cm, nullptr);
1050     int32_t ret = cm->registerChangeListener(TEST_APP_ID, &g_credChangeListener);
1051     EXPECT_EQ(ret, IS_SUCCESS);
1052     char *credId = nullptr;
1053     ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
1054     EXPECT_EQ(ret, IS_SUCCESS);
1055     ret = cm->updateCredInfo(DEFAULT_OS_ACCOUNT, credId, REQUEST_PARAMS);
1056     HcFree(credId);
1057     EXPECT_EQ(ret, IS_SUCCESS);
1058     EXPECT_EQ(g_credListenerStatus, CRED_LISTENER_ON_UPDATE);
1059 }
1060 
1061 HWTEST_F(CredMgrRegCredListenerTest, CredMgrRegCredListenerTest007, TestSize.Level0)
1062 {
1063     g_credListenerStatus = CRED_LISTENER_INIT;
1064     const CredManager *cm = GetCredMgrInstance();
1065     ASSERT_NE(cm, nullptr);
1066     int32_t ret = cm->registerChangeListener(TEST_APP_ID, &g_credChangeListener);
1067     EXPECT_EQ(ret, IS_SUCCESS);
1068     char *credId = nullptr;
1069     ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
1070     EXPECT_EQ(ret, IS_SUCCESS);
1071     ret = cm->deleteCredential(DEFAULT_OS_ACCOUNT, credId);
1072     HcFree(credId);
1073     EXPECT_EQ(ret, IS_SUCCESS);
1074     EXPECT_EQ(g_credListenerStatus, CRED_LISTENER_ON_DELETE);
1075 }
1076 
1077 class CredMgrUnRegCredListenerTest : public testing::Test {
1078 public:
1079     static void SetUpTestCase();
1080     static void TearDownTestCase();
1081     void SetUp();
1082     void TearDown();
1083 };
1084 
SetUpTestCase()1085 void CredMgrUnRegCredListenerTest::SetUpTestCase() {}
TearDownTestCase()1086 void CredMgrUnRegCredListenerTest::TearDownTestCase() {}
1087 
SetUp()1088 void CredMgrUnRegCredListenerTest::SetUp()
1089 {
1090     int ret = InitDeviceAuthService();
1091     EXPECT_EQ(ret, IS_SUCCESS);
1092 }
1093 
TearDown()1094 void CredMgrUnRegCredListenerTest::TearDown()
1095 {
1096     DestroyDeviceAuthService();
1097 }
1098 
1099 HWTEST_F(CredMgrUnRegCredListenerTest, CredMgrUnRegCredListenerTest001, TestSize.Level0)
1100 {
1101     const CredManager *cm = GetCredMgrInstance();
1102     ASSERT_NE(cm, nullptr);
1103     CredChangeListener listener;
1104     int32_t ret = cm->registerChangeListener(TEST_APP_ID, &listener);
1105     EXPECT_EQ(ret, IS_SUCCESS);
1106     ret = cm->unregisterChangeListener(TEST_APP_ID);
1107     EXPECT_EQ(ret, IS_SUCCESS);
1108 }
1109 
1110 HWTEST_F(CredMgrUnRegCredListenerTest, CredMgrUnRegCredListenerTest002, TestSize.Level0)
1111 {
1112     const CredManager *cm = GetCredMgrInstance();
1113     ASSERT_NE(cm, nullptr);
1114     int32_t ret = cm->unregisterChangeListener(TEST_APP_ID);
1115     EXPECT_EQ(ret, IS_SUCCESS);
1116 }
1117 
1118 HWTEST_F(CredMgrUnRegCredListenerTest, CredMgrUnRegCredListenerTest003, TestSize.Level0)
1119 {
1120     const CredManager *cm = GetCredMgrInstance();
1121     ASSERT_NE(cm, nullptr);
1122     int32_t ret = cm->unregisterChangeListener(nullptr);
1123     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1124 }
1125 
1126 class CredMgrAgreeCredentialTest : public testing::Test {
1127 public:
1128     static void SetUpTestCase();
1129     static void TearDownTestCase();
1130     void SetUp();
1131     void TearDown();
1132 };
1133 
SetUpTestCase()1134 void CredMgrAgreeCredentialTest::SetUpTestCase() {}
TearDownTestCase()1135 void CredMgrAgreeCredentialTest::TearDownTestCase() {}
1136 
SetUp()1137 void CredMgrAgreeCredentialTest::SetUp()
1138 {
1139     DeleteDatabase();
1140     int ret = InitDeviceAuthService();
1141     EXPECT_EQ(ret, IS_SUCCESS);
1142 }
1143 
TearDown()1144 void CredMgrAgreeCredentialTest::TearDown()
1145 {
1146     DestroyDeviceAuthService();
1147 }
1148 
1149 HWTEST_F(CredMgrAgreeCredentialTest, CredMgrAgreeCredentialTest001, TestSize.Level0)
1150 {
1151     const CredManager *cm = GetCredMgrInstance();
1152     ASSERT_NE(cm, nullptr);
1153     char *selfCredId = nullptr;
1154     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS17, &selfCredId);
1155     EXPECT_EQ(ret, IS_SUCCESS);
1156     char *returnData = nullptr;
1157     ret = cm->agreeCredential(DEFAULT_OS_ACCOUNT, selfCredId, AGREE_PARAMS, &returnData);
1158     HcFree(selfCredId);
1159     HcFree(returnData);
1160     EXPECT_EQ(ret, IS_SUCCESS);
1161 }
1162 
1163 HWTEST_F(CredMgrAgreeCredentialTest, CredMgrAgreeCredentialTest002, TestSize.Level0)
1164 {
1165     const CredManager *cm = GetCredMgrInstance();
1166     ASSERT_NE(cm, nullptr);
1167     char *returnData = nullptr;
1168     int32_t ret = cm->agreeCredential(DEFAULT_OS_ACCOUNT, nullptr, AGREE_PARAMS, &returnData);
1169     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1170 }
1171 
1172 HWTEST_F(CredMgrAgreeCredentialTest, CredMgrAgreeCredentialTest003, TestSize.Level0)
1173 {
1174     const CredManager *cm = GetCredMgrInstance();
1175     ASSERT_NE(cm, nullptr);
1176     char *returnData = nullptr;
1177     int32_t ret = cm->agreeCredential(DEFAULT_OS_ACCOUNT, TEST_CRED_ID, nullptr, &returnData);
1178     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1179 }
1180 
1181 HWTEST_F(CredMgrAgreeCredentialTest, CredMgrAgreeCredentialTest004, TestSize.Level0)
1182 {
1183     const CredManager *cm = GetCredMgrInstance();
1184     ASSERT_NE(cm, nullptr);
1185     int32_t ret = cm->agreeCredential(DEFAULT_OS_ACCOUNT, TEST_CRED_ID, AGREE_PARAMS, nullptr);
1186     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1187 }
1188 
1189 class CredMgrBatchUpdateCredsTest : public testing::Test {
1190 public:
1191     static void SetUpTestCase();
1192     static void TearDownTestCase();
1193     void SetUp();
1194     void TearDown();
1195 };
1196 
SetUpTestCase()1197 void CredMgrBatchUpdateCredsTest::SetUpTestCase() {}
TearDownTestCase()1198 void CredMgrBatchUpdateCredsTest::TearDownTestCase() {}
1199 
SetUp()1200 void CredMgrBatchUpdateCredsTest::SetUp()
1201 {
1202     DeleteDatabase();
1203     int ret = InitDeviceAuthService();
1204     EXPECT_EQ(ret, IS_SUCCESS);
1205 }
1206 
TearDown()1207 void CredMgrBatchUpdateCredsTest::TearDown()
1208 {
1209     DestroyDeviceAuthService();
1210 }
1211 
1212 HWTEST_F(CredMgrBatchUpdateCredsTest, CredMgrBatchUpdateCredsTest001, TestSize.Level0)
1213 {
1214     const CredManager *cm = GetCredMgrInstance();
1215     ASSERT_NE(cm, nullptr);
1216     char *returnData = nullptr;
1217     int32_t ret = cm->batchUpdateCredentials(DEFAULT_OS_ACCOUNT, BATCH_UPDATE_PARAMS, &returnData);
1218     HcFree(returnData);
1219     EXPECT_EQ(ret, IS_SUCCESS);
1220 }
1221 
1222 HWTEST_F(CredMgrBatchUpdateCredsTest, CredMgrBatchUpdateCredsTest002, TestSize.Level0)
1223 {
1224     const CredManager *cm = GetCredMgrInstance();
1225     ASSERT_NE(cm, nullptr);
1226     char *returnData = nullptr;
1227     int32_t ret = cm->batchUpdateCredentials(DEFAULT_OS_ACCOUNT, nullptr, &returnData);
1228     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1229 }
1230 
1231 HWTEST_F(CredMgrBatchUpdateCredsTest, CredMgrBatchUpdateCredsTest003, TestSize.Level0)
1232 {
1233     const CredManager *cm = GetCredMgrInstance();
1234     ASSERT_NE(cm, nullptr);
1235     char *returnData = nullptr;
1236     int32_t ret = cm->batchUpdateCredentials(DEFAULT_OS_ACCOUNT, BATCH_UPDATE_PARAMS1, &returnData);
1237     EXPECT_EQ(ret, IS_ERR_NOT_SUPPORT);
1238 }
1239 
1240 HWTEST_F(CredMgrBatchUpdateCredsTest, CredMgrBatchUpdateCredsTest004, TestSize.Level0)
1241 {
1242     const CredManager *cm = GetCredMgrInstance();
1243     ASSERT_NE(cm, nullptr);
1244     int32_t ret = cm->batchUpdateCredentials(DEFAULT_OS_ACCOUNT, BATCH_UPDATE_PARAMS, nullptr);
1245     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1246 }
1247 
1248 HWTEST_F(CredMgrBatchUpdateCredsTest, CredMgrBatchUpdateCredsTest005, TestSize.Level0)
1249 {
1250     const CredManager *cm = GetCredMgrInstance();
1251     ASSERT_NE(cm, nullptr);
1252     char *credId = nullptr;
1253     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS18, &credId);
1254     HcFree(credId);
1255     EXPECT_EQ(ret, IS_SUCCESS);
1256     char *returnData = nullptr;
1257     ret = cm->batchUpdateCredentials(DEFAULT_OS_ACCOUNT, BATCH_UPDATE_PARAMS, &returnData);
1258     HcFree(returnData);
1259     EXPECT_EQ(ret, IS_SUCCESS);
1260 }
1261 
1262 class CredMgrDelCredByParamsTest : public testing::Test {
1263 public:
1264     static void SetUpTestCase();
1265     static void TearDownTestCase();
1266     void SetUp();
1267     void TearDown();
1268 };
1269 
SetUpTestCase()1270 void CredMgrDelCredByParamsTest::SetUpTestCase() {}
TearDownTestCase()1271 void CredMgrDelCredByParamsTest::TearDownTestCase() {}
1272 
SetUp()1273 void CredMgrDelCredByParamsTest::SetUp()
1274 {
1275     DeleteDatabase();
1276     int ret = InitDeviceAuthService();
1277     EXPECT_EQ(ret, IS_SUCCESS);
1278 }
1279 
TearDown()1280 void CredMgrDelCredByParamsTest::TearDown()
1281 {
1282     DestroyDeviceAuthService();
1283 }
1284 
1285 HWTEST_F(CredMgrDelCredByParamsTest, CredMgrDelCredByParamsTest001, TestSize.Level0)
1286 {
1287     const CredManager *cm = GetCredMgrInstance();
1288     ASSERT_NE(cm, nullptr);
1289     char *credId = nullptr;
1290     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
1291     HcFree(credId);
1292     EXPECT_EQ(ret, IS_SUCCESS);
1293     char *returnData = nullptr;
1294     ret = cm->deleteCredByParams(DEFAULT_OS_ACCOUNT, DEL_PARAMS, &returnData);
1295     HcFree(returnData);
1296     EXPECT_EQ(ret, IS_SUCCESS);
1297 }
1298 
1299 HWTEST_F(CredMgrDelCredByParamsTest, CredMgrDelCredByParamsTest002, TestSize.Level0)
1300 {
1301     const CredManager *cm = GetCredMgrInstance();
1302     ASSERT_NE(cm, nullptr);
1303     char *returnData = nullptr;
1304     int32_t ret = cm->deleteCredByParams(DEFAULT_OS_ACCOUNT, nullptr, &returnData);
1305     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1306 }
1307 
1308 HWTEST_F(CredMgrDelCredByParamsTest, CredMgrDelCredByParamsTest003, TestSize.Level0)
1309 {
1310     const CredManager *cm = GetCredMgrInstance();
1311     ASSERT_NE(cm, nullptr);
1312     int32_t ret = cm->deleteCredByParams(DEFAULT_OS_ACCOUNT, DEL_PARAMS, nullptr);
1313     EXPECT_EQ(ret, IS_ERR_INVALID_PARAMS);
1314 }
1315 
1316 HWTEST_F(CredMgrDelCredByParamsTest, CredMgrDelCredByParamsTest004, TestSize.Level0)
1317 {
1318     const CredManager *cm = GetCredMgrInstance();
1319     ASSERT_NE(cm, nullptr);
1320     char *credId = nullptr;
1321     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, ADD_PARAMS, &credId);
1322     HcFree(credId);
1323     EXPECT_EQ(ret, IS_SUCCESS);
1324     char *returnData = nullptr;
1325     ret = cm->deleteCredByParams(DEFAULT_OS_ACCOUNT, DEL_PARAMS1, &returnData);
1326     HcFree(returnData);
1327     EXPECT_EQ(ret, IS_SUCCESS);
1328 }
1329 
1330 class CredListenerTest : public testing::Test {
1331 public:
1332     static void SetUpTestCase();
1333     static void TearDownTestCase();
1334     void SetUp();
1335     void TearDown();
1336 };
1337 
SetUpTestCase()1338 void CredListenerTest::SetUpTestCase() {}
TearDownTestCase()1339 void CredListenerTest::TearDownTestCase() {}
1340 
SetUp()1341 void CredListenerTest::SetUp()
1342 {
1343     int32_t ret = InitCredListener();
1344     EXPECT_EQ(ret, IS_SUCCESS);
1345 }
1346 
TearDown()1347 void CredListenerTest::TearDown()
1348 {
1349     DestroyCredListener();
1350 }
1351 
1352 HWTEST_F(CredListenerTest, CredListenerTest001, TestSize.Level0)
1353 {
1354     OnCredAdd(nullptr, nullptr);
1355     OnCredAdd(TEST_CRED_ID, TEST_CRED_INFO_ID);
1356     OnCredDelete(nullptr, nullptr);
1357     OnCredDelete(TEST_CRED_ID, TEST_CRED_INFO_ID);
1358     OnCredUpdate(nullptr, nullptr);
1359     OnCredUpdate(TEST_CRED_ID, TEST_CRED_INFO_ID);
1360     int32_t ret = AddCredListener(nullptr, &g_credChangeListener);
1361     EXPECT_NE(ret, IS_SUCCESS);
1362     ret = AddCredListener(TEST_APP_ID, nullptr);
1363     EXPECT_NE(ret, IS_SUCCESS);
1364 }
1365 
1366 HWTEST_F(CredListenerTest, CredListenerTest002, TestSize.Level0)
1367 {
1368     int32_t ret = RemoveCredListener(nullptr);
1369     EXPECT_NE(ret, IS_SUCCESS);
1370 }
1371 
1372 class IdentityOperationTest : public testing::Test {
1373 public:
1374     static void SetUpTestCase();
1375     static void TearDownTestCase();
1376     void SetUp();
1377     void TearDown();
1378 };
1379 
SetUpTestCase()1380 void IdentityOperationTest::SetUpTestCase() {}
TearDownTestCase()1381 void IdentityOperationTest::TearDownTestCase() {}
1382 
SetUp()1383 void IdentityOperationTest::SetUp()
1384 {
1385 }
1386 
TearDown()1387 void IdentityOperationTest::TearDown()
1388 {
1389 }
1390 
1391 HWTEST_F(IdentityOperationTest, IdentityOperationTest001, TestSize.Level0)
1392 {
1393     int32_t ret = GetCredentialById(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr);
1394     EXPECT_NE(ret, IS_SUCCESS);
1395 }
1396 
1397 HWTEST_F(IdentityOperationTest, IdentityOperationTest002, TestSize.Level0)
1398 {
1399     char *credIdStr = nullptr;
1400     char *deviceId = nullptr;
1401     char *credOwner = nullptr;
1402     Uint8Buff *credIdByte = nullptr;
1403     int32_t ret = GenerateCredIdInner(nullptr, deviceId, credIdByte, &credIdStr);
1404     EXPECT_NE(ret, IS_SUCCESS);
1405     ret = GenerateCredIdInner(credOwner, nullptr, credIdByte, &credIdStr);
1406     EXPECT_NE(ret, IS_SUCCESS);
1407 }
1408 
1409 HWTEST_F(IdentityOperationTest, IdentityOperationTest003, TestSize.Level0)
1410 {
1411     Credential *credetial = CreateCredential();
1412     int32_t ret = SetVectorFromList(&credetial->authorizedAppList, nullptr);
1413     DestroyCredential(credetial);
1414     EXPECT_EQ(ret, IS_SUCCESS);
1415 }
1416 
1417 HWTEST_F(IdentityOperationTest, IdentityOperationTest004, TestSize.Level0)
1418 {
1419     int32_t ret = SetMethodFromJson(nullptr, nullptr);
1420     EXPECT_NE(ret, IS_SUCCESS);
1421 }
1422 
1423 HWTEST_F(IdentityOperationTest, IdentityOperationTest005, TestSize.Level0)
1424 {
1425     int32_t ret = SetCredType(nullptr, nullptr);
1426     EXPECT_NE(ret, IS_SUCCESS);
1427 }
1428 
1429 HWTEST_F(IdentityOperationTest, IdentityOperationTest006, TestSize.Level0)
1430 {
1431     int32_t ret = SetKeyFormat(nullptr, nullptr, DEFAULT_VAL);
1432     EXPECT_NE(ret, IS_SUCCESS);
1433     Credential *credetial = CreateCredential();
1434     CJson *json = CreateJson();
1435     ret = AddIntToJson(json, FIELD_KEY_FORMAT, SYMMETRIC_KEY);
1436     EXPECT_EQ(ret, IS_SUCCESS);
1437     ret = SetKeyFormat(credetial, json, DEFAULT_VAL);
1438     EXPECT_NE(ret, IS_SUCCESS);
1439 
1440     ret = AddIntToJson(json, FIELD_KEY_FORMAT, ASYMMETRIC_PUB_KEY);
1441     EXPECT_EQ(ret, IS_SUCCESS);
1442     ret = SetKeyFormat(credetial, json, METHOD_GENERATE);
1443     EXPECT_NE(ret, IS_SUCCESS);
1444 
1445     ret = AddIntToJson(json, FIELD_KEY_FORMAT, ASYMMETRIC_KEY);
1446     EXPECT_EQ(ret, IS_SUCCESS);
1447     ret = SetKeyFormat(credetial, json, METHOD_IMPORT);
1448     EXPECT_NE(ret, IS_SUCCESS);
1449     DestroyCredential(credetial);
1450     FreeJson(json);
1451 }
1452 
1453 HWTEST_F(IdentityOperationTest, IdentityOperationTest007, TestSize.Level0)
1454 {
1455     int32_t ret = SetAuthorizedScope(nullptr, nullptr);
1456     EXPECT_NE(ret, IS_SUCCESS);
1457 }
1458 
1459 HWTEST_F(IdentityOperationTest, IdentityOperationTest008, TestSize.Level0)
1460 {
1461     int32_t ret = GetCredentialById(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr);
1462     EXPECT_NE(ret, IS_SUCCESS);
1463 }
1464 
1465 HWTEST_F(IdentityOperationTest, IdentityOperationTest009, TestSize.Level0)
1466 {
1467     int32_t ret = CombineBaseCredId(nullptr, nullptr, nullptr);
1468     EXPECT_NE(ret, IS_SUCCESS);
1469 }
1470 
1471 HWTEST_F(IdentityOperationTest, IdentityOperationTest010, TestSize.Level0)
1472 {
1473     int32_t ret = Sha256BaseCredId(nullptr, nullptr, nullptr);
1474     EXPECT_NE(ret, IS_SUCCESS);
1475 }
1476 
1477 class IdentityServiceImplTest : public testing::Test {
1478 public:
1479     static void SetUpTestCase();
1480     static void TearDownTestCase();
1481     void SetUp();
1482     void TearDown();
1483 };
1484 
SetUpTestCase()1485 void IdentityServiceImplTest::SetUpTestCase() {}
TearDownTestCase()1486 void IdentityServiceImplTest::TearDownTestCase() {}
1487 
SetUp()1488 void IdentityServiceImplTest::SetUp()
1489 {
1490     DeleteDatabase();
1491     int ret = InitDeviceAuthService();
1492     EXPECT_EQ(ret, IS_SUCCESS);
1493 }
1494 
TearDown()1495 void IdentityServiceImplTest::TearDown()
1496 {
1497     DestroyDeviceAuthService();
1498 }
1499 
1500 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest001, TestSize.Level0)
1501 {
1502     int32_t ret = AddCredentialImpl(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr);
1503     EXPECT_NE(ret, IS_SUCCESS);
1504 }
1505 
1506 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest002, TestSize.Level0)
1507 {
1508     int32_t ret = ExportCredentialImpl(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr);
1509     EXPECT_NE(ret, IS_SUCCESS);
1510 }
1511 
1512 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest003, TestSize.Level0)
1513 {
1514     int32_t ret = QueryCredentialByParamsImpl(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr);
1515     EXPECT_NE(ret, IS_SUCCESS);
1516 }
1517 
1518 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest004, TestSize.Level0)
1519 {
1520     int32_t ret = QueryCredInfoByCredIdImpl(DEFAULT_OS_ACCOUNT_ID, DEFAULT_VAL, nullptr, nullptr);
1521     EXPECT_NE(ret, IS_SUCCESS);
1522 }
1523 
1524 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest005, TestSize.Level0)
1525 {
1526     int32_t ret = DeleteCredentialImpl(DEFAULT_OS_ACCOUNT_ID, nullptr);
1527     EXPECT_NE(ret, IS_SUCCESS);
1528 }
1529 
1530 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest006, TestSize.Level0)
1531 {
1532     int32_t ret = DeleteCredByParamsImpl(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr);
1533     EXPECT_NE(ret, IS_SUCCESS);
1534 }
1535 
1536 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest007, TestSize.Level0)
1537 {
1538     int32_t ret = UpdateCredInfoImpl(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr);
1539     EXPECT_NE(ret, IS_SUCCESS);
1540 }
1541 
1542 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest008, TestSize.Level0)
1543 {
1544     QueryCredentialParams queryParam;
1545     int32_t ret = AddUpdateCred(DEFAULT_OS_ACCOUNT_ID, nullptr, &queryParam);
1546     EXPECT_NE(ret, IS_SUCCESS);
1547 }
1548 
1549 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest009, TestSize.Level0)
1550 {
1551     QueryCredentialParams queryParam;
1552     int32_t ret = ProcessAbnormalCreds(DEFAULT_OS_ACCOUNT_ID, nullptr, &queryParam);
1553     EXPECT_NE(ret, IS_SUCCESS);
1554 }
1555 
1556 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest010, TestSize.Level0)
1557 {
1558     int32_t ret = BatchUpdateCredsImpl(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr);
1559     EXPECT_NE(ret, IS_SUCCESS);
1560 }
1561 
1562 HWTEST_F(IdentityServiceImplTest, IdentityServiceImplTest011, TestSize.Level0)
1563 {
1564     int32_t ret = AgreeCredentialImpl(DEFAULT_OS_ACCOUNT_ID, nullptr, nullptr, nullptr);
1565     EXPECT_NE(ret, IS_SUCCESS);
1566 }
1567 
1568 class SessionV1Test : public testing::Test {
1569 public:
1570     static void SetUpTestCase();
1571     static void TearDownTestCase();
1572     void SetUp();
1573     void TearDown();
1574 };
1575 
SetUpTestCase()1576 void SessionV1Test::SetUpTestCase() {}
TearDownTestCase()1577 void SessionV1Test::TearDownTestCase() {}
1578 
SetUp()1579 void SessionV1Test::SetUp()
1580 {
1581 }
1582 
TearDown()1583 void SessionV1Test::TearDown()
1584 {
1585 }
1586 
1587 HWTEST_F(SessionV1Test, SessionV1Test001, TestSize.Level0)
1588 {
1589     int32_t ret = CheckPermission(DEFAULT_VAL);
1590     EXPECT_NE(ret, IS_SUCCESS);
1591 }
1592 
1593 HWTEST_F(SessionV1Test, SessionV1Test002, TestSize.Level0)
1594 {
1595     SubSessionTypeValue subSessionType = TYPE_CLIENT_BIND_SUB_SESSION;
1596     int32_t ret = CreateCompatibleSubSession(subSessionType, nullptr, nullptr, nullptr);
1597     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1598 
1599     CJson *json = CreateJson();
1600     ASSERT_NE(json, nullptr);
1601     DeviceAuthCallback *callback;
1602     CompatibleBaseSubSession *subSession;
1603 
1604     ret = CreateCompatibleSubSession(subSessionType, json, nullptr, nullptr);
1605     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1606     ret = CreateCompatibleSubSession(subSessionType, nullptr, callback, nullptr);
1607     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1608     ret = CreateCompatibleSubSession(subSessionType, nullptr, nullptr, &subSession);
1609     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1610 
1611     ret = CreateCompatibleSubSession(subSessionType, json, callback, nullptr);
1612     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1613     ret = CreateCompatibleSubSession(subSessionType, json, nullptr, &subSession);
1614     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1615     ret = CreateCompatibleSubSession(subSessionType, nullptr, callback, &subSession);
1616     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1617 
1618     ret = CreateCompatibleSubSession(subSessionType, json, callback, &subSession);
1619     FreeJson(json);
1620     EXPECT_NE(ret, HC_SUCCESS);
1621 }
1622 
1623 HWTEST_F(SessionV1Test, SessionV1Test003, TestSize.Level0)
1624 {
1625     int32_t ret = ProcessCompatibleSubSession(nullptr, nullptr, nullptr, nullptr);
1626     DestroyCompatibleSubSession(nullptr);
1627     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1628     CompatibleBaseSubSession subSession;
1629     subSession.type = DEFAULT_VAL;
1630     CJson *in = CreateJson();
1631     ASSERT_NE(in, nullptr);
1632     CJson *out = CreateJson();
1633     ASSERT_NE(out, nullptr);
1634     int32_t *status = DEFAULT_VAL;
1635 
1636     ret = ProcessCompatibleSubSession(&subSession, nullptr, nullptr, nullptr);
1637     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1638     ret = ProcessCompatibleSubSession(&subSession, in, nullptr, nullptr);
1639     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1640     ret = ProcessCompatibleSubSession(&subSession, in, &out, nullptr);
1641     EXPECT_EQ(ret, HC_ERR_INVALID_PARAMS);
1642     ret = ProcessCompatibleSubSession(&subSession, in, &out, status);
1643     DestroyCompatibleSubSession(&subSession);
1644     EXPECT_NE(ret, HC_SUCCESS);
1645 
1646     FreeJson(in);
1647     FreeJson(out);
1648 }
1649 
1650 class CredSessionUtilTest : public testing::Test {
1651 public:
1652     static void SetUpTestCase();
1653     static void TearDownTestCase();
1654     void SetUp();
1655     void TearDown();
1656 };
1657 
SetUpTestCase()1658 void CredSessionUtilTest::SetUpTestCase() {}
TearDownTestCase()1659 void CredSessionUtilTest::TearDownTestCase() {}
1660 
SetUp()1661 void CredSessionUtilTest::SetUp() {}
1662 
TearDown()1663 void CredSessionUtilTest::TearDown() {}
1664 
1665 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest001, TestSize.Level0)
1666 {
1667     int32_t ret = AddChannelInfoToContext(DEFAULT_CHANNEL_TYPE, DEFAULT_CHANNEL_ID, nullptr);
1668     EXPECT_NE(ret, IS_SUCCESS);
1669     CJson *in = CreateJson();
1670     ret = AddChannelInfoToContext(DEFAULT_CHANNEL_TYPE, DEFAULT_CHANNEL_ID, in);
1671     EXPECT_EQ(ret, IS_SUCCESS);
1672     FreeJson(in);
1673 }
1674 
1675 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest002, TestSize.Level0)
1676 {
1677     int32_t ret = AddCredIdToContextIfNeeded(nullptr);
1678     EXPECT_NE(ret, IS_SUCCESS);
1679     CJson *in = CreateJson();
1680     CJson *credDataJson = CreateJsonFromString(CRED_DATA);
1681     (void)AddObjToJson(in, FIELD_CREDENTIAL_OBJ, credDataJson);
1682     FreeJson(credDataJson);
1683     ret = AddCredIdToContextIfNeeded(in);
1684     EXPECT_NE(ret, IS_SUCCESS);
1685 
1686     credDataJson = CreateJsonFromString(CRED_DATA_1);
1687     (void)AddObjToJson(in, FIELD_CREDENTIAL_OBJ, credDataJson);
1688     FreeJson(credDataJson);
1689     ret = AddCredIdToContextIfNeeded(in);
1690     EXPECT_EQ(ret, IS_SUCCESS);
1691     FreeJson(in);
1692 }
1693 
1694 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest003, TestSize.Level0)
1695 {
1696     int32_t ret = CheckConfirmationExist(nullptr);
1697     EXPECT_NE(ret, IS_SUCCESS);
1698     CJson *in = CreateJson();
1699     (void)AddIntToJson(in, FIELD_CONFIRMATION, REQUEST_REJECTED);
1700     ret = CheckConfirmationExist(in);
1701     EXPECT_EQ(ret, IS_SUCCESS);
1702     (void)AddIntToJson(in, FIELD_CONFIRMATION, REQUEST_ACCEPTED);
1703     ret = CheckConfirmationExist(in);
1704     EXPECT_EQ(ret, IS_SUCCESS);
1705     FreeJson(in);
1706 }
1707 
1708 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest004, TestSize.Level0)
1709 {
1710     const char *ret = GetAppIdByContext(nullptr);
1711     EXPECT_EQ(ret, nullptr);
1712     CJson *in = CreateJson();
1713     CJson *credDataJson = CreateJsonFromString(CRED_DATA);
1714     (void)AddObjToJson(in, FIELD_CREDENTIAL_OBJ, credDataJson);
1715     FreeJson(credDataJson);
1716     ret = GetAppIdByContext(in);
1717     EXPECT_EQ(ret, nullptr);
1718 
1719     credDataJson = CreateJsonFromString(CRED_DATA_1);
1720     (void)AddObjToJson(in, FIELD_CREDENTIAL_OBJ, credDataJson);
1721     FreeJson(credDataJson);
1722     ret = GetAppIdByContext(in);
1723     EXPECT_NE(ret, nullptr);
1724 
1725     (void)AddStringToJson(in, FIELD_PIN_CODE, TEST_PIN_CODE);
1726     ret = GetAppIdByContext(in);
1727     EXPECT_EQ(ret, nullptr);
1728     (void)AddStringToJson(in, FIELD_SERVICE_PKG_NAME, TEST_APP_ID);
1729     ret = GetAppIdByContext(in);
1730     EXPECT_NE(ret, nullptr);
1731     FreeJson(in);
1732 }
1733 
1734 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest005, TestSize.Level0)
1735 {
1736     int32_t ret = AddUserIdHashHexStringToContext(nullptr, nullptr);
1737     EXPECT_NE(ret, IS_SUCCESS);
1738     CJson *in = CreateJson();
1739     (void)AddIntToJson(in, FIELD_CRED_TYPE, TEST_CRED_TYPE_1);
1740     ret = AddUserIdHashHexStringToContext(nullptr, in);
1741     EXPECT_EQ(ret, IS_SUCCESS);
1742     (void)AddIntToJson(in, FIELD_CRED_TYPE, TEST_CRED_TYPE);
1743     ret = AddUserIdHashHexStringToContext(nullptr, in);
1744     EXPECT_NE(ret, IS_SUCCESS);
1745 
1746     (void)AddStringToJson(in, FIELD_USER_ID, TEST_USER_ID);
1747     ret = AddUserIdHashHexStringToContext(nullptr, in);
1748     EXPECT_NE(ret, IS_SUCCESS);
1749     FreeJson(in);
1750 }
1751 
1752 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest006, TestSize.Level0)
1753 {
1754     int32_t ret = QueryAndAddSelfCredToContext(DEFAULT_OS_ACCOUNT_ID, nullptr);
1755     EXPECT_NE(ret, IS_SUCCESS);
1756     CJson *in = CreateJson();
1757     (void)AddStringToJson(in, FIELD_CRED_ID, TEST_CRED_ID);
1758     ret = QueryAndAddSelfCredToContext(DEFAULT_OS_ACCOUNT_ID, in);
1759     EXPECT_NE(ret, IS_SUCCESS);
1760     FreeJson(in);
1761 }
1762 
1763 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest007, TestSize.Level0)
1764 {
1765     bool ret = CheckIsCredBind(nullptr);
1766     EXPECT_NE(ret, true);
1767     CJson *in = CreateJson();
1768     (void)AddStringToJson(in, FIELD_PIN_CODE, TEST_PIN_CODE_1);
1769     ret = CheckIsCredBind(in);
1770     EXPECT_NE(ret, true);
1771 
1772     (void)AddStringToJson(in, FIELD_PIN_CODE, TEST_PIN_CODE);
1773     ret = CheckIsCredBind(in);
1774     EXPECT_EQ(ret, true);
1775     FreeJson(in);
1776 }
1777 
1778 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest008, TestSize.Level0)
1779 {
1780     int32_t ret = AddAuthIdToCredContext(nullptr);
1781     EXPECT_NE(ret, IS_SUCCESS);
1782     CJson *in = CreateJson();
1783     ret = AddAuthIdToCredContext(in);
1784     EXPECT_EQ(ret, IS_SUCCESS);
1785     FreeJson(in);
1786 }
1787 
1788 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest009, TestSize.Level0)
1789 {
1790     int32_t ret = BuildClientCredBindContext(DEFAULT_OS_ACCOUNT_ID, DEFAULT_REQUEST_ID, nullptr, nullptr);
1791     EXPECT_NE(ret, IS_SUCCESS);
1792     CJson *in = CreateJson();
1793     (void)AddStringToJson(in, FIELD_SERVICE_PKG_NAME, TEST_APP_ID);
1794     const char *returnAppId = nullptr;
1795     ret = BuildClientCredBindContext(DEFAULT_OS_ACCOUNT_ID, DEFAULT_REQUEST_ID, in, &returnAppId);
1796     EXPECT_NE(ret, IS_SUCCESS);
1797     FreeJson(in);
1798 }
1799 
1800 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest010, TestSize.Level0)
1801 {
1802     int32_t ret = SetContextOpCode(nullptr);
1803     EXPECT_NE(ret, IS_SUCCESS);
1804     CJson *in = CreateJson();
1805     (void)AddIntToJson(in, FIELD_CRED_TYPE, TEST_CRED_TYPE);
1806     ret = SetContextOpCode(in);
1807     EXPECT_EQ(ret, IS_SUCCESS);
1808     (void)AddIntToJson(in, FIELD_CRED_TYPE, TEST_CRED_TYPE_1);
1809     ret = SetContextOpCode(in);
1810     EXPECT_EQ(ret, IS_SUCCESS);
1811     (void)AddIntToJson(in, FIELD_CRED_TYPE, TEST_CRED_TYPE_2);
1812     ret = SetContextOpCode(in);
1813     EXPECT_EQ(ret, IS_SUCCESS);
1814     (void)AddIntToJson(in, FIELD_CRED_TYPE, TEST_CRED_TYPE_3);
1815     ret = SetContextOpCode(in);
1816     EXPECT_NE(ret, IS_SUCCESS);
1817     FreeJson(in);
1818 }
1819 
1820 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest011, TestSize.Level0)
1821 {
1822     int32_t ret = BuildClientCredAuthContext(DEFAULT_OS_ACCOUNT_ID, DEFAULT_REQUEST_ID, nullptr, nullptr);
1823     EXPECT_NE(ret, IS_SUCCESS);
1824 }
1825 
1826 HWTEST_F(CredSessionUtilTest, CredSessionUtilTest012, TestSize.Level0)
1827 {
1828     int32_t ret = BuildClientCredContext(DEFAULT_OS_ACCOUNT_ID, DEFAULT_REQUEST_ID,
1829         nullptr, nullptr);
1830     EXPECT_NE(ret, IS_SUCCESS);
1831     CJson *in = CreateJson();
1832     (void)AddStringToJson(in, FIELD_PIN_CODE, TEST_PIN_CODE);
1833     const char *returnAppId = nullptr;
1834     ret = BuildClientCredContext(DEFAULT_OS_ACCOUNT_ID, DEFAULT_REQUEST_ID, in, &returnAppId);
1835     EXPECT_NE(ret, IS_SUCCESS);
1836     ret = BuildServerCredBindContext(DEFAULT_REQUEST_ID, in, nullptr, &returnAppId);
1837     EXPECT_NE(ret, IS_SUCCESS);
1838     ret = BuildServerCredAuthContext(DEFAULT_REQUEST_ID, in, nullptr, &returnAppId);
1839     EXPECT_NE(ret, IS_SUCCESS);
1840     ret = BuildServerCredContext(DEFAULT_REQUEST_ID, nullptr, nullptr, &returnAppId);
1841     EXPECT_NE(ret, IS_SUCCESS);
1842     FreeJson(in);
1843 }
1844 
OnTransmit(int64_t requestId,const uint8_t * data,uint32_t dataLen)1845 static bool OnTransmit(int64_t requestId, const uint8_t *data, uint32_t dataLen)
1846 {
1847     if (memcpy_s(g_transmitData, g_transmitDataMaxLen, data, dataLen) != EOK) {
1848         return false;
1849     }
1850     g_transmitDataLen = dataLen;
1851     g_asyncStatus = ASYNC_STATUS_TRANSMIT;
1852     return true;
1853 }
1854 
OnSessionKeyReturned(int64_t requestId,const uint8_t * sessionKey,uint32_t sessionKeyLen)1855 static void OnSessionKeyReturned(int64_t requestId, const uint8_t *sessionKey, uint32_t sessionKeyLen)
1856 {
1857     (void)requestId;
1858     (void)sessionKey;
1859     (void)sessionKeyLen;
1860     return;
1861 }
1862 
OnFinish(int64_t requestId,int operationCode,const char * authReturn)1863 static void OnFinish(int64_t requestId, int operationCode, const char *authReturn)
1864 {
1865     g_asyncStatus = ASYNC_STATUS_FINISH;
1866 }
1867 
OnError(int64_t requestId,int operationCode,int errorCode,const char * errorReturn)1868 static void OnError(int64_t requestId, int operationCode, int errorCode, const char *errorReturn)
1869 {
1870     g_asyncStatus = ASYNC_STATUS_ERROR;
1871 }
1872 
OnAuthRequest(int64_t requestId,int operationCode,const char * reqParam)1873 static char *OnAuthRequest(int64_t requestId, int operationCode, const char* reqParam)
1874 {
1875     CJson *json = CreateJson();
1876     AddIntToJson(json, FIELD_CONFIRMATION, REQUEST_ACCEPTED);
1877     AddIntToJson(json, FIELD_OS_ACCOUNT_ID, DEFAULT_OS_ACCOUNT);
1878     if (g_isBind) {
1879         AddStringToJson(json, FIELD_PIN_CODE, PIN_CODE);
1880     } else {
1881         AddStringToJson(json, FIELD_CRED_ID, g_serverCredId);
1882     }
1883     AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID);
1884     char *returnDataStr = PackJsonToString(json);
1885     FreeJson(json);
1886     return returnDataStr;
1887 }
1888 
1889 static DeviceAuthCallback g_caCallback = {
1890     .onTransmit = OnTransmit,
1891     .onSessionKeyReturned = OnSessionKeyReturned,
1892     .onFinish = OnFinish,
1893     .onError = OnError,
1894     .onRequest = OnAuthRequest
1895 };
1896 
GenerateBindParams()1897 static const char *GenerateBindParams()
1898 {
1899     CJson *json = CreateJson();
1900     AddStringToJson(json, FIELD_PIN_CODE, PIN_CODE);
1901     AddIntToJson(json, FIELD_OS_ACCOUNT_ID, DEFAULT_OS_ACCOUNT);
1902     AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID);
1903     char *returnDataStr = PackJsonToString(json);
1904     FreeJson(json);
1905     return returnDataStr;
1906 }
1907 
GenerateAuthParams()1908 static const char *GenerateAuthParams()
1909 {
1910     CJson *json = CreateJson();
1911     AddStringToJson(json, FIELD_CRED_ID, g_clientCredId);
1912     AddStringToJson(json, FIELD_SERVICE_PKG_NAME, TEST_APP_ID);
1913     char *returnDataStr = PackJsonToString(json);
1914     FreeJson(json);
1915     return returnDataStr;
1916 }
1917 
AuthCredDemo(void)1918 static void AuthCredDemo(void)
1919 {
1920     g_asyncStatus = ASYNC_STATUS_WAITING;
1921     bool isClient = true;
1922     SetDeviceStatus(isClient);
1923     const CredAuthManager *ca = GetCredAuthInstance();
1924     ASSERT_NE(ca, nullptr);
1925     int32_t ret = ca->authCredential(DEFAULT_OS_ACCOUNT, g_isBind ? TEST_REQ_ID : TEST_REQ_ID_AUTH,
1926         g_isBind ? GenerateBindParams() : GenerateAuthParams(), &g_caCallback);
1927     if (ret != HC_SUCCESS) {
1928         g_asyncStatus = ASYNC_STATUS_ERROR;
1929         return;
1930     }
1931     while (g_asyncStatus == ASYNC_STATUS_WAITING) {
1932         usleep(TEST_DEV_AUTH_SLEEP_TIME);
1933     }
1934     while (g_asyncStatus == ASYNC_STATUS_TRANSMIT) {
1935         isClient = !isClient;
1936         SetDeviceStatus(isClient);
1937         g_asyncStatus = ASYNC_STATUS_WAITING;
1938         if (isClient) {
1939             ret = ca->processCredData(g_isBind ? TEST_REQ_ID : TEST_REQ_ID_AUTH, g_transmitData, g_transmitDataLen,
1940                 &g_caCallback);
1941         } else {
1942             ret = ca->processCredData(g_isBind ? TEST_REQ_ID_S : TEST_REQ_ID_AUTH_S, g_transmitData, g_transmitDataLen,
1943                 &g_caCallback);
1944         }
1945         (void)memset_s(g_transmitData, g_transmitDataMaxLen, 0, g_transmitDataMaxLen);
1946         g_transmitDataLen = 0;
1947         if (ret != HC_SUCCESS) {
1948             g_asyncStatus = ASYNC_STATUS_ERROR;
1949             return;
1950         }
1951         while (g_asyncStatus == ASYNC_STATUS_WAITING) {
1952             usleep(TEST_DEV_AUTH_SLEEP_TIME);
1953         }
1954         if (g_asyncStatus == ASYNC_STATUS_ERROR) {
1955             break;
1956         }
1957         if (g_transmitDataLen > 0) {
1958             g_asyncStatus = ASYNC_STATUS_TRANSMIT;
1959         }
1960     }
1961     SetDeviceStatus(true);
1962 }
1963 
1964 class CredAuthTest : public testing::Test {
1965 public:
1966     static void SetUpTestCase();
1967     static void TearDownTestCase();
1968     void SetUp();
1969     void TearDown();
1970 };
1971 
SetUpTestCase()1972 void CredAuthTest::SetUpTestCase() {}
TearDownTestCase()1973 void CredAuthTest::TearDownTestCase() {}
1974 
SetUp()1975 void CredAuthTest::SetUp()
1976 {
1977     DeleteDatabase();
1978     int32_t ret = InitDeviceAuthService();
1979     EXPECT_EQ(ret, HC_SUCCESS);
1980 }
1981 
TearDown()1982 void CredAuthTest::TearDown()
1983 {
1984     DestroyDeviceAuthService();
1985 }
1986 
1987 HWTEST_F(CredAuthTest, CredAuthTest001, TestSize.Level0)
1988 {
1989     const CredAuthManager *ca = GetCredAuthInstance();
1990     ASSERT_NE(ca, nullptr);
1991     g_isBind = true;
1992     AuthCredDemo();
1993     ASSERT_EQ(g_asyncStatus, ASYNC_STATUS_FINISH);
1994     const CredManager *cm = GetCredMgrInstance();
1995     ASSERT_NE(cm, nullptr);
1996     char *clientReturnData = nullptr;
1997     char *serverReturnData = nullptr;
1998     int32_t ret = cm->addCredential(DEFAULT_OS_ACCOUNT, CLIENT_AUTH_PARAMS, &clientReturnData);
1999     EXPECT_EQ(ret, IS_SUCCESS);
2000     ret = cm->addCredential(DEFAULT_OS_ACCOUNT, SERVER_AUTH_PARAMS, &serverReturnData);
2001     EXPECT_EQ(ret, IS_SUCCESS);
2002     (void)strcpy_s(g_clientCredId, HcStrlen(clientReturnData) + 1, clientReturnData);
2003     (void)strcpy_s(g_serverCredId, HcStrlen(serverReturnData) + 1, serverReturnData);
2004     g_isBind = false;
2005     AuthCredDemo();
2006     ASSERT_EQ(g_asyncStatus, ASYNC_STATUS_FINISH);
2007     cm->destroyInfo(&clientReturnData);
2008     cm->destroyInfo(&serverReturnData);
2009 }
2010 
2011 HWTEST_F(CredAuthTest, CredAuthTest002, TestSize.Level0)
2012 {
2013     const CredAuthManager *ca = GetCredAuthInstance();
2014     ASSERT_NE(ca, nullptr);
2015     ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, nullptr, nullptr);
2016     ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, nullptr, &g_caCallback);
2017     ca->authCredential(DEFAULT_OS_ACCOUNT, TEST_REQ_ID, GenerateBindParams(), nullptr);
2018     ca->processCredData(TEST_REQ_ID, nullptr, DATA_LEN, nullptr);
2019     ca->processCredData(TEST_REQ_ID, nullptr, DATA_LEN, &g_caCallback);
2020     ca->processCredData(TEST_REQ_ID, (const uint8_t*)GenerateBindParams(), DATA_LEN, nullptr);
2021 }
2022 } // namespace