• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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