• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 "multi_user_manager_test.h"
17 
18 #define private public
19 #include "multi_user_manager.h"
20 #undef private
21 #include "test_log.h"
22 
23 using namespace testing;
24 using namespace testing::ext;
25 
26 namespace OHOS {
27 namespace DistributedSchedule {
28 namespace {
29 const std::string TYPE = "type";
30 }
31 
SetUpTestCase()32 void MultiUserManagerTest::SetUpTestCase()
33 {
34     DTEST_LOG << "MultiUserManagerTest::SetUpTestCase" << std::endl;
35 }
36 
TearDownTestCase()37 void MultiUserManagerTest::TearDownTestCase()
38 {
39     DTEST_LOG << "MultiUserManagerTest::TearDownTestCase" << std::endl;
40 }
41 
TearDown()42 void MultiUserManagerTest::TearDown()
43 {
44     DTEST_LOG << "MultiUserManagerTest::TearDown" << std::endl;
45 }
46 
SetUp()47 void MultiUserManagerTest::SetUp()
48 {
49     DTEST_LOG << "MultiUserManagerTest::SetUp" << std::endl;
50 }
51 
OnCallback(const uint32_t ContinueState,const std::string & srcDeviceId,const std::string & bundleName,const std::string & continueType,const std::string & srcBundleName)52 void RemoteOnListenerStubTest::OnCallback(const uint32_t ContinueState, const std::string& srcDeviceId,
53     const std::string &bundleName, const std::string &continueType, const std::string &srcBundleName)
54 {
55 }
56 
57 /**
58  * @tc.name: MultiUserManager_Init_001
59  * @tc.desc: test Init
60  * @tc.type: FUNC
61  */
62 HWTEST_F(MultiUserManagerTest, MultiUserManager_Init_001, TestSize.Level3)
63 {
64     DTEST_LOG << "MultiUserManager_Init_001 start" << std::endl;
65     /**
66      * @tc.steps: step1. test Init with set currentUserId_ sendMgr recvMgr;
67      */
68     int32_t accountId = 100;
69     MultiUserManager::GetInstance().Init();
70     EXPECT_EQ(MultiUserManager::GetInstance().currentUserId_, accountId);
71     auto sendMgr = MultiUserManager::GetInstance().sendMgrMap_.find(accountId);
72     EXPECT_NE(sendMgr->second, nullptr);
73     auto recvMgr = MultiUserManager::GetInstance().recvMgrMap_.find(accountId);
74     EXPECT_NE(recvMgr->second, nullptr);
75     MultiUserManager::GetInstance().UnInit();
76     DTEST_LOG << "MultiUserManager_Init_001 end" << std::endl;
77 }
78 
79 /**
80  * @tc.name: MultiUserManager_UnInit_001
81  * @tc.desc: test UnInit
82  * @tc.type: FUNC
83  */
84 HWTEST_F(MultiUserManagerTest, MultiUserManager_UnInit_001, TestSize.Level3)
85 {
86     DTEST_LOG << "MultiUserManager_UnInit_001 start" << std::endl;
87     /**
88      * @tc.steps: step1. test UnInit with delete sendMgr recvMgr;
89      */
90     MultiUserManager::GetInstance().Init();
91     MultiUserManager::GetInstance().UnInit();
92 
93     EXPECT_TRUE(MultiUserManager::GetInstance().sendMgrMap_.empty());
94     EXPECT_TRUE(MultiUserManager::GetInstance().recvMgrMap_.empty());
95 
96     DTEST_LOG << "MultiUserManager_UnInit_001 end" << std::endl;
97 }
98 
99 /**
100  * @tc.name: MultiUserManager_OnUserSwitched_001
101  * @tc.desc: test OnUserSwitched
102  * @tc.type: FUNC
103  */
104 HWTEST_F(MultiUserManagerTest, MultiUserManager_OnUserSwitched_001, TestSize.Level3)
105 {
106     DTEST_LOG << "MultiUserManager_OnUserSwitched_001 start" << std::endl;
107     /**
108      * @tc.steps: step1. test OnUserSwitched with no cache switched user;
109      */
110     int32_t switchedAccountId = 101;
111     MultiUserManager::GetInstance().Init();
112     MultiUserManager::GetInstance().OnUserSwitched(switchedAccountId);
113     EXPECT_EQ(MultiUserManager::GetInstance().currentUserId_, switchedAccountId);
114     MultiUserManager::GetInstance().UnInit();
115     DTEST_LOG << "MultiUserManager_OnUserSwitched_001 end" << std::endl;
116 }
117 
118 /**
119  * @tc.name: MultiUserManager_OnUserSwitched_002
120  * @tc.desc: test OnUserSwitched
121  * @tc.type: FUNC
122  */
123 HWTEST_F(MultiUserManagerTest, MultiUserManager_OnUserSwitched_002, TestSize.Level3)
124 {
125     DTEST_LOG << "MultiUserManager_OnUserSwitched_002 start" << std::endl;
126     /**
127      * @tc.steps: step1. test OnUserSwitched with cache switched user;
128      */
129     int32_t switchedAccountId = 100;
130     MultiUserManager::GetInstance().Init();
131 
132     std::map<std::string, sptr<IRemoteObject>> param;
133     sptr<IRemoteObject> obj(new RemoteOnListenerStubTest());
134     param.emplace(TYPE, obj);
135     MultiUserManager::GetInstance().listenerCache_.emplace(switchedAccountId, param);
136 
137     MultiUserManager::GetInstance().OnUserSwitched(switchedAccountId);
138     EXPECT_EQ(MultiUserManager::GetInstance().currentUserId_, switchedAccountId);
139     EXPECT_TRUE(MultiUserManager::GetInstance().listenerCache_.empty());
140     MultiUserManager::GetInstance().UnInit();
141     DTEST_LOG << "MultiUserManager_OnUserSwitched_002 end" << std::endl;
142 }
143 
144 /**
145  * @tc.name: MultiUserManager_OnUserRemoved_001
146  * @tc.desc: test OnUserRemoved
147  * @tc.type: FUNC
148  */
149 HWTEST_F(MultiUserManagerTest, MultiUserManager_OnUserRemoved_001, TestSize.Level3)
150 {
151     DTEST_LOG << "MultiUserManager_OnUserRemoved_001 start" << std::endl;
152     /**
153      * @tc.steps: step1. test OnUserRemoved with remove by accountId sendMgr recvMgr;
154      */
155     int32_t accountId = 100;
156     MultiUserManager::GetInstance().Init();
157     MultiUserManager::GetInstance().OnUserRemoved(accountId);
158 
159     auto sendMgr = MultiUserManager::GetInstance().sendMgrMap_.find(accountId);
160     EXPECT_TRUE(sendMgr == MultiUserManager::GetInstance().sendMgrMap_.end());
161     auto recvMgr = MultiUserManager::GetInstance().recvMgrMap_.find(accountId);
162     EXPECT_TRUE(recvMgr == MultiUserManager::GetInstance().recvMgrMap_.end());
163 
164     MultiUserManager::GetInstance().UnInit();
165     DTEST_LOG << "MultiUserManager_OnUserRemoved_001 end" << std::endl;
166 }
167 
168 /**
169  * @tc.name: MultiUserManager_CreateNewSendMgr_001
170  * @tc.desc: test CreateNewSendMgr
171  * @tc.type: FUNC
172  */
173 HWTEST_F(MultiUserManagerTest, MultiUserManager_CreateNewSendMgr_001, TestSize.Level3)
174 {
175     DTEST_LOG << "MultiUserManager_CreateNewSendMgr_001 start" << std::endl;
176     /**
177      * @tc.steps: step1. test OnUserRemoved with create current user sendMgr;
178      */
179     int32_t ret = MultiUserManager::GetInstance().CreateNewSendMgrLocked();
180     EXPECT_EQ(ret, ERR_OK);
181     DTEST_LOG << "MultiUserManager_CreateNewSendMgr_001 end" << std::endl;
182 }
183 
184 /**
185  * @tc.name: MultiUserManager_CreateNewRecvMgr_001
186  * @tc.desc: test CreateNewRecvMgr
187  * @tc.type: FUNC
188  */
189 HWTEST_F(MultiUserManagerTest, MultiUserManager_CreateNewRecvMgr_001, TestSize.Level3)
190 {
191     DTEST_LOG << "MultiUserManager_CreateNewRecvMgr_001 start" << std::endl;
192     /**
193      * @tc.steps: step1. test OnUserRemoved with create current user recvMgr;
194      */
195     int32_t ret = MultiUserManager::GetInstance().CreateNewRecvMgrLocked();
196     EXPECT_EQ(ret, ERR_OK);
197     DTEST_LOG << "MultiUserManager_CreateNewRecvMgr_001 end" << std::endl;
198 }
199 
200 /**
201  * @tc.name: MultiUserManager_CreateNewRecomMgr_001
202  * @tc.desc: test CreateNewRecomMgr
203  * @tc.type: FUNC
204  */
205 HWTEST_F(MultiUserManagerTest, MultiUserManager_CreateNewRecomMgr_001, TestSize.Level3)
206 {
207     DTEST_LOG << "MultiUserManager_CreateNewRecomMgr_001 start" << std::endl;
208     /**
209      * @tc.steps: step1. test OnUserRemoved with create current user recomMgr;
210      */
211     int32_t ret = MultiUserManager::GetInstance().CreateNewRecomMgrLocked();
212     EXPECT_EQ(ret, ERR_OK);
213     DTEST_LOG << "MultiUserManager_CreateNewRecomMgr_001 end" << std::endl;
214 }
215 
216 /**
217  * @tc.name: MultiUserManager_GetCurrentSendMgr_001
218  * @tc.desc: test GetCurrentSendMgr
219  * @tc.type: FUNC
220  */
221 HWTEST_F(MultiUserManagerTest, MultiUserManager_GetCurrentSendMgr_001, TestSize.Level3)
222 {
223     DTEST_LOG << "MultiUserManager_GetCurrentSendMgr_001 start" << std::endl;
224     /**
225      * @tc.steps: step1. test OnUserRemoved with create current user sendMgr;
226      */
227     int32_t accountId = 100;
228     MultiUserManager::GetInstance().Init();
229     auto sendMgr = MultiUserManager::GetInstance().sendMgrMap_.find(accountId)->second;
230 
231     auto ret = MultiUserManager::GetInstance().GetCurrentSendMgr();
232     EXPECT_EQ(ret, sendMgr);
233 
234     MultiUserManager::GetInstance().sendMgrMap_.insert({accountId, nullptr});
235     ret = MultiUserManager::GetInstance().GetCurrentSendMgr();
236     EXPECT_NE(ret, nullptr);
237 
238     MultiUserManager::GetInstance().UnInit();
239     DTEST_LOG << "MultiUserManager_GetCurrentSendMgr_001 end" << std::endl;
240 }
241 
242 /**
243  * @tc.name: MultiUserManager_GetCurrentRecvMgr_001
244  * @tc.desc: test GetCurrentRecvMgr
245  * @tc.type: FUNC
246  */
247 HWTEST_F(MultiUserManagerTest, MultiUserManager_GetCurrentRecvMgr_001, TestSize.Level3)
248 {
249     DTEST_LOG << "MultiUserManager_GetCurrentRecvMgr_001 start" << std::endl;
250     /**
251      * @tc.steps: step1. test OnUserRemoved with create current user recvMgr;
252      */
253     int32_t accountId = 100;
254     MultiUserManager::GetInstance().Init();
255     auto recvMgr = MultiUserManager::GetInstance().recvMgrMap_.find(accountId)->second;
256     MultiUserManager::GetInstance().hasRegSoftbusEventListener_ = true;
257     auto ret = MultiUserManager::GetInstance().GetCurrentRecvMgr();
258     EXPECT_EQ(ret, recvMgr);
259 
260     MultiUserManager::GetInstance().recvMgrMap_.insert({accountId, nullptr});
261     ret = MultiUserManager::GetInstance().GetCurrentRecvMgr();
262     EXPECT_NE(ret, nullptr);
263 
264 
265     MultiUserManager::GetInstance().UnInit();
266     DTEST_LOG << "MultiUserManager_GetCurrentRecvMgr_001 end" << std::endl;
267 }
268 
269 /**
270  * @tc.name: MultiUserManager_GetCurrentRecomMgr_001
271  * @tc.desc: test GetCurrentRecomMgr
272  * @tc.type: FUNC
273  */
274 HWTEST_F(MultiUserManagerTest, MultiUserManager_GetCurrentRecomMgr_001, TestSize.Level3)
275 {
276     DTEST_LOG << "MultiUserManager_GetCurrentRecomMgr_001 start" << std::endl;
277     /**
278      * @tc.steps: step1. test OnUserRemoved with create current user recomMgr;
279      */
280     int32_t accountId = 100;
281     MultiUserManager::GetInstance().Init();
282     auto recomMgr = MultiUserManager::GetInstance().recomMgrMap_.find(accountId)->second;
283     MultiUserManager::GetInstance().hasRegSoftbusEventListener_ = true;
284     auto ret = MultiUserManager::GetInstance().GetCurrentRecomMgr();
285     EXPECT_EQ(ret, recomMgr);
286 
287     MultiUserManager::GetInstance().recomMgrMap_.insert({accountId, nullptr});
288     ret = MultiUserManager::GetInstance().GetCurrentRecomMgr();
289     EXPECT_NE(ret, nullptr);
290 
291 
292     MultiUserManager::GetInstance().UnInit();
293     DTEST_LOG << "MultiUserManager_GetCurrentRecomMgr_001 end" << std::endl;
294 }
295 
296 /**
297  * @tc.name: MultiUserManager_CheckRegSoftbusListener_001
298  * @tc.desc: test CheckRegSoftbusListener
299  * @tc.type: FUNC
300  */
301 HWTEST_F(MultiUserManagerTest, MultiUserManager_CheckRegSoftbusListener_001, TestSize.Level3)
302 {
303     DTEST_LOG << "MultiUserManager_CheckRegSoftbusListener_001 start" << std::endl;
304     /**
305      * @tc.steps: step1. test OnUserRemoved with create current user recvMgr;
306      */
307     MultiUserManager::GetInstance().hasRegSoftbusEventListener_ = false;
308     EXPECT_FALSE(MultiUserManager::GetInstance().CheckRegSoftbusListener());
309     MultiUserManager::GetInstance().RegisterSoftbusListener();
310     EXPECT_TRUE(MultiUserManager::GetInstance().hasRegSoftbusEventListener_);
311     EXPECT_TRUE(MultiUserManager::GetInstance().CheckRegSoftbusListener());
312     DTEST_LOG << "MultiUserManager_CheckRegSoftbusListener_001 end" << std::endl;
313 }
314 
315 /**
316  * @tc.name: MultiUserManager_OnRegisterOnListener_001
317  * @tc.desc: test OnRegisterOnListener
318  * @tc.type: FUNC
319  */
320 HWTEST_F(MultiUserManagerTest, MultiUserManager_OnRegisterOnListener_001, TestSize.Level3)
321 {
322     DTEST_LOG << "MultiUserManager_OnRegisterOnListener_001 start" << std::endl;
323     /**
324      * @tc.steps: step1. test OnUserRemoved with register listener
325      */
326     MultiUserManager::GetInstance().Init();
327 
328     int32_t callingUid = 0;
329     sptr<IRemoteObject> obj(new RemoteOnListenerStubTest());
330     auto ret = MultiUserManager::GetInstance().OnRegisterOnListener(TYPE, obj, callingUid);
331     EXPECT_EQ(ret, ERR_OK);
332 
333     MultiUserManager::GetInstance().UnInit();
334     DTEST_LOG << "MultiUserManager_OnRegisterOnListener_001 end" << std::endl;
335 }
336 
337 /**
338  * @tc.name: MultiUserManager_OnRegisterOffListener_001
339  * @tc.desc: test OnRegisterOffListener
340  * @tc.type: FUNC
341  */
342 HWTEST_F(MultiUserManagerTest, MultiUserManager_OnRegisterOffListener_001, TestSize.Level3)
343 {
344     DTEST_LOG << "MultiUserManager_OnRegisterOffListener_001 start" << std::endl;
345     /**
346      * @tc.steps: step1. test OnUserRemoved with unregister listener
347      */
348     MultiUserManager::GetInstance().Init();
349 
350     int32_t callingUid = 0;
351     sptr<IRemoteObject> obj(new RemoteOnListenerStubTest());
352     auto ret = MultiUserManager::GetInstance().OnRegisterOffListener(TYPE, obj, callingUid);
353     EXPECT_EQ(ret, DMS_NOT_FOREGROUND_USER);
354 
355     MultiUserManager::GetInstance().UnInit();
356     DTEST_LOG << "MultiUserManager_OnRegisterOffListener_001 end" << std::endl;
357 }
358 
359 /**
360  * @tc.name: MultiUserManager_GetForegroundUser_001
361  * @tc.desc: test GetForegroundUser
362  * @tc.type: FUNC
363  */
364 HWTEST_F(MultiUserManagerTest, MultiUserManager_GetForegroundUser_001, TestSize.Level3)
365 {
366     DTEST_LOG << "MultiUserManager_GetForegroundUser_001 start" << std::endl;
367     /**
368      * @tc.steps: step1. test OnUserRemoved with get currrent accountid
369      */
370     int32_t accountId = 100;
371     int32_t ret = MultiUserManager::GetInstance().GetForegroundUser();
372     EXPECT_EQ(ret, accountId);
373 
374     DTEST_LOG << "MultiUserManager_GetForegroundUser_001 end" << std::endl;
375 }
376 
377 /**
378  * @tc.name: MultiUserManager_IsUserForeground_001
379  * @tc.desc: test IsUserForeground
380  * @tc.type: FUNC
381  */
382 HWTEST_F(MultiUserManagerTest, MultiUserManager_IsUserForeground_001, TestSize.Level3)
383 {
384     DTEST_LOG << "MultiUserManager_IsUserForeground_001 start" << std::endl;
385     /**
386      * @tc.steps: step1. test OnUserRemoved with is foreground user
387      */
388     int32_t accountId = 100;
389     int32_t otherAccountId = 101;
390 
391     bool ret = MultiUserManager::GetInstance().IsUserForeground(accountId);
392     EXPECT_TRUE(ret);
393 
394     ret = MultiUserManager::GetInstance().IsUserForeground(otherAccountId);
395     EXPECT_FALSE(ret);
396 
397     DTEST_LOG << "MultiUserManager_IsCallerForeground_001 end" << std::endl;
398 }
399 } // namespace DistributedSchedule
400 } // namespace OHOS
401