1 /*
2 * Copyright (c) 2021-2022 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 "face_auth_driver_hdi.h"
22 #include "mock_face_auth_interface_adapter.h"
23 #include "mock_iexecutor.h"
24 #include "mock_iface_auth_interface.h"
25
26 #define LOG_LABEL OHOS::UserIam::Common::LABEL_FACE_AUTH_SA
27
28 using namespace testing;
29 using namespace testing::ext;
30 using namespace OHOS::HDI::FaceAuth::V1_0;
31 using namespace OHOS::UserIam::Common;
32
33 namespace OHOS {
34 namespace UserIam {
35 namespace FaceAuth {
36 class FaceAuthDriverHdiUnitTest : public testing::Test {
37 public:
38 static void SetUpTestCase();
39 static void TearDownTestCase();
40 void SetUp();
41 void TearDown();
42 };
43
SetUpTestCase()44 void FaceAuthDriverHdiUnitTest::SetUpTestCase()
45 {
46 }
47
TearDownTestCase()48 void FaceAuthDriverHdiUnitTest::TearDownTestCase()
49 {
50 }
51
SetUp()52 void FaceAuthDriverHdiUnitTest::SetUp()
53 {
54 }
55
TearDown()56 void FaceAuthDriverHdiUnitTest::TearDown()
57 {
58 }
59
60 HWTEST_F(FaceAuthDriverHdiUnitTest, FaceAuthDriverHdi_GetExecutorListTest_001, TestSize.Level0)
61 {
62 FaceAuthDriverHdi driverHdi(nullptr);
63 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
64 driverHdi.GetExecutorList(executorList);
65 EXPECT_TRUE(executorList.size() == 0);
66 }
67
68 HWTEST_F(FaceAuthDriverHdiUnitTest, FaceAuthDriverHdi_GetExecutorListTest_002, TestSize.Level0)
69 {
70 auto adapter = MakeShared<MockFaceAuthInterfaceAdapter>();
71 ASSERT_TRUE(adapter != nullptr);
72 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(nullptr));
73
74 FaceAuthDriverHdi driverHdi(adapter);
75 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
76 driverHdi.GetExecutorList(executorList);
77 EXPECT_TRUE(executorList.size() == 0);
78 }
79
80 HWTEST_F(FaceAuthDriverHdiUnitTest, FaceAuthDriverHdi_GetExecutorListTest_003, TestSize.Level0)
81 {
82 sptr<MockIFaceAuthInterface> interface = new (std::nothrow) MockIFaceAuthInterface();
83 ASSERT_TRUE(interface != nullptr);
84 EXPECT_CALL(*interface, GetExecutorList(_)).Times(Exactly(1));
85
86 auto adapter = MakeShared<MockFaceAuthInterfaceAdapter>();
87 ASSERT_TRUE(adapter != nullptr);
88 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
89
90 FaceAuthDriverHdi driverHdi(adapter);
91 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
92 driverHdi.GetExecutorList(executorList);
93 EXPECT_TRUE(executorList.size() == 0);
94 }
95
96 HWTEST_F(FaceAuthDriverHdiUnitTest, FaceAuthDriverHdi_GetExecutorListTest_004, TestSize.Level0)
97 {
98 sptr<MockIFaceAuthInterface> interface = new (std::nothrow) MockIFaceAuthInterface();
99 ASSERT_TRUE(interface != nullptr);
__anon3e0a5fd40102(std::vector<sptr<IExecutor>> &list) 100 EXPECT_CALL(*interface, GetExecutorList(_)).Times(Exactly(1)).WillOnce([](std::vector<sptr<IExecutor>> &list) {
101 return static_cast<int32_t>(HDF_FAILURE);
102 });
103
104 auto adapter = MakeShared<MockFaceAuthInterfaceAdapter>();
105 ASSERT_TRUE(adapter != nullptr);
106 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
107
108 FaceAuthDriverHdi driverHdi(adapter);
109 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
110 driverHdi.GetExecutorList(executorList);
111 EXPECT_TRUE(executorList.size() == 0);
112 }
113
114 HWTEST_F(FaceAuthDriverHdiUnitTest, FaceAuthDriverHdi_GetExecutorListTest_005, TestSize.Level0)
115 {
116 sptr<MockIFaceAuthInterface> interface = new (std::nothrow) MockIFaceAuthInterface();
117 ASSERT_TRUE(interface != nullptr);
__anon3e0a5fd40202(std::vector<sptr<IExecutor>> &list) 118 EXPECT_CALL(*interface, GetExecutorList(_)).Times(Exactly(1)).WillOnce([](std::vector<sptr<IExecutor>> &list) {
119 return static_cast<int32_t>(HDF_SUCCESS);
120 });
121
122 auto adapter = MakeShared<MockFaceAuthInterfaceAdapter>();
123 ASSERT_TRUE(adapter != nullptr);
124 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
125
126 FaceAuthDriverHdi driverHdi(adapter);
127 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
128 driverHdi.GetExecutorList(executorList);
129 EXPECT_TRUE(executorList.size() == 0);
130 }
131
132 HWTEST_F(FaceAuthDriverHdiUnitTest, FaceAuthDriverHdi_GetExecutorListTest_006, TestSize.Level0)
133 {
134 sptr<MockIFaceAuthInterface> interface = new (std::nothrow) MockIFaceAuthInterface();
135 ASSERT_TRUE(interface != nullptr);
__anon3e0a5fd40302(std::vector<sptr<IExecutor>> &list) 136 EXPECT_CALL(*interface, GetExecutorList(_)).Times(Exactly(1)).WillOnce([](std::vector<sptr<IExecutor>> &list) {
137 auto executor = sptr<IExecutor>(new (std::nothrow) MockIExecutor());
138 EXPECT_TRUE(executor != nullptr);
139 list.push_back(executor);
140 return static_cast<int32_t>(HDF_SUCCESS);
141 });
142
143 auto adapter = MakeShared<MockFaceAuthInterfaceAdapter>();
144 ASSERT_TRUE(adapter != nullptr);
145 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
146
147 FaceAuthDriverHdi driverHdi(adapter);
148 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
149 driverHdi.GetExecutorList(executorList);
150 EXPECT_TRUE(executorList.size() == 1);
151 }
152
153 HWTEST_F(FaceAuthDriverHdiUnitTest, FaceAuthDriverHdi_GetExecutorListTest_007, TestSize.Level0)
154 {
155 sptr<MockIFaceAuthInterface> interface = new (std::nothrow) MockIFaceAuthInterface();
156 ASSERT_TRUE(interface != nullptr);
__anon3e0a5fd40402(std::vector<sptr<IExecutor>> &list) 157 EXPECT_CALL(*interface, GetExecutorList(_)).Times(Exactly(1)).WillOnce([](std::vector<sptr<IExecutor>> &list) {
158 list.push_back(sptr<IExecutor>(nullptr));
159 auto executor = sptr<IExecutor>(new (std::nothrow) MockIExecutor());
160 EXPECT_TRUE(executor != nullptr);
161 list.push_back(executor);
162 list.push_back(sptr<IExecutor>(nullptr));
163 executor = sptr<IExecutor>(new (std::nothrow) MockIExecutor());
164 EXPECT_TRUE(executor != nullptr);
165 list.push_back(executor);
166 return static_cast<int32_t>(HDF_SUCCESS);
167 });
168
169 auto adapter = MakeShared<MockFaceAuthInterfaceAdapter>();
170 ASSERT_TRUE(adapter != nullptr);
171 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
172
173 FaceAuthDriverHdi driverHdi(adapter);
174 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
175 driverHdi.GetExecutorList(executorList);
176 EXPECT_TRUE(executorList.size() == 2);
177 }
178
179 HWTEST_F(FaceAuthDriverHdiUnitTest, FaceAuthDriverHdi_GetExecutorListTest_008, TestSize.Level0)
180 {
181 sptr<MockIFaceAuthInterface> interface = new (std::nothrow) MockIFaceAuthInterface();
182 ASSERT_TRUE(interface != nullptr);
__anon3e0a5fd40502(std::vector<sptr<IExecutor>> &list) 183 EXPECT_CALL(*interface, GetExecutorList(_)).Times(Exactly(1)).WillOnce([](std::vector<sptr<IExecutor>> &list) {
184 auto executor = sptr<IExecutor>(new (std::nothrow) MockIExecutor());
185 EXPECT_TRUE(executor != nullptr);
186 list.push_back(executor);
187 return static_cast<int32_t>(HDF_FAILURE);
188 });
189
190 auto adapter = MakeShared<MockFaceAuthInterfaceAdapter>();
191 ASSERT_TRUE(adapter != nullptr);
192 EXPECT_CALL(*adapter, Get()).Times(Exactly(1)).WillOnce(Return(interface));
193
194 FaceAuthDriverHdi driverHdi(adapter);
195 std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> executorList;
196 driverHdi.GetExecutorList(executorList);
197 EXPECT_TRUE(executorList.size() == 0);
198 }
199 } // namespace FaceAuth
200 } // namespace UserIam
201 } // namespace OHOS
202