1 /*
2 * Copyright (c) 2021-2025 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 #include "account_test_common.h"
18 #define private public
19 #include "account_log_wrapper.h"
20 #include "os_account_info.h"
21 #include "os_account_manager.h"
22 #include "os_account_constants.h"
23 #undef private
24
25 #include "os_account_info_json_parser.h"
26
27 using namespace testing::ext;
28 using namespace OHOS;
29 using namespace OHOS::AccountSA;
30
31 namespace {
32 const int INT_ID = 12;
33 const std::string STRING_NAME = "account";
34 const std::string OVER_LENGTH_ACCOUNT_NAME(Constants::LOCAL_NAME_MAX_SIZE + 1, '1');
35 const OsAccountType INT_TYPE = OsAccountType::ADMIN;
36 const int64_t STRING_SERIAL_NUMBER = 121012012;
37 constexpr std::int32_t UID_TRANSFORM_DIVISOR = 200000;
38 const int32_t ROOT_UID = 0;
39 const int32_t TEST_UID = 100;
40 const uint64_t TEST_DISPLAY_ID = 1;
41 const std::vector<std::string> VECTOR_CONSTRAINTS {"one", "two", "three", "four", "five"};
42 const bool BOOL_IS_OS_ACCOUNT_VERIFIED = true;
43 const bool BOOL_IS_OS_ACCOUNT_COMPLETED = true;
44 const bool BOOL_IS_ACTIVED = true;
45 #ifdef ENABLE_MULTIPLE_OS_ACCOUNTS
46 const int32_t CREATE_LOCAL_ID = 121;
47 #endif // ENABLE_MULTIPLE_OS_ACCOUNTS
48 const std::string OVER_LENGTH_NAME =
49 "EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYX**E||TIj::KBCB??BAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQyerewewgZG"
50 "RCk11aGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSfggdfghBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQ1ygZG"
51 "lNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIW<<Gh>>adsfasBAMFBQQEAAABfQECAwAEEQUwewrewrwrwerSITFBBhNRYQcicRwerQygZGfafd"
52 "4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5w+BAMFBQQEAAABfQECAwAEEQTFBBhNYQcicRQygZG"
53 "jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A++fid8e7j4ZiYXHgDxBfN5jJayQ3werwrwrwrwwerOnBLsKQGdF+1GbYAwJJsdfgsdfgi4yN2M1seF";
54 const std::string STRING_PHOTO =
55 "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gAUU29mdHdhcmU6IFNuaXBhc3Rl/"
56 "9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/"
57 "9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/"
58 "8AAEQgAEgAOAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//"
59 "EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU"
60 "1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6On"
61 "q8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//"
62 "EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJS"
63 "lNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+"
64 "jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A++fid8e7j4ZiYXHgDxBfN5jJayQ3OnBLsKQGdF+1GbYAwJJi4yN2M1seF/"
65 "i+fEtnHfv4O8R6dpcoby75ltLxHcNtMeyzuJ5FYEMDuQBSpUkNgH5l+Ndx4XtPix4ik0/"
66 "xFpssN5bwwXwPilDIZ0klLxSq2vWLAIWACMjBeilQNo6j9ni50R9U8U6lF400m18Q30sTMLnxC1758CxqrO8EesXXzBgiiV5SQPlCgHnNSfI5f1+"
67 "av33Q5L3rdP68nb7mfWlFFFaCP//Z";
68 const int64_t INT_CREATE_TIME = 1551925510;
69 const int64_t INT_LAST_LOGINGGED_IN_TIME = 1551925510;
70 const std::string STRING_JSON =
71 "{\"constraints\":[\"one\",\"two\",\"three\",\"four\",\"five\"],\"createTime\":1551925510,\"domainInfo\":{"
72 "\"accountName\":\"\",\"domain\":\"\"},\"isActived\":false,"
73 "\"isCreateCompleted\":true,\"isVerified\":true,\"lastLoginTime\":1551925510,\"localId\":12,\"localName\":"
74 "\"account\",\"photo\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gAUU29mdHdhcmU6IFNuaXBhc3Rl/"
75 "9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/"
76 "9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/"
77 "8AAEQgAEgAOAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//"
78 "EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU"
79 "1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6On"
80 "q8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//"
81 "EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJS"
82 "lNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+"
83 "jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A++fid8e7j4ZiYXHgDxBfN5jJayQ3OnBLsKQGdF+1GbYAwJJi4yN2M1seF/"
84 "i+fEtnHfv4O8R6dpcoby75ltLxHcNtMeyzuJ5FYEMDuQBSpUkNgH5l+Ndx4XtPix4ik0/"
85 "xFpssN5bwwXwPilDIZ0klLxSq2vWLAIWACMjBeilQNo6j9ni50R9U8U6lF400m18Q30sTMLnxC1758CxqrO8EesXXzBgiiV5SQPlCgHnNSfI5f1+"
86 "av33Q5L3rdP68nb7mfWlFFFaCP//Z\",\"serialNumber\":121012012,\"toBeRemoved\":false,\"type\":0}";
87 const std::string OS_ACCOUNT_INFO_JSON_STRING =
88 "{\"constraints\":[\"one\",\"two\",\"three\",\"four\",\"five\"],\"createTime\":1551925510,\"domainInfo\":{"
89 "\"accountName\":\"acc_name\",\"domain\":\"account_iam\",\"domainAccountStatus\":2,\"accountId\":\"102393938\",\"domainServerConfigId\":\"202393938\"},"
90 "\"isActived\":false,\"isCreateCompleted\":true,\"isVerified\":true,\"lastLoginTime\":1551925510,\"localId\":12,\"localName\":"
91 "\"account\",\"shortName\":\"ac\",\"credentialId\":1234567890,\"displayId\":14567890,\"isForeground\":false,"
92 "\"isLoggedIn\":true,\"isDataRemovable\":false,\"creatorType\":1222,"
93 "\"photo\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD//gAUU29mdHdhcmU6IFNuaXBhc3Rl/"
94 "9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/"
95 "9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/"
96 "8AAEQgAEgAOAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//"
97 "EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU"
98 "1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6On"
99 "q8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//"
100 "EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJS"
101 "lNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+"
102 "jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A++fid8e7j4ZiYXHgDxBfN5jJayQ3OnBLsKQGdF+1GbYAwJJi4yN2M1seF/"
103 "i+fEtnHfv4O8R6dpcoby75ltLxHcNtMeyzuJ5FYEMDuQBSpUkNgH5l+Ndx4XtPix4ik0/"
104 "xFpssN5bwwXwPilDIZ0klLxSq2vWLAIWACMjBeilQNo6j9ni50R9U8U6lF400m18Q30sTMLnxC1758CxqrO8EesXXzBgiiV5SQPlCgHnNSfI5f1+"
105 "av33Q5L3rdP68nb7mfWlFFFaCP//Z\",\"serialNumber\":121012012,\"toBeRemoved\":false,\"type\":0}";
106 } // namespace
107 class OsAccountInfoTest : public testing::Test {
108 public:
109 static void SetUpTestCase(void);
110 static void TearDownTestCase(void);
111 void SetUp(void) override;
112 void TearDown(void) override;
113 };
114
SetUpTestCase(void)115 void OsAccountInfoTest::SetUpTestCase(void)
116 {
117 ASSERT_TRUE(MockTokenId("accountmgr"));
118 }
119
TearDownTestCase(void)120 void OsAccountInfoTest::TearDownTestCase(void)
121 {}
122
SetUp(void)123 void OsAccountInfoTest::SetUp(void) __attribute__((no_sanitize("cfi")))
124 {
125 testing::UnitTest *test = testing::UnitTest::GetInstance();
126 ASSERT_NE(test, nullptr);
127 const testing::TestInfo *testinfo = test->current_test_info();
128 ASSERT_NE(testinfo, nullptr);
129 string testCaseName = string(testinfo->name());
130 ACCOUNT_LOGI("[SetUp] %{public}s start", testCaseName.c_str());
131 }
132
TearDown(void)133 void OsAccountInfoTest::TearDown(void)
134 {}
135
136 /**
137 * @tc.name: OsAccountInfoParcel_ConstraintSourceTypeInfo_0100
138 * @tc.desc: ConstraintSourceTypeInfo Marshalling and Unmarshalling
139 * @tc.type: FUNC
140 * @tc.require:
141 */
142 HWTEST_F(OsAccountInfoTest, OsAccountInfoParcel_ConstraintSourceTypeInfo_0100, TestSize.Level3)
143 {
144 Parcel Parcel;
145 ConstraintSourceTypeInfo option1;
146
147 option1.localId = ROOT_UID;
148 option1.typeInfo = CONSTRAINT_NOT_EXIST;
149 EXPECT_EQ(option1.Marshalling(Parcel), true);
150 ConstraintSourceTypeInfo *option2 = option1.Unmarshalling(Parcel);
151 EXPECT_NE(option2, nullptr);
152
153 EXPECT_EQ(option2->localId, ROOT_UID);
154 EXPECT_EQ(option2->typeInfo, CONSTRAINT_NOT_EXIST);
155 }
156
157 /**
158 * @tc.name: OsAccountInfoParcel_ForegroundOsAccount_0100
159 * @tc.desc: ForegroundOsAccount Marshalling and Unmarshalling
160 * @tc.type: FUNC
161 * @tc.require:
162 */
163 HWTEST_F(OsAccountInfoTest, OsAccountInfoParcel_ForegroundOsAccount_0100, TestSize.Level3)
164 {
165 Parcel Parcel;
166 ForegroundOsAccount option1;
167
168 option1.localId = ROOT_UID;
169 option1.displayId = TEST_DISPLAY_ID;
170 EXPECT_EQ(option1.Marshalling(Parcel), true);
171 ForegroundOsAccount *option2 = option1.Unmarshalling(Parcel);
172 EXPECT_NE(option2, nullptr);
173
174 EXPECT_EQ(option2->localId, ROOT_UID);
175 EXPECT_EQ(option2->displayId, TEST_DISPLAY_ID);
176 }
177
178 /**
179 * @tc.name: OsAccountInfo_OsAccountInfo_0100
180 * @tc.desc: Create a OsAccountInfo object with no parameter.
181 * @tc.type: FUNC
182 * @tc.require:
183 */
184 HWTEST_F(OsAccountInfoTest, OsAccountInfo_OsAccountInfo_0100, TestSize.Level3)
185 {
186 OsAccountInfo *osAccountInfo = new (std::nothrow) OsAccountInfo();
187 EXPECT_NE(osAccountInfo, nullptr);
188 delete (osAccountInfo);
189 }
190
191 /**
192 * @tc.name: OsAccountInfo_OsAccountInfo_0200
193 * @tc.desc: Create a OsAccountInfo object with four parameters.
194 * @tc.type: FUNC
195 * @tc.require:
196 */
197 HWTEST_F(OsAccountInfoTest, OsAccountInfo_OsAccountInfo_0200, TestSize.Level1)
198 {
199 OsAccountInfo *osAccountInfo =
200 new (std::nothrow) OsAccountInfo(INT_ID, STRING_NAME, INT_TYPE, STRING_SERIAL_NUMBER);
201 EXPECT_NE(osAccountInfo, nullptr);
202 delete (osAccountInfo);
203 }
204
205 /**
206 * @tc.name: OsAccountInfo_GetId_0100
207 * @tc.desc: Get the id with valid data.
208 * @tc.type: FUNC
209 * @tc.require:
210 */
211 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetId_0100, TestSize.Level1)
212 {
213 int id = INT_ID;
214 OsAccountInfo osAccountInfo;
215 osAccountInfo.localId_ = id;
216 EXPECT_EQ(id, osAccountInfo.GetLocalId());
217 }
218
219 /**
220 * @tc.name: OsAccountInfo_SetLocalId_0100
221 * @tc.desc: Set the id with valid data.
222 * @tc.type: FUNC
223 * @tc.require:
224 */
225 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetLocalId_0100, TestSize.Level1)
226 {
227 OsAccountInfo osAccountInfo;
228 osAccountInfo.SetLocalId(INT_ID);
229 EXPECT_EQ(INT_ID, osAccountInfo.localId_);
230 }
231
232 /**
233 * @tc.name: OsAccountInfo_GetLocalName_0100
234 * @tc.desc: Get the name with valid data.
235 * @tc.type: FUNC
236 * @tc.require:
237 */
238 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetLocalName_0100, TestSize.Level1)
239 {
240 std::string name = STRING_NAME;
241 OsAccountInfo osAccountInfo;
242 osAccountInfo.localName_ = name;
243 EXPECT_EQ(name, osAccountInfo.GetLocalName());
244 }
245
246 /**
247 * @tc.name: OsAccountInfo_SetLocalName_0100
248 * @tc.desc: Set the name with valid data.
249 * @tc.type: FUNC
250 * @tc.require:
251 */
252 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetLocalName_0100, TestSize.Level1)
253 {
254 OsAccountInfo osAccountInfo;
255 osAccountInfo.SetLocalName(STRING_NAME);
256 EXPECT_EQ(STRING_NAME, osAccountInfo.localName_);
257 }
258
259 /**
260 * @tc.name: OsAccountInfo_GetType_0100
261 * @tc.desc: Get the type with valid data.
262 * @tc.type: FUNC
263 * @tc.require:
264 */
265 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetType_0100, TestSize.Level1)
266 {
267 OsAccountType type = INT_TYPE;
268 OsAccountInfo osAccountInfo;
269 osAccountInfo.type_ = type;
270 EXPECT_EQ(type, osAccountInfo.GetType());
271 }
272
273 /**
274 * @tc.name: OsAccountInfo_SetType_0100
275 * @tc.desc: Set the type with valid data.
276 * @tc.type: FUNC
277 * @tc.require:
278 */
279 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetType_0100, TestSize.Level1)
280 {
281 OsAccountInfo osAccountInfo;
282 osAccountInfo.SetType(INT_TYPE);
283 EXPECT_EQ(INT_TYPE, osAccountInfo.type_);
284 }
285
286 /**
287 * @tc.name: OsAccountInfo_GetConstraints_0100
288 * @tc.desc: Get the Constraints with valid data.
289 * @tc.type: FUNC
290 * @tc.require:
291 */
292 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetConstraints_0100, TestSize.Level1)
293 {
294 std::vector<std::string> constraints = VECTOR_CONSTRAINTS;
295 OsAccountInfo osAccountInfo;
296 osAccountInfo.constraints_ = constraints;
297 EXPECT_EQ(constraints.size(), osAccountInfo.GetConstraints().size());
298 }
299
300 /**
301 * @tc.name: OsAccountInfo_SetConstraints_0100
302 * @tc.desc: Set the Constraints with valid data.
303 * @tc.type: FUNC
304 * @tc.require:
305 */
306 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetConstraints_0100, TestSize.Level1)
307 {
308 OsAccountInfo osAccountInfo;
309 osAccountInfo.SetConstraints(VECTOR_CONSTRAINTS);
310 EXPECT_EQ(VECTOR_CONSTRAINTS.size(), osAccountInfo.constraints_.size());
311 }
312
313 /**
314 * @tc.name: OsAccountInfo_GetIsVerified_0100
315 * @tc.desc: Get the isVerified with valid data.
316 * @tc.type: FUNC
317 * @tc.require:
318 */
319 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetIsVerified_0100, TestSize.Level1)
320 {
321 bool isVerified = BOOL_IS_OS_ACCOUNT_VERIFIED;
322 OsAccountInfo osAccountInfo;
323 osAccountInfo.isVerified_ = isVerified;
324 EXPECT_EQ(isVerified, osAccountInfo.GetIsVerified());
325 }
326
327 /**
328 * @tc.name: OsAccountInfo_SetIsVerified_0100
329 * @tc.desc: Set the isVerified with valid data.
330 * @tc.type: FUNC
331 * @tc.require:
332 */
333 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetIsVerified_0100, TestSize.Level1)
334 {
335 OsAccountInfo osAccountInfo;
336 osAccountInfo.SetIsVerified(BOOL_IS_OS_ACCOUNT_VERIFIED);
337 EXPECT_EQ(BOOL_IS_OS_ACCOUNT_VERIFIED, osAccountInfo.isVerified_);
338 }
339
340 /**
341 * @tc.name: OsAccountInfo_GetIsCreateCompleted_0100
342 * @tc.desc: Get the isCreateCompleted with valid data.
343 * @tc.type: FUNC
344 * @tc.require:
345 */
346 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetIsCreateCompleted_0100, TestSize.Level1)
347 {
348 bool isCreateCompleted = BOOL_IS_OS_ACCOUNT_COMPLETED;
349 OsAccountInfo osAccountInfo;
350 osAccountInfo.isCreateCompleted_ = isCreateCompleted;
351 EXPECT_EQ(isCreateCompleted, osAccountInfo.GetIsCreateCompleted());
352 }
353
354 /**
355 * @tc.name: OsAccountInfo_SetIsCreateCompleted_0100
356 * @tc.desc: Set the isCreateCompleted with valid data.
357 * @tc.type: FUNC
358 * @tc.require:
359 */
360 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetIsCreateCompleted_0100, TestSize.Level1)
361 {
362 OsAccountInfo osAccountInfo;
363 osAccountInfo.SetIsCreateCompleted(BOOL_IS_OS_ACCOUNT_COMPLETED);
364 EXPECT_EQ(BOOL_IS_OS_ACCOUNT_COMPLETED, osAccountInfo.isCreateCompleted_);
365 }
366
367 /**
368 * @tc.name: OsAccountInfo_GetIsActived_0100
369 * @tc.desc: Get the isActived with valid data.
370 * @tc.type: FUNC
371 * @tc.require:
372 */
373 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetIsActived_0100, TestSize.Level1)
374 {
375 bool isActived = BOOL_IS_ACTIVED;
376 OsAccountInfo osAccountInfo;
377 osAccountInfo.isActivated_ = isActived;
378 EXPECT_EQ(isActived, osAccountInfo.GetIsActived());
379 }
380
381 /**
382 * @tc.name: OsAccountInfo_SetIsActived_0100
383 * @tc.desc: Set the isActived with valid data.
384 * @tc.type: FUNC
385 * @tc.require:
386 */
387 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetIsActived_0100, TestSize.Level1)
388 {
389 OsAccountInfo osAccountInfo;
390 osAccountInfo.SetIsActived(BOOL_IS_ACTIVED);
391 EXPECT_EQ(BOOL_IS_ACTIVED, osAccountInfo.isActivated_);
392 }
393
394 /**
395 * @tc.name: OsAccountInfo_GetPhoto_0100
396 * @tc.desc: Get the photo with valid data.
397 * @tc.type: FUNC
398 * @tc.require:
399 */
400 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetPhoto_0100, TestSize.Level1)
401 {
402 std::string photo = STRING_PHOTO;
403 OsAccountInfo osAccountInfo;
404 osAccountInfo.photo_ = photo;
405 EXPECT_EQ(photo, osAccountInfo.GetPhoto());
406 }
407
408 /**
409 * @tc.name: OsAccountInfo_SetPhoto_0100
410 * @tc.desc: Set the photo with valid data.
411 * @tc.type: FUNC
412 * @tc.require:
413 */
414 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetPhoto_0100, TestSize.Level1)
415 {
416 OsAccountInfo osAccountInfo;
417 osAccountInfo.SetPhoto(STRING_PHOTO);
418 EXPECT_EQ(STRING_PHOTO, osAccountInfo.photo_);
419 }
420
421 /**
422 * @tc.name: OsAccountInfo_GetCreateTime_0100
423 * @tc.desc: Get the createTime with valid data.
424 * @tc.type: FUNC
425 * @tc.require:
426 */
427 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetCreateTime_0100, TestSize.Level1)
428 {
429 int64_t createTime = INT_CREATE_TIME;
430 OsAccountInfo osAccountInfo;
431 osAccountInfo.createTime_ = createTime;
432 EXPECT_EQ(createTime, osAccountInfo.GetCreateTime());
433 }
434
435 /**
436 * @tc.name: OsAccountInfo_SetCreateTime_0100
437 * @tc.desc: Set the createTime with valid data.
438 * @tc.type: FUNC
439 * @tc.require:
440 */
441 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetCreateTime_0100, TestSize.Level1)
442 {
443 OsAccountInfo osAccountInfo;
444 osAccountInfo.SetCreateTime(INT_CREATE_TIME);
445 EXPECT_EQ(INT_CREATE_TIME, osAccountInfo.createTime_);
446 }
447
448 /**
449 * @tc.name: OsAccountInfo_GetLastLoginTime_0100
450 * @tc.desc: Get the lastLoginTime with valid data.
451 * @tc.type: FUNC
452 * @tc.require:
453 */
454 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetLastLoginTime_0100, TestSize.Level1)
455 {
456 int64_t lastLoginTime = INT_LAST_LOGINGGED_IN_TIME;
457 OsAccountInfo osAccountInfo;
458 osAccountInfo.lastLoginTime_ = lastLoginTime;
459 EXPECT_EQ(lastLoginTime, osAccountInfo.GetLastLoginTime());
460 }
461
462 /**
463 * @tc.name: OsAccountInfo_GetSerialNumber_0100
464 * @tc.desc: Get the serialNumber with valid data.
465 * @tc.type: FUNC
466 * @tc.require:
467 */
468 HWTEST_F(OsAccountInfoTest, OsAccountInfo_GetSerialNumber_0100, TestSize.Level1)
469 {
470 int64_t serialNumber = STRING_SERIAL_NUMBER;
471 OsAccountInfo osAccountInfo;
472 osAccountInfo.serialNumber_ = serialNumber;
473 EXPECT_EQ(serialNumber, osAccountInfo.GetSerialNumber());
474 }
475
476 /**
477 * @tc.name: OsAccountInfo_SetSerialNumber_0100
478 * @tc.desc: Set the serialNumber with valid data.
479 * @tc.type: FUNC
480 * @tc.require:
481 */
482 HWTEST_F(OsAccountInfoTest, OsAccountInfo_SetSerialNumber_0100, TestSize.Level1)
483 {
484 OsAccountInfo osAccountInfo;
485 osAccountInfo.SetSerialNumber(STRING_SERIAL_NUMBER);
486 EXPECT_EQ(STRING_SERIAL_NUMBER, osAccountInfo.serialNumber_);
487 }
488
489 /**
490 * @tc.name: OsAccountInfo_FromJson_0100
491 * @tc.desc: Set an object by Json.
492 * @tc.type: FUNC
493 * @tc.require:
494 */
495 HWTEST_F(OsAccountInfoTest, OsAccountInfo_FromJson_0100, TestSize.Level1)
496 {
497 OsAccountInfo osAccountInfo;
498
499 auto objJson = CreateJsonFromString(STRING_JSON);
500 EXPECT_NE(objJson, nullptr);
501 FromJson(objJson.get(), osAccountInfo);
502 EXPECT_EQ(osAccountInfo.GetLocalId(), INT_ID);
503 }
504
505 /**
506 * @tc.name: OsAccountInfo_ToString_0100
507 * @tc.desc: Convert os account info to string.
508 * @tc.type: FUNC
509 * @tc.require:
510 */
511 HWTEST_F(OsAccountInfoTest, OsAccountInfo_ToString_0100, TestSize.Level1)
512 {
513 int id = INT_ID;
514 OsAccountInfo osAccountInfoSrc;
515 osAccountInfoSrc.localId_ = id;
516 std::string jsonString = osAccountInfoSrc.ToString();
517 auto jsonObject = CreateJsonFromString(jsonString);
518 EXPECT_NE(jsonObject, nullptr);
519 OsAccountInfo osAccountInfoTar;
520 FromJson(jsonObject.get(), osAccountInfoTar);
521 EXPECT_EQ(osAccountInfoTar.GetLocalId(), INT_ID);
522 }
523
524 /**
525 * @tc.name: OsAccountInfo_Marshalling_0100
526 * @tc.desc: Test Marshalling Unmarshalling with valid data.
527 * @tc.type: FUNC
528 * @tc.require:
529 */
530 HWTEST_F(OsAccountInfoTest, OsAccountInfo_Marshalling_0100, TestSize.Level1)
531 {
532 // make info with an owner
533 int id = INT_ID;
534 OsAccountInfo osAccountInfoSrc;
535 osAccountInfoSrc.localId_ = id;
536 // marshalling
537 Parcel parcel;
538 EXPECT_EQ(osAccountInfoSrc.Marshalling(parcel), true);
539 // unmarshalling
540 auto infoPtr = OsAccountInfo::Unmarshalling(parcel);
541 ASSERT_NE(infoPtr, nullptr);
542 // check the data
543 EXPECT_EQ(INT_ID, infoPtr->localId_);
544 }
545
546 /**
547 * @tc.name: GetOsAccountName01
548 * @tc.desc: Test GetOsAccountName
549 * @tc.type: FUNC
550 * @tc.require: issueI8ZEEN
551 */
552 HWTEST_F(OsAccountInfoTest, GetOsAccountName01, TestSize.Level1)
553 {
554 std::string name;
555 setuid(TEST_UID * UID_TRANSFORM_DIVISOR);
556 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountName(name));
557 OsAccountInfo osAccountInfo;
558 setuid(ROOT_UID);
559 EXPECT_EQ(ERR_OK, OsAccountManager::QueryOsAccountById(TEST_UID, osAccountInfo));
560 EXPECT_EQ(name, osAccountInfo.GetLocalName());
561 }
562
563 /**
564 * @tc.name: GetOsAccountNameById01
565 * @tc.desc: Test GetOsAccountNameById
566 * @tc.type: FUNC
567 * @tc.require:
568 */
569 HWTEST_F(OsAccountInfoTest, GetOsAccountNameById01, TestSize.Level1)
570 {
571 std::string name100;
572 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountNameById(TEST_UID, name100));
573 OsAccountInfo osAccountInfo100;
574 setuid(ROOT_UID);
575 EXPECT_EQ(ERR_OK, OsAccountManager::QueryOsAccountById(TEST_UID, osAccountInfo100));
576 EXPECT_EQ(name100, osAccountInfo100.GetLocalName());
577
578 std::string name0;
579 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountNameById(ROOT_UID, name0));
580 OsAccountInfo osAccountInfo0;
581 setuid(ROOT_UID);
582 EXPECT_EQ(ERR_OK, OsAccountManager::QueryOsAccountById(ROOT_UID, osAccountInfo0));
583 EXPECT_EQ(name0, osAccountInfo0.GetLocalName());
584 }
585
586 /**
587 * @tc.name: OsAccountInfo_ToJson_FromJson_001
588 * @tc.desc: Test ToJson、FromJson.
589 * @tc.type: FUNC
590 * @tc.require:
591 */
592 HWTEST_F(OsAccountInfoTest, OsAccountInfo_ToJson_FromJson_001, TestSize.Level1)
593 {
594 ACCOUNT_LOGI("OsAccountInfo_ToJson_FromJson_001");
595
596 // make some data
597 auto objJson = CreateJsonFromString(OS_ACCOUNT_INFO_JSON_STRING);
598 ASSERT_NE(objJson, nullptr);
599
600 // make info with an owner
601 OsAccountInfo testOsAccountInfo;
602 FromJson(objJson.get(), testOsAccountInfo);
603 auto jsonObject = ToJson(testOsAccountInfo);
604 EXPECT_NE(jsonObject, nullptr);
605
606 // check the data
607 int32_t localid = 0;
608 GetIntFromJson(jsonObject.get(), LOCAL_ID, localid);
609 EXPECT_EQ(12, localid);
610 EXPECT_EQ("account", GetStringFromJson(jsonObject, LOCAL_NAME));
611 EXPECT_EQ("ac", GetStringFromJson(jsonObject, SHORT_NAME));
612 int32_t retType = 0;
613 GetIntFromJson(jsonObject.get(), TYPE, retType);
614 EXPECT_EQ(0, static_cast<OsAccountType>(retType));
615 std::vector<std::string> constraints = GetVectorStringFromJson(jsonObject, CONSTRAINTS);
616 EXPECT_EQ(5, constraints.size());
617 EXPECT_EQ("one", constraints[0]);
618
619 EXPECT_TRUE(GetBoolFromJson(jsonObject, IS_OS_ACCOUNT_VERIFIED));
620 int64_t createtime = 0;
621 int64_t lastloggedintime = 0;
622 int64_t serialnumber = 0;
623 GetInt64FromJson(jsonObject.get(), CREATE_TIME, createtime);
624 GetInt64FromJson(jsonObject.get(), LAST_LOGGED_IN_TIME, lastloggedintime);
625 GetInt64FromJson(jsonObject.get(), SERIAL_NUMBER, serialnumber);
626 EXPECT_EQ(1551925510, createtime);
627 EXPECT_EQ(1551925510, lastloggedintime);
628 EXPECT_EQ(121012012, serialnumber);
629 EXPECT_FALSE(GetBoolFromJson(jsonObject, IS_ACTIVATED));
630 EXPECT_TRUE(GetBoolFromJson(jsonObject, IS_ACCOUNT_COMPLETED));
631 EXPECT_FALSE(GetBoolFromJson(jsonObject, TO_BE_REMOVED));
632 uint64_t credentialid = 0;
633 GetUint64FromJson(jsonObject.get(), CREDENTIAL_ID, credentialid);
634 EXPECT_EQ(1234567890, credentialid);
635 uint64_t display = 0;
636 GetUint64FromJson(jsonObject.get(), DISPLAY_ID, display);
637 EXPECT_EQ(14567890, display);
638 EXPECT_FALSE(GetBoolFromJson(jsonObject, IS_FOREGROUND));
639 EXPECT_TRUE(GetBoolFromJson(jsonObject, IS_LOGGED_IN));
640 EXPECT_FALSE(GetBoolFromJson(jsonObject, IS_DATA_REMOVABLE));
641 int32_t creatorType = 0;
642 GetIntFromJson(jsonObject.get(), CREATOR_TYPE, creatorType);
643 EXPECT_EQ(1222, creatorType);
644 cJSON *typeJson = GetObjFromJson(jsonObject, DOMAIN_INFO);
645 EXPECT_EQ("account_iam", GetStringFromJson(typeJson, DOMAIN_NAME));
646 EXPECT_EQ("acc_name", GetStringFromJson(typeJson, DOMAIN_ACCOUNT_NAME));
647 EXPECT_EQ("102393938", GetStringFromJson(typeJson, DOMAIN_ACCOUNT_ID));
648 int32_t retStatus = 0;
649 GetIntFromJson(typeJson, DOMAIN_ACCOUNT_STATUS, retStatus);
650 EXPECT_EQ(LOGIN, static_cast<DomainAccountStatus>(retStatus));
651 EXPECT_EQ("202393938", GetStringFromJson(typeJson, DOMAIN_ACCOUNT_CONFIG));
652 }
653
654 #ifdef ENABLE_MULTIPLE_OS_ACCOUNTS
655 /**
656 * @tc.name: GetOsAccountName02
657 * @tc.desc: Test GetOsAccountName
658 * @tc.type: FUNC
659 * @tc.require: issueI8ZEEN
660 */
661 HWTEST_F(OsAccountInfoTest, GetOsAccountName02, TestSize.Level1)
662 {
663 OsAccountInfo osAccountInfo;
664 CreateOsAccountOptions options;
665 options.allowedHapList = {};
666 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccount("GetOsAccountName02", "GetOsAccountName02",
667 OsAccountType::NORMAL, options, osAccountInfo));
668 uint32_t localId = osAccountInfo.GetLocalId();
669 setuid(localId * UID_TRANSFORM_DIVISOR);
670 std::string name;
671 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountName(name));
672 EXPECT_EQ("GetOsAccountName02", name);
673 setuid(ROOT_UID);
674 EXPECT_EQ(ERR_OK, OsAccountManager::SetOsAccountName(localId, "updateName"));
675 setuid(localId * UID_TRANSFORM_DIVISOR);
676 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountName(name));
677 EXPECT_EQ(name, "updateName");
678 setuid(ROOT_UID);
679 EXPECT_EQ(ERR_OK, OsAccountManager::RemoveOsAccount(localId));
680 setuid(localId * UID_TRANSFORM_DIVISOR);
681 EXPECT_NE(ERR_OK, OsAccountManager::GetOsAccountName(name));
682 setuid(ROOT_UID);
683 }
684
685 /**
686 * @tc.name: GetOsAccountNameById02
687 * @tc.desc: Test GetOsAccountNameById
688 * @tc.type: FUNC
689 * @tc.require:
690 */
691 HWTEST_F(OsAccountInfoTest, GetOsAccountNameById02, TestSize.Level1)
692 {
693 OsAccountInfo osAccountInfo;
694 CreateOsAccountOptions options;
695 options.allowedHapList = {};
696 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccount("testName", "testName", OsAccountType::NORMAL, options,
697 osAccountInfo));
698 uint32_t localId = osAccountInfo.GetLocalId();
699 std::string name;
700 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountNameById(localId, name));
701 EXPECT_EQ("testName", name);
702 EXPECT_EQ(ERR_OK, OsAccountManager::SetOsAccountName(localId, "updateName"));
703 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountNameById(localId, name));
704 EXPECT_EQ(name, "updateName");
705 EXPECT_EQ(ERR_OK, OsAccountManager::RemoveOsAccount(localId));
706 EXPECT_EQ(ERR_ACCOUNT_COMMON_ACCOUNT_NOT_EXIST_ERROR, OsAccountManager::GetOsAccountNameById(localId, name));
707 }
708
709 /**
710 * @tc.name: GetOsAccountNameById03
711 * @tc.desc: Test GetOsAccountNameById with id not exist
712 * @tc.type: FUNC
713 * @tc.require:
714 */
715 HWTEST_F(OsAccountInfoTest, GetOsAccountNameById03, TestSize.Level1)
716 {
717 uint32_t localId = 9999; // id not exit
718 bool isExist = true;
719 EXPECT_EQ(ERR_OK, OsAccountManager::IsOsAccountExists(localId, isExist));
720 ASSERT_EQ(isExist, false);
721 std::string name;
722 EXPECT_EQ(ERR_ACCOUNT_COMMON_ACCOUNT_NOT_EXIST_ERROR, OsAccountManager::GetOsAccountNameById(localId, name));
723
724 localId = 99; // 99 id not exit
725 isExist = true;
726 EXPECT_EQ(ERR_OK, OsAccountManager::IsOsAccountExists(localId, isExist));
727 ASSERT_EQ(isExist, false);
728 EXPECT_EQ(ERR_ACCOUNT_COMMON_ACCOUNT_NOT_EXIST_ERROR, OsAccountManager::GetOsAccountNameById(localId, name));
729 }
730
731 /**
732 * @tc.name: CreateOsAccountWithFullInfo0100
733 * @tc.desc: Test CreateOsAccountWithFullInfo ERR_ACCOUNT_COMMON_INVALID_PARAMETER
734 * @tc.type: FUNC
735 * @tc.require:
736 */
737 HWTEST_F(OsAccountInfoTest, CreateOsAccountWithFullInfo0100, TestSize.Level1)
738 {
739 OsAccountInfo osAccountInfo;
740 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::CreateOsAccountWithFullInfo(osAccountInfo));
741 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
742
743 osAccountInfo.SetLocalName("test114");
744 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::CreateOsAccountWithFullInfo(osAccountInfo));
745 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
746 }
747
748 /**
749 * @tc.name: CreateOsAccountWithFullInfo0101
750 * @tc.desc: Test CreateOsAccountWithFullInfo ERR_ACCOUNT_COMMON_INVALID_PARAMETER
751 * @tc.type: FUNC
752 * @tc.require:
753 */
754 HWTEST_F(OsAccountInfoTest, CreateOsAccountWithFullInfo0101, TestSize.Level1)
755 {
756 OsAccountInfo osAccountInfo;
757 osAccountInfo.SetLocalName("test115");
758 osAccountInfo.SetLocalId(CREATE_LOCAL_ID);
759
760 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::CreateOsAccountWithFullInfo(osAccountInfo));
761 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
762 OsAccountManager::RemoveOsAccount(CREATE_LOCAL_ID);
763 }
764
765 /**
766 * @tc.name: CreateOsAccountWithFullInfo0102
767 * @tc.desc: Test CreateOsAccountWithFullInfo ERR_ACCOUNT_COMMON_INVALID_PARAMETER
768 * @tc.type: FUNC
769 * @tc.require:
770 */
771 HWTEST_F(OsAccountInfoTest, CreateOsAccountWithFullInfo0102, TestSize.Level1)
772 {
773 OsAccountInfo osAccountInfo;
774 osAccountInfo.SetLocalName("test116");
775 osAccountInfo.SetLocalId(CREATE_LOCAL_ID);
776 osAccountInfo.SetSerialNumber(2023023100000033);
777 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::CreateOsAccountWithFullInfo(osAccountInfo));
778
779 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
780 OsAccountManager::RemoveOsAccount(CREATE_LOCAL_ID);
781 }
782
783 /**
784 * @tc.name: CreateOsAccountWithFullInfo0103
785 * @tc.desc: Test CreateOsAccountWithFullInfo admin success
786 * @tc.type: FUNC
787 * @tc.require:
788 */
789 HWTEST_F(OsAccountInfoTest, CreateOsAccountWithFullInfo0103, TestSize.Level1)
790 {
791 OsAccountInfo osAccountInfo;
792 osAccountInfo.SetLocalName("test117");
793 osAccountInfo.SetLocalId(997);
794 osAccountInfo.SetSerialNumber(2023023100000033);
795 osAccountInfo.SetCreateTime(1695883215000);
796 osAccountInfo.SetLastLoginTime(1695863215000);
797 CreateOsAccountOptions options;
798 options.allowedHapList = {};
799 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccountWithFullInfo(osAccountInfo, options));
800
801 osAccountInfo.SetLocalName("update117");
802 EXPECT_EQ(ERR_OK, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
803 OsAccountManager::RemoveOsAccount(osAccountInfo.GetLocalId());
804 }
805
806 /**
807 * @tc.name: CreateOsAccountWithFullInfo0104
808 * @tc.desc: Test CreateOsAccountWithFullInfo normal success
809 * @tc.type: FUNC
810 * @tc.require:
811 */
812 HWTEST_F(OsAccountInfoTest, CreateOsAccountWithFullInfo0104, TestSize.Level1)
813 {
814 OsAccountInfo osAccountInfo;
815 osAccountInfo.SetLocalName("test118");
816 osAccountInfo.SetType(OsAccountType::NORMAL);
817 osAccountInfo.SetLocalId(998);
818 osAccountInfo.SetSerialNumber(1100);
819 osAccountInfo.SetCreateTime(1695883215000);
820 CreateOsAccountOptions options;
821 options.allowedHapList = {};
822 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccountWithFullInfo(osAccountInfo, options));
823
824 osAccountInfo.SetLastLoginTime(1695863290000);
825 EXPECT_EQ(ERR_OK, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
826 OsAccountManager::RemoveOsAccount(osAccountInfo.GetLocalId());
827 }
828
829 /**
830 * @tc.name: CreateOsAccountWithFullInfo0105
831 * @tc.desc: Test CreateOsAccountWithFullInfo guest success and repeat to create fail
832 * @tc.type: FUNC
833 * @tc.require:
834 */
835 HWTEST_F(OsAccountInfoTest, CreateOsAccountWithFullInfo0105, TestSize.Level1)
836 {
837 OsAccountInfo osAccountInfo;
838 osAccountInfo.SetLocalName("test119");
839 osAccountInfo.SetType(OsAccountType::GUEST);
840 osAccountInfo.SetLocalId(999);
841 osAccountInfo.SetSerialNumber(1100);
842 osAccountInfo.SetCreateTime(1695883215000);
843 CreateOsAccountOptions options;
844 options.allowedHapList = {};
845 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccountWithFullInfo(osAccountInfo, options));
846
847 osAccountInfo.SetLastLoginTime(1695863290000);
848 EXPECT_EQ(ERR_OK, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
849 OsAccountManager::RemoveOsAccount(osAccountInfo.GetLocalId());
850 }
851
852 /**
853 * @tc.name: CreateOsAccountWithFullInfo0106
854 * @tc.desc: Test UpdateOsAccountWithFullInfo not exist fail
855 * @tc.type: FUNC
856 * @tc.require:
857 */
858 HWTEST_F(OsAccountInfoTest, CreateOsAccountWithFullInfo0106, TestSize.Level1)
859 {
860 OsAccountInfo osAccountInfo;
861 osAccountInfo.SetLocalName("test120");
862 osAccountInfo.SetType(OsAccountType::GUEST);
863 osAccountInfo.SetLocalId(999);
864 osAccountInfo.SetSerialNumber(1100);
865 osAccountInfo.SetCreateTime(1695883215000);
866 osAccountInfo.SetLastLoginTime(1695863290000);
867 EXPECT_EQ(ERR_ACCOUNT_COMMON_ACCOUNT_NOT_EXIST_ERROR,
868 OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
869 }
870
871 /**
872 * @tc.name: CreateOsAccountWithFullInfo0107
873 * @tc.desc: Test UpdateOsAccountWithFullInfo admin user without localName
874 * @tc.type: FUNC
875 * @tc.require: I8DBBM
876 */
877 HWTEST_F(OsAccountInfoTest, CreateOsAccountWithFullInfo0107, TestSize.Level1)
878 {
879 OsAccountInfo osAccountInfoBak;
880 OsAccountManager::QueryOsAccountById(100, osAccountInfoBak);
881
882 OsAccountInfo osAccountInfo;
883 osAccountInfo.SetLocalId(100);
884 osAccountInfo.SetLastLoginTime(1695863290000);
885 osAccountInfo.SetConstraints(VECTOR_CONSTRAINTS);
886
887 EXPECT_EQ(ERR_OK, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
888 osAccountInfo.SetType(OsAccountType::GUEST);
889 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfo));
890
891 EXPECT_EQ(ERR_OK, OsAccountManager::UpdateOsAccountWithFullInfo(osAccountInfoBak));
892 }
893
894 /**
895 * @tc.name: GetOsAccountShortName001
896 * @tc.desc: Test get os account name.
897 * @tc.type: FUNC
898 * @tc.require: I8F2PI
899 */
900 HWTEST_F(OsAccountInfoTest, GetOsAccountShortName001, TestSize.Level1)
901 {
902 std::string shortName;
903 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountShortName(shortName));
904 }
905
906 /**
907 * @tc.name: GetOsAccountShortName002
908 * @tc.desc: Test get os account short name by id.
909 * @tc.type: FUNC
910 * @tc.require:
911 */
912 HWTEST_F(OsAccountInfoTest, GetOsAccountShortName002, TestSize.Level1)
913 {
914 std::string shortName;
915 EXPECT_EQ(ERR_OK, OsAccountManager::GetOsAccountShortName(100, shortName));
916 EXPECT_NE(ERR_OK, OsAccountManager::GetOsAccountShortName(199, shortName));
917 }
918
919 /**
920 * @tc.name: CreateOsAccount00
921 * @tc.desc: create os account with short name
922 * @tc.type: FUNC
923 * @tc.require: I8F2PI
924 */
925 HWTEST_F(OsAccountInfoTest, CreateOsAccount00, TestSize.Level1)
926 {
927 OsAccountInfo osAccountInfoOne;
928 OsAccountInfo osAccountInfoTwo;
929 CreateOsAccountOptions options;
930 options.allowedHapList = {};
931 EXPECT_EQ(ERR_OK,
932 OsAccountManager::CreateOsAccount(STRING_NAME, "shortName", OsAccountType::NORMAL, options, osAccountInfoOne));
933 EXPECT_EQ(ERR_ACCOUNT_COMMON_NAME_HAD_EXISTED,
934 OsAccountManager::CreateOsAccount(STRING_NAME, STRING_NAME, OsAccountType::NORMAL, osAccountInfoTwo));
935 OsAccountManager::RemoveOsAccount(osAccountInfoTwo.GetLocalId());
936 EXPECT_EQ(ERR_OK, OsAccountManager::SetOsAccountName(osAccountInfoOne.GetLocalId(), "updateName"));
937 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
938 }
939
940 /**
941 * @tc.name: CreateOsAccount01
942 * @tc.desc: create os account with short name
943 * @tc.type: FUNC
944 * @tc.require: I8F2PI
945 */
946 HWTEST_F(OsAccountInfoTest, CreateOsAccount01, TestSize.Level1)
947 {
948 OsAccountInfo osAccountInfoOne;
949 OsAccountInfo osAccountInfoTwo;
950 CreateOsAccountOptions options;
951 options.allowedHapList = {};
952 EXPECT_EQ(ERR_OK,
953 OsAccountManager::CreateOsAccount(STRING_NAME, "shortName", OsAccountType::NORMAL, options, osAccountInfoOne));
954 EXPECT_EQ(ERR_ACCOUNT_COMMON_NAME_HAD_EXISTED,
955 OsAccountManager::CreateOsAccount(STRING_NAME, STRING_NAME, OsAccountType::NORMAL, osAccountInfoTwo));
956 EXPECT_EQ(ERR_ACCOUNT_COMMON_SHORT_NAME_HAD_EXISTED,
957 OsAccountManager::CreateOsAccount("CreateOsAccount01", "shortName", OsAccountType::NORMAL, osAccountInfoTwo));
958 EXPECT_EQ(ERR_OK, OsAccountManager::SetOsAccountName(osAccountInfoOne.GetLocalId(), "updateName"));
959 osAccountInfoOne.SetShortName(STRING_NAME);
960 osAccountInfoOne.SetCredentialId(123);
961 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
962 }
963 #endif // ENABLE_MULTIPLE_OS_ACCOUNTS
964
965 /**
966 * @tc.name: SetCredentialId01
967 * @tc.desc: Test SetCredentialId
968 * @tc.type: FUNC
969 * @tc.require: issueI8ZEEN
970 */
971 HWTEST_F(OsAccountInfoTest, SetCredentialId01, TestSize.Level1)
972 {
973 OsAccountInfo osAccountInfo;
974 osAccountInfo.SetCredentialId(0);
975 EXPECT_EQ(osAccountInfo.GetCredentialId(), 0);
976 }
977
978 /**
979 * @tc.name: CreateOsAccount02
980 * @tc.desc: create os account with short name
981 * @tc.type: FUNC
982 * @tc.require: I8F2PI
983 */
984 #ifdef ENABLE_MULTIPLE_OS_ACCOUNTS
985 HWTEST_F(OsAccountInfoTest, CreateOsAccount02, TestSize.Level1)
986 {
987 OsAccountInfo accountInfo;
988 CreateOsAccountOptions options;
989 options.allowedHapList = {};
990 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::CreateOsAccount("CreateOsAccount02", "..",
991 OsAccountType::NORMAL, accountInfo));
992 }
993
994 /**
995 * @tc.name: CreateOsAccount03
996 * @tc.desc: create os account with short name
997 * @tc.type: FUNC
998 * @tc.require: I8F2PI
999 */
1000 HWTEST_F(OsAccountInfoTest, CreateOsAccount03, TestSize.Level1)
1001 {
1002 OsAccountInfo accountInfo;
1003 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER, OsAccountManager::CreateOsAccount("CreateOsAccount03",
1004 "zsm<<zd?s>|:23\"1/bc\\d", OsAccountType::NORMAL, accountInfo));
1005 }
1006
1007 /**
1008 * @tc.name: CreateOsAccount04
1009 * @tc.desc: create os account with short name
1010 * @tc.type: FUNC
1011 * @tc.require: I8F2PI
1012 */
1013 HWTEST_F(OsAccountInfoTest, CreateOsAccount04, TestSize.Level1)
1014 {
1015 OsAccountInfo osAccountInfoOne;
1016 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER,
1017 OsAccountManager::CreateOsAccount("CreateOsAccount04", OVER_LENGTH_NAME,
1018 OsAccountType::NORMAL, osAccountInfoOne));
1019 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1020 }
1021
1022 /**
1023 * @tc.name: CreateOsAccount05
1024 * @tc.desc: create os account with short name
1025 * @tc.type: FUNC
1026 * @tc.require: I8F2PI
1027 */
1028 HWTEST_F(OsAccountInfoTest, CreateOsAccount05, TestSize.Level1)
1029 {
1030 OsAccountInfo osAccountInfoOne;
1031 EXPECT_EQ(ERR_ACCOUNT_COMMON_INVALID_PARAMETER,
1032 OsAccountManager::CreateOsAccount(OVER_LENGTH_NAME + OVER_LENGTH_NAME,
1033 OsAccountType::NORMAL, osAccountInfoOne));
1034 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1035 }
1036
1037 /**
1038 * @tc.name: CreateOsAccount06
1039 * @tc.desc: create os account with short name
1040 * @tc.type: FUNC
1041 * @tc.require: I8F2PI
1042 */
1043 HWTEST_F(OsAccountInfoTest, CreateOsAccount06, TestSize.Level1)
1044 {
1045 OsAccountInfo osAccountInfoOne;
1046 EXPECT_EQ(OsAccountManager::CreateOsAccount(STRING_NAME, "shortName*", OsAccountType::NORMAL, osAccountInfoOne),
1047 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1048 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1049 }
1050
1051 /**
1052 * @tc.name: CreateOsAccount07
1053 * @tc.desc: create os account with short name
1054 * @tc.type: FUNC
1055 * @tc.require: I8F2PI
1056 */
1057 HWTEST_F(OsAccountInfoTest, CreateOsAccount07, TestSize.Level1)
1058 {
1059 OsAccountInfo osAccountInfoOne;
1060 EXPECT_EQ(OsAccountManager::CreateOsAccount(STRING_NAME, "123|", OsAccountType::NORMAL, osAccountInfoOne),
1061 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1062 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1063 EXPECT_EQ(OsAccountManager::CreateOsAccount(STRING_NAME, "12*3", OsAccountType::NORMAL, osAccountInfoOne),
1064 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1065 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1066 EXPECT_EQ(OsAccountManager::CreateOsAccount(STRING_NAME, "12?3", OsAccountType::NORMAL, osAccountInfoOne),
1067 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1068 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1069 EXPECT_EQ(OsAccountManager::CreateOsAccount(STRING_NAME, "12\"3", OsAccountType::NORMAL, osAccountInfoOne),
1070 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1071 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1072 }
1073
1074 /**
1075 * @tc.name: CreateOsAccount08
1076 * @tc.desc: create os account with short name
1077 * @tc.type: FUNC
1078 * @tc.require: I8F2PI
1079 */
1080 HWTEST_F(OsAccountInfoTest, CreateOsAccount08, TestSize.Level1)
1081 {
1082 OsAccountInfo osAccountInfoOne;
1083 EXPECT_EQ(OsAccountManager::CreateOsAccount(STRING_NAME, "", OsAccountType::NORMAL, osAccountInfoOne),
1084 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1085 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1086 EXPECT_EQ(OsAccountManager::CreateOsAccount(STRING_NAME, ".", OsAccountType::NORMAL, osAccountInfoOne),
1087 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1088 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1089 EXPECT_EQ(OsAccountManager::CreateOsAccount(STRING_NAME, "..", OsAccountType::NORMAL, osAccountInfoOne),
1090 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1091 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1092 }
1093
1094 /**
1095 * @tc.name: CreateOsAccount09
1096 * @tc.desc: create os account with short name
1097 * @tc.type: FUNC
1098 * @tc.require: I8F2PI
1099 */
1100 HWTEST_F(OsAccountInfoTest, CreateOsAccount09, TestSize.Level1)
1101 {
1102 OsAccountInfo osAccountInfoOne;
1103 EXPECT_EQ(OsAccountManager::CreateOsAccount("name1", "???", OsAccountType::NORMAL, osAccountInfoOne),
1104 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1105 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1106 EXPECT_EQ(OsAccountManager::CreateOsAccount("name2", "***", OsAccountType::NORMAL, osAccountInfoOne),
1107 ERR_ACCOUNT_COMMON_INVALID_PARAMETER);
1108 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1109 EXPECT_EQ(OsAccountManager::CreateOsAccount("name3", "?", OsAccountType::NORMAL, osAccountInfoOne),
1110 ERR_OK);
1111 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1112 EXPECT_EQ(OsAccountManager::CreateOsAccount("name4", ":", OsAccountType::NORMAL, osAccountInfoOne),
1113 ERR_OK);
1114 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1115 }
1116
1117 HWTEST_F(OsAccountInfoTest, CreateOsAccount10, TestSize.Level1)
1118 {
1119 OsAccountInfo osAccountInfoOne;
1120 EXPECT_NE(OsAccountManager::CreateOsAccount(OVER_LENGTH_ACCOUNT_NAME, OsAccountType::NORMAL, osAccountInfoOne),
1121 ERR_OK);
1122 OsAccountManager::RemoveOsAccount(osAccountInfoOne.GetLocalId());
1123 OsAccountInfo osAccountInfoTwo;
1124 EXPECT_NE(OsAccountManager::CreateOsAccount(OVER_LENGTH_ACCOUNT_NAME, "sn",
1125 OsAccountType::NORMAL, osAccountInfoTwo), ERR_OK);
1126 OsAccountManager::RemoveOsAccount(osAccountInfoTwo.GetLocalId());
1127 }
1128 #endif // ENABLE_MULTIPLE_OS_ACCOUNTS
1129
1130 #ifndef ENABLE_MULTIPLE_OS_ACCOUNTS
1131 /**
1132 * @tc.name: CreateOsAccount11
1133 * @tc.desc: create os account with short name
1134 * @tc.type: FUNC
1135 * @tc.require: I8F2PI
1136 */
1137 HWTEST_F(OsAccountInfoTest, CreateOsAccount11, TestSize.Level1)
1138 {
1139 OsAccountInfo osAccountInfo;
1140 EXPECT_EQ(ERR_OSACCOUNT_SERVICE_MANAGER_NOT_ENABLE_MULTI_ERROR,
1141 OsAccountManager::CreateOsAccount(STRING_NAME, "shortName", OsAccountType::NORMAL, osAccountInfo));
1142 }
1143 #endif // ENABLE_MULTIPLE_OS_ACCOUNTS
1144
1145 /**
1146 * @tc.name: SetOsAccountToBeRemoved_UpdateDefaultActivated_001
1147 * @tc.desc: Test SetOsAccountToBeRemoved updates default activated account when target is default activated
1148 * @tc.type: FUNC
1149 * @tc.require:
1150 */
1151 HWTEST_F(OsAccountInfoTest, SetOsAccountToBeRemoved_UpdateDefaultActivated_001, TestSize.Level1)
1152 {
1153 #ifdef ENABLE_MULTIPLE_OS_ACCOUNTS
1154 // Step 1: Create test account
1155 OsAccountInfo osAccountInfo;
1156 CreateOsAccountOptions options;
1157 options.allowedHapList = {};
1158 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccount("TestDefaultActivatedAccount", "testShort",
1159 OsAccountType::NORMAL, options, osAccountInfo));
1160
1161 int32_t testAccountId = osAccountInfo.GetLocalId();
1162 EXPECT_GT(testAccountId, 0);
1163
1164 // Step 2: Set this account as default activated account
1165 EXPECT_EQ(ERR_OK, OsAccountManager::SetDefaultActivatedOsAccount(testAccountId));
1166
1167 // Step 3: Call SetOsAccountToBeRemoved to mark the target account for removal
1168 EXPECT_EQ(ERR_OK, OsAccountManager::SetOsAccountToBeRemoved(testAccountId, true));
1169
1170 // Step 4: Verify default activated account is automatically updated to START_USER_ID
1171 int32_t newDefaultActivatedId = 0;
1172 EXPECT_EQ(ERR_OK, OsAccountManager::GetDefaultActivatedOsAccount(newDefaultActivatedId));
1173 EXPECT_EQ(newDefaultActivatedId, Constants::START_USER_ID);
1174
1175 // Clean up test account
1176 EXPECT_EQ(ERR_OK, OsAccountManager::RemoveOsAccount(testAccountId));
1177 #endif // ENABLE_MULTIPLE_OS_ACCOUNTS
1178 }
1179
1180 /**
1181 * @tc.name: SetOsAccountToBeRemoved_NonDefaultAccount_002
1182 * @tc.desc: Test SetOsAccountToBeRemoved does not change default activated account when target is not default
1183 * @tc.type: FUNC
1184 * @tc.require:
1185 */
1186 HWTEST_F(OsAccountInfoTest, SetOsAccountToBeRemoved_NonDefaultAccount_002, TestSize.Level1)
1187 {
1188 ACCOUNT_LOGI("SetOsAccountToBeRemoved_NonDefaultAccount_002 start");
1189 #ifdef ENABLE_MULTIPLE_OS_ACCOUNTS
1190 // Step 1: Create test account
1191 OsAccountInfo testAccountInfo;
1192 CreateOsAccountOptions options;
1193 options.allowedHapList = {};
1194 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccount("TestDefaultActivatedAccount2", "testShort2",
1195 OsAccountType::NORMAL, options, testAccountInfo));
1196
1197 int32_t testAccountId = testAccountInfo.GetLocalId();
1198
1199 // Step 2: Get current default activated account ID
1200 int32_t originalDefaultId = 0;
1201 EXPECT_EQ(ERR_OK, OsAccountManager::GetDefaultActivatedOsAccount(originalDefaultId));
1202
1203 // Step 3: Ensure test account is not the default activated account
1204 EXPECT_NE(testAccountId, originalDefaultId);
1205
1206 // Step 4: Call SetOsAccountToBeRemoved to mark the test account for removal
1207 EXPECT_EQ(ERR_OK, OsAccountManager::SetOsAccountToBeRemoved(testAccountId, true));
1208
1209 // Step 5: Verify default activated account remains unchanged
1210 int32_t currentDefaultId = 0;
1211 EXPECT_EQ(ERR_OK, OsAccountManager::GetDefaultActivatedOsAccount(currentDefaultId));
1212 EXPECT_EQ(currentDefaultId, originalDefaultId);
1213
1214 // Clean up test account
1215 EXPECT_EQ(ERR_OK, OsAccountManager::RemoveOsAccount(testAccountId));
1216 #endif // ENABLE_MULTIPLE_OS_ACCOUNTS
1217 }
1218
1219 /**
1220 * @tc.name: SetOsAccountToBeRemoved_CancelRemoval_003
1221 * @tc.desc: Test SetOsAccountToBeRemoved with false parameter cancels removal flag
1222 * @tc.type: FUNC
1223 * @tc.require:
1224 */
1225 HWTEST_F(OsAccountInfoTest, SetOsAccountToBeRemoved_CancelRemoval_003, TestSize.Level1)
1226 {
1227 #ifdef ENABLE_MULTIPLE_OS_ACCOUNTS
1228 // Step 1: Create test account
1229 OsAccountInfo testAccountInfo;
1230 CreateOsAccountOptions options;
1231 options.allowedHapList = {};
1232 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccount("TestDefaultActivatedAccount3", "testShort3",
1233 OsAccountType::NORMAL, options, testAccountInfo));
1234
1235 int32_t testAccountId = testAccountInfo.GetLocalId();
1236
1237 // Step 2: First set to be removed
1238 EXPECT_EQ(ERR_OK, OsAccountManager::SetOsAccountToBeRemoved(testAccountId, true));
1239
1240 // Step 3: Cancel removal status
1241 EXPECT_EQ(ERR_OK, OsAccountManager::SetOsAccountToBeRemoved(testAccountId, false));
1242
1243 // Clean up test account
1244 EXPECT_EQ(ERR_OK, OsAccountManager::RemoveOsAccount(testAccountId));
1245 #endif // ENABLE_MULTIPLE_OS_ACCOUNTS
1246 }
1247 /**
1248 * @tc.name: SetOsAccountToBeRemoved_UpdateDefaultActivatedError_008
1249 * @tc.desc: Test SetOsAccountToBeRemoved handles error when updating default activated account fails
1250 * @tc.type: FUNC
1251 * @tc.require:
1252 */
1253 HWTEST_F(OsAccountInfoTest, SetOsAccountToBeRemoved_UpdateDefaultActivatedError_008, TestSize.Level1)
1254 {
1255 ACCOUNT_LOGI("SetOsAccountToBeRemoved_UpdateDefaultActivatedError_008 start");
1256
1257 #ifdef ENABLE_MULTIPLE_OS_ACCOUNTS
1258 // Step 1: Create test account
1259 OsAccountInfo osAccountInfo;
1260 CreateOsAccountOptions options;
1261 options.allowedHapList = {};
1262 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccount("TestDefaultActivatedAccountError", "testError",
1263 OsAccountType::NORMAL, options, osAccountInfo));
1264
1265 int32_t testAccountId = osAccountInfo.GetLocalId();
1266 EXPECT_GT(testAccountId, 0);
1267
1268 // Step 2: Set this account as default activated account
1269 EXPECT_EQ(ERR_OK, OsAccountManager::SetDefaultActivatedOsAccount(testAccountId));
1270
1271 // Verify the setting is successful
1272 int32_t defaultActivatedId = 0;
1273 EXPECT_EQ(ERR_OK, OsAccountManager::GetDefaultActivatedOsAccount(defaultActivatedId));
1274 EXPECT_EQ(defaultActivatedId, testAccountId);
1275
1276 // Step 3: Simulate error condition by setting an invalid START_USER_ID scenario
1277 OsAccountInfo tempAccountInfo;
1278 EXPECT_EQ(ERR_OK, OsAccountManager::CreateOsAccount("TempAccount", "temp",
1279 OsAccountType::NORMAL, options, tempAccountInfo));
1280 int32_t tempAccountId = tempAccountInfo.GetLocalId();
1281
1282 // Set temp account as default activated
1283 EXPECT_EQ(ERR_OK, OsAccountManager::SetDefaultActivatedOsAccount(tempAccountId));
1284
1285 // Now set our test account back as default
1286 EXPECT_EQ(ERR_OK, OsAccountManager::SetDefaultActivatedOsAccount(testAccountId));
1287
1288 // Step 4: Call SetOsAccountToBeRemoved - this should attempt to update default activated account
1289 ErrCode ret = OsAccountManager::SetOsAccountToBeRemoved(testAccountId, true);
1290 EXPECT_EQ(ret, ERR_OK);
1291
1292 // Step 5: Verify that despite potential internal errors, the operation completes
1293
1294 int32_t finalDefaultId = 0;
1295 EXPECT_EQ(ERR_OK, OsAccountManager::GetDefaultActivatedOsAccount(finalDefaultId));
1296 EXPECT_EQ(finalDefaultId, Constants::START_USER_ID);
1297 EXPECT_EQ(ERR_OK, OsAccountManager::RemoveOsAccount(testAccountId));
1298 EXPECT_EQ(ERR_OK, OsAccountManager::RemoveOsAccount(tempAccountId));
1299 #endif // ENABLE_MULTIPLE_OS_ACCOUNTS
1300 }