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 "avcontroller_callback_stub.h"
18 #include "avsession_log.h"
19 #include "avsession_descriptor.h"
20 #include "avsession_errors.h"
21 #include "accesstoken_kit.h"
22 #include "token_setproc.h"
23
24 using namespace testing::ext;
25 using namespace OHOS::AVSession;
26 using namespace OHOS::Security::AccessToken;
27
28 static uint64_t g_selfTokenId = 0;
29 static int32_t MAX_IMAGE_SIZE = 10 * 1024 * 1024;
30 static HapInfoParams g_info = {
31 .userID = 100,
32 .bundleName = "ohos.permission_test.demo",
33 .instIndex = 0,
34 .appIDDesc = "ohos.permission_test.demo",
35 .isSystemApp = true
36 };
37
38 static HapPolicyParams g_policy = {
39 .apl = APL_NORMAL,
40 .domain = "test.domain",
41 .permList = {
42 {
43 .permissionName = "ohos.permission.MANAGE_MEDIA_RESOURCES",
44 .bundleName = "ohos.permission_test.demo",
45 .grantMode = 1,
46 .availableLevel = APL_NORMAL,
47 .label = "label",
48 .labelId = 1,
49 .description = "test",
50 .descriptionId = 1
51 }
52 },
53 .permStateList = {
54 {
55 .permissionName = "ohos.permission.MANAGE_MEDIA_RESOURCES",
56 .isGeneral = true,
57 .resDeviceID = {"local"},
58 .grantStatus = {PermissionState::PERMISSION_GRANTED},
59 .grantFlags = {1}
60 }
61 }
62 };
63
64 class AVControllerCallbackStubTest : public testing::Test {
65 public:
66 static void SetUpTestCase();
67 static void TearDownTestCase();
68 void SetUp() override;
69 void TearDown() override;
70 };
71
SetUpTestCase()72 void AVControllerCallbackStubTest::SetUpTestCase()
73 {
74 g_selfTokenId = GetSelfTokenID();
75 AccessTokenKit::AllocHapToken(g_info, g_policy);
76 AccessTokenIDEx tokenID = AccessTokenKit::GetHapTokenIDEx(g_info.userID, g_info.bundleName, g_info.instIndex);
77 SetSelfTokenID(tokenID.tokenIDEx);
78 }
79
TearDownTestCase()80 void AVControllerCallbackStubTest::TearDownTestCase()
81 {
82 SetSelfTokenID(g_selfTokenId);
83 auto tokenId = AccessTokenKit::GetHapTokenID(g_info.userID, g_info.bundleName, g_info.instIndex);
84 AccessTokenKit::DeleteToken(tokenId);
85 }
86
SetUp()87 void AVControllerCallbackStubTest::SetUp()
88 {
89 }
90
TearDown()91 void AVControllerCallbackStubTest::TearDown()
92 {
93 }
94
95 class AVControllerCallbackStubDemo : public AVControllerCallbackStub {
OnAVCallMetaDataChange(const AVCallMetaData & avCallMetaData)96 void OnAVCallMetaDataChange(const AVCallMetaData &avCallMetaData) override {};
97
OnAVCallStateChange(const AVCallState & avCallState)98 void OnAVCallStateChange(const AVCallState &avCallState) override {};
99
OnSessionDestroy()100 void OnSessionDestroy() override {};
101
OnPlaybackStateChange(const AVPlaybackState & state)102 void OnPlaybackStateChange(const AVPlaybackState &state) override {};
103
OnMetaDataChange(const AVMetaData & data)104 void OnMetaDataChange(const AVMetaData &data) override {};
105
OnActiveStateChange(bool isActive)106 void OnActiveStateChange(bool isActive) override {};
107
OnValidCommandChange(const std::vector<int32_t> & cmds)108 void OnValidCommandChange(const std::vector<int32_t> &cmds) override {};
109
OnOutputDeviceChange(const int32_t connectionState,const OutputDeviceInfo & outputDeviceInfo)110 void OnOutputDeviceChange(const int32_t connectionState, const OutputDeviceInfo &outputDeviceInfo) override {};
111
OnSessionEventChange(const std::string & event,const OHOS::AAFwk::WantParams & args)112 void OnSessionEventChange(const std::string &event, const OHOS::AAFwk::WantParams &args) override {};
113
OnQueueItemsChange(const std::vector<AVQueueItem> & items)114 void OnQueueItemsChange(const std::vector<AVQueueItem> &items) override {};
115
OnQueueTitleChange(const std::string & title)116 void OnQueueTitleChange(const std::string &title) override {};
117
OnExtrasChange(const OHOS::AAFwk::WantParams & extras)118 void OnExtrasChange(const OHOS::AAFwk::WantParams &extras) override {};
119 };
120
121 /**
122 * @tc.name: OnRemoteRequest001
123 * @tc.desc: Test OnRemoteRequest
124 * @tc.type: FUNC
125 */
126 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest001, TestSize.Level1)
127 {
128 SLOGI("OnRemoteRequest001 begin!");
129 uint32_t code = 0;
130 AVControllerCallbackStubDemo avControllerCallbackStub;
131 OHOS::MessageParcel data;
132 OHOS::MessageParcel reply;
133 OHOS::MessageOption option;
134 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
135 EXPECT_EQ(ret, AVSESSION_ERROR);
136 SLOGI("OnRemoteRequest001 end!");
137 }
138
139 /**
140 * @tc.name: OnRemoteRequest002
141 * @tc.desc: Test OnRemoteRequest
142 * @tc.type: FUNC
143 */
144 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest002, TestSize.Level1)
145 {
146 SLOGI("OnRemoteRequest002 begin!");
147 uint32_t code = 10;
148 AVControllerCallbackStubDemo avControllerCallbackStub;
149 OHOS::MessageParcel data;
150 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
151 data.WriteString("test");
152 OHOS::MessageParcel reply;
153 OHOS::MessageOption option;
154 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
155 EXPECT_EQ(ret, OHOS::ERR_NONE);
156 SLOGI("OnRemoteRequest002 end!");
157 }
158
159 /**
160 * @tc.name: OnRemoteRequest003
161 * @tc.desc: Test OnRemoteRequest
162 * @tc.type: FUNC
163 */
164 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest003, TestSize.Level1)
165 {
166 SLOGI("OnRemoteRequest003 begin!");
167 uint32_t code = 11;
168 AVControllerCallbackStubDemo avControllerCallbackStub;
169 OHOS::MessageParcel data;
170 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
171 data.WriteString("test");
172 OHOS::MessageParcel reply;
173 OHOS::MessageOption option;
174 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
175 EXPECT_EQ(ret, OHOS::ERR_NONE);
176 SLOGI("OnRemoteRequest003 end!");
177 }
178
179 /**
180 * @tc.name: OnRemoteRequest004
181 * @tc.desc: Test OnRemoteRequest
182 * @tc.type: FUNC
183 */
184 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest004, TestSize.Level1)
185 {
186 SLOGI("OnRemoteRequest004 begin!");
187 uint32_t code = 1;
188 AVControllerCallbackStubDemo avControllerCallbackStub;
189 OHOS::MessageParcel data;
190 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
191 data.WriteString("test");
192 OHOS::MessageParcel reply;
193 OHOS::MessageOption option;
194 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
195 EXPECT_EQ(ret, OHOS::ERR_NONE);
196 SLOGI("OnRemoteRequest004 end!");
197 }
198
199 /**
200 * @tc.name: OnRemoteRequest005
201 * @tc.desc: Test OnRemoteRequest
202 * @tc.type: FUNC
203 */
204 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest005, TestSize.Level1)
205 {
206 SLOGI("OnRemoteRequest005 begin!");
207 uint32_t code = 1;
208 AVControllerCallbackStubDemo avControllerCallbackStub;
209 OHOS::MessageParcel data;
210 OHOS::MessageParcel reply;
211 OHOS::MessageOption option;
212 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
213 EXPECT_EQ(ret, AVSESSION_ERROR);
214 SLOGI("OnRemoteRequest005 end!");
215 }
216
217 /**
218 * @tc.name: OnRemoteRequest006
219 * @tc.desc: Test OnRemoteRequest
220 * @tc.type: FUNC
221 */
222 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest006, TestSize.Level1)
223 {
224 SLOGI("OnRemoteRequest006 begin!");
225 uint32_t code = 2;
226 AVControllerCallbackStubDemo avControllerCallbackStub;
227 OHOS::MessageParcel data;
228 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
229 data.WriteString("test");
230 OHOS::MessageParcel reply;
231 OHOS::MessageOption option;
232 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
233 EXPECT_EQ(ret, OHOS::ERR_NONE);
234 SLOGI("OnRemoteRequest006 end!");
235 }
236
237 /**
238 * @tc.name: OnRemoteRequest007
239 * @tc.desc: Test OnRemoteRequest
240 * @tc.type: FUNC
241 */
242 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest007, TestSize.Level1)
243 {
244 SLOGI("OnRemoteRequest007 begin!");
245 uint32_t code = 2;
246 AVControllerCallbackStubDemo avControllerCallbackStub;
247 OHOS::MessageParcel data;
248 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
249 data.WriteInt32(-1);
250 OHOS::MessageParcel reply;
251 OHOS::MessageOption option;
252 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
253 EXPECT_EQ(ret, OHOS::ERR_NONE);
254 SLOGI("OnRemoteRequest007 end!");
255 }
256
257 /**
258 * @tc.name: OnRemoteRequest008
259 * @tc.desc: Test OnRemoteRequest
260 * @tc.type: FUNC
261 */
262 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest008, TestSize.Level1)
263 {
264 SLOGI("OnRemoteRequest008 begin!");
265 uint32_t code = 2;
266 AVControllerCallbackStubDemo avControllerCallbackStub;
267 OHOS::MessageParcel data;
268 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
269 data.WriteInt32(MAX_IMAGE_SIZE + 1);
270 OHOS::MessageParcel reply;
271 OHOS::MessageOption option;
272 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
273 EXPECT_EQ(ret, OHOS::ERR_NONE);
274 SLOGI("OnRemoteRequest008 end!");
275 }
276
277 /**
278 * @tc.name: OnRemoteRequest009
279 * @tc.desc: Test OnRemoteRequest
280 * @tc.type: FUNC
281 */
282 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest009, TestSize.Level1)
283 {
284 SLOGI("OnRemoteRequest009 begin!");
285 uint32_t code = 2;
286 AVControllerCallbackStubDemo avControllerCallbackStub;
287 OHOS::MessageParcel data;
288 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
289 data.WriteInt32(MAX_IMAGE_SIZE - 1);
290 OHOS::MessageParcel reply;
291 OHOS::MessageOption option;
292 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
293 EXPECT_EQ(ret, OHOS::ERR_NONE);
294 SLOGI("OnRemoteRequest009 end!");
295 }
296
297 /**
298 * @tc.name: OnRemoteRequest010
299 * @tc.desc: Test OnRemoteRequest
300 * @tc.type: FUNC
301 */
302 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest010, TestSize.Level1)
303 {
304 SLOGI("OnRemoteRequest010 begin!");
305 uint32_t code = 5;
306 AVControllerCallbackStubDemo avControllerCallbackStub;
307 OHOS::MessageParcel data;
308 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
309 data.WriteString("test");
310 OHOS::MessageParcel reply;
311 OHOS::MessageOption option;
312 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
313 EXPECT_EQ(ret, OHOS::ERR_NONE);
314 SLOGI("OnRemoteRequest010 end!");
315 }
316
317 /**
318 * @tc.name: OnRemoteRequest011
319 * @tc.desc: Test OnRemoteRequest
320 * @tc.type: FUNC
321 */
322 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest011, TestSize.Level1)
323 {
324 SLOGI("OnRemoteRequest011 begin!");
325 uint32_t code = 6;
326 AVControllerCallbackStubDemo avControllerCallbackStub;
327 OHOS::MessageParcel data;
328 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
329 data.WriteString("test");
330 OHOS::MessageParcel reply;
331 OHOS::MessageOption option;
332 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
333 EXPECT_EQ(ret, OHOS::ERR_NONE);
334 SLOGI("OnRemoteRequest011 end!");
335 }
336
337 /**
338 * @tc.name: OnRemoteRequest012
339 * @tc.desc: Test OnRemoteRequest
340 * @tc.type: FUNC
341 */
342 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest012, TestSize.Level1)
343 {
344 SLOGI("OnRemoteRequest012 begin!");
345 uint32_t code = 7;
346 AVControllerCallbackStubDemo avControllerCallbackStub;
347 OHOS::MessageParcel data;
348 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
349 data.WriteString("test");
350 OHOS::MessageParcel reply;
351 OHOS::MessageOption option;
352 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
353 EXPECT_EQ(ret, ERR_UNMARSHALLING);
354 SLOGI("OnRemoteRequest012 end!");
355 }
356
357 /**
358 * @tc.name: OnRemoteRequest013
359 * @tc.desc: Test OnRemoteRequest
360 * @tc.type: FUNC
361 */
362 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest013, TestSize.Level1)
363 {
364 SLOGI("OnRemoteRequest013 begin!");
365 uint32_t code = 7;
366 AVControllerCallbackStubDemo avControllerCallbackStub;
367 OHOS::MessageParcel data;
368 OHOS::MessageParcel reply;
369 OHOS::MessageOption option;
370 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
371 EXPECT_EQ(ret, AVSESSION_ERROR);
372 SLOGI("OnRemoteRequest013 end!");
373 }
374
375 /**
376 * @tc.name: OnRemoteRequest014
377 * @tc.desc: Test OnRemoteRequest
378 * @tc.type: FUNC
379 */
380 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest014, TestSize.Level1)
381 {
382 SLOGI("OnRemoteRequest014 begin!");
383 uint32_t code = 8;
384 AVControllerCallbackStubDemo avControllerCallbackStub;
385 OHOS::MessageParcel data;
386 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
387 data.WriteString("test");
388 OHOS::MessageParcel reply;
389 OHOS::MessageOption option;
390 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
391 EXPECT_EQ(ret, OHOS::ERR_NONE);
392 SLOGI("OnRemoteRequest014 end!");
393 }
394
395 /**
396 * @tc.name: OnRemoteRequest015
397 * @tc.desc: Test OnRemoteRequest
398 * @tc.type: FUNC
399 */
400 static HWTEST_F(AVControllerCallbackStubTest, OnRemoteRequest015, TestSize.Level1)
401 {
402 SLOGI("OnRemoteRequest015 begin!");
403 uint32_t code = 9;
404 AVControllerCallbackStubDemo avControllerCallbackStub;
405 OHOS::MessageParcel data;
406 data.WriteInterfaceToken(OHOS::AVSession::IAVControllerCallback::GetDescriptor());
407 data.WriteString("test");
408 OHOS::MessageParcel reply;
409 OHOS::MessageOption option;
410 int ret = avControllerCallbackStub.OnRemoteRequest(code, data, reply, option);
411 EXPECT_EQ(ret, OHOS::ERR_NONE);
412 SLOGI("OnRemoteRequest015 end!");
413 }