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.Level0)
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: StopUserTest_0100
118 * @tc.desc: StopUser Test
119 * @tc.type: FUNC
120 * @tc.require: issueI581SE
121 */
122 HWTEST_F(UserControllerTest, StopUserTest_0100, TestSize.Level0)
123 {
124 UserController userController;
125 userController.StopUser(-1);
126 userController.StopUser(0);
127 EXPECT_TRUE(userController.StopUser(100) == -1);
128 }
129
130 /**
131 * @tc.name: StopUserTest_0200
132 * @tc.desc: StopUser Test
133 * @tc.type: FUNC
134 * @tc.require: issueI581SE
135 */
136 HWTEST_F(UserControllerTest, StopUserTest_0200, TestSize.Level0)
137 {
138 UserController userController;
139 EXPECT_TRUE(userController.StopUser(666) == -1);
140 }
141
142 /**
143 * @tc.name: StopUserTest_0300
144 * @tc.desc: StopUser Test
145 * @tc.type: FUNC
146 * @tc.require: issueI581SE
147 */
148 HWTEST_F(UserControllerTest, StopUserTest_0300, TestSize.Level0)
149 {
150 UserController userController;
151 userController.GetOrCreateUserItem(1000);
152 auto result = userController.StopUser(1000);
153 EXPECT_TRUE(result = 1000);
154 }
155
156 /**
157 * @tc.name: LogoutUserTest_0100
158 * @tc.desc: LogoutUser Test
159 * @tc.type: FUNC
160 * @tc.require: issueI581SE
161 */
162 HWTEST_F(UserControllerTest, LogoutUserTest_0100, TestSize.Level0)
163 {
164 UserController userController;
165 auto result = userController.LogoutUser(-1, nullptr);
166 if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
167 EXPECT_EQ(result, INVALID_USERID_VALUE);
168 }
169 EXPECT_TRUE(userController.GetCurrentUserId() == 0);
170 }
171
172 /**
173 * @tc.name: LogoutUserTest_0200
174 * @tc.desc: LogoutUser Test
175 * @tc.type: FUNC
176 * @tc.require: issueI581SE
177 */
178 HWTEST_F(UserControllerTest, LogoutUserTest_0200, TestSize.Level0)
179 {
180 UserController userController;
181 auto result = userController.LogoutUser(666, nullptr);
182 if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
183 EXPECT_EQ(result, INVALID_USERID_VALUE);
184 }
185 EXPECT_TRUE(userController.GetCurrentUserId() == 0);
186 }
187
188 /**
189 * @tc.name: LogoutUserTest_0300
190 * @tc.desc: LogoutUser Test
191 * @tc.type: FUNC
192 * @tc.require: issueI581SE
193 */
194 HWTEST_F(UserControllerTest, LogoutUserTest_0300, TestSize.Level0)
195 {
196 UserController userController;
197 userController.GetOrCreateUserItem(1000);
198 auto result = userController.LogoutUser(1000, nullptr);
199 EXPECT_TRUE(result = 1000);
200 }
201
202 /**
203 * @tc.name: HandleContinueUserSwitchTest_0100
204 * @tc.desc: HandleContinueUserSwitch Test
205 * @tc.type: FUNC
206 * @tc.require: issueI581SE
207 */
208 HWTEST_F(UserControllerTest, HandleContinueUserSwitchTest_0100, TestSize.Level0)
209 {
210 UserController userController;
211 auto userItem = std::make_shared<UserItem>(1000);
212 userController.HandleContinueUserSwitch(1000, 1000, userItem);
213 auto result = userController.GetCurrentUserId();
214 EXPECT_TRUE(result == 0);
215 }
216
217 /**
218 * @tc.name: SendUserSwitchDoneTest_0100
219 * @tc.desc: SendUserSwitchDone Test
220 * @tc.type: FUNC
221 * @tc.require: issueI581SE
222 */
223 HWTEST_F(UserControllerTest, SendUserSwitchDoneTest_0100, TestSize.Level0)
224 {
225 UserController userController;
226 userController.SendUserSwitchDone(1000);
227 userController.Init();
228 userController.SendUserSwitchDone(1001);
229 auto result = userController.GetCurrentUserId();
230 EXPECT_TRUE(result == 0);
231 }
232
233 /**
234 * @tc.name: SendContinueUserSwitchTest_0200
235 * @tc.desc: SendContinueUserSwitch Test
236 * @tc.type: FUNC
237 * @tc.require: issueI581SE
238 */
239 HWTEST_F(UserControllerTest, SendContinueUserSwitchTest_0200, TestSize.Level0)
240 {
241 UserController userController;
242 auto userItem = std::make_shared<UserItem>(1000);
243 userController.SendContinueUserSwitch(1000, 1000, userItem);
244 userController.Init();
245 userController.SendContinueUserSwitch(1000, 1000, userItem);
246 auto result = userController.GetCurrentUserId();
247 EXPECT_TRUE(result == 0);
248 }
249
250 /**
251 * @tc.name: SendUserSwitchTimeoutTest_0100
252 * @tc.desc: SendUserSwitchTimeout Test
253 * @tc.type: FUNC
254 * @tc.require: issueI581SE
255 */
256 HWTEST_F(UserControllerTest, SendUserSwitchTimeoutTest_0100, TestSize.Level0)
257 {
258 UserController userController;
259 auto userItem = std::make_shared<UserItem>(1000);
260 userController.SendUserSwitchTimeout(1000, 1000, userItem);
261 userController.Init();
262 userController.SendUserSwitchTimeout(1000, 1000, userItem);
263 auto result = userController.GetCurrentUserId();
264 EXPECT_TRUE(result == 0);
265 }
266
267 /**
268 * @tc.name: SendReportUserSwitchTest_0100
269 * @tc.desc: SendReportUserSwitch Test
270 * @tc.type: FUNC
271 * @tc.require: issueI581SE
272 */
273 HWTEST_F(UserControllerTest, SendReportUserSwitchTest_0100, TestSize.Level0)
274 {
275 UserController userController;
276 auto userItem = std::make_shared<UserItem>(1000);
277 userController.SendReportUserSwitch(1000, 1000, userItem);
278 userController.Init();
279 userController.SendReportUserSwitch(1000, 1000, userItem);
280 auto result = userController.GetCurrentUserId();
281 EXPECT_TRUE(result == 0);
282 }
283
284 /**
285 * @tc.name: SendSystemUserCurrentTest_0100
286 * @tc.desc: SendSystemUserCurrent Test
287 * @tc.type: FUNC
288 * @tc.require: issueI581SE
289 */
290 HWTEST_F(UserControllerTest, SendSystemUserCurrentTest_0100, TestSize.Level0)
291 {
292 UserController userController;
293 userController.SendSystemUserCurrent(1000, 1000);
294 userController.Init();
295 userController.SendSystemUserCurrent(1000, 1000);
296 auto result = userController.GetCurrentUserId();
297 EXPECT_TRUE(result == 0);
298 }
299
300 /**
301 * @tc.name: SendSystemUserStartTest_0100
302 * @tc.desc: SendSystemUserStart Test
303 * @tc.type: FUNC
304 * @tc.require: issueI581SE
305 */
306 HWTEST_F(UserControllerTest, SendSystemUserStartTest_0100, TestSize.Level0)
307 {
308 UserController userController;
309 userController.SendSystemUserStart(1000);
310 userController.Init();
311 userController.SendSystemUserStart(1000);
312 auto result = userController.GetCurrentUserId();
313 EXPECT_TRUE(result == 0);
314 }
315 } // namespace AAFwk
316 } // namespace OHOS
317