1 /*
2 * Copyright (c) 2024 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 <cstdint>
17 #include <cstdlib>
18 #include <cstring>
19 #include <fcntl.h>
20
21 #include "gtest/gtest.h"
22 #include <gmock/gmock-actions.h>
23
24 #include "lnn_ohos_account_adapter.h"
25 #include "lnn_ohos_account_adapter_mock.h"
26 #include "softbus_adapter_mem.h"
27 #include "softbus_error_code.h"
28 #include "softbus_utils.h"
29
30 using namespace std;
31 using namespace testing::ext;
32
33 namespace OHOS::SoftBus {
34 #define DEFAULT_ACCOUNT_NAME "ohosAnonymousName"
35
36 constexpr char LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN = 10;
37
38 class LnnOhosAccountAdapterTest : public testing::Test {
39 protected:
40 static void SetUpTestCase(void);
41 static void TearDownTestCase(void);
42 void SetUp();
43 void TearDown();
44 };
SetUpTestCase(void)45 void LnnOhosAccountAdapterTest::SetUpTestCase(void) { }
TearDownTestCase(void)46 void LnnOhosAccountAdapterTest::TearDownTestCase(void) { }
SetUp(void)47 void LnnOhosAccountAdapterTest::SetUp(void) { }
TearDown(void)48 void LnnOhosAccountAdapterTest::TearDown(void) { }
49
50 /**
51 * @tc.name: GetOsAccountId_001
52 * @tc.desc: GetOsAccountId
53 * @tc.type: FUN
54 * @tc.require: 1
55 */
56 HWTEST_F(LnnOhosAccountAdapterTest, GetOsAccountId_001, TestSize.Level1)
57 {
58 uint32_t len = 0;
59 char *accountInfo = (char *)SoftBusCalloc(LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN * HEXIFY_UNIT_LEN);
60 ASSERT_NE(accountInfo, nullptr);
61 EXPECT_EQ(GetOsAccountId(nullptr, LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN, &len), SOFTBUS_INVALID_PARAM);
62 EXPECT_EQ(GetOsAccountId(accountInfo, 0, &len), SOFTBUS_INVALID_PARAM);
63 EXPECT_EQ(GetOsAccountId(accountInfo, LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN, nullptr), SOFTBUS_INVALID_PARAM);
64 if (accountInfo != nullptr) {
65 SoftBusFree(accountInfo);
66 }
67 }
68
69 /**
70 * @tc.name: GetOsAccountId_002
71 * @tc.desc: GetOsAccountId
72 * @tc.type: FUN
73 * @tc.require: 1
74 */
75 HWTEST_F(LnnOhosAccountAdapterTest, GetOsAccountId_002, TestSize.Level1)
76 {
77 uint32_t len = 0;
78 char *accountInfo = (char *)SoftBusCalloc(LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN * HEXIFY_UNIT_LEN);
79 ASSERT_NE(accountInfo, nullptr);
80 AccountSA::OhosAccountKitsMock mock;
81 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(false));
82 EXPECT_EQ(GetOsAccountId(accountInfo, LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN, &len), SOFTBUS_AUTH_INNER_ERR);
83 if (accountInfo != nullptr) {
84 SoftBusFree(accountInfo);
85 }
86 }
87
88 /**
89 * @tc.name: GetOsAccountId_003
90 * @tc.desc: GetOsAccountId
91 * @tc.type: FUN
92 * @tc.require: 1
93 */
94 HWTEST_F(LnnOhosAccountAdapterTest, GetOsAccountId_003, TestSize.Level1)
95 {
96 char *accountInfo = (char *)SoftBusCalloc(LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN * HEXIFY_UNIT_LEN);
97 ASSERT_NE(accountInfo, nullptr);
98 uint32_t len = 0;
99 OHOS::AccountSA::OhosAccountInfo oh_acc_info;
100 std::pair<bool, OHOS::AccountSA::OhosAccountInfo> oh_acc_info_pair = { false, oh_acc_info };
101 AccountSA::OhosAccountKitsMock mock;
102 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(true));
103 EXPECT_CALL(mock, QueryOhosAccountInfo()).Times(1).WillOnce(testing::Return(oh_acc_info_pair));
104 EXPECT_EQ(GetOsAccountId(accountInfo, LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN, &len),
105 SOFTBUS_NETWORK_GET_ACCOUNT_INFO_FAILED);
106 if (accountInfo != nullptr) {
107 SoftBusFree(accountInfo);
108 }
109 }
110
111 /**
112 * @tc.name: GetOsAccountId_004
113 * @tc.desc: GetOsAccountId
114 * @tc.type: FUN
115 * @tc.require: 1
116 */
117 HWTEST_F(LnnOhosAccountAdapterTest, GetOsAccountId_004, TestSize.Level1)
118 {
119 char *accountInfo = (char *)SoftBusCalloc(LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN * HEXIFY_UNIT_LEN);
120 ASSERT_NE(accountInfo, nullptr);
121 uint32_t len = 0;
122 OHOS::AccountSA::OhosAccountInfo oh_acc_info;
123 oh_acc_info.name_ = "";
124 std::pair<bool, OHOS::AccountSA::OhosAccountInfo> oh_acc_info_pair = { true, oh_acc_info };
125 OHOS::AccountSA::OhosAccountKitsMock mock;
126 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(true));
127 EXPECT_CALL(mock, QueryOhosAccountInfo()).Times(1).WillOnce(testing::Return(oh_acc_info_pair));
128 EXPECT_EQ(GetOsAccountId(accountInfo, LNN_OHOS_ACCOUNT_ADAPTER_TEST_ID_LEN, &len),
129 SOFTBUS_NETWORK_GET_ACCOUNT_INFO_FAILED);
130
131 if (accountInfo != nullptr) {
132 SoftBusFree(accountInfo);
133 }
134 }
135
136 /**
137 * @tc.name: GetCurrentAccount_001
138 * @tc.desc: GetCurrentAccount
139 * @tc.type: FUN
140 * @tc.require: 1
141 */
142 HWTEST_F(LnnOhosAccountAdapterTest, GetCurrentAccount_001, TestSize.Level1)
143 {
144 int64_t account = 10;
145 EXPECT_EQ(GetCurrentAccount(nullptr), SOFTBUS_INVALID_PARAM);
146 OHOS::AccountSA::OhosAccountKitsMock mock;
147 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(false));
148 EXPECT_EQ(GetCurrentAccount(&account), SOFTBUS_AUTH_INNER_ERR);
149 }
150
151 /**
152 * @tc.name: GetCurrentAccount_002
153 * @tc.desc: GetCurrentAccount
154 * @tc.type: FUN
155 * @tc.require: 1
156 */
157 HWTEST_F(LnnOhosAccountAdapterTest, GetCurrentAccount_002, TestSize.Level1)
158 {
159 int64_t account = 10;
160 OHOS::AccountSA::OhosAccountInfo oh_acc_info;
161 std::pair<bool, OHOS::AccountSA::OhosAccountInfo> oh_acc_info_pair = { false, oh_acc_info };
162 OHOS::AccountSA::OhosAccountKitsMock mock;
163 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(true));
164 EXPECT_CALL(mock, QueryOhosAccountInfo()).Times(1).WillOnce(testing::Return(oh_acc_info_pair));
165 EXPECT_EQ(GetCurrentAccount(&account), SOFTBUS_NETWORK_GET_ACCOUNT_INFO_FAILED);
166 }
167
168 /**
169 * @tc.name: GetCurrentAccount_003
170 * @tc.desc: GetCurrentAccount
171 * @tc.type: FUN
172 * @tc.require: 1
173 */
174 HWTEST_F(LnnOhosAccountAdapterTest, GetCurrentAccount_003, TestSize.Level1)
175 {
176 int64_t account = 10;
177 OHOS::AccountSA::OhosAccountInfo oh_acc_info;
178 oh_acc_info.name_ = "";
179 std::pair<bool, OHOS::AccountSA::OhosAccountInfo> oh_acc_info_pair = { true, oh_acc_info };
180 OHOS::AccountSA::OhosAccountKitsMock mock;
181 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(true));
182 EXPECT_CALL(mock, QueryOhosAccountInfo()).Times(1).WillOnce(testing::Return(oh_acc_info_pair));
183 EXPECT_EQ(GetCurrentAccount(&account), SOFTBUS_OK);
184 }
185
186 /**
187 * @tc.name: GetCurrentAccount_004
188 * @tc.desc: GetCurrentAccount
189 * @tc.type: FUN
190 * @tc.require: 1
191 */
192 HWTEST_F(LnnOhosAccountAdapterTest, GetCurrentAccount_004, TestSize.Level1)
193 {
194 int64_t account = 10;
195 OHOS::AccountSA::OhosAccountInfo oh_acc_info;
196 oh_acc_info.name_ = DEFAULT_ACCOUNT_NAME;
197 std::pair<bool, OHOS::AccountSA::OhosAccountInfo> oh_acc_info_pair = { true, oh_acc_info };
198 OHOS::AccountSA::OhosAccountKitsMock mock;
199 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(true));
200 EXPECT_CALL(mock, QueryOhosAccountInfo()).Times(1).WillOnce(testing::Return(oh_acc_info_pair));
201 EXPECT_EQ(GetCurrentAccount(&account), SOFTBUS_OK);
202 }
203
204 /**
205 * @tc.name: GetCurrentAccount_005
206 * @tc.desc: GetCurrentAccount
207 * @tc.type: FUN
208 * @tc.require: 1
209 */
210 HWTEST_F(LnnOhosAccountAdapterTest, GetCurrentAccount_005, TestSize.Level1)
211 {
212 int64_t account = 10;
213 OHOS::AccountSA::OhosAccountInfo oh_acc_info;
214 oh_acc_info.name_ = "ACCOUNT_NAME";
215 std::pair<bool, OHOS::AccountSA::OhosAccountInfo> oh_acc_info_pair = { true, oh_acc_info };
216 OHOS::AccountSA::OhosAccountKitsMock mock;
217 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(true));
218 EXPECT_CALL(mock, QueryOhosAccountInfo()).Times(1).WillOnce(testing::Return(oh_acc_info_pair));
219 EXPECT_EQ(GetCurrentAccount(&account), SOFTBUS_OK);
220 }
221
222 /**
223 * @tc.name: GetCurrentAccount_006
224 * @tc.desc: GetCurrentAccount
225 * @tc.type: FUN
226 * @tc.require: 1
227 */
228 HWTEST_F(LnnOhosAccountAdapterTest, GetCurrentAccount_006, TestSize.Level1)
229 {
230 int64_t account = 10;
231 OHOS::AccountSA::OhosAccountInfo oh_acc_info;
232 oh_acc_info.name_ = "123456";
233 std::pair<bool, OHOS::AccountSA::OhosAccountInfo> oh_acc_info_pair = { true, oh_acc_info };
234 OHOS::AccountSA::OhosAccountKitsMock mock;
235 EXPECT_CALL(mock, IsSameAccountGroupDevice()).Times(1).WillOnce(testing::Return(true));
236 EXPECT_CALL(mock, QueryOhosAccountInfo()).Times(1).WillOnce(testing::Return(oh_acc_info_pair));
237 EXPECT_EQ(GetCurrentAccount(&account), SOFTBUS_OK);
238 }
239 } // namespace OHOS::SoftBus