• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 }