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