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 PreRemoteAuthCallbackMockTest final : public AccountSA::PreRemoteAuthCallback {
81 public:
OnResult(int32_t result)82 void OnResult(int32_t result) override
83 {
84 result_ = result;
85 }
86 int32_t result_;
87 };
88
89 /**
90 * @tc.name: AccountIAMClient_OpenSession_0100
91 * @tc.desc: Test func with proxy is nullptr.
92 * @tc.type: FUNC
93 * @tc.require: issueI5N90O
94 */
95 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_OpenSession_0100, TestSize.Level0)
96 {
97 std::vector<uint8_t> challenge;
98 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, AccountIAMClient::GetInstance().OpenSession(TEST_USER_ID, challenge));
99 }
100
101 /**
102 * @tc.name: AccountIAMClient_CloseSession_0100
103 * @tc.desc: Test func with proxy is nullptr.
104 * @tc.type: FUNC
105 * @tc.require: issueI5N90O
106 */
107 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_CloseSession_0100, TestSize.Level0)
108 {
109 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, AccountIAMClient::GetInstance().CloseSession(TEST_USER_ID));
110 }
111
112 /**
113 * @tc.name: AccountIAMClient_AddCredential_0100
114 * @tc.desc: Test func with proxy is nullptr.
115 * @tc.type: FUNC
116 * @tc.require: issueI5N90O
117 */
118 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_AddCredential_0100, TestSize.Level0)
119 {
120 CredentialParameters testPara = {};
121 auto testCallback = std::make_shared<IDMCallbackMockTest>();
122 ASSERT_NE(testCallback, nullptr);
123 AccountIAMClient::GetInstance().AddCredential(TEST_USER_ID, testPara, testCallback);
124 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
125 }
126
127 /**
128 * @tc.name: AccountIAMClient_UpdateCredential_0100
129 * @tc.desc: Test func with proxy is nullptr.
130 * @tc.type: FUNC
131 * @tc.require: issueI5N90O
132 */
133 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_UpdateCredential_0100, TestSize.Level0)
134 {
135 CredentialParameters testPara = {};
136 auto testCallback = std::make_shared<IDMCallbackMockTest>();
137 ASSERT_NE(testCallback, nullptr);
138 AccountIAMClient::GetInstance().UpdateCredential(TEST_USER_ID, testPara, testCallback);
139 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
140 }
141
142 /**
143 * @tc.name: AccountIAMClient_Cancel_0100
144 * @tc.desc: Test func with proxy is nullptr.
145 * @tc.type: FUNC
146 * @tc.require: issueI5N90O
147 */
148 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_Cancel_0100, TestSize.Level0)
149 {
150 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, AccountIAMClient::GetInstance().Cancel(TEST_USER_ID));
151 }
152
153 /**
154 * @tc.name: AccountIAMClient_DelCred_0100
155 * @tc.desc: Test func with proxy is nullptr.
156 * @tc.type: FUNC
157 * @tc.require: issueI5N90O
158 */
159 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_DelCred_0100, TestSize.Level0)
160 {
161 uint64_t testCredentialId = 111;
162 std::vector<uint8_t> testAuthToken = {1, 2, 3, 4};
163 auto testCallback = std::make_shared<IDMCallbackMockTest>();
164 ASSERT_NE(testCallback, nullptr);
165 AccountIAMClient::GetInstance().DelCred(TEST_USER_ID, testCredentialId, testAuthToken, testCallback);
166 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
167 }
168
169 /**
170 * @tc.name: AccountIAMClient_DelUser_0100
171 * @tc.desc: Test func with proxy is nullptr.
172 * @tc.type: FUNC
173 * @tc.require: issueI5N90O
174 */
175 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_DelUser_0100, TestSize.Level0)
176 {
177 std::vector<uint8_t> testAuthToken = {1, 2, 3, 4};
178 auto testCallback = std::make_shared<IDMCallbackMockTest>();
179 ASSERT_NE(testCallback, nullptr);
180 AccountIAMClient::GetInstance().DelUser(TEST_USER_ID, testAuthToken, testCallback);
181 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
182 }
183
184 /**
185 * @tc.name: AccountIAMClient_GetCredentialInfo_0100
186 * @tc.desc: Test func with proxy is nullptr.
187 * @tc.type: FUNC
188 * @tc.require: issueI5N90O
189 */
190 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetCredentialInfo_0100, TestSize.Level0)
191 {
192 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY,
193 AccountIAMClient::GetInstance().GetCredentialInfo(TEST_USER_ID, AuthType::PIN, nullptr));
194 }
195
196 /**
197 * @tc.name: AccountIAMClient_AuthUser_0100
198 * @tc.desc: Test func with proxy is nullptr.
199 * @tc.type: FUNC
200 * @tc.require: issueI5N90O
201 */
202 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_AuthUser_0100, TestSize.Level0)
203 {
204 SetPropertyRequest testRequest = {};
205 auto testCallback = std::make_shared<IDMCallbackMockTest>();
206 ASSERT_NE(testCallback, nullptr);
207 AuthOptions authOptions;
208 authOptions.accountId = TEST_USER_ID;
209 ASSERT_EQ(static_cast<uint64_t>(0), AccountIAMClient::GetInstance().AuthUser(
210 authOptions, TEST_CHALLENGE, AuthType::PIN, AuthTrustLevel::ATL1, testCallback));
211 }
212
213 /**
214 * @tc.name: AccountIAMClient_CancelAuth_0100
215 * @tc.desc: Test func with proxy is nullptr.
216 * @tc.type: FUNC
217 * @tc.require: issueI5N90O
218 */
219 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_CancelAuth_0100, TestSize.Level0)
220 {
221 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, AccountIAMClient::GetInstance().CancelAuth(TEST_CONTEXT_ID));
222 }
223
224 /**
225 * @tc.name: AccountIAMClient_GetAvailableStatus_0100
226 * @tc.desc: Test func with proxy is nullptr.
227 * @tc.type: FUNC
228 * @tc.require: issueI5N90O
229 */
230 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetAvailableStatus_0100, TestSize.Level0)
231 {
232 int32_t status;
233 int32_t ret = AccountIAMClient::GetInstance().GetAvailableStatus(AuthType::FACE, AuthTrustLevel::ATL1, status);
234 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, ret);
235 }
236
237 /**
238 * @tc.name: AccountIAMClient_GetProperty_0100
239 * @tc.desc: Test func with proxy is nullptr.
240 * @tc.type: FUNC
241 * @tc.require: issueI5N90O
242 */
243 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetProperty_0100, TestSize.Level0)
244 {
245 GetPropertyRequest testRequest = {};
246 auto testCallback = std::make_shared<GetSetPropCallbackMockTest>();
247 ASSERT_NE(testCallback, nullptr);
248 AccountIAMClient::GetInstance().GetProperty(TEST_USER_ID, testRequest, testCallback);
249 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
250 }
251
252 /**
253 * @tc.name: AccountIAMClient_GetPropertyById_0100
254 * @tc.desc: Test GetPropertyByCredentialId func with proxy is nullptr.
255 * @tc.type: FUNC
256 * @tc.require:
257 */
258 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetPropertyById_0100, TestSize.Level0)
259 {
260 auto testCallback = std::make_shared<GetSetPropCallbackMockTest>();
261 ASSERT_NE(testCallback, nullptr);
262 std::vector<Attributes::AttributeKey> keys { Attributes::AttributeKey::ATTR_PIN_SUB_TYPE };
263 AccountIAMClient::GetInstance().GetPropertyByCredentialId(TEST_CREDENTIAL_ID, keys, testCallback);
264 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
265 }
266
267 /**
268 * @tc.name: AccountIAMClient_SetProperty_0100
269 * @tc.desc: Test func with proxy is nullptr.
270 * @tc.type: FUNC
271 * @tc.require: issueI5N90O
272 */
273 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_SetProperty_0100, TestSize.Level0)
274 {
275 SetPropertyRequest testRequest = {};
276 auto testCallback = std::make_shared<GetSetPropCallbackMockTest>();
277 ASSERT_NE(testCallback, nullptr);
278 AccountIAMClient::GetInstance().SetProperty(TEST_USER_ID, testRequest, testCallback);
279 ASSERT_EQ(ERR_ACCOUNT_COMMON_GET_PROXY, testCallback->result_);
280 }
281
282 /**
283 * @tc.name: AccountIAMClient_GetAccountState_0100
284 * @tc.desc: Test func with proxy is nullptr.
285 * @tc.type: FUNC
286 * @tc.require: issueI5N90O
287 */
288 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_GetAccountState_0100, TestSize.Level0)
289 {
290 EXPECT_EQ(IDLE, AccountIAMClient::GetInstance().GetAccountState(TEST_USER_ID));
291 }
292
293 /**
294 * @tc.name: AccountIAMClient_PrepareRemoteAuth_0100
295 * @tc.desc: Test func PrepareRemoteAuth.
296 * @tc.type: FUNC
297 * @tc.require:
298 */
299 HWTEST_F(AccountIAMProxyMockTest, AccountIAMClient_PrepareRemoteAuth_0100, TestSize.Level0)
300 {
301 auto testCallback = std::make_shared<PreRemoteAuthCallbackMockTest>();
302 ASSERT_NE(testCallback, nullptr);
303 AccountIAMClient::GetInstance().PrepareRemoteAuth("testString", testCallback);
304 EXPECT_NE(testCallback->result_, 0);
305 }
306 } // namespace AccountTest
307 } // namespace OHOS