1 /*
2 * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "gtest/gtest.h"
17
18 #include "iam_logger.h"
19 #include "iam_ptr.h"
20
21 #include "fingerprint_auth_driver_hdi.h"
22 #include "mock_fingerprint_auth_interface_adapter.h"
23 #include "mock_iall_in_one_executor.h"
24 #include "mock_ifingerprint_auth_interface.h"
25
26 #define LOG_TAG "FINGERPRINT_AUTH_SA"
27
28 using namespace testing;
29 using namespace testing::ext;
30 using namespace OHOS::UserIam::Common;
31
32 namespace OHOS {
33 namespace UserIam {
34 namespace FingerprintAuth {
35 class FingerprintAuthDriverHdiUnitTest : public testing::Test {
36 public:
37 static void SetUpTestCase();
38 static void TearDownTestCase();
39 void SetUp();
40 void TearDown();
41 };
42
SetUpTestCase()43 void FingerprintAuthDriverHdiUnitTest::SetUpTestCase()
44 {
45 }
46
TearDownTestCase()47 void FingerprintAuthDriverHdiUnitTest::TearDownTestCase()
48 {
49 }
50
SetUp()51 void FingerprintAuthDriverHdiUnitTest::SetUp()
52 {
53 }
54
TearDown()55 void FingerprintAuthDriverHdiUnitTest::TearDown()
56 {
57 }
58
59 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_GetExecutorListTest_001, TestSize.Level0)
60 {
61 FingerprintAuthDriverHdi driverHdi(nullptr);
62 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
63 driverHdi.GetExecutorList(executorList);
64 EXPECT_TRUE(executorList.size() == 0);
65 }
66
67 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_GetExecutorListTest_002, TestSize.Level0)
68 {
69 auto adapter = MakeShared<MockFingerprintAuthInterfaceAdapter>();
70 ASSERT_TRUE(adapter != nullptr);
71 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(nullptr));
72
73 FingerprintAuthDriverHdi driverHdi(adapter);
74 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
75 driverHdi.GetExecutorList(executorList);
76 EXPECT_TRUE(executorList.size() == 0);
77 }
78
79 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_GetExecutorListTest_003, TestSize.Level0)
80 {
81 sptr<MockIFingerprintAuthInterface> interface(new (std::nothrow) MockIFingerprintAuthInterface());
82 ASSERT_TRUE(interface != nullptr);
83 EXPECT_CALL(*interface, GetExecutorList(_)).Times(Exactly(1));
84
85 auto adapter = MakeShared<MockFingerprintAuthInterfaceAdapter>();
86 ASSERT_TRUE(adapter != nullptr);
87 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
88
89 FingerprintAuthDriverHdi driverHdi(adapter);
90 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
91 driverHdi.GetExecutorList(executorList);
92 EXPECT_TRUE(executorList.size() == 0);
93 }
94
95 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_GetExecutorListTest_004, TestSize.Level0)
96 {
97 sptr<MockIFingerprintAuthInterface> interface(new (std::nothrow) MockIFingerprintAuthInterface());
98 ASSERT_TRUE(interface != nullptr);
99 EXPECT_CALL(*interface, GetExecutorList(_))
100 .Times(Exactly(1))
__anon2055601d0102(std::vector<sptr<IAllInOneExecutor>> &list) 101 .WillOnce([](std::vector<sptr<IAllInOneExecutor>> &list) { return static_cast<int32_t>(HDF_FAILURE); });
102
103 auto adapter = MakeShared<MockFingerprintAuthInterfaceAdapter>();
104 ASSERT_TRUE(adapter != nullptr);
105 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
106
107 FingerprintAuthDriverHdi driverHdi(adapter);
108 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
109 driverHdi.GetExecutorList(executorList);
110 EXPECT_TRUE(executorList.size() == 0);
111 }
112
113 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_GetExecutorListTest_005, TestSize.Level0)
114 {
115 sptr<MockIFingerprintAuthInterface> interface(new (std::nothrow) MockIFingerprintAuthInterface());
116 ASSERT_TRUE(interface != nullptr);
117 EXPECT_CALL(*interface, GetExecutorList(_))
118 .Times(Exactly(1))
__anon2055601d0202(std::vector<sptr<IAllInOneExecutor>> &list) 119 .WillOnce([](std::vector<sptr<IAllInOneExecutor>> &list) { return static_cast<int32_t>(HDF_SUCCESS); });
120
121 auto adapter = MakeShared<MockFingerprintAuthInterfaceAdapter>();
122 ASSERT_TRUE(adapter != nullptr);
123 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
124
125 FingerprintAuthDriverHdi driverHdi(adapter);
126 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
127 driverHdi.GetExecutorList(executorList);
128 EXPECT_TRUE(executorList.size() == 0);
129 }
130
131 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_GetExecutorListTest_006, TestSize.Level0)
132 {
133 sptr<MockIFingerprintAuthInterface> interface(new (std::nothrow) MockIFingerprintAuthInterface());
134 ASSERT_TRUE(interface != nullptr);
135 EXPECT_CALL(*interface, GetExecutorList(_))
136 .Times(Exactly(1))
__anon2055601d0302(std::vector<sptr<IAllInOneExecutor>> &list) 137 .WillOnce([](std::vector<sptr<IAllInOneExecutor>> &list) {
138 auto executor = sptr<IAllInOneExecutor>(new (std::nothrow) MockIAllInOneExecutor());
139 EXPECT_TRUE(executor != nullptr);
140 list.push_back(executor);
141 return static_cast<int32_t>(HDF_SUCCESS);
142 });
143
144 auto adapter = MakeShared<MockFingerprintAuthInterfaceAdapter>();
145 ASSERT_TRUE(adapter != nullptr);
146 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
147
148 FingerprintAuthDriverHdi driverHdi(adapter);
149 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
150 driverHdi.GetExecutorList(executorList);
151 EXPECT_TRUE(executorList.size() == 1);
152 }
153
154 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_GetExecutorListTest_007, TestSize.Level0)
155 {
156 sptr<MockIFingerprintAuthInterface> interface(new (std::nothrow) MockIFingerprintAuthInterface());
157 ASSERT_TRUE(interface != nullptr);
158 EXPECT_CALL(*interface, GetExecutorList(_))
159 .Times(Exactly(1))
__anon2055601d0402(std::vector<sptr<IAllInOneExecutor>> &list) 160 .WillOnce([](std::vector<sptr<IAllInOneExecutor>> &list) {
161 list.push_back(sptr<IAllInOneExecutor>(nullptr));
162 auto executor = sptr<IAllInOneExecutor>(new (std::nothrow) MockIAllInOneExecutor());
163 EXPECT_TRUE(executor != nullptr);
164 list.push_back(executor);
165 list.push_back(sptr<IAllInOneExecutor>(nullptr));
166 executor = sptr<IAllInOneExecutor>(new (std::nothrow) MockIAllInOneExecutor());
167 EXPECT_TRUE(executor != nullptr);
168 list.push_back(executor);
169 return static_cast<int32_t>(HDF_SUCCESS);
170 });
171
172 auto adapter = MakeShared<MockFingerprintAuthInterfaceAdapter>();
173 ASSERT_TRUE(adapter != nullptr);
174 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
175
176 FingerprintAuthDriverHdi driverHdi(adapter);
177 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
178 driverHdi.GetExecutorList(executorList);
179 EXPECT_TRUE(executorList.size() == 2);
180 }
181
182 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_GetExecutorListTest_008, TestSize.Level0)
183 {
184 sptr<MockIFingerprintAuthInterface> interface(new (std::nothrow) MockIFingerprintAuthInterface());
185 ASSERT_TRUE(interface != nullptr);
186 EXPECT_CALL(*interface, GetExecutorList(_))
187 .Times(Exactly(1))
__anon2055601d0502(std::vector<sptr<IAllInOneExecutor>> &list) 188 .WillOnce([](std::vector<sptr<IAllInOneExecutor>> &list) {
189 auto executor = sptr<IAllInOneExecutor>(new (std::nothrow) MockIAllInOneExecutor());
190 EXPECT_TRUE(executor != nullptr);
191 list.push_back(executor);
192 return static_cast<int32_t>(HDF_FAILURE);
193 });
194
195 auto adapter = MakeShared<MockFingerprintAuthInterfaceAdapter>();
196 ASSERT_TRUE(adapter != nullptr);
197 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
198
199 FingerprintAuthDriverHdi driverHdi(adapter);
200 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
201 driverHdi.GetExecutorList(executorList);
202 EXPECT_TRUE(executorList.size() == 0);
203 }
204
205 HWTEST_F(FingerprintAuthDriverHdiUnitTest, FingerprintAuthDriverHdi_OnHdiDisconnectTest_001, TestSize.Level0)
206 {
207 sptr<MockIFingerprintAuthInterface> interface(new (std::nothrow) MockIFingerprintAuthInterface());
208 ASSERT_TRUE(interface != nullptr);
209 EXPECT_CALL(*interface, GetExecutorList(_))
210 .Times(Exactly(1))
__anon2055601d0602(std::vector<sptr<IAllInOneExecutor>> &list) 211 .WillOnce([](std::vector<sptr<IAllInOneExecutor>> &list) {
212 auto executor = sptr<IAllInOneExecutor>(new (std::nothrow) MockIAllInOneExecutor());
213 EXPECT_TRUE(executor != nullptr);
214 list.push_back(executor);
215 return static_cast<int32_t>(HDF_SUCCESS);
216 });
217
218 auto adapter = MakeShared<MockFingerprintAuthInterfaceAdapter>();
219 ASSERT_TRUE(adapter != nullptr);
220 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
221
222 FingerprintAuthDriverHdi driverHdi(adapter);
223 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
224 driverHdi.GetExecutorList(executorList);
225 EXPECT_TRUE(executorList.size() == 1);
226 driverHdi.OnHdiDisconnect();
227 }
228 } // namespace FingerprintAuth
229 } // namespace UserIam
230 } // namespace OHOS
231