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
57 int errCode_ = -1;
58 };
59
OnStartUserDone(int userId,int errcode)60 void TestUserCallback::OnStartUserDone(int userId, int errcode)
61 {
62 errCode_ = errcode;
63 }
64
OnStopUserDone(int userId,int errcode)65 void TestUserCallback::OnStopUserDone(int userId, int errcode) {}
66
67 /**
68 * @tc.name: UserItemSetState_0100
69 * @tc.desc: UserItemSetState Test
70 * @tc.type: FUNC
71 * @tc.require: issueI581SE
72 */
73 HWTEST_F(UserControllerTest, UserItemSetState_0100, TestSize.Level0)
74 {
75 UserItem item(100);
76 item.SetState(UserState::STATE_BOOTING);
77 EXPECT_TRUE(item.GetState() == UserState::STATE_BOOTING);
78
79 item.SetState(UserState::STATE_STARTED);
80 EXPECT_TRUE(item.GetState() == UserState::STATE_STARTED);
81 }
82
83 /**
84 * @tc.name: StartUserTest_0100
85 * @tc.desc: StartUser Test
86 * @tc.type: FUNC
87 * @tc.require: issueI581SE
88 */
89 HWTEST_F(UserControllerTest, StartUserTest_0100, TestSize.Level0)
90 {
91 UserController userController;
92 userController.GetOrCreateUserItem(1000);
93 userController.SetCurrentUserId(1000);
94 sptr<TestUserCallback> callback = new TestUserCallback();
95 userController.StartUser(1000, callback);
96 EXPECT_TRUE(callback->errCode_ == 0);
97 }
98
99 /**
100 * @tc.name: StartUserTest_0200
101 * @tc.desc: StartUser Test
102 * @tc.type: FUNC
103 * @tc.require: issueI581SE
104 */
105 HWTEST_F(UserControllerTest, StartUserTest_0200, TestSize.Level0)
106 {
107 UserController userController;
108 sptr<TestUserCallback> callback = new TestUserCallback();
109 userController.StartUser(666, callback);
110 EXPECT_TRUE(callback->errCode_ != 0);
111 }
112
113 /**
114 * @tc.name: StopUserTest_0100
115 * @tc.desc: StopUser Test
116 * @tc.type: FUNC
117 * @tc.require: issueI581SE
118 */
119 HWTEST_F(UserControllerTest, StopUserTest_0100, TestSize.Level0)
120 {
121 UserController userController;
122 userController.StopUser(-1);
123 userController.StopUser(0);
124 EXPECT_TRUE(userController.StopUser(100) == -1);
125 }
126
127 /**
128 * @tc.name: StopUserTest_0200
129 * @tc.desc: StopUser Test
130 * @tc.type: FUNC
131 * @tc.require: issueI581SE
132 */
133 HWTEST_F(UserControllerTest, StopUserTest_0200, TestSize.Level0)
134 {
135 UserController userController;
136 EXPECT_TRUE(userController.StopUser(666) == -1);
137 }
138
139 /**
140 * @tc.name: StopUserTest_0300
141 * @tc.desc: StopUser Test
142 * @tc.type: FUNC
143 * @tc.require: issueI581SE
144 */
145 HWTEST_F(UserControllerTest, StopUserTest_0300, TestSize.Level0)
146 {
147 UserController userController;
148 userController.GetOrCreateUserItem(1000);
149 auto result = userController.StopUser(1000);
150 EXPECT_TRUE(result = 1000);
151 }
152
153 /**
154 * @tc.name: LogoutUserTest_0100
155 * @tc.desc: LogoutUser Test
156 * @tc.type: FUNC
157 * @tc.require: issueI581SE
158 */
159 HWTEST_F(UserControllerTest, LogoutUserTest_0100, TestSize.Level0)
160 {
161 UserController userController;
162 auto result = userController.LogoutUser(-1);
163 if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
164 EXPECT_EQ(result, INVALID_USERID_VALUE);
165 }
166 EXPECT_TRUE(userController.GetCurrentUserId() == 0);
167 }
168
169 /**
170 * @tc.name: LogoutUserTest_0200
171 * @tc.desc: LogoutUser Test
172 * @tc.type: FUNC
173 * @tc.require: issueI581SE
174 */
175 HWTEST_F(UserControllerTest, LogoutUserTest_0200, TestSize.Level0)
176 {
177 UserController userController;
178 auto result = userController.LogoutUser(666);
179 if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
180 EXPECT_EQ(result, INVALID_USERID_VALUE);
181 }
182 EXPECT_TRUE(userController.GetCurrentUserId() == 0);
183 }
184
185 /**
186 * @tc.name: LogoutUserTest_0300
187 * @tc.desc: LogoutUser Test
188 * @tc.type: FUNC
189 * @tc.require: issueI581SE
190 */
191 HWTEST_F(UserControllerTest, LogoutUserTest_0300, TestSize.Level0)
192 {
193 UserController userController;
194 userController.GetOrCreateUserItem(1000);
195 auto result = userController.LogoutUser(1000);
196 EXPECT_TRUE(result = 1000);
197 }
198
199 /**
200 * @tc.name: HandleContinueUserSwitchTest_0100
201 * @tc.desc: HandleContinueUserSwitch Test
202 * @tc.type: FUNC
203 * @tc.require: issueI581SE
204 */
205 HWTEST_F(UserControllerTest, HandleContinueUserSwitchTest_0100, TestSize.Level0)
206 {
207 UserController userController;
208 auto userItem = std::make_shared<UserItem>(1000);
209 userController.HandleContinueUserSwitch(1000, 1000, userItem);
210 auto result = userController.GetCurrentUserId();
211 EXPECT_TRUE(result == 0);
212 }
213
214 /**
215 * @tc.name: SendUserSwitchDoneTest_0100
216 * @tc.desc: SendUserSwitchDone Test
217 * @tc.type: FUNC
218 * @tc.require: issueI581SE
219 */
220 HWTEST_F(UserControllerTest, SendUserSwitchDoneTest_0100, TestSize.Level0)
221 {
222 UserController userController;
223 userController.SendUserSwitchDone(1000);
224 userController.Init();
225 userController.SendUserSwitchDone(1001);
226 auto result = userController.GetCurrentUserId();
227 EXPECT_TRUE(result == 0);
228 }
229
230 /**
231 * @tc.name: SendContinueUserSwitchTest_0200
232 * @tc.desc: SendContinueUserSwitch Test
233 * @tc.type: FUNC
234 * @tc.require: issueI581SE
235 */
236 HWTEST_F(UserControllerTest, SendContinueUserSwitchTest_0200, TestSize.Level0)
237 {
238 UserController userController;
239 auto userItem = std::make_shared<UserItem>(1000);
240 userController.SendContinueUserSwitch(1000, 1000, userItem);
241 userController.Init();
242 userController.SendContinueUserSwitch(1000, 1000, userItem);
243 auto result = userController.GetCurrentUserId();
244 EXPECT_TRUE(result == 0);
245 }
246
247 /**
248 * @tc.name: SendUserSwitchTimeoutTest_0100
249 * @tc.desc: SendUserSwitchTimeout Test
250 * @tc.type: FUNC
251 * @tc.require: issueI581SE
252 */
253 HWTEST_F(UserControllerTest, SendUserSwitchTimeoutTest_0100, TestSize.Level0)
254 {
255 UserController userController;
256 auto userItem = std::make_shared<UserItem>(1000);
257 userController.SendUserSwitchTimeout(1000, 1000, userItem);
258 userController.Init();
259 userController.SendUserSwitchTimeout(1000, 1000, userItem);
260 auto result = userController.GetCurrentUserId();
261 EXPECT_TRUE(result == 0);
262 }
263
264 /**
265 * @tc.name: SendReportUserSwitchTest_0100
266 * @tc.desc: SendReportUserSwitch Test
267 * @tc.type: FUNC
268 * @tc.require: issueI581SE
269 */
270 HWTEST_F(UserControllerTest, SendReportUserSwitchTest_0100, TestSize.Level0)
271 {
272 UserController userController;
273 auto userItem = std::make_shared<UserItem>(1000);
274 userController.SendReportUserSwitch(1000, 1000, userItem);
275 userController.Init();
276 userController.SendReportUserSwitch(1000, 1000, userItem);
277 auto result = userController.GetCurrentUserId();
278 EXPECT_TRUE(result == 0);
279 }
280
281 /**
282 * @tc.name: SendSystemUserCurrentTest_0100
283 * @tc.desc: SendSystemUserCurrent Test
284 * @tc.type: FUNC
285 * @tc.require: issueI581SE
286 */
287 HWTEST_F(UserControllerTest, SendSystemUserCurrentTest_0100, TestSize.Level0)
288 {
289 UserController userController;
290 userController.SendSystemUserCurrent(1000, 1000);
291 userController.Init();
292 userController.SendSystemUserCurrent(1000, 1000);
293 auto result = userController.GetCurrentUserId();
294 EXPECT_TRUE(result == 0);
295 }
296
297 /**
298 * @tc.name: SendSystemUserStartTest_0100
299 * @tc.desc: SendSystemUserStart Test
300 * @tc.type: FUNC
301 * @tc.require: issueI581SE
302 */
303 HWTEST_F(UserControllerTest, SendSystemUserStartTest_0100, TestSize.Level0)
304 {
305 UserController userController;
306 userController.SendSystemUserStart(1000);
307 userController.Init();
308 userController.SendSystemUserStart(1000);
309 auto result = userController.GetCurrentUserId();
310 EXPECT_TRUE(result == 0);
311 }
312 } // namespace AAFwk
313 } // namespace OHOS
314