1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17
18 #define private public
19 #include "ability_manager_service.h"
20 #include "user_controller.h"
21 #undef private
22 #include "scene_board_judgement.h"
23 #include "user_callback_stub.h"
24 using namespace testing;
25 using namespace testing::ext;
26
27 namespace OHOS {
28 namespace AAFwk {
29 class UserControllerTest : public testing::Test {
30 public:
31 static void SetUpTestCase();
32 static void TearDownTestCase();
33 void SetUp() override;
34 void TearDown() override;
35 };
36
SetUpTestCase()37 void UserControllerTest::SetUpTestCase()
38 {
39 auto abilityMs = OHOS::DelayedSingleton<AbilityManagerService>::GetInstance();
40 AmsConfigurationParameter::GetInstance().Parse();
41 }
42
TearDownTestCase()43 void UserControllerTest::TearDownTestCase()
44 {}
45
SetUp()46 void UserControllerTest::SetUp()
47 {}
48
TearDown()49 void UserControllerTest::TearDown()
50 {}
51
52 class TestUserCallback : public UserCallbackStub {
53 public:
54 void OnStopUserDone(int userId, int errcode) override;
55 void OnStartUserDone(int userId, int errcode) override;
56 void OnLogoutUserDone(int userId, int errcode) override;
57
58 int errCode_ = -1;
59 };
60
OnStartUserDone(int userId,int errcode)61 void TestUserCallback::OnStartUserDone(int userId, int errcode)
62 {
63 errCode_ = errcode;
64 }
65
OnStopUserDone(int userId,int errcode)66 void TestUserCallback::OnStopUserDone(int userId, int errcode) {}
67
OnLogoutUserDone(int userId,int errcode)68 void TestUserCallback::OnLogoutUserDone(int userId, int errcode) {}
69
70 /**
71 * @tc.name: UserItemSetState_0100
72 * @tc.desc: UserItemSetState Test
73 * @tc.type: FUNC
74 * @tc.require: issueI581SE
75 */
76 HWTEST_F(UserControllerTest, UserItemSetState_0100, TestSize.Level1)
77 {
78 UserItem item(100);
79 item.SetState(UserState::STATE_BOOTING);
80 EXPECT_TRUE(item.GetState() == UserState::STATE_BOOTING);
81
82 item.SetState(UserState::STATE_STARTED);
83 EXPECT_TRUE(item.GetState() == UserState::STATE_STARTED);
84 }
85
86 /**
87 * @tc.name: StartUserTest_0100
88 * @tc.desc: StartUser Test
89 * @tc.type: FUNC
90 * @tc.require: issueI581SE
91 */
92 HWTEST_F(UserControllerTest, StartUserTest_0100, TestSize.Level0)
93 {
94 UserController userController;
95 userController.GetOrCreateUserItem(1000);
96 userController.SetCurrentUserId(1000);
97 sptr<TestUserCallback> callback = new TestUserCallback();
98 userController.StartUser(1000, callback);
99 EXPECT_TRUE(callback->errCode_ == 0);
100 }
101
102 /**
103 * @tc.name: StartUserTest_0200
104 * @tc.desc: StartUser Test
105 * @tc.type: FUNC
106 * @tc.require: issueI581SE
107 */
108 HWTEST_F(UserControllerTest, StartUserTest_0200, TestSize.Level0)
109 {
110 UserController userController;
111 sptr<TestUserCallback> callback = new TestUserCallback();
112 userController.StartUser(666, callback);
113 EXPECT_TRUE(callback->errCode_ != 0);
114 }
115
116 /**
117 * @tc.name: StartNoHeadUser_0100
118 * @tc.desc: StartNoHeadUser Test
119 * @tc.type: FUNC
120 * @tc.require:
121 */
122 HWTEST_F(UserControllerTest, StartNoHeadUser_0100, TestSize.Level0)
123 {
124 UserController userController;
125 sptr<TestUserCallback> callback = new TestUserCallback();
126 int32_t userId = 666;
127 auto ret = userController.StartNoHeadUser(userId, callback);
128 EXPECT_EQ(ret, INVALID_USERID_VALUE);
129 }
130
131 /**
132 * @tc.name: StartNoHeadUser_0200
133 * @tc.desc: StartNoHeadUser Test
134 * @tc.type: FUNC
135 * @tc.require:
136 */
137 HWTEST_F(UserControllerTest, StartNoHeadUser_0200, TestSize.Level0)
138 {
139 UserController userController;
140 sptr<TestUserCallback> callback = new TestUserCallback();
141 int32_t userId = 100;
142 auto ret = userController.StartNoHeadUser(userId, callback);
143 EXPECT_EQ(ret, ERR_OK);
144 }
145
146 /**
147 * @tc.name: StopUserTest_0100
148 * @tc.desc: StopUser Test
149 * @tc.type: FUNC
150 * @tc.require: issueI581SE
151 */
152 HWTEST_F(UserControllerTest, StopUserTest_0100, TestSize.Level0)
153 {
154 UserController userController;
155 userController.StopUser(-1);
156 userController.StopUser(0);
157 EXPECT_TRUE(userController.StopUser(100) == -1);
158 }
159
160 /**
161 * @tc.name: StopUserTest_0200
162 * @tc.desc: StopUser Test
163 * @tc.type: FUNC
164 * @tc.require: issueI581SE
165 */
166 HWTEST_F(UserControllerTest, StopUserTest_0200, TestSize.Level0)
167 {
168 UserController userController;
169 EXPECT_TRUE(userController.StopUser(666) == -1);
170 }
171
172 /**
173 * @tc.name: StopUserTest_0300
174 * @tc.desc: StopUser Test
175 * @tc.type: FUNC
176 * @tc.require: issueI581SE
177 */
178 HWTEST_F(UserControllerTest, StopUserTest_0300, TestSize.Level0)
179 {
180 UserController userController;
181 userController.GetOrCreateUserItem(1000);
182 auto result = userController.StopUser(1000);
183 EXPECT_TRUE(result = 1000);
184 }
185
186 /**
187 * @tc.name: LogoutUserTest_0100
188 * @tc.desc: LogoutUser Test
189 * @tc.type: FUNC
190 * @tc.require: issueI581SE
191 */
192 HWTEST_F(UserControllerTest, LogoutUserTest_0100, TestSize.Level1)
193 {
194 UserController userController;
195 auto result = userController.LogoutUser(-1, nullptr);
196 if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
197 EXPECT_EQ(result, INVALID_USERID_VALUE);
198 }
199 EXPECT_TRUE(userController.GetCurrentUserId() == 0);
200 }
201
202 /**
203 * @tc.name: LogoutUserTest_0200
204 * @tc.desc: LogoutUser Test
205 * @tc.type: FUNC
206 * @tc.require: issueI581SE
207 */
208 HWTEST_F(UserControllerTest, LogoutUserTest_0200, TestSize.Level1)
209 {
210 UserController userController;
211 auto result = userController.LogoutUser(666, nullptr);
212 if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
213 EXPECT_EQ(result, INVALID_USERID_VALUE);
214 }
215 EXPECT_TRUE(userController.GetCurrentUserId() == 0);
216 }
217
218 /**
219 * @tc.name: LogoutUserTest_0300
220 * @tc.desc: LogoutUser Test
221 * @tc.type: FUNC
222 * @tc.require: issueI581SE
223 */
224 HWTEST_F(UserControllerTest, LogoutUserTest_0300, TestSize.Level1)
225 {
226 UserController userController;
227 userController.GetOrCreateUserItem(1000);
228 auto result = userController.LogoutUser(1000, nullptr);
229 EXPECT_TRUE(result != 0);
230 }
231
232 /**
233 * @tc.name: HandleContinueUserSwitchTest_0100
234 * @tc.desc: HandleContinueUserSwitch Test
235 * @tc.type: FUNC
236 * @tc.require: issueI581SE
237 */
238 HWTEST_F(UserControllerTest, HandleContinueUserSwitchTest_0100, TestSize.Level2)
239 {
240 UserController userController;
241 auto userItem = std::make_shared<UserItem>(1000);
242 userController.HandleContinueUserSwitch(1000, 1000, userItem);
243 auto result = userController.GetCurrentUserId();
244 EXPECT_TRUE(result == 0);
245 }
246
247 /**
248 * @tc.name: SendUserSwitchDoneTest_0100
249 * @tc.desc: SendUserSwitchDone Test
250 * @tc.type: FUNC
251 * @tc.require: issueI581SE
252 */
253 HWTEST_F(UserControllerTest, SendUserSwitchDoneTest_0100, TestSize.Level2)
254 {
255 UserController userController;
256 userController.SendUserSwitchDone(1000);
257 userController.Init();
258 userController.SendUserSwitchDone(1001);
259 auto result = userController.GetCurrentUserId();
260 EXPECT_TRUE(result == 0);
261 }
262
263 /**
264 * @tc.name: SendContinueUserSwitchTest_0200
265 * @tc.desc: SendContinueUserSwitch Test
266 * @tc.type: FUNC
267 * @tc.require: issueI581SE
268 */
269 HWTEST_F(UserControllerTest, SendContinueUserSwitchTest_0200, TestSize.Level2)
270 {
271 UserController userController;
272 auto userItem = std::make_shared<UserItem>(1000);
273 userController.SendContinueUserSwitch(1000, 1000, userItem);
274 userController.Init();
275 userController.SendContinueUserSwitch(1000, 1000, userItem);
276 auto result = userController.GetCurrentUserId();
277 EXPECT_TRUE(result == 0);
278 }
279
280 /**
281 * @tc.name: SendUserSwitchTimeoutTest_0100
282 * @tc.desc: SendUserSwitchTimeout Test
283 * @tc.type: FUNC
284 * @tc.require: issueI581SE
285 */
286 HWTEST_F(UserControllerTest, SendUserSwitchTimeoutTest_0100, TestSize.Level2)
287 {
288 UserController userController;
289 auto userItem = std::make_shared<UserItem>(1000);
290 userController.SendUserSwitchTimeout(1000, 1000, userItem);
291 userController.Init();
292 userController.SendUserSwitchTimeout(1000, 1000, userItem);
293 auto result = userController.GetCurrentUserId();
294 EXPECT_TRUE(result == 0);
295 }
296
297 /**
298 * @tc.name: SendReportUserSwitchTest_0100
299 * @tc.desc: SendReportUserSwitch Test
300 * @tc.type: FUNC
301 * @tc.require: issueI581SE
302 */
303 HWTEST_F(UserControllerTest, SendReportUserSwitchTest_0100, TestSize.Level2)
304 {
305 UserController userController;
306 auto userItem = std::make_shared<UserItem>(1000);
307 userController.SendReportUserSwitch(1000, 1000, userItem);
308 userController.Init();
309 userController.SendReportUserSwitch(1000, 1000, userItem);
310 auto result = userController.GetCurrentUserId();
311 EXPECT_TRUE(result == 0);
312 }
313
314 /**
315 * @tc.name: SendSystemUserCurrentTest_0100
316 * @tc.desc: SendSystemUserCurrent Test
317 * @tc.type: FUNC
318 * @tc.require: issueI581SE
319 */
320 HWTEST_F(UserControllerTest, SendSystemUserCurrentTest_0100, TestSize.Level2)
321 {
322 UserController userController;
323 userController.SendSystemUserCurrent(1000, 1000);
324 userController.Init();
325 userController.SendSystemUserCurrent(1000, 1000);
326 auto result = userController.GetCurrentUserId();
327 EXPECT_TRUE(result == 0);
328 }
329
330 /**
331 * @tc.name: SendSystemUserStartTest_0100
332 * @tc.desc: SendSystemUserStart Test
333 * @tc.type: FUNC
334 * @tc.require: issueI581SE
335 */
336 HWTEST_F(UserControllerTest, SendSystemUserStartTest_0100, TestSize.Level2)
337 {
338 UserController userController;
339 userController.SendSystemUserStart(1000);
340 userController.Init();
341 userController.SendSystemUserStart(1000);
342 auto result = userController.GetCurrentUserId();
343 EXPECT_TRUE(result == 0);
344 }
345 } // namespace AAFwk
346 } // namespace OHOS
347