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 <gtest/gtest.h>
17 #include "session_manager.h"
18 #include <iservice_registry.h>
19 #include <system_ability_definition.h>
20 #include <ipc_skeleton.h>
21 #include "session_manager_lite.h"
22 #include "session_manager_service_recover_interface.h"
23 #include "singleton_delegator.h"
24 #include "window_manager_hilog.h"
25 
26 using namespace testing;
27 using namespace testing::ext;
28 
29 namespace OHOS {
30 namespace Rosen {
31 class SessionManagerLiteTest : public testing::Test {
32 public:
33     static void SetUpTestCase();
34     static void TearDownTestCase();
35     void SetUp() override;
36     void TearDown() override;
37 };
38 
SetUpTestCase()39 void SessionManagerLiteTest::SetUpTestCase()
40 {
41 }
42 
TearDownTestCase()43 void SessionManagerLiteTest::TearDownTestCase()
44 {
45 }
46 
SetUp()47 void SessionManagerLiteTest::SetUp()
48 {
49 }
50 
TearDown()51 void SessionManagerLiteTest::TearDown()
52 {
53 }
54 
55 namespace {
56 /**
57  * @tc.name: ClearSessionManagerProxy
58  * @tc.desc: normal function
59  * @tc.type: FUNC
60  */
61 HWTEST_F(SessionManagerLiteTest, ClearSessionManagerProxy, Function | SmallTest | Level2)
62 {
63     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
64     sessionManagerLite.ClearSessionManagerProxy();
65     sessionManagerLite.GetSessionManagerServiceProxy();
66 
67     sessionManagerLite.ClearSessionManagerProxy();
68     sessionManagerLite.Clear();
69     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
70 }
71 /**
72  * @tc.name: RecoverSessionManagerService
73  * @tc.desc: normal function
74  * @tc.type: FUNC
75  */
76 HWTEST_F(SessionManagerLiteTest, RecoverSessionManagerService, Function | SmallTest | Level2)
77 {
78     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
79     sessionManagerLite.RecoverSessionManagerService(nullptr);
80     sessionManagerLite.ClearSessionManagerProxy();
81     sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
82     sessionManagerLite.RecoverSessionManagerService(sessionManagerService);
83 
84     sessionManagerLite.ClearSessionManagerProxy();
85     sessionManagerLite.Clear();
86     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
87 }
88 /**
89  * @tc.name: ReregisterSessionListener
90  * @tc.desc: normal function
91  * @tc.type: FUNC
92  */
93 HWTEST_F(SessionManagerLiteTest, ReregisterSessionListener, Function | SmallTest | Level2)
94 {
95     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
96     sessionManagerLite.ReregisterSessionListener();
97     sessionManagerLite.GetSessionManagerServiceProxy();
98     sessionManagerLite.ReregisterSessionListener();
99 
100     sessionManagerLite.ClearSessionManagerProxy();
101     sessionManagerLite.Clear();
102     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
103 }
104 /**
105  * @tc.name: OnWMSConnectionChanged
106  * @tc.desc: normal function
107  * @tc.type: FUNC
108  */
109 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChanged01, Function | SmallTest | Level2)
110 {
111     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
112     sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
113     sessionManagerLite.OnWMSConnectionChanged(100, 100, true, sessionManagerService);
114 
115     sessionManagerLite.ClearSessionManagerProxy();
116     sessionManagerLite.Clear();
117     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
118 }
119 /**
120  * @tc.name: OnWMSConnectionChanged
121  * @tc.desc: normal function
122  * @tc.type: FUNC
123  */
124 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChanged02, Function | SmallTest | Level2)
125 {
126     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
127     sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
128     sessionManagerLite.OnWMSConnectionChanged(100, 100, false, sessionManagerService);
129 
130     sessionManagerLite.ClearSessionManagerProxy();
131     sessionManagerLite.Clear();
132     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
133 }
134 /**
135  * @tc.name: OnWMSConnectionChanged
136  * @tc.desc: normal function
137  * @tc.type: FUNC
138  */
139 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChanged03, Function | SmallTest | Level2)
140 {
141     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
142     sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
143     sessionManagerLite.OnWMSConnectionChanged(-1, -1, true, sessionManagerService);
144 
145     sessionManagerLite.ClearSessionManagerProxy();
146     sessionManagerLite.Clear();
147     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
148 }
149 /**
150  * @tc.name: OnWMSConnectionChanged
151  * @tc.desc: normal function
152  * @tc.type: FUNC
153  */
154 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChanged04, Function | SmallTest | Level2)
155 {
156     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
157     sptr<ISessionManagerService> sessionManagerService = sessionManagerLite.GetSessionManagerServiceProxy();
158     sessionManagerLite.OnWMSConnectionChanged(-1, -1, false, sessionManagerService);
159 
160     sessionManagerLite.ClearSessionManagerProxy();
161     sessionManagerLite.Clear();
162     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
163 }
164 /**
165  * @tc.name: InitSceneSessionManagerLiteProxy
166  * @tc.desc: normal function
167  * @tc.type: FUNC
168  */
169 HWTEST_F(SessionManagerLiteTest, InitSceneSessionManagerLiteProxy01, Function | SmallTest | Level2)
170 {
171     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
172     sessionManagerLite.InitSceneSessionManagerLiteProxy();
173     sessionManagerLite.InitSceneSessionManagerLiteProxy();
174 
175     sessionManagerLite.ClearSessionManagerProxy();
176     sessionManagerLite.Clear();
177     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
178 }
179 /**
180  * @tc.name: InitSceneSessionManagerLiteProxy
181  * @tc.desc: normal function
182  * @tc.type: FUNC
183  */
184 HWTEST_F(SessionManagerLiteTest, InitSceneSessionManagerLiteProxy02, Function | SmallTest | Level2)
185 {
186     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
187     sessionManagerLite.GetSceneSessionManagerLiteProxy();
188     sessionManagerLite.InitSceneSessionManagerLiteProxy();
189 
190     sessionManagerLite.ClearSessionManagerProxy();
191     sessionManagerLite.Clear();
192     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
193 }
194 /**
195  * @tc.name: InitSceneSessionManagerLiteProxy
196  * @tc.desc: normal function
197  * @tc.type: FUNC
198  */
199 HWTEST_F(SessionManagerLiteTest, InitSceneSessionManagerLiteProxy03, Function | SmallTest | Level2)
200 {
201     SessionManagerLite& sessionManagerLite = SessionManagerLite::GetInstance();
202     sessionManagerLite.GetSessionManagerServiceProxy();
203     sessionManagerLite.InitSceneSessionManagerLiteProxy();
204     sessionManagerLite.InitSceneSessionManagerLiteProxy();
205 
206     sessionManagerLite.ClearSessionManagerProxy();
207     sessionManagerLite.Clear();
208     ASSERT_EQ(nullptr, sessionManagerLite.sceneSessionManagerLiteProxy_);
209 }
210 
211 /**
212  * @tc.name: OnWMSConnectionChangedCallback
213  * @tc.desc: normal function
214  * @tc.type: FUNC
215  */
216 HWTEST_F(SessionManagerLiteTest, OnWMSConnectionChangedCallback, Function | SmallTest | Level2)
217 {
218     SessionManagerLite sessionManagerLite;
219     sessionManagerLite.wmsConnectionChangedFunc_ = nullptr;
220     sessionManagerLite.OnWMSConnectionChangedCallback(0, 0, true, false);
221 
222     int32_t userId = 2;
223     int32_t screenId = 0;
224     bool isConnected = true;
225     sessionManagerLite.currentWMSUserId_ = SYSTEM_USERID;
226     sessionManagerLite.OnWMSConnectionChanged(userId, screenId, isConnected, nullptr);
227 
228     sessionManagerLite.ClearSessionManagerProxy();
229 
230     sptr<ISessionManagerService> sessionManagerService;
231     sessionManagerLite.RecoverSessionManagerService(sessionManagerService);
__anoneb7b977c0202() 232     sessionManagerLite.RegisterUserSwitchListener([]() {});
233     sessionManagerLite.OnUserSwitch(sessionManagerService);
234     sessionManagerLite.Clear();
235 
236     sessionManagerLite.isWMSConnected_ = true;
237     sessionManagerLite.currentWMSUserId_ = SYSTEM_USERID;
238     SessionManagerLite::WMSConnectionChangedCallbackFunc callbackFunc;
239     auto ret = sessionManagerLite.RegisterWMSConnectionChangedListener(callbackFunc);
240     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
241 }
242 
243 /**
244  * @tc.name: RegisterWMSConnectionChangedListener
245  * @tc.desc: normal function
246  * @tc.type: FUNC
247  */
248 HWTEST_F(SessionManagerLiteTest, RegisterWMSConnectionChangedListener, Function | SmallTest | Level2)
249 {
250     SessionManagerLite sessionManagerLite;
251     sessionManagerLite.OnFoundationDied();
252     FoundationDeathRecipientLite foundationDeathRecipientLite;
253     wptr<IRemoteObject> wptrDeath = nullptr;
254     foundationDeathRecipientLite.OnRemoteDied(wptrDeath);
255 
256     SSMDeathRecipient sSMDeathRecipient;
257     sSMDeathRecipient.OnRemoteDied(wptrDeath);
258     SessionManagerLite::WMSConnectionChangedCallbackFunc callbackFunc;
259     auto ret = sessionManagerLite.RegisterWMSConnectionChangedListener(callbackFunc);
260     ASSERT_EQ(WMError::WM_ERROR_NULLPTR, ret);
261 }
262 }
263 }
264 }