1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License.
5094332d3Sopenharmony_ci * You may obtain a copy of the License at
6094332d3Sopenharmony_ci *
7094332d3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8094332d3Sopenharmony_ci *
9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and
13094332d3Sopenharmony_ci * limitations under the License.
14094332d3Sopenharmony_ci */
15094332d3Sopenharmony_ci
16094332d3Sopenharmony_ci#include <gtest/gtest.h>
17094332d3Sopenharmony_ci
18094332d3Sopenharmony_ci#include "idm_database.h"
19094332d3Sopenharmony_ci#include "securec.h"
20094332d3Sopenharmony_ci
21094332d3Sopenharmony_citypedef bool (*DuplicateCheckFunc)(LinkedList *collection, uint64_t value);
22094332d3Sopenharmony_ci
23094332d3Sopenharmony_ciextern "C" {
24094332d3Sopenharmony_ci    extern LinkedList *g_userInfoList;
25094332d3Sopenharmony_ci    extern UserInfo *g_currentUser;
26094332d3Sopenharmony_ci    extern GlobalConfigInfo g_globalConfigArray[MAX_GLOBAL_CONFIG_NUM];
27094332d3Sopenharmony_ci    extern bool MatchUserInfo(const void *data, const void *condition);
28094332d3Sopenharmony_ci    extern bool IsUserInfoValid(UserInfo *userInfo);
29094332d3Sopenharmony_ci    extern UserInfo *QueryUserInfo(int32_t userId);
30094332d3Sopenharmony_ci    extern bool IsSecureUidDuplicate(LinkedList *userInfoList, uint64_t secureUid);
31094332d3Sopenharmony_ci    extern UserInfo *CreateUser(int32_t userId, int32_t userType);
32094332d3Sopenharmony_ci    extern ResultCode DeleteUser(int32_t userId);
33094332d3Sopenharmony_ci    extern bool IsCredentialIdDuplicate(LinkedList *userInfoList, uint64_t credentialId);
34094332d3Sopenharmony_ci    extern bool IsEnrolledIdDuplicate(LinkedList *enrolledList, uint64_t enrolledId);
35094332d3Sopenharmony_ci    extern ResultCode GenerateDeduplicateUint64(LinkedList *collection, uint64_t *destValue, DuplicateCheckFunc func);
36094332d3Sopenharmony_ci    extern ResultCode UpdateEnrolledId(LinkedList *enrolledList, uint32_t authType);
37094332d3Sopenharmony_ci    extern ResultCode AddCredentialToUser(UserInfo *user, CredentialInfoHal *credentialInfo);
38094332d3Sopenharmony_ci    extern ResultCode AddUser(int32_t userId, CredentialInfoHal *credentialInfo, int32_t userType);
39094332d3Sopenharmony_ci    extern bool MatchCredentialById(const void *data, const void *condition);
40094332d3Sopenharmony_ci    extern bool MatchEnrolledInfoByType(const void *data, const void *condition);
41094332d3Sopenharmony_ci    extern CredentialInfoHal *QueryCredentialById(uint64_t credentialId, LinkedList *credentialList);
42094332d3Sopenharmony_ci    extern CredentialInfoHal *QueryCredentialByAuthType(uint32_t authType, LinkedList *credentialList);
43094332d3Sopenharmony_ci    extern bool IsCredMatch(const CredentialCondition *limit, const CredentialInfoHal *credentialInfo);
44094332d3Sopenharmony_ci    extern bool IsUserMatch(const CredentialCondition *limit, const UserInfo *user);
45094332d3Sopenharmony_ci    extern ResultCode TraverseCredentialList(const CredentialCondition *limit, const LinkedList *credentialList,
46094332d3Sopenharmony_ci        LinkedList *credListGet);
47094332d3Sopenharmony_ci    extern void RemoveCachePin(UserInfo *user, bool *isRemoved);
48094332d3Sopenharmony_ci}
49094332d3Sopenharmony_ci
50094332d3Sopenharmony_cinamespace OHOS {
51094332d3Sopenharmony_cinamespace UserIam {
52094332d3Sopenharmony_cinamespace UserAuth {
53094332d3Sopenharmony_ciusing namespace testing;
54094332d3Sopenharmony_ciusing namespace testing::ext;
55094332d3Sopenharmony_ci
56094332d3Sopenharmony_ciclass IdmDatabaseTest : public testing::Test {
57094332d3Sopenharmony_cipublic:
58094332d3Sopenharmony_ci    static void SetUpTestCase() {};
59094332d3Sopenharmony_ci
60094332d3Sopenharmony_ci    static void TearDownTestCase() {};
61094332d3Sopenharmony_ci
62094332d3Sopenharmony_ci    void SetUp() {};
63094332d3Sopenharmony_ci
64094332d3Sopenharmony_ci    void TearDown() {};
65094332d3Sopenharmony_ci};
66094332d3Sopenharmony_ci
67094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestInitUserInfoList_001, TestSize.Level0)
68094332d3Sopenharmony_ci{
69094332d3Sopenharmony_ci    EXPECT_EQ(InitUserInfoList(), RESULT_SUCCESS);
70094332d3Sopenharmony_ci    DestroyUserInfoList();
71094332d3Sopenharmony_ci}
72094332d3Sopenharmony_ci
73094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestInitUserInfoList_002, TestSize.Level0)
74094332d3Sopenharmony_ci{
75094332d3Sopenharmony_ci    constexpr int32_t userType = 1024;
76094332d3Sopenharmony_ci    UserInfo *userInfo = InitUserInfoNode();
77094332d3Sopenharmony_ci    EXPECT_EQ(InitUserInfoList(), RESULT_SUCCESS);
78094332d3Sopenharmony_ci    EXPECT_NE(userInfo->userType, userType);
79094332d3Sopenharmony_ci    DestroyUserInfoNode(userInfo);
80094332d3Sopenharmony_ci    DestroyUserInfoList();
81094332d3Sopenharmony_ci}
82094332d3Sopenharmony_ci
83094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestMatchUserInfo, TestSize.Level0)
84094332d3Sopenharmony_ci{
85094332d3Sopenharmony_ci    EXPECT_FALSE(MatchUserInfo(nullptr, nullptr));
86094332d3Sopenharmony_ci    int32_t condition = 4526;
87094332d3Sopenharmony_ci    constexpr int32_t userId = 1133;
88094332d3Sopenharmony_ci    UserInfo info = {};
89094332d3Sopenharmony_ci    info.userId = userId;
90094332d3Sopenharmony_ci    EXPECT_FALSE(MatchUserInfo(static_cast<void *>(&info), static_cast<void *>(&condition)));
91094332d3Sopenharmony_ci}
92094332d3Sopenharmony_ci
93094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestIsUserInfoValid, TestSize.Level0)
94094332d3Sopenharmony_ci{
95094332d3Sopenharmony_ci    UserInfo info = {};
96094332d3Sopenharmony_ci    info.credentialInfoList = nullptr;
97094332d3Sopenharmony_ci    info.enrolledInfoList = nullptr;
98094332d3Sopenharmony_ci    EXPECT_FALSE(IsUserInfoValid(&info));
99094332d3Sopenharmony_ci    info.credentialInfoList = new LinkedList();
100094332d3Sopenharmony_ci    EXPECT_FALSE(IsUserInfoValid(&info));
101094332d3Sopenharmony_ci    delete info.credentialInfoList;
102094332d3Sopenharmony_ci}
103094332d3Sopenharmony_ci
104094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetSecureUid, TestSize.Level0)
105094332d3Sopenharmony_ci{
106094332d3Sopenharmony_ci    constexpr int32_t userId = 1133;
107094332d3Sopenharmony_ci    EXPECT_EQ(GetSecureUid(userId, nullptr), RESULT_BAD_PARAM);
108094332d3Sopenharmony_ci}
109094332d3Sopenharmony_ci
110094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetEnrolledInfoAuthType_001, TestSize.Level0)
111094332d3Sopenharmony_ci{
112094332d3Sopenharmony_ci    g_userInfoList = nullptr;
113094332d3Sopenharmony_ci    constexpr int32_t userId = 1166;
114094332d3Sopenharmony_ci    constexpr uint32_t authType = 1;
115094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledInfoAuthType(userId, authType, nullptr), RESULT_BAD_PARAM);
116094332d3Sopenharmony_ci    EnrolledInfoHal info = {};
117094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledInfoAuthType(userId, authType, &info), RESULT_NOT_FOUND);
118094332d3Sopenharmony_ci}
119094332d3Sopenharmony_ci
120094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetEnrolledInfoAuthType_002, TestSize.Level0)
121094332d3Sopenharmony_ci{
122094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
123094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
124094332d3Sopenharmony_ci    UserInfo userInfo = {};
125094332d3Sopenharmony_ci    constexpr int32_t userId = 1135;
126094332d3Sopenharmony_ci    constexpr uint32_t authType = 1;
127094332d3Sopenharmony_ci    userInfo.userId = userId;
128094332d3Sopenharmony_ci    userInfo.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
129094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
130094332d3Sopenharmony_ci    EnrolledInfoHal info = {};
131094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledInfoAuthType(userId, authType, &info), RESULT_NOT_FOUND);
132094332d3Sopenharmony_ci}
133094332d3Sopenharmony_ci
134094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetEnrolledInfoAuthType_003, TestSize.Level0)
135094332d3Sopenharmony_ci{
136094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
137094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
138094332d3Sopenharmony_ci    UserInfo userInfo = {};
139094332d3Sopenharmony_ci    constexpr int32_t userId = 1135;
140094332d3Sopenharmony_ci    constexpr uint32_t authType1 = 1;
141094332d3Sopenharmony_ci    constexpr uint32_t authType2 = 2;
142094332d3Sopenharmony_ci    userInfo.userId = userId;
143094332d3Sopenharmony_ci    userInfo.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
144094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
145094332d3Sopenharmony_ci    EnrolledInfoHal enrolledInfo = {};
146094332d3Sopenharmony_ci    enrolledInfo.authType = authType2;
147094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
148094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, nullptr);
149094332d3Sopenharmony_ci    EnrolledInfoHal info = {};
150094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledInfoAuthType(userId, authType1, &info), RESULT_NOT_FOUND);
151094332d3Sopenharmony_ci}
152094332d3Sopenharmony_ci
153094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetEnrolledInfo, TestSize.Level0)
154094332d3Sopenharmony_ci{
155094332d3Sopenharmony_ci    constexpr int32_t userId = 1211;
156094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledInfo(userId, nullptr, nullptr), RESULT_BAD_PARAM);
157094332d3Sopenharmony_ci    g_userInfoList = nullptr;
158094332d3Sopenharmony_ci    g_currentUser = nullptr;
159094332d3Sopenharmony_ci    EnrolledInfoHal *enrolledInfos = nullptr;
160094332d3Sopenharmony_ci    uint32_t num = 0;
161094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledInfo(userId, &enrolledInfos, &num), RESULT_NOT_FOUND);
162094332d3Sopenharmony_ci}
163094332d3Sopenharmony_ci
164094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestDeleteUserInfo, TestSize.Level0)
165094332d3Sopenharmony_ci{
166094332d3Sopenharmony_ci    constexpr int32_t userId = 1155;
167094332d3Sopenharmony_ci    EXPECT_EQ(DeleteUserInfo(userId, nullptr), RESULT_BAD_PARAM);
168094332d3Sopenharmony_ci}
169094332d3Sopenharmony_ci
170094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryUserInfo_001, TestSize.Level0)
171094332d3Sopenharmony_ci{
172094332d3Sopenharmony_ci    g_userInfoList = nullptr;
173094332d3Sopenharmony_ci    constexpr int32_t userId1 = 123;
174094332d3Sopenharmony_ci    constexpr int32_t userId2 = 1123;
175094332d3Sopenharmony_ci    UserInfo userInfo = {};
176094332d3Sopenharmony_ci    userInfo.userId = userId1;
177094332d3Sopenharmony_ci    g_currentUser = &userInfo;
178094332d3Sopenharmony_ci    EXPECT_NE(QueryUserInfo(userId1), nullptr);
179094332d3Sopenharmony_ci    userInfo.userId = userId2;
180094332d3Sopenharmony_ci    EXPECT_EQ(QueryUserInfo(userId1), nullptr);
181094332d3Sopenharmony_ci}
182094332d3Sopenharmony_ci
183094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryUserInfo_002, TestSize.Level0)
184094332d3Sopenharmony_ci{
185094332d3Sopenharmony_ci    g_currentUser = nullptr;
186094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
187094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
188094332d3Sopenharmony_ci    constexpr int32_t userId1 = 123;
189094332d3Sopenharmony_ci    constexpr int32_t userId2 = 1336;
190094332d3Sopenharmony_ci    UserInfo userInfo1 = {};
191094332d3Sopenharmony_ci    userInfo1.userId = userId1;
192094332d3Sopenharmony_ci    userInfo1.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
193094332d3Sopenharmony_ci    userInfo1.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
194094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo1));
195094332d3Sopenharmony_ci    UserInfo userInfo2 = {};
196094332d3Sopenharmony_ci    userInfo2.userId = userId2;
197094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo2));
198094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, nullptr);
199094332d3Sopenharmony_ci    EXPECT_NE(QueryUserInfo(userId1), nullptr);
200094332d3Sopenharmony_ci}
201094332d3Sopenharmony_ci
202094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestIsSecureUidDuplicate, TestSize.Level0)
203094332d3Sopenharmony_ci{
204094332d3Sopenharmony_ci    constexpr uint64_t secUid = 1221;
205094332d3Sopenharmony_ci    constexpr uint64_t secUid1 = 111;
206094332d3Sopenharmony_ci    constexpr uint64_t secUid2 = 222;
207094332d3Sopenharmony_ci    EXPECT_FALSE(IsSecureUidDuplicate(nullptr, secUid));
208094332d3Sopenharmony_ci    LinkedList *userInfoList = CreateLinkedList(DestroyUserInfoNode);
209094332d3Sopenharmony_ci    EXPECT_NE(userInfoList, nullptr);
210094332d3Sopenharmony_ci    EXPECT_FALSE(IsSecureUidDuplicate(userInfoList, secUid));
211094332d3Sopenharmony_ci    UserInfo info1 = {};
212094332d3Sopenharmony_ci    info1.secUid = secUid1;
213094332d3Sopenharmony_ci    userInfoList->insert(userInfoList, static_cast<void *>(&info1));
214094332d3Sopenharmony_ci    UserInfo info2 = info1;
215094332d3Sopenharmony_ci    info2.secUid = secUid2;
216094332d3Sopenharmony_ci    userInfoList->insert(userInfoList, static_cast<void *>(&info2));
217094332d3Sopenharmony_ci    userInfoList->insert(userInfoList, nullptr);
218094332d3Sopenharmony_ci    EXPECT_TRUE(IsSecureUidDuplicate(userInfoList, secUid1));
219094332d3Sopenharmony_ci}
220094332d3Sopenharmony_ci
221094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestCreateUser, TestSize.Level0)
222094332d3Sopenharmony_ci{
223094332d3Sopenharmony_ci    g_userInfoList = nullptr;
224094332d3Sopenharmony_ci    constexpr int32_t userId = 123;
225094332d3Sopenharmony_ci    EXPECT_EQ(CreateUser(userId, 0), nullptr);
226094332d3Sopenharmony_ci}
227094332d3Sopenharmony_ci
228094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestDeleteUser, TestSize.Level0)
229094332d3Sopenharmony_ci{
230094332d3Sopenharmony_ci    g_userInfoList = nullptr;
231094332d3Sopenharmony_ci    constexpr int32_t userId = 123;
232094332d3Sopenharmony_ci    EXPECT_EQ(DeleteUser(userId), RESULT_BAD_PARAM);
233094332d3Sopenharmony_ci}
234094332d3Sopenharmony_ci
235094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestIsCredentialIdDuplicate, TestSize.Level0)
236094332d3Sopenharmony_ci{
237094332d3Sopenharmony_ci    g_userInfoList = nullptr;
238094332d3Sopenharmony_ci    constexpr uint64_t credentialId1 = 1221;
239094332d3Sopenharmony_ci    constexpr uint64_t credentialId2 = 10;
240094332d3Sopenharmony_ci    EXPECT_TRUE(IsCredentialIdDuplicate(nullptr, credentialId1));
241094332d3Sopenharmony_ci    g_userInfoList =  CreateLinkedList(DestroyUserInfoNode);
242094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
243094332d3Sopenharmony_ci    UserInfo info = {};
244094332d3Sopenharmony_ci    info.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
245094332d3Sopenharmony_ci    EXPECT_NE(info.credentialInfoList, nullptr);
246094332d3Sopenharmony_ci    CredentialInfoHal credInfo = {};
247094332d3Sopenharmony_ci    credInfo.credentialId = credentialId2;
248094332d3Sopenharmony_ci    info.credentialInfoList->insert(info.credentialInfoList, static_cast<void *>(&credInfo));
249094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, &info);
250094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredentialIdDuplicate(nullptr, credentialId2));
251094332d3Sopenharmony_ci}
252094332d3Sopenharmony_ci
253094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestIsEnrolledIdDuplicate, TestSize.Level0)
254094332d3Sopenharmony_ci{
255094332d3Sopenharmony_ci    constexpr uint64_t enrolledId1 = 111;
256094332d3Sopenharmony_ci    constexpr uint64_t enrolledId2 = 222;
257094332d3Sopenharmony_ci    LinkedList *enrolledList = CreateLinkedList(DestroyEnrolledNode);
258094332d3Sopenharmony_ci    EXPECT_NE(enrolledList, nullptr);
259094332d3Sopenharmony_ci    EnrolledInfoHal info1 = {};
260094332d3Sopenharmony_ci    info1.enrolledId = enrolledId1;
261094332d3Sopenharmony_ci    enrolledList->insert(enrolledList, static_cast<void *>(&info1));
262094332d3Sopenharmony_ci    EnrolledInfoHal info2 = {};
263094332d3Sopenharmony_ci    info2.enrolledId = enrolledId2;
264094332d3Sopenharmony_ci    enrolledList->insert(enrolledList, static_cast<void *>(&info2));
265094332d3Sopenharmony_ci    enrolledList->insert(enrolledList, nullptr);
266094332d3Sopenharmony_ci    EXPECT_TRUE(IsEnrolledIdDuplicate(enrolledList, enrolledId1));
267094332d3Sopenharmony_ci}
268094332d3Sopenharmony_ci
269094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGenerateDeduplicateUint64, TestSize.Level0)
270094332d3Sopenharmony_ci{
271094332d3Sopenharmony_ci    EXPECT_EQ(GenerateDeduplicateUint64(nullptr, nullptr, IsEnrolledIdDuplicate), RESULT_BAD_PARAM);
272094332d3Sopenharmony_ci}
273094332d3Sopenharmony_ci
274094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestUpdateEnrolledId, TestSize.Level0)
275094332d3Sopenharmony_ci{
276094332d3Sopenharmony_ci    constexpr uint32_t authType1 = 1;
277094332d3Sopenharmony_ci    constexpr uint32_t authType2 = 2;
278094332d3Sopenharmony_ci    LinkedList *enrolledList = CreateLinkedList(DestroyEnrolledNode);
279094332d3Sopenharmony_ci    EXPECT_NE(enrolledList, nullptr);
280094332d3Sopenharmony_ci    EnrolledInfoHal info1 = {};
281094332d3Sopenharmony_ci    info1.authType = authType1;
282094332d3Sopenharmony_ci    enrolledList->insert(enrolledList, static_cast<void *>(&info1));
283094332d3Sopenharmony_ci    EnrolledInfoHal info2 = {};
284094332d3Sopenharmony_ci    info2.authType = authType2;
285094332d3Sopenharmony_ci    enrolledList->insert(enrolledList, static_cast<void *>(&info2));
286094332d3Sopenharmony_ci    enrolledList->insert(enrolledList, nullptr);
287094332d3Sopenharmony_ci    EXPECT_EQ(UpdateEnrolledId(enrolledList, authType1), RESULT_SUCCESS);
288094332d3Sopenharmony_ci}
289094332d3Sopenharmony_ci
290094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestAddCredentialToUser, TestSize.Level0)
291094332d3Sopenharmony_ci{
292094332d3Sopenharmony_ci    g_userInfoList = nullptr;
293094332d3Sopenharmony_ci    EXPECT_EQ(AddCredentialToUser(nullptr, nullptr), RESULT_NEED_INIT);
294094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
295094332d3Sopenharmony_ci    UserInfo userInfo = {};
296094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
297094332d3Sopenharmony_ci    EXPECT_NE(userInfo.credentialInfoList, nullptr);
298094332d3Sopenharmony_ci    userInfo.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
299094332d3Sopenharmony_ci    CredentialInfoHal credInfo = {};
300094332d3Sopenharmony_ci    constexpr uint32_t credNum = 102;
301094332d3Sopenharmony_ci    for (uint32_t i = 0; i < credNum; ++i) {
302094332d3Sopenharmony_ci        userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(&credInfo));
303094332d3Sopenharmony_ci    }
304094332d3Sopenharmony_ci    EXPECT_EQ(AddCredentialToUser(&userInfo, nullptr), RESULT_EXCEED_LIMIT);
305094332d3Sopenharmony_ci}
306094332d3Sopenharmony_ci
307094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestAddUser, TestSize.Level0)
308094332d3Sopenharmony_ci{
309094332d3Sopenharmony_ci    g_currentUser = nullptr;
310094332d3Sopenharmony_ci    g_userInfoList = nullptr;
311094332d3Sopenharmony_ci    EXPECT_EQ(AddUser(111, nullptr, 0), RESULT_NEED_INIT);
312094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
313094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
314094332d3Sopenharmony_ci    constexpr uint32_t userNum = 1002;
315094332d3Sopenharmony_ci    UserInfo info = {};
316094332d3Sopenharmony_ci    for (uint32_t i = 0; i < userNum; ++i) {
317094332d3Sopenharmony_ci        g_userInfoList->insert(g_userInfoList, static_cast<void *>(&info));
318094332d3Sopenharmony_ci    }
319094332d3Sopenharmony_ci    EXPECT_EQ(AddUser(111, nullptr, 0), RESULT_EXCEED_LIMIT);
320094332d3Sopenharmony_ci}
321094332d3Sopenharmony_ci
322094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestAddCredentialInfo_001, TestSize.Level0)
323094332d3Sopenharmony_ci{
324094332d3Sopenharmony_ci    EXPECT_EQ(AddCredentialInfo(111, nullptr, 0), RESULT_BAD_PARAM);
325094332d3Sopenharmony_ci}
326094332d3Sopenharmony_ci
327094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestAddCredentialInfo_002, TestSize.Level0)
328094332d3Sopenharmony_ci{
329094332d3Sopenharmony_ci    g_currentUser = nullptr;
330094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
331094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
332094332d3Sopenharmony_ci    constexpr int32_t userId = 100;
333094332d3Sopenharmony_ci    constexpr int32_t userType = 2;
334094332d3Sopenharmony_ci    constexpr uint32_t authType = 1;
335094332d3Sopenharmony_ci    UserInfo *user = QueryUserInfo(userId);
336094332d3Sopenharmony_ci    EXPECT_EQ(user, nullptr);
337094332d3Sopenharmony_ci    user = CreateUser(userId, userType);
338094332d3Sopenharmony_ci    EXPECT_NE(user->userType, 0);
339094332d3Sopenharmony_ci
340094332d3Sopenharmony_ci    CredentialInfoHal credInfo = {};
341094332d3Sopenharmony_ci    credInfo.authType = authType;
342094332d3Sopenharmony_ci    EXPECT_EQ(AddUser(userId, &credInfo, userType), RESULT_SUCCESS);
343094332d3Sopenharmony_ci
344094332d3Sopenharmony_ci    EXPECT_EQ(AddCredentialInfo(userId, &credInfo, userType), RESULT_SUCCESS);
345094332d3Sopenharmony_ci}
346094332d3Sopenharmony_ci
347094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestMatchCredentialById, TestSize.Level0)
348094332d3Sopenharmony_ci{
349094332d3Sopenharmony_ci    EXPECT_FALSE(MatchCredentialById(nullptr, nullptr));
350094332d3Sopenharmony_ci    constexpr uint64_t credentialId = 10;
351094332d3Sopenharmony_ci    CredentialInfoHal info = {};
352094332d3Sopenharmony_ci    info.credentialId = credentialId;
353094332d3Sopenharmony_ci    uint64_t condition = credentialId;
354094332d3Sopenharmony_ci    EXPECT_TRUE(MatchCredentialById(static_cast<void *>(&info), static_cast<void *>(&condition)));
355094332d3Sopenharmony_ci    condition = 20;
356094332d3Sopenharmony_ci    EXPECT_FALSE(MatchCredentialById(static_cast<void *>(&info), static_cast<void *>(&condition)));
357094332d3Sopenharmony_ci}
358094332d3Sopenharmony_ci
359094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestMatchEnrolledInfoByType, TestSize.Level0)
360094332d3Sopenharmony_ci{
361094332d3Sopenharmony_ci    EXPECT_FALSE(MatchEnrolledInfoByType(nullptr, nullptr));
362094332d3Sopenharmony_ci    constexpr uint32_t authType = 1;
363094332d3Sopenharmony_ci    EnrolledInfoHal info = {};
364094332d3Sopenharmony_ci    info.authType = authType;
365094332d3Sopenharmony_ci    uint32_t condition = 1;
366094332d3Sopenharmony_ci    EXPECT_TRUE(MatchEnrolledInfoByType(static_cast<void *>(&info), static_cast<void *>(&condition)));
367094332d3Sopenharmony_ci    condition = 2;
368094332d3Sopenharmony_ci    EXPECT_FALSE(MatchEnrolledInfoByType(static_cast<void *>(&info), static_cast<void *>(&condition)));
369094332d3Sopenharmony_ci}
370094332d3Sopenharmony_ci
371094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestDeleteCredentialInfo_001, TestSize.Level0)
372094332d3Sopenharmony_ci{
373094332d3Sopenharmony_ci    EXPECT_EQ(DeleteCredentialInfo(1, 1, nullptr), RESULT_BAD_PARAM);
374094332d3Sopenharmony_ci    CredentialInfoHal credInfo = {};
375094332d3Sopenharmony_ci    EXPECT_EQ(DeleteCredentialInfo(1, 1, &credInfo), RESULT_BAD_PARAM);
376094332d3Sopenharmony_ci}
377094332d3Sopenharmony_ci
378094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestDeleteCredentialInfo_002, TestSize.Level0)
379094332d3Sopenharmony_ci{
380094332d3Sopenharmony_ci    g_currentUser = nullptr;
381094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
382094332d3Sopenharmony_ci    constexpr int32_t userId = 112;
383094332d3Sopenharmony_ci    constexpr uint64_t credentialId = 1;
384094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
385094332d3Sopenharmony_ci    UserInfo userInfo = {};
386094332d3Sopenharmony_ci    userInfo.userId = userId;
387094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
388094332d3Sopenharmony_ci    userInfo.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
389094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
390094332d3Sopenharmony_ci    CredentialInfoHal credInfo = {};
391094332d3Sopenharmony_ci    EXPECT_EQ(DeleteCredentialInfo(userId, credentialId, &credInfo), RESULT_UNKNOWN);
392094332d3Sopenharmony_ci}
393094332d3Sopenharmony_ci
394094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestDeleteCredentialInfo_003, TestSize.Level0)
395094332d3Sopenharmony_ci{
396094332d3Sopenharmony_ci    g_currentUser = nullptr;
397094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
398094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
399094332d3Sopenharmony_ci    constexpr int32_t userId = 113;
400094332d3Sopenharmony_ci    constexpr uint64_t credentialId = 10;
401094332d3Sopenharmony_ci    UserInfo userInfo = {};
402094332d3Sopenharmony_ci    userInfo.userId = userId;
403094332d3Sopenharmony_ci    userInfo.enrolledInfoList = nullptr;
404094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
405094332d3Sopenharmony_ci    userInfo.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
406094332d3Sopenharmony_ci    EXPECT_NE(userInfo.credentialInfoList, nullptr);
407094332d3Sopenharmony_ci    auto *credInfo = static_cast<CredentialInfoHal *>(Malloc(sizeof(CredentialInfoHal)));
408094332d3Sopenharmony_ci    credInfo->credentialId = credentialId;
409094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(credInfo));
410094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
411094332d3Sopenharmony_ci    CredentialInfoHal info = {};
412094332d3Sopenharmony_ci    EXPECT_EQ(DeleteCredentialInfo(userId, credentialId, &info), RESULT_SUCCESS);
413094332d3Sopenharmony_ci}
414094332d3Sopenharmony_ci
415094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestDeleteCredentialInfo_004, TestSize.Level0)
416094332d3Sopenharmony_ci{
417094332d3Sopenharmony_ci    g_currentUser = nullptr;
418094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
419094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
420094332d3Sopenharmony_ci    constexpr int32_t userId = 115;
421094332d3Sopenharmony_ci    constexpr uint32_t authType = 2;
422094332d3Sopenharmony_ci    constexpr uint64_t credentialId1 = 10;
423094332d3Sopenharmony_ci    constexpr uint64_t credentialId2 = 20;
424094332d3Sopenharmony_ci    UserInfo userInfo = {};
425094332d3Sopenharmony_ci    userInfo.userId = userId;
426094332d3Sopenharmony_ci    userInfo.enrolledInfoList = nullptr;
427094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
428094332d3Sopenharmony_ci    userInfo.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
429094332d3Sopenharmony_ci    EXPECT_NE(userInfo.credentialInfoList, nullptr);
430094332d3Sopenharmony_ci    auto *credInfo1 = static_cast<CredentialInfoHal *>(Malloc(sizeof(CredentialInfoHal)));
431094332d3Sopenharmony_ci    credInfo1->credentialId = credentialId1;
432094332d3Sopenharmony_ci    credInfo1->authType = authType;
433094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(credInfo1));
434094332d3Sopenharmony_ci    auto *credInfo2 = static_cast<CredentialInfoHal *>(Malloc(sizeof(CredentialInfoHal)));
435094332d3Sopenharmony_ci    credInfo2->credentialId = credentialId2;
436094332d3Sopenharmony_ci    credInfo2->authType = authType;
437094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(credInfo2));
438094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
439094332d3Sopenharmony_ci    CredentialInfoHal info = {};
440094332d3Sopenharmony_ci    EXPECT_EQ(DeleteCredentialInfo(userId, credentialId1, &info), RESULT_SUCCESS);
441094332d3Sopenharmony_ci    Free(credInfo2);
442094332d3Sopenharmony_ci}
443094332d3Sopenharmony_ci
444094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestClearCachePin, TestSize.Level0)
445094332d3Sopenharmony_ci{
446094332d3Sopenharmony_ci    constexpr int32_t userId = 115;
447094332d3Sopenharmony_ci    ClearCachePin(userId);
448094332d3Sopenharmony_ci    g_currentUser = nullptr;
449094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
450094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
451094332d3Sopenharmony_ci    constexpr uint64_t credentialId1 = 10;
452094332d3Sopenharmony_ci    UserInfo userInfo = {};
453094332d3Sopenharmony_ci    userInfo.userId = userId;
454094332d3Sopenharmony_ci    userInfo.enrolledInfoList = nullptr;
455094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
456094332d3Sopenharmony_ci    EXPECT_NE(userInfo.credentialInfoList, nullptr);
457094332d3Sopenharmony_ci    auto *credInfo1 = static_cast<CredentialInfoHal *>(Malloc(sizeof(CredentialInfoHal)));
458094332d3Sopenharmony_ci    credInfo1->credentialId = credentialId1;
459094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(credInfo1));
460094332d3Sopenharmony_ci    ClearCachePin(userId);
461094332d3Sopenharmony_ci}
462094332d3Sopenharmony_ci
463094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryCredentialById, TestSize.Level0)
464094332d3Sopenharmony_ci{
465094332d3Sopenharmony_ci    constexpr uint64_t credentialId = 111;
466094332d3Sopenharmony_ci    constexpr uint64_t credentialId1 = 10;
467094332d3Sopenharmony_ci    constexpr uint64_t credentialId2 = 20;
468094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialById(credentialId, nullptr), nullptr);
469094332d3Sopenharmony_ci    LinkedList *credentialList = CreateLinkedList(DestroyCredentialNode);
470094332d3Sopenharmony_ci    EXPECT_NE(credentialList, nullptr);
471094332d3Sopenharmony_ci    CredentialInfoHal credInfo1 = {};
472094332d3Sopenharmony_ci    credInfo1.credentialId = credentialId1;
473094332d3Sopenharmony_ci    credentialList->insert(credentialList, static_cast<void *>(&credInfo1));
474094332d3Sopenharmony_ci    CredentialInfoHal credInfo2 = {};
475094332d3Sopenharmony_ci    credInfo2.credentialId = credentialId2;
476094332d3Sopenharmony_ci    credentialList->insert(credentialList, static_cast<void *>(&credInfo2));
477094332d3Sopenharmony_ci    credentialList->insert(credentialList, nullptr);
478094332d3Sopenharmony_ci    EXPECT_NE(QueryCredentialById(credentialId1, credentialList), nullptr);
479094332d3Sopenharmony_ci}
480094332d3Sopenharmony_ci
481094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryCredentialByAuthType, TestSize.Level0)
482094332d3Sopenharmony_ci{
483094332d3Sopenharmony_ci    constexpr uint32_t authType1 = 1;
484094332d3Sopenharmony_ci    constexpr uint32_t authType2 = 2;
485094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialByAuthType(1, nullptr), nullptr);
486094332d3Sopenharmony_ci    LinkedList *credentialList = CreateLinkedList(DestroyCredentialNode);
487094332d3Sopenharmony_ci    EXPECT_NE(credentialList, nullptr);
488094332d3Sopenharmony_ci    CredentialInfoHal credInfo1 = {};
489094332d3Sopenharmony_ci    credInfo1.authType = authType1;
490094332d3Sopenharmony_ci    credentialList->insert(credentialList, static_cast<void *>(&credInfo1));
491094332d3Sopenharmony_ci    CredentialInfoHal credInfo2 = {};
492094332d3Sopenharmony_ci    credInfo2.authType = authType2;
493094332d3Sopenharmony_ci    credentialList->insert(credentialList, static_cast<void *>(&credInfo2));
494094332d3Sopenharmony_ci    credentialList->insert(credentialList, nullptr);
495094332d3Sopenharmony_ci    EXPECT_NE(QueryCredentialByAuthType(authType1, credentialList), nullptr);
496094332d3Sopenharmony_ci}
497094332d3Sopenharmony_ci
498094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestIsCredMatch_001, TestSize.Level0)
499094332d3Sopenharmony_ci{
500094332d3Sopenharmony_ci    constexpr uint64_t templateId1 = 20;
501094332d3Sopenharmony_ci    constexpr uint64_t templateId2 = 10;
502094332d3Sopenharmony_ci    CredentialInfoHal credInfo = {};
503094332d3Sopenharmony_ci    credInfo.templateId = templateId1;
504094332d3Sopenharmony_ci    CredentialCondition limit = {};
505094332d3Sopenharmony_ci    SetCredentialConditionTemplateId(&limit, templateId2);
506094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredMatch(&limit, &credInfo));
507094332d3Sopenharmony_ci}
508094332d3Sopenharmony_ci
509094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestIsCredMatch_002, TestSize.Level0)
510094332d3Sopenharmony_ci{
511094332d3Sopenharmony_ci    constexpr uint32_t excutorSensorHint1 = 10;
512094332d3Sopenharmony_ci    constexpr uint32_t excutorSensorHint2 = 20;
513094332d3Sopenharmony_ci    CredentialInfoHal credInfo = {};
514094332d3Sopenharmony_ci    credInfo.executorSensorHint = excutorSensorHint2;
515094332d3Sopenharmony_ci    CredentialCondition limit = {};
516094332d3Sopenharmony_ci    SetCredentialConditionExecutorSensorHint(&limit, 0);
517094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredMatch(&limit, &credInfo));
518094332d3Sopenharmony_ci    SetCredentialConditionExecutorSensorHint(&limit, excutorSensorHint1);
519094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredMatch(&limit, &credInfo));
520094332d3Sopenharmony_ci    SetCredentialConditionExecutorSensorHint(&limit, excutorSensorHint2);
521094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredMatch(&limit, &credInfo));
522094332d3Sopenharmony_ci}
523094332d3Sopenharmony_ci
524094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestIsCredMatch_003, TestSize.Level0)
525094332d3Sopenharmony_ci{
526094332d3Sopenharmony_ci    constexpr uint32_t executorMatcher1 = 10;
527094332d3Sopenharmony_ci    constexpr uint32_t executorMatcher2 = 20;
528094332d3Sopenharmony_ci    CredentialInfoHal credInfo = {};
529094332d3Sopenharmony_ci    credInfo.executorMatcher = executorMatcher2;
530094332d3Sopenharmony_ci    CredentialCondition limit = {};
531094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredMatch(&limit, &credInfo));
532094332d3Sopenharmony_ci    SetCredentialConditionExecutorMatcher(&limit, executorMatcher1);
533094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredMatch(&limit, &credInfo));
534094332d3Sopenharmony_ci    SetCredentialConditionExecutorMatcher(&limit, executorMatcher2);
535094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredMatch(&limit, &credInfo));
536094332d3Sopenharmony_ci    SetCredentiaConditionNeedCachePin(nullptr);
537094332d3Sopenharmony_ci    EXPECT_FALSE(IsCredMatch(&limit, &credInfo));
538094332d3Sopenharmony_ci    SetCredentiaConditionNeedCachePin(&limit);
539094332d3Sopenharmony_ci    EXPECT_TRUE(IsCredMatch(&limit, &credInfo));
540094332d3Sopenharmony_ci}
541094332d3Sopenharmony_ci
542094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestIsUserMatch, TestSize.Level0)
543094332d3Sopenharmony_ci{
544094332d3Sopenharmony_ci    constexpr int32_t userId1 = 20;
545094332d3Sopenharmony_ci    constexpr int32_t userId2 = 10;
546094332d3Sopenharmony_ci    UserInfo userInfo = {};
547094332d3Sopenharmony_ci    userInfo.userId = userId1;
548094332d3Sopenharmony_ci    CredentialCondition limit = {};
549094332d3Sopenharmony_ci    SetCredentialConditionUserId(&limit, userId2);
550094332d3Sopenharmony_ci    EXPECT_FALSE(IsUserMatch(&limit, &userInfo));
551094332d3Sopenharmony_ci}
552094332d3Sopenharmony_ci
553094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestTraverseCredentialList, TestSize.Level0)
554094332d3Sopenharmony_ci{
555094332d3Sopenharmony_ci    EXPECT_EQ(TraverseCredentialList(nullptr, nullptr, nullptr), RESULT_GENERAL_ERROR);
556094332d3Sopenharmony_ci    LinkedList *credentialList = CreateLinkedList(DestroyCredentialNode);
557094332d3Sopenharmony_ci    EXPECT_NE(credentialList, nullptr);
558094332d3Sopenharmony_ci    credentialList->insert(credentialList, nullptr);
559094332d3Sopenharmony_ci    EXPECT_EQ(TraverseCredentialList(nullptr, credentialList, nullptr), RESULT_UNKNOWN);
560094332d3Sopenharmony_ci}
561094332d3Sopenharmony_ci
562094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryCredentialLimit_001, TestSize.Level0)
563094332d3Sopenharmony_ci{
564094332d3Sopenharmony_ci    g_userInfoList = nullptr;
565094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialLimit(nullptr), nullptr);
566094332d3Sopenharmony_ci    CredentialCondition limit = {};
567094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialLimit(&limit), nullptr);
568094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
569094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
570094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, nullptr);
571094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialLimit(&limit), nullptr);
572094332d3Sopenharmony_ci}
573094332d3Sopenharmony_ci
574094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryCredentialLimit_002, TestSize.Level0)
575094332d3Sopenharmony_ci{
576094332d3Sopenharmony_ci    constexpr int32_t userId1 = 1001;
577094332d3Sopenharmony_ci    constexpr int32_t userId2 = 1002;
578094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
579094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
580094332d3Sopenharmony_ci    UserInfo userInfo1 = {};
581094332d3Sopenharmony_ci    userInfo1.userId = userId1;
582094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo1));
583094332d3Sopenharmony_ci    UserInfo userInfo2 = {};
584094332d3Sopenharmony_ci    userInfo2.userId = userId2;
585094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo2));
586094332d3Sopenharmony_ci    CredentialCondition limit = {};
587094332d3Sopenharmony_ci    SetCredentialConditionUserId(&limit, userId1);
588094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialLimit(&limit), nullptr);
589094332d3Sopenharmony_ci}
590094332d3Sopenharmony_ci
591094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryCredentialUserId_001, TestSize.Level0)
592094332d3Sopenharmony_ci{
593094332d3Sopenharmony_ci    constexpr int32_t userId1 = 1001;
594094332d3Sopenharmony_ci    constexpr uint64_t credentialId = 10;
595094332d3Sopenharmony_ci    g_userInfoList = nullptr;
596094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialUserId(credentialId, nullptr), RESULT_BAD_PARAM);
597094332d3Sopenharmony_ci    int32_t userId = userId1;
598094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialUserId(credentialId, &userId), RESULT_NEED_INIT);
599094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
600094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
601094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialUserId(credentialId, &userId), RESULT_NOT_FOUND);
602094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, nullptr);
603094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialUserId(credentialId, &userId), RESULT_UNKNOWN);
604094332d3Sopenharmony_ci}
605094332d3Sopenharmony_ci
606094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryCredentialUserId_002, TestSize.Level0)
607094332d3Sopenharmony_ci{
608094332d3Sopenharmony_ci    constexpr int32_t userId1 = 1002;
609094332d3Sopenharmony_ci    constexpr int32_t userId2 = 1001;
610094332d3Sopenharmony_ci    constexpr uint64_t credentialId = 10;
611094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
612094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
613094332d3Sopenharmony_ci    UserInfo userInfo = {};
614094332d3Sopenharmony_ci    userInfo.userId = userId1;
615094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
616094332d3Sopenharmony_ci    int32_t userId = userId2;
617094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialUserId(credentialId, &userId), RESULT_UNKNOWN);
618094332d3Sopenharmony_ci}
619094332d3Sopenharmony_ci
620094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestQueryCredentialUserId_003, TestSize.Level0)
621094332d3Sopenharmony_ci{
622094332d3Sopenharmony_ci    constexpr int32_t userId1 = 1002;
623094332d3Sopenharmony_ci    constexpr int32_t userId2 = 1001;
624094332d3Sopenharmony_ci    constexpr uint64_t credentialId = 10;
625094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
626094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
627094332d3Sopenharmony_ci    UserInfo userInfo = {};
628094332d3Sopenharmony_ci    userInfo.userId = userId1;
629094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
630094332d3Sopenharmony_ci    EXPECT_NE(userInfo.credentialInfoList, nullptr);
631094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
632094332d3Sopenharmony_ci    int32_t userId = userId2;
633094332d3Sopenharmony_ci    EXPECT_EQ(QueryCredentialUserId(credentialId, &userId), RESULT_NOT_FOUND);
634094332d3Sopenharmony_ci}
635094332d3Sopenharmony_ci
636094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestSetPinSubType, TestSize.Level0)
637094332d3Sopenharmony_ci{
638094332d3Sopenharmony_ci    g_userInfoList = nullptr;
639094332d3Sopenharmony_ci    g_currentUser = nullptr;
640094332d3Sopenharmony_ci    constexpr int32_t userId = 1003;
641094332d3Sopenharmony_ci    constexpr uint64_t pinSubType = 10000;
642094332d3Sopenharmony_ci    EXPECT_EQ(SetPinSubType(userId, pinSubType), RESULT_NOT_FOUND);
643094332d3Sopenharmony_ci}
644094332d3Sopenharmony_ci
645094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetPinSubType, TestSize.Level0)
646094332d3Sopenharmony_ci{
647094332d3Sopenharmony_ci    g_userInfoList = nullptr;
648094332d3Sopenharmony_ci    g_currentUser = nullptr;
649094332d3Sopenharmony_ci    constexpr int32_t userId = 1005;
650094332d3Sopenharmony_ci    constexpr uint64_t pinSubType = 10000;
651094332d3Sopenharmony_ci    EXPECT_EQ(GetPinSubType(userId, nullptr), RESULT_BAD_PARAM);
652094332d3Sopenharmony_ci    uint64_t subType = pinSubType;
653094332d3Sopenharmony_ci    EXPECT_EQ(GetPinSubType(userId, &subType), RESULT_NOT_FOUND);
654094332d3Sopenharmony_ci}
655094332d3Sopenharmony_ci
656094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestSetCredentialConditionCredentialId, TestSize.Level0)
657094332d3Sopenharmony_ci{
658094332d3Sopenharmony_ci    constexpr uint64_t credentialId = 10;
659094332d3Sopenharmony_ci    SetCredentialConditionCredentialId(nullptr, credentialId);
660094332d3Sopenharmony_ci    CredentialCondition condition = {};
661094332d3Sopenharmony_ci    SetCredentialConditionCredentialId(&condition, credentialId);
662094332d3Sopenharmony_ci    EXPECT_EQ(condition.credentialId, credentialId);
663094332d3Sopenharmony_ci    EXPECT_EQ(condition.conditionFactor & CREDENTIAL_CONDITION_CREDENTIAL_ID, CREDENTIAL_CONDITION_CREDENTIAL_ID);
664094332d3Sopenharmony_ci}
665094332d3Sopenharmony_ci
666094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestSetCredentialConditionTemplateId, TestSize.Level0)
667094332d3Sopenharmony_ci{
668094332d3Sopenharmony_ci    constexpr uint64_t templateId = 20;
669094332d3Sopenharmony_ci    SetCredentialConditionTemplateId(nullptr, templateId);
670094332d3Sopenharmony_ci    CredentialCondition condition = {};
671094332d3Sopenharmony_ci    SetCredentialConditionTemplateId(&condition, templateId);
672094332d3Sopenharmony_ci    EXPECT_EQ(condition.templateId, templateId);
673094332d3Sopenharmony_ci    EXPECT_EQ(condition.conditionFactor & CREDENTIAL_CONDITION_TEMPLATE_ID, CREDENTIAL_CONDITION_TEMPLATE_ID);
674094332d3Sopenharmony_ci}
675094332d3Sopenharmony_ci
676094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestSetCredentialConditionAuthType, TestSize.Level0)
677094332d3Sopenharmony_ci{
678094332d3Sopenharmony_ci    constexpr uint32_t authType = 2;
679094332d3Sopenharmony_ci    SetCredentialConditionAuthType(nullptr, authType);
680094332d3Sopenharmony_ci    CredentialCondition condition = {};
681094332d3Sopenharmony_ci    SetCredentialConditionAuthType(&condition, authType);
682094332d3Sopenharmony_ci    EXPECT_EQ(condition.authType, authType);
683094332d3Sopenharmony_ci    EXPECT_EQ(condition.conditionFactor & CREDENTIAL_CONDITION_AUTH_TYPE, CREDENTIAL_CONDITION_AUTH_TYPE);
684094332d3Sopenharmony_ci}
685094332d3Sopenharmony_ci
686094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestSetCredentialConditionExecutorSensorHint, TestSize.Level0)
687094332d3Sopenharmony_ci{
688094332d3Sopenharmony_ci    constexpr uint32_t executorSensorHint = 20;
689094332d3Sopenharmony_ci    SetCredentialConditionExecutorSensorHint(nullptr, executorSensorHint);
690094332d3Sopenharmony_ci    CredentialCondition condition = {};
691094332d3Sopenharmony_ci    SetCredentialConditionExecutorSensorHint(&condition, executorSensorHint);
692094332d3Sopenharmony_ci    EXPECT_EQ(condition.executorSensorHint, executorSensorHint);
693094332d3Sopenharmony_ci    EXPECT_EQ(condition.conditionFactor & CREDENTIAL_CONDITION_SENSOR_HINT, CREDENTIAL_CONDITION_SENSOR_HINT);
694094332d3Sopenharmony_ci}
695094332d3Sopenharmony_ci
696094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestSetCredentialConditionExecutorMatcher, TestSize.Level0)
697094332d3Sopenharmony_ci{
698094332d3Sopenharmony_ci    constexpr uint32_t executorMatcher = 20;
699094332d3Sopenharmony_ci    SetCredentialConditionExecutorMatcher(nullptr, executorMatcher);
700094332d3Sopenharmony_ci    CredentialCondition condition = {};
701094332d3Sopenharmony_ci    SetCredentialConditionExecutorMatcher(&condition, executorMatcher);
702094332d3Sopenharmony_ci    EXPECT_EQ(condition.executorMatcher, executorMatcher);
703094332d3Sopenharmony_ci    EXPECT_EQ(condition.conditionFactor & CREDENTIAL_CONDITION_EXECUTOR_MATCHER, CREDENTIAL_CONDITION_EXECUTOR_MATCHER);
704094332d3Sopenharmony_ci}
705094332d3Sopenharmony_ci
706094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestSetCredentialConditionUserId, TestSize.Level0)
707094332d3Sopenharmony_ci{
708094332d3Sopenharmony_ci    constexpr int32_t userId = 50;
709094332d3Sopenharmony_ci    SetCredentialConditionUserId(nullptr, userId);
710094332d3Sopenharmony_ci    CredentialCondition condition = {};
711094332d3Sopenharmony_ci    SetCredentialConditionUserId(&condition, userId);
712094332d3Sopenharmony_ci    EXPECT_EQ(condition.userId, userId);
713094332d3Sopenharmony_ci    EXPECT_EQ(condition.conditionFactor & CREDENTIAL_CONDITION_USER_ID, CREDENTIAL_CONDITION_USER_ID);
714094332d3Sopenharmony_ci}
715094332d3Sopenharmony_ci
716094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetEnrolledState_001, TestSize.Level0)
717094332d3Sopenharmony_ci{
718094332d3Sopenharmony_ci    constexpr int32_t userId = 1;
719094332d3Sopenharmony_ci    constexpr uint32_t authType = 1;
720094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
721094332d3Sopenharmony_ci    UserInfo userInfo = {};
722094332d3Sopenharmony_ci    userInfo.userId = userId;
723094332d3Sopenharmony_ci    userInfo.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
724094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
725094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
726094332d3Sopenharmony_ci
727094332d3Sopenharmony_ci    EnrolledStateHal enrolledState = {};
728094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledState(0, authType, &enrolledState), RESULT_NOT_ENROLLED);
729094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledState(userId, authType, &enrolledState), RESULT_NOT_ENROLLED);
730094332d3Sopenharmony_ci}
731094332d3Sopenharmony_ci
732094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetEnrolledState_002, TestSize.Level0)
733094332d3Sopenharmony_ci{
734094332d3Sopenharmony_ci    constexpr static int32_t expectCredentialCount = 2;
735094332d3Sopenharmony_ci    constexpr static int32_t testEnrolledId = 2;
736094332d3Sopenharmony_ci    constexpr int32_t userId = 1;
737094332d3Sopenharmony_ci    constexpr uint32_t authType = 1;
738094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
739094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
740094332d3Sopenharmony_ci
741094332d3Sopenharmony_ci    UserInfo userInfo = {};
742094332d3Sopenharmony_ci    userInfo.userId = userId;
743094332d3Sopenharmony_ci    userInfo.enrolledInfoList = CreateLinkedList(DestroyEnrolledNode);
744094332d3Sopenharmony_ci    EnrolledInfoHal enrolledInfo = {1, testEnrolledId};
745094332d3Sopenharmony_ci    userInfo.enrolledInfoList->insert(userInfo.enrolledInfoList, static_cast<void *>(&enrolledInfo));
746094332d3Sopenharmony_ci
747094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
748094332d3Sopenharmony_ci    CredentialInfoHal credentialInfo = {0, 0, 1, 0, 0, 0};
749094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(&credentialInfo));
750094332d3Sopenharmony_ci    CredentialInfoHal credentialInfo1 = {1, 1, 1, 1, 1, 1};
751094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(&credentialInfo1));
752094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
753094332d3Sopenharmony_ci
754094332d3Sopenharmony_ci    EnrolledStateHal enrolledState = {};
755094332d3Sopenharmony_ci    EXPECT_EQ(GetEnrolledState(userId, authType, &enrolledState), RESULT_SUCCESS);
756094332d3Sopenharmony_ci    EXPECT_EQ(enrolledState.credentialDigest, testEnrolledId);
757094332d3Sopenharmony_ci    EXPECT_EQ(enrolledState.credentialCount, expectCredentialCount);
758094332d3Sopenharmony_ci}
759094332d3Sopenharmony_ci
760094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestRemoveCachePin_001, TestSize.Level0)
761094332d3Sopenharmony_ci{
762094332d3Sopenharmony_ci    constexpr int32_t userId = 1;
763094332d3Sopenharmony_ci    UserInfo userInfo = {};
764094332d3Sopenharmony_ci    userInfo.userId = userId;
765094332d3Sopenharmony_ci    bool removed = false;
766094332d3Sopenharmony_ci
767094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
768094332d3Sopenharmony_ci    CredentialInfoHal credentialInfo = {0, 0, 2, 2, 3, 4};
769094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(&credentialInfo));
770094332d3Sopenharmony_ci    CredentialInfoHal credentialInfo1 = {1, 1, 1, 1, 1, 1};
771094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(&credentialInfo1));
772094332d3Sopenharmony_ci
773094332d3Sopenharmony_ci    RemoveCachePin(&userInfo, &removed);
774094332d3Sopenharmony_ci    EXPECT_EQ(removed, false);
775094332d3Sopenharmony_ci}
776094332d3Sopenharmony_ci
777094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestSaveGlobalConfigParam, TestSize.Level0)
778094332d3Sopenharmony_ci{
779094332d3Sopenharmony_ci    memset_s(g_globalConfigArray, sizeof(GlobalConfigInfo) * MAX_GLOBAL_CONFIG_NUM, 0,
780094332d3Sopenharmony_ci        sizeof(GlobalConfigInfo) * MAX_GLOBAL_CONFIG_NUM);
781094332d3Sopenharmony_ci    EXPECT_EQ(SaveGlobalConfigParam(nullptr), RESULT_BAD_PARAM);
782094332d3Sopenharmony_ci
783094332d3Sopenharmony_ci    GlobalConfigParamHal param = {};
784094332d3Sopenharmony_ci    param.type = ENABLE_STATUS;
785094332d3Sopenharmony_ci    param.value.enableStatus = true;
786094332d3Sopenharmony_ci    param.userIdNum = 1;
787094332d3Sopenharmony_ci    param.userIds[0] = 1;
788094332d3Sopenharmony_ci    param.authTypeNum = 1;
789094332d3Sopenharmony_ci    param.authTypes[0] = 1;
790094332d3Sopenharmony_ci    EXPECT_EQ(SaveGlobalConfigParam(&param), RESULT_SUCCESS);
791094332d3Sopenharmony_ci    EXPECT_EQ(SaveGlobalConfigParam(&param), RESULT_SUCCESS);
792094332d3Sopenharmony_ci    param.authTypeNum = MAX_AUTH_TYPE_LEN + 1;
793094332d3Sopenharmony_ci    EXPECT_EQ(SaveGlobalConfigParam(&param), RESULT_BAD_PARAM);
794094332d3Sopenharmony_ci    param.userIdNum = MAX_USER + 1;
795094332d3Sopenharmony_ci    EXPECT_EQ(SaveGlobalConfigParam(&param), RESULT_BAD_PARAM);
796094332d3Sopenharmony_ci
797094332d3Sopenharmony_ci    GlobalConfigParamHal param1 = {};
798094332d3Sopenharmony_ci    param1.type = PIN_EXPIRED_PERIOD;
799094332d3Sopenharmony_ci    param1.value.pinExpiredPeriod = 1;
800094332d3Sopenharmony_ci    EXPECT_EQ(SaveGlobalConfigParam(&param1), RESULT_BAD_PARAM);
801094332d3Sopenharmony_ci
802094332d3Sopenharmony_ci    GlobalConfigParamHal param2 = {};
803094332d3Sopenharmony_ci    EXPECT_EQ(SaveGlobalConfigParam(&param2), RESULT_BAD_PARAM);
804094332d3Sopenharmony_ci}
805094332d3Sopenharmony_ci
806094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetPinExpiredInfo, TestSize.Level0)
807094332d3Sopenharmony_ci{
808094332d3Sopenharmony_ci    int32_t userId = 1;
809094332d3Sopenharmony_ci    EXPECT_EQ(GetPinExpiredInfo(userId, nullptr), RESULT_BAD_PARAM);
810094332d3Sopenharmony_ci
811094332d3Sopenharmony_ci    PinExpiredInfo info = {};
812094332d3Sopenharmony_ci    EXPECT_EQ(GetPinExpiredInfo(userId, &info), RESULT_SUCCESS);
813094332d3Sopenharmony_ci
814094332d3Sopenharmony_ci    g_globalConfigArray[0].type = PIN_EXPIRED_PERIOD;
815094332d3Sopenharmony_ci    g_globalConfigArray[0].value.pinExpiredPeriod = 1;
816094332d3Sopenharmony_ci    g_currentUser = nullptr;
817094332d3Sopenharmony_ci    g_userInfoList = CreateLinkedList(DestroyUserInfoNode);
818094332d3Sopenharmony_ci    EXPECT_NE(g_userInfoList, nullptr);
819094332d3Sopenharmony_ci    UserInfo userInfo = {};
820094332d3Sopenharmony_ci    userInfo.userId = 1;
821094332d3Sopenharmony_ci    userInfo.credentialInfoList = CreateLinkedList(DestroyCredentialNode);
822094332d3Sopenharmony_ci    CredentialInfoHal credentialInfo1 = {1, 1, 1, 1, 0, 1, 0};
823094332d3Sopenharmony_ci    userInfo.credentialInfoList->insert(userInfo.credentialInfoList, static_cast<void *>(&credentialInfo1));
824094332d3Sopenharmony_ci    g_userInfoList->insert(g_userInfoList, static_cast<void *>(&userInfo));
825094332d3Sopenharmony_ci    EXPECT_EQ(GetPinExpiredInfo(userId, &info), RESULT_SUCCESS);
826094332d3Sopenharmony_ci}
827094332d3Sopenharmony_ci
828094332d3Sopenharmony_ciHWTEST_F(IdmDatabaseTest, TestGetEnableStatus, TestSize.Level0)
829094332d3Sopenharmony_ci{
830094332d3Sopenharmony_ci    int32_t userId = 1;
831094332d3Sopenharmony_ci    uint32_t authType = 1;
832094332d3Sopenharmony_ci    EXPECT_EQ(GetEnableStatus(userId, authType), true);
833094332d3Sopenharmony_ci
834094332d3Sopenharmony_ci    g_globalConfigArray[0].type = PIN_EXPIRED_PERIOD;
835094332d3Sopenharmony_ci    g_globalConfigArray[0].value.pinExpiredPeriod = 1;
836094332d3Sopenharmony_ci    EXPECT_EQ(GetEnableStatus(userId, authType), true);
837094332d3Sopenharmony_ci
838094332d3Sopenharmony_ci    g_globalConfigArray[0].type = ENABLE_STATUS;
839094332d3Sopenharmony_ci    g_globalConfigArray[0].value.enableStatus = false;
840094332d3Sopenharmony_ci    g_globalConfigArray[0].authType = 0;
841094332d3Sopenharmony_ci    g_globalConfigArray[0].userIds[0] = 0;
842094332d3Sopenharmony_ci    EXPECT_EQ(GetEnableStatus(userId, authType), true);
843094332d3Sopenharmony_ci
844094332d3Sopenharmony_ci    g_globalConfigArray[0].authType = 1;
845094332d3Sopenharmony_ci    EXPECT_EQ(GetEnableStatus(userId, authType), false);
846094332d3Sopenharmony_ci}
847094332d3Sopenharmony_ci} // namespace UserAuth
848094332d3Sopenharmony_ci} // namespace UserIam
849094332d3Sopenharmony_ci} // namespace OHOS
850