1 /*
2  * Copyright (c) 2023 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 <cstdint>
17 #include <gtest/gtest.h>
18 #include "mock_session_manager_service.h"
19 #include "display_manager.h"
20 #include "window_agent.h"
21 #include "window_impl.h"
22 #include "window_property.h"
23 #include "window_root.h"
24 #include "wm_common.h"
25 
26 using namespace testing;
27 using namespace testing::ext;
28 
29 namespace OHOS {
30 namespace Rosen {
31 namespace {
32 constexpr HiviewDFX::HiLogLabel LABEL = {LOG_CORE, HILOG_DOMAIN_WINDOW, "MockSessionManagerServiceTest"};
33 }
34 
35 class MockSessionManagerServiceTest : public testing::Test {
36 public:
37     static void SetUpTestCase();
38     static void TearDownTestCase();
39     void SetUp() override;
40     void TearDown() override;
41 };
42 
SetUpTestCase()43 void MockSessionManagerServiceTest::SetUpTestCase()
44 {
45 }
46 
TearDownTestCase()47 void MockSessionManagerServiceTest::TearDownTestCase()
48 {
49 }
50 
SetUp()51 void MockSessionManagerServiceTest::SetUp()
52 {
53 }
54 
TearDown()55 void MockSessionManagerServiceTest::TearDown()
56 {
57 }
58 
59 namespace {
60 /**
61  * @tc.name: OnRemoteDied
62  * @tc.desc: OnRemoteDied
63  * @tc.type: FUNC
64  */
65 HWTEST_F(MockSessionManagerServiceTest, OnRemoteDied, Function | SmallTest | Level2)
66 {
67     WLOGI("OnRemoteDied");
68     MockSessionManagerService::SMSDeathRecipient smsDeathRecipient(100);
69     auto res = WMError::WM_OK;
70     wptr<IRemoteObject> object = nullptr;
71     smsDeathRecipient.OnRemoteDied(object);
72     ASSERT_EQ(WMError::WM_OK, res);
73 }
74 
75 /**
76  * @tc.name: OnRemoteDied
77  * @tc.desc: OnRemoteDied
78  * @tc.type: FUNC
79  */
80 HWTEST_F(MockSessionManagerServiceTest, OnRemoteDied1, Function | SmallTest | Level2)
81 {
82     GTEST_LOG_(INFO) << "MockSessionManagerServiceTest: OnRemoteDied1 start";
83     WLOGI("OnRemoteDied");
84     MockSessionManagerService::SMSDeathRecipient* mService = new MockSessionManagerService::SMSDeathRecipient(100);
85     auto res = WMError::WM_OK;
86     wptr<IRemoteObject> object = nullptr;
87     mService->OnRemoteDied(object);
88     ASSERT_EQ(WMError::WM_OK, res);
89     GTEST_LOG_(INFO) << "MockSessionManagerServiceTest: OnRemoteDied1 end";
90 }
91 
92 /**
93  * @tc.name: SetSessionManagerService
94  * @tc.desc: set session manager service
95  * @tc.type: FUNC
96  */
97 HWTEST_F(MockSessionManagerServiceTest, SetSessionManagerService, Function | SmallTest | Level2)
98 {
99     WLOGI("SetSessionManagerService");
100     sptr<IRemoteObject> sessionManagerService = nullptr;
101     MockSessionManagerService::GetInstance().SetSessionManagerService(sessionManagerService);
102     ASSERT_EQ(false, MockSessionManagerService::GetInstance().SetSessionManagerService(sessionManagerService));
103 }
104 
105 /**
106  * @tc.name: GetSessionManagerService
107  * @tc.desc: get session manager service
108  * @tc.type: FUNC
109  */
110 HWTEST_F(MockSessionManagerServiceTest, GetSessionManagerService, Function | SmallTest | Level2)
111 {
112     WLOGI("GetSessionManagerService");
113     sptr<IRemoteObject> sessionManagerService =
114     MockSessionManagerService::GetInstance().GetSessionManagerService();
115     ASSERT_EQ(nullptr, sessionManagerService);
116 }
117 
118 /**
119  * @tc.name: onStart
120  * @tc.desc: on start
121  * @tc.type: FUNC
122  */
123 HWTEST_F(MockSessionManagerServiceTest, OnStart, Function | SmallTest | Level2)
124 {
125     WLOGI("onStart");
126     auto ret = WMError::WM_OK;
127     MockSessionManagerService::GetInstance().OnStart();
128     ASSERT_EQ(ret, WMError::WM_OK);
129 }
130 
131 /**
132  * @tc.name: onStart
133  * @tc.desc: on start
134  * @tc.type: FUNC
135  */
136 HWTEST_F(MockSessionManagerServiceTest, OnStart1, Function | SmallTest | Level2)
137 {
138     GTEST_LOG_(INFO) << "MockSessionManagerServiceTest: OnStart1 start";
139     MockSessionManagerService* mService = new MockSessionManagerService();
140     WLOGI("onStart");
141     auto ret = WMError::WM_OK;
142     mService->OnStart();
143     ASSERT_EQ(ret, WMError::WM_OK);
144     GTEST_LOG_(INFO) << "MockSessionManagerServiceTest: OnStart1 end";
145 }
146 
147 /**
148  * @tc.name: Dump
149  * @tc.desc: Dump
150  * @tc.type: FUNC
151  */
152 HWTEST_F(MockSessionManagerServiceTest, Dump, Function | SmallTest | Level2)
153 {
154     MockSessionManagerService* mService = new MockSessionManagerService();
155     WLOGI("onStart");
156     std::vector<std::u16string> args;
157     ASSERT_EQ(-1, mService->Dump(-2, args));
158 }
159 
160 /**
161  * @tc.name: SetSessionManagerService
162  * @tc.desc: SetSessionManagerService
163  * @tc.type: FUNC
164  */
165 HWTEST_F(MockSessionManagerServiceTest, SetSessionManagerService2, Function | SmallTest | Level2)
166 {
167     sptr<IRemoteObject> sessionManagerService = nullptr;
168     ASSERT_EQ(false, MockSessionManagerService::GetInstance().SetSessionManagerService(sessionManagerService));
169     MockSessionManagerService::GetInstance().NotifyWMSConnected(100, 0, true);
170     MockSessionManagerService::GetInstance().NotifyWMSConnected(100, 0, false);
171 }
172 
173 /**
174  * @tc.name: GetSMSDeathRecipientByUserId
175  * @tc.desc: GetSMSDeathRecipientByUserId/RemoveSMSDeathRecipientByUserId
176  * @tc.type: FUNC
177  */
178 HWTEST_F(MockSessionManagerServiceTest, GetSMSDeathRecipientByUserId, Function | SmallTest | Level2)
179 {
180     auto smsDeathRecipient = MockSessionManagerService::GetInstance().GetSMSDeathRecipientByUserId(100);
181     ASSERT_EQ(nullptr, smsDeathRecipient);
182     MockSessionManagerService::GetInstance().RemoveSMSDeathRecipientByUserId(100);
183 }
184 
185 /**
186  * @tc.name: GetSessionManagerServiceByUserId
187  * @tc.desc: GetSessionManagerServiceByUserId/RemoveSessionManagerServiceByUserId
188  * @tc.type: FUNC
189  */
190 HWTEST_F(MockSessionManagerServiceTest, GetSessionManagerServiceByUserId, Function | SmallTest | Level2)
191 {
192     auto sessionManagerService = MockSessionManagerService::GetInstance().GetSessionManagerServiceByUserId(100);
193     ASSERT_EQ(nullptr, sessionManagerService);
194     MockSessionManagerService::GetInstance().RemoveSessionManagerServiceByUserId(100);
195 }
196 
197 /**
198  * @tc.name: GetSessionManagerServiceByUserId
199  * @tc.desc: GetSessionManagerServiceByUserId/RemoveSessionManagerServiceByUserId
200  * @tc.type: FUNC
201  */
202 HWTEST_F(MockSessionManagerServiceTest, GetProcessSurfaceNodeIdByPersistentId, Function | SmallTest | Level2)
203 {
204     int32_t pid = 123;
205     std::vector<uint64_t> persistentIds = {1, 2, 3};
206     std::vector<uint64_t> surfaceNodeIds;
207     MockSessionManagerService::GetInstance().GetProcessSurfaceNodeIdByPersistentId(
208         pid, persistentIds, surfaceNodeIds);
209     ASSERT_EQ(0, surfaceNodeIds.size());
210 }
211 }
212 }
213 }