1 /*
2 * Copyright (c) 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 <gmock/gmock.h>
17 #include "account_iam_client.h"
18 #include "account_log_wrapper.h"
19
20 namespace OHOS {
21 namespace AccountTest {
22 namespace {
23 constexpr int32_t TEST_USER_ID = 200;
24 constexpr uint64_t TEST_CONTEXT_ID = 122;
25 constexpr uint64_t TEST_CREDENTIAL_ID = 0;
26 const std::vector<uint8_t> TEST_CHALLENGE = {1, 2, 3, 4};
27 }
28
29 using namespace testing;
30 using namespace testing::ext;
31 using namespace OHOS::AccountSA;
32 using namespace OHOS::UserIam::UserAuth;
33
34 class AccountIAMProxyMockTest : public testing::Test {
35 public:
36 static void SetUpTestCase(void);
37 static void TearDownTestCase(void);
38 void SetUp(void) override;
39 void TearDown(void) override;
40 };
41
SetUpTestCase(void)42 void AccountIAMProxyMockTest::SetUpTestCase(void)
43 {}
44
TearDownTestCase(void)45 void AccountIAMProxyMockTest::TearDownTestCase(void)
46 {}
47
SetUp(void)48 void AccountIAMProxyMockTest::SetUp(void) __attribute__((no_sanitize("cfi")))
49 {
50 testing::UnitTest *test = testing::UnitTest::GetInstance();
51 ASSERT_NE(test, nullptr);
52 const testing::TestInfo *testinfo = test->current_test_info();
53 ASSERT_NE(testinfo, nullptr);
54 string testCaseName = string(testinfo->name());
55 ACCOUNT_LOGI("[SetUp] %{public}s start", testCaseName.c_str());
56 }
57
TearDown(void)58 void AccountIAMProxyMockTest::TearDown(void)
59 {}
60
61 class IDMCallbackMockTest final : public AccountSA::IDMCallback {
62 public:
OnResult(int32_t result,const AccountSA::Attributes & extraInfo)63 void OnResult(int32_t result, const AccountSA::Attributes &extraInfo)
64 {
65 result_ = result;
66 }
OnAcquireInfo(int32_t module,uint32_t acquireInfo,const Attributes & extraInfo)67 void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) {}
68 int32_t result_;
69 };
70
71 class GetSetPropCallbackMockTest final : public AccountSA::GetSetPropCallback {
72 public:
OnResult(int32_t result,const AccountSA::Attributes & extraInfo)73 void OnResult(int32_t result, const AccountSA::Attributes &extraInfo)
74 {
75 result_ = result;
76 }
77 int32_t result_;
78 };
79
80 class GetCredCallbackMockTest final : public AccountSA::GetCredInfoCallback {
81 public:
OnCredentialInfo(int32_t result,const std::vector<CredentialInfo> & infoList)82 void OnCredentialInfo(int32_t result, const std::vector<CredentialInfo> &infoList)
83 {
84 result_ = result;
85 }
86 int32_t result_;
87 };
88
89 class PreRemoteAuthCallbackMockTest final : public AccountSA::PreRemoteAuthCallback {
90 public:
OnResult(int32_t result)91 void OnResult(int32_t result) override
92 {
93 result_ = result;
94 }
95 int32_t result_;
96 };
97
98 /**
99 * @tc.name: AccountIAMClient_OpenSession_0100
100 * @tc.desc: Test func with proxy is nullptr.
101 * @tc.type: FUNC
102 * @tc.require: issueI5N90O
103 */
104 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_OpenSession_0100, TestSize.Level3)
105 {
106 std::vector<uint8_t> challenge;
107 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, AccountIAMClient::GetInstance().OpenSession(TEST_USER_ID, challenge));
108 }
109
110 /**
111 * @tc.name: AccountIAMClient_CloseSession_0100
112 * @tc.desc: Test func with proxy is nullptr.
113 * @tc.type: FUNC
114 * @tc.require: issueI5N90O
115 */
116 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_CloseSession_0100, TestSize.Level3)
117 {
118 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, AccountIAMClient::GetInstance().CloseSession(TEST_USER_ID));
119 }
120
121 /**
122 * @tc.name: AccountIAMClient_AddCredential_0100
123 * @tc.desc: Test func with proxy is nullptr.
124 * @tc.type: FUNC
125 * @tc.require: issueI5N90O
126 */
127 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_AddCredential_0100, TestSize.Level3)
128 {
129 CredentialParameters testPara = {};
130 auto testCallback = std::make_shared<IDMCallbackMockTest>();
131 ASSERT_NE(testCallback, nullptr);
132 AccountIAMClient::GetInstance().AddCredential(TEST_USER_ID, testPara, testCallback);
133 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
134 }
135
136 /**
137 * @tc.name: AccountIAMClient_UpdateCredential_0100
138 * @tc.desc: Test func with proxy is nullptr.
139 * @tc.type: FUNC
140 * @tc.require: issueI5N90O
141 */
142 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_UpdateCredential_0100, TestSize.Level3)
143 {
144 CredentialParameters testPara = {};
145 auto testCallback = std::make_shared<IDMCallbackMockTest>();
146 ASSERT_NE(testCallback, nullptr);
147 AccountIAMClient::GetInstance().UpdateCredential(TEST_USER_ID, testPara, testCallback);
148 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
149 }
150
151 /**
152 * @tc.name: AccountIAMClient_Cancel_0100
153 * @tc.desc: Test func with proxy is nullptr.
154 * @tc.type: FUNC
155 * @tc.require: issueI5N90O
156 */
157 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_Cancel_0100, TestSize.Level3)
158 {
159 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, AccountIAMClient::GetInstance().Cancel(TEST_USER_ID));
160 }
161
162 /**
163 * @tc.name: AccountIAMClient_DelCred_0100
164 * @tc.desc: Test func with proxy is nullptr.
165 * @tc.type: FUNC
166 * @tc.require: issueI5N90O
167 */
168 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_DelCred_0100, TestSize.Level3)
169 {
170 uint64_t testCredentialId = 111;
171 std::vector<uint8_t> testAuthToken = {1, 2, 3, 4};
172 auto testCallback = std::make_shared<IDMCallbackMockTest>();
173 ASSERT_NE(testCallback, nullptr);
174 AccountIAMClient::GetInstance().DelCred(TEST_USER_ID, testCredentialId, testAuthToken, testCallback);
175 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
176 }
177
178 /**
179 * @tc.name: AccountIAMClient_DelUser_0100
180 * @tc.desc: Test func with proxy is nullptr.
181 * @tc.type: FUNC
182 * @tc.require: issueI5N90O
183 */
184 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_DelUser_0100, TestSize.Level3)
185 {
186 std::vector<uint8_t> testAuthToken = {1, 2, 3, 4};
187 auto testCallback = std::make_shared<IDMCallbackMockTest>();
188 ASSERT_NE(testCallback, nullptr);
189 AccountIAMClient::GetInstance().DelUser(TEST_USER_ID, testAuthToken, testCallback);
190 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
191 }
192
193 /**
194 * @tc.name: AccountIAMClient_GetCredentialInfo_0100
195 * @tc.desc: Test func with callback is nullptr.
196 * @tc.type: FUNC
197 * @tc.require:
198 */
199 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetCredentialInfo_0100, TestSize.Level3)
200 {
201 ASSERT_EQ(ERR_ACCOUNT_COMMON_NULL_PTR_ERROR,
202 AccountIAMClient::GetInstance().GetCredentialInfo(TEST_USER_ID, AuthType::PIN, nullptr));
203 }
204
205 /**
206 * @tc.name: AccountIAMClient_GetCredentialInfo_0200
207 * @tc.desc: Test func with proxy is nullptr.
208 * @tc.type: FUNC
209 * @tc.require:
210 */
211 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetCredentialInfo_0200, TestSize.Level3)
212 {
213 std::shared_ptr<GetCredCallbackMockTest> testCallbcak = std::make_shared<GetCredCallbackMockTest>();
214 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY,
215 AccountIAMClient::GetInstance().GetCredentialInfo(TEST_USER_ID, AuthType::PIN, testCallbcak));
216 }
217
218 /**
219 * @tc.name: AccountIAMClient_AuthUser_0100
220 * @tc.desc: Test func with proxy is nullptr.
221 * @tc.type: FUNC
222 * @tc.require: issueI5N90O
223 */
224 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_AuthUser_0100, TestSize.Level3)
225 {
226 SetPropertyRequest testRequest = {};
227 auto testCallback = std::make_shared<IDMCallbackMockTest>();
228 ASSERT_NE(testCallback, nullptr);
229 AuthOptions authOptions;
230 authOptions.accountId = TEST_USER_ID;
231 ASSERT_EQ(static_cast<uint64_t>(0), AccountIAMClient::GetInstance().AuthUser(
232 authOptions, TEST_CHALLENGE, AuthType::PIN, AuthTrustLevel::ATL1, testCallback));
233 }
234
235 /**
236 * @tc.name: AccountIAMClient_CancelAuth_0100
237 * @tc.desc: Test func with proxy is nullptr.
238 * @tc.type: FUNC
239 * @tc.require: issueI5N90O
240 */
241 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_CancelAuth_0100, TestSize.Level3)
242 {
243 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, AccountIAMClient::GetInstance().CancelAuth(TEST_CONTEXT_ID));
244 }
245
246 /**
247 * @tc.name: AccountIAMClient_GetAvailableStatus_0100
248 * @tc.desc: Test func with proxy is nullptr.
249 * @tc.type: FUNC
250 * @tc.require: issueI5N90O
251 */
252 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetAvailableStatus_0100, TestSize.Level3)
253 {
254 int32_t status;
255 int32_t ret = AccountIAMClient::GetInstance().GetAvailableStatus(AuthType::FACE, AuthTrustLevel::ATL1, status);
256 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, ret);
257 }
258
259 /**
260 * @tc.name: AccountIAMClient_GetProperty_0100
261 * @tc.desc: Test func with proxy is nullptr.
262 * @tc.type: FUNC
263 * @tc.require: issueI5N90O
264 */
265 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetProperty_0100, TestSize.Level3)
266 {
267 GetPropertyRequest testRequest = {};
268 auto testCallback = std::make_shared<GetSetPropCallbackMockTest>();
269 ASSERT_NE(testCallback, nullptr);
270 AccountIAMClient::GetInstance().GetProperty(TEST_USER_ID, testRequest, testCallback);
271 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
272 }
273
274 /**
275 * @tc.name: AccountIAMClient_GetPropertyById_0100
276 * @tc.desc: Test GetPropertyByCredentialId func with proxy is nullptr.
277 * @tc.type: FUNC
278 * @tc.require:
279 */
280 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetPropertyById_0100, TestSize.Level3)
281 {
282 auto testCallback = std::make_shared<GetSetPropCallbackMockTest>();
283 ASSERT_NE(testCallback, nullptr);
284 std::vector<Attributes::AttributeKey> keys { Attributes::AttributeKey::ATTR_PIN_SUB_TYPE };
285 AccountIAMClient::GetInstance().GetPropertyByCredentialId(TEST_CREDENTIAL_ID, keys, testCallback);
286 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
287 }
288
289 /**
290 * @tc.name: AccountIAMClient_SetProperty_0100
291 * @tc.desc: Test func with proxy is nullptr.
292 * @tc.type: FUNC
293 * @tc.require: issueI5N90O
294 */
295 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_SetProperty_0100, TestSize.Level3)
296 {
297 SetPropertyRequest testRequest = {};
298 auto testCallback = std::make_shared<GetSetPropCallbackMockTest>();
299 ASSERT_NE(testCallback, nullptr);
300 AccountIAMClient::GetInstance().SetProperty(TEST_USER_ID, testRequest, testCallback);
301 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
302 }
303
304 /**
305 * @tc.name: AccountIAMClient_GetAccountState_0100
306 * @tc.desc: Test func with proxy is nullptr.
307 * @tc.type: FUNC
308 * @tc.require: issueI5N90O
309 */
310 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetAccountState_0100, TestSize.Level3)
311 {
312 EXPECT_EQ(IDLE, AccountIAMClient::GetInstance().GetAccountState(TEST_USER_ID));
313 }
314
315 /**
316 * @tc.name: AccountIAMClient_PrepareRemoteAuth_0100
317 * @tc.desc: Test func PrepareRemoteAuth.
318 * @tc.type: FUNC
319 * @tc.require:
320 */
321 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_PrepareRemoteAuth_0100, TestSize.Level3)
322 {
323 auto testCallback = std::make_shared<PreRemoteAuthCallbackMockTest>();
324 ASSERT_NE(testCallback, nullptr);
325 AccountIAMClient::GetInstance().PrepareRemoteAuth("testString", testCallback);
326 EXPECT_NE(testCallback->result_, 0);
327 }
328 } // namespace AccountTest
329 } // namespace OHOS