1 /*
2 * Copyright (c) 2022-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 "1.0/include/screen_manager_adapter_test.h"
17
18 #define private public
19 #include "common/include/screen_manager_adapter.h"
20 #undef private
21 #include "dscreen_constants.h"
22 #include "dscreen_errcode.h"
23 #include "dscreen_util.h"
24 #include "video_param.h"
25 #include "accesstoken_kit.h"
26 #include "nativetoken_kit.h"
27 #include "token_setproc.h"
28
29 using namespace testing;
30 using namespace testing::ext;
31
32 namespace OHOS {
33 namespace DistributedHardware {
SetUpTestCase(void)34 void DScreenManagerAdapterTest::SetUpTestCase(void) {}
35
TearDownTestCase(void)36 void DScreenManagerAdapterTest::TearDownTestCase(void) {}
37
SetUp(void)38 void DScreenManagerAdapterTest::SetUp(void) {}
39
TearDown(void)40 void DScreenManagerAdapterTest::TearDown(void) {}
41
EnablePermissionAccess(const char * perms[],size_t permsNum,uint64_t & tokenId)42 void EnablePermissionAccess(const char* perms[], size_t permsNum, uint64_t &tokenId)
43 {
44 NativeTokenInfoParams infoInstance = {
45 .dcapsNum = 0,
46 .permsNum = permsNum,
47 .aclsNum = 0,
48 .dcaps = nullptr,
49 .perms = perms,
50 .acls = nullptr,
51 .aplStr = "system_basic",
52 };
53
54 infoInstance.processName = "DscreenMgrTest";
55 tokenId = GetAccessTokenId(&infoInstance);
56 SetSelfTokenID(tokenId);
57 OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
58 }
59
DisablePermissionAccess(const uint64_t & tokenId)60 void DisablePermissionAccess(const uint64_t &tokenId)
61 {
62 OHOS::Security::AccessToken::AccessTokenKit::DeleteToken(tokenId);
63 }
64
65 /**
66 * @tc.name: CreateVirtualScreen_001
67 * @tc.desc: Verify the CreateVirtualScreen function failed.
68 * @tc.type: FUNC
69 * @tc.require: Issue Number
70 */
71 HWTEST_F(DScreenManagerAdapterTest, CreateVirtualScreen_001, TestSize.Level1)
72 {
73 std::string devId;
74 std::string dhId;
75 std::shared_ptr<VideoParam> videoParam = nullptr;
76 uint64_t ret = ScreenMgrAdapter::GetInstance().CreateVirtualScreen(devId, dhId, videoParam);
77 EXPECT_EQ(SCREEN_ID_INVALID, ret);
78 }
79
80 /**
81 * @tc.name: CreateVirtualScreen_002
82 * @tc.desc: Verify the CreateVirtualScreen function failed.
83 * @tc.type: FUNC
84 * @tc.require: Issue Number
85 */
86 HWTEST_F(DScreenManagerAdapterTest, CreateVirtualScreen_002, TestSize.Level1)
87 {
88 std::string devId = "devId";
89 std::string dhId = "dhId";
90 std::shared_ptr<VideoParam> videoParam = std::make_shared<VideoParam>();
91 std::string screenName = DSCREEN_PREFIX + SEPERATOR + GetInterruptString(devId) +
92 SEPERATOR + GetInterruptString(dhId);
93 ScreenMgrAdapter::GetInstance().screenIdMap_.emplace(screenName, 100);
94 uint64_t ret = ScreenMgrAdapter::GetInstance().CreateVirtualScreen(devId, dhId, videoParam);
95 EXPECT_EQ(SCREEN_ID_INVALID, ret);
96 }
97
98 /**
99 * @tc.name: CreateVirtualScreen_003
100 * @tc.desc: Verify the CreateVirtualScreen function failed.
101 * @tc.type: FUNC
102 * @tc.require: Issue Number
103 */
104 HWTEST_F(DScreenManagerAdapterTest, CreateVirtualScreen_003, TestSize.Level1)
105 {
106 std::string devId = "devId";
107 std::string dhId = "dhId";
108 ScreenMgrAdapter::GetInstance().screenIdMap_.clear();
109 std::shared_ptr<VideoParam> videoParam = std::make_shared<VideoParam>();
110 uint64_t ret = ScreenMgrAdapter::GetInstance().CreateVirtualScreen(devId, dhId, videoParam);
111 EXPECT_EQ(1, ScreenMgrAdapter::GetInstance().screenIdMap_.size());
112
113 ret = ScreenMgrAdapter::GetInstance().CreateVirtualScreen(devId, dhId, videoParam);
114 EXPECT_EQ(1, ScreenMgrAdapter::GetInstance().screenIdMap_.size());
115 ScreenMgrAdapter::GetInstance().RemoveVirtualScreen(ret);
116 ScreenMgrAdapter::GetInstance().screenIdMap_.clear();
117 }
118
119 /**
120 * @tc.name: RegisterScreenGroupListener_001
121 * @tc.desc: Verify the RegisterScreenGroupListener function failed.
122 * @tc.type: FUNC
123 * @tc.require: Issue Number
124 */
125 HWTEST_F(DScreenManagerAdapterTest, RegisterScreenGroupListener_001, TestSize.Level1)
126 {
127 sptr<Rosen::ScreenManager::IScreenGroupListener> listener = nullptr;
128 int32_t ret = ScreenMgrAdapter::GetInstance().RegisterScreenGroupListener(listener);
129 EXPECT_EQ(ERR_DH_SCREEN_SA_REGISTER_SCREENLISTENER_FAIL, ret);
130 }
131
132 /**
133 * @tc.name: RegisterScreenGroupListener_002
134 * @tc.desc: Verify the RegisterScreenGroupListener function failed.
135 * @tc.type: FUNC
136 * @tc.require: Issue Number
137 */
138 HWTEST_F(DScreenManagerAdapterTest, RegisterScreenGroupListener_002, TestSize.Level1)
139 {
140 sptr<Rosen::ScreenManager::IScreenGroupListener> listener = new MockScreenGroupListener();
141 ScreenMgrAdapter::GetInstance().listenerRegistered_ = true;
142 int32_t ret = ScreenMgrAdapter::GetInstance().RegisterScreenGroupListener(listener);
143 EXPECT_EQ(DH_SUCCESS, ret);
144 }
145
146 /**
147 * @tc.name: RegisterScreenGroupListener_003
148 * @tc.desc: Verify the RegisterScreenGroupListener function failed.
149 * @tc.type: FUNC
150 * @tc.require: Issue Number
151 */
152 HWTEST_F(DScreenManagerAdapterTest, RegisterScreenGroupListener_003, TestSize.Level1)
153 {
154 sptr<Rosen::ScreenManager::IScreenGroupListener> listener = new MockScreenGroupListener();
155 ScreenMgrAdapter::GetInstance().listenerRegistered_ = false;
156 int32_t ret = ScreenMgrAdapter::GetInstance().RegisterScreenGroupListener(listener);
157 EXPECT_EQ(DH_SUCCESS, ret);
158 ScreenMgrAdapter::GetInstance().UnregisterScreenGroupListener(listener);
159 }
160
161 /**
162 * @tc.name: UnregisterScreenGroupListener_001
163 * @tc.desc: Verify the UnregisterScreenGroupListener function failed.
164 * @tc.type: FUNC
165 * @tc.require: Issue Number
166 */
167 HWTEST_F(DScreenManagerAdapterTest, UnregisterScreenGroupListener_001, TestSize.Level1)
168 {
169 sptr<Rosen::ScreenManager::IScreenGroupListener> listener = nullptr;
170 int32_t ret = ScreenMgrAdapter::GetInstance().UnregisterScreenGroupListener(listener);
171 ScreenMgrAdapter::GetInstance().RemoveScreenFromGroup(100);
172 EXPECT_EQ(ERR_DH_SCREEN_SA_UNREGISTER_SCREENLISTENER_FAIL, ret);
173 }
174
175 /**
176 * @tc.name: UnregisterScreenGroupListener_002
177 * @tc.desc: Verify the UnregisterScreenGroupListener function failed.
178 * @tc.type: FUNC
179 * @tc.require: Issue Number
180 */
181 HWTEST_F(DScreenManagerAdapterTest, UnregisterScreenGroupListener_002, TestSize.Level1)
182 {
183 sptr<Rosen::ScreenManager::IScreenGroupListener> listener = new MockScreenGroupListener();
184 ScreenMgrAdapter::GetInstance().listenerRegistered_ = false;
185 int32_t ret = ScreenMgrAdapter::GetInstance().UnregisterScreenGroupListener(listener);
186 EXPECT_EQ(DH_SUCCESS, ret);
187 }
188
189 /**
190 * @tc.name: UnregisterScreenGroupListener_003
191 * @tc.desc: Verify the UnregisterScreenGroupListener function failed.
192 * @tc.type: FUNC
193 * @tc.require: Issue Number
194 */
195 HWTEST_F(DScreenManagerAdapterTest, UnregisterScreenGroupListener_003, TestSize.Level1)
196 {
197 sptr<Rosen::ScreenManager::IScreenGroupListener> listener = new MockScreenGroupListener();
198 ScreenMgrAdapter::GetInstance().listenerRegistered_ = true;
199 int32_t ret = ScreenMgrAdapter::GetInstance().UnregisterScreenGroupListener(listener);
200 EXPECT_EQ(ERR_DH_SCREEN_SA_UNREGISTER_SCREENLISTENER_FAIL, ret);
201 }
202
203 /**
204 * @tc.name: RemoveVirtualScreen_001
205 * @tc.desc: Verify the RemoveVirtualScreen function failed.
206 * @tc.type: FUNC
207 * @tc.require: Issue Number
208 */
209 HWTEST_F(DScreenManagerAdapterTest, RemoveVirtualScreen_001, TestSize.Level1)
210 {
211 int32_t ret = ScreenMgrAdapter::GetInstance().RemoveVirtualScreen(100);
212 EXPECT_EQ(ERR_DH_SCREEN_SA_REMOVE_VIRTUALSCREEN_FAIL, ret);
213 }
214
215 /**
216 * @tc.name: SetImageSurface_001
217 * @tc.desc: Verify the SetImageSurface function failed.
218 * @tc.type: FUNC
219 * @tc.require: Issue Number
220 */
221 HWTEST_F(DScreenManagerAdapterTest, SetImageSurface_001, TestSize.Level1)
222 {
223 sptr<OHOS::Surface> surface = nullptr;
224 uint64_t screenId = 0;
225 int32_t ret = ScreenMgrAdapter::GetInstance().SetImageSurface(screenId, surface);
226 EXPECT_EQ(ERR_DH_SCREEN_SA_SET_IMAGESURFACE_FAIL, ret);
227 }
228
229 /**
230 * @tc.name: GetMapRelation_001
231 * @tc.desc: Verify the GetMapRelation function failed.
232 * @tc.type: FUNC
233 * @tc.require: Issue Number
234 */
235 HWTEST_F(DScreenManagerAdapterTest, GetMapRelation_001, TestSize.Level1)
236 {
237 std::shared_ptr<DScreenMapRelation> ret = ScreenMgrAdapter::GetInstance().GetMapRelation(1000);
238 EXPECT_EQ(nullptr, ret);
239 }
240
241 /**
242 * @tc.name: GetMapRelation_002
243 * @tc.desc: Verify the GetMapRelation function failed.
244 * @tc.type: FUNC
245 * @tc.require: Issue Number
246 */
247 HWTEST_F(DScreenManagerAdapterTest, GetMapRelation_002, TestSize.Level1)
248 {
249 const char* perms[] = {
250 "ohos.permission.DISTRIBUTED_DATASYNC",
251 "ohos.permission.CAPTURE_SCREEN",
252 };
253 EnablePermissionAccess(perms, sizeof(perms) / sizeof(perms[0]), tokenId_);
254 std::string devId = "devId";
255 std::string dhId = "dhId";
256 ScreenMgrAdapter::GetInstance().screenIdMap_.clear();
257 std::shared_ptr<VideoParam> videoParam = std::make_shared<VideoParam>();
258 uint64_t screenId = ScreenMgrAdapter::GetInstance().CreateVirtualScreen(devId, dhId, videoParam);
259 std::shared_ptr<DScreenMapRelation> ret = ScreenMgrAdapter::GetInstance().GetMapRelation(screenId);
260 DisablePermissionAccess(tokenId_);
261 EXPECT_NE(nullptr, ret);
262 }
263 }
264 }