1 /*
2 * Copyright (c) 2024-2025 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 "avsession_log.h"
18 #include "avsession_descriptor.h"
19 #include "avsession_errors.h"
20 #include "accesstoken_kit.h"
21 #include "token_setproc.h"
22
23 #define private public
24 #define protected public
25 #include "avsession_stub.h"
26 #undef protected
27 #undef private
28
29 using namespace testing::ext;
30 using namespace OHOS::Security::AccessToken;
31 using namespace OHOS::AVSession;
32
33 static int32_t MAX_IMAGE_SIZE = 10 * 1024 * 1024;
34 static uint64_t g_selfTokenId = 0;
35
36 static HapInfoParams g_info = {
37 .userID = 100,
38 .bundleName = "ohos.permission_test.demo",
39 .instIndex = 0,
40 .appIDDesc = "ohos.permission_test.demo",
41 .isSystemApp = true
42 };
43
44 static HapPolicyParams g_policy = {
45 .apl = APL_NORMAL,
46 .domain = "test.domain",
47 .permList = {
48 {
49 .permissionName = "ohos.permission.MANAGE_MEDIA_RESOURCES",
50 .bundleName = "ohos.permission_test.demo",
51 .grantMode = 1,
52 .availableLevel = APL_NORMAL,
53 .label = "label",
54 .labelId = 1,
55 .description = "test",
56 .descriptionId = 1
57 }
58 },
59 .permStateList = {
60 {
61 .permissionName = "ohos.permission.MANAGE_MEDIA_RESOURCES",
62 .isGeneral = true,
63 .resDeviceID = {"local"},
64 .grantStatus = {PermissionState::PERMISSION_GRANTED},
65 .grantFlags = {1}
66 }
67 }
68 };
69
70 class AVSessionStubTest : public testing::Test {
71 public:
72 static void SetUpTestCase();
73 static void TearDownTestCase();
74 void SetUp() override;
75 void TearDown() override;
76 };
77
SetUpTestCase()78 void AVSessionStubTest::SetUpTestCase()
79 {
80 g_selfTokenId = GetSelfTokenID();
81 AccessTokenKit::AllocHapToken(g_info, g_policy);
82 AccessTokenIDEx tokenID = AccessTokenKit::GetHapTokenIDEx(g_info.userID, g_info.bundleName, g_info.instIndex);
83 SetSelfTokenID(tokenID.tokenIDEx);
84 }
85
TearDownTestCase()86 void AVSessionStubTest::TearDownTestCase()
87 {
88 SetSelfTokenID(g_selfTokenId);
89 auto tokenId = AccessTokenKit::GetHapTokenID(g_info.userID, g_info.bundleName, g_info.instIndex);
90 AccessTokenKit::DeleteToken(tokenId);
91 }
92
SetUp()93 void AVSessionStubTest::SetUp()
94 {
95 }
96
TearDown()97 void AVSessionStubTest::TearDown()
98 {
99 }
100
101 class AVSessionStubDemo : public AVSessionStub {
102 public:
GetSessionId()103 std::string GetSessionId() override { return ""; };
GetSessionType()104 std::string GetSessionType() override { return ""; };
GetAVMetaData(AVMetaData & meta)105 int32_t GetAVMetaData(AVMetaData &meta) override { return 0; };
SetAVMetaData(const AVMetaData & meta)106 int32_t SetAVMetaData(const AVMetaData &meta) override { return 0; };
SetAVCallMetaData(const AVCallMetaData & meta)107 int32_t SetAVCallMetaData(const AVCallMetaData &meta) override { return 0; };
SetAVCallState(const AVCallState & avCallState)108 int32_t SetAVCallState(const AVCallState &avCallState) override { return 0; };
GetAVPlaybackState(AVPlaybackState & state)109 int32_t GetAVPlaybackState(AVPlaybackState &state) override { return 0; };
SetAVPlaybackState(const AVPlaybackState & state)110 int32_t SetAVPlaybackState(const AVPlaybackState &state) override { return 0; };
GetAVQueueItems(std::vector<AVQueueItem> & items)111 int32_t GetAVQueueItems(std::vector<AVQueueItem> &items) override { return 0; };
SetAVQueueItems(const std::vector<AVQueueItem> & items)112 int32_t SetAVQueueItems(const std::vector<AVQueueItem> &items) override { return 0; };
GetAVQueueTitle(std::string & title)113 int32_t GetAVQueueTitle(std::string &title) override { return 0; };
SetAVQueueTitle(const std::string & title)114 int32_t SetAVQueueTitle(const std::string &title) override { return 0; };
SetLaunchAbility(const OHOS::AbilityRuntime::WantAgent::WantAgent & ability)115 int32_t SetLaunchAbility(const OHOS::AbilityRuntime::WantAgent::WantAgent &ability) override { return 0; };
GetExtras(OHOS::AAFwk::WantParams & extras)116 int32_t GetExtras(OHOS::AAFwk::WantParams &extras) override { return 0; };
SetExtras(const OHOS::AAFwk::WantParams & extras)117 int32_t SetExtras(const OHOS::AAFwk::WantParams &extras) override { return 0; };
GetController()118 std::shared_ptr<AVSessionController> GetController() override { return nullptr; };
RegisterCallback(const std::shared_ptr<AVSessionCallback> & callback)119 int32_t RegisterCallback(const std::shared_ptr<AVSessionCallback> &callback) override { return 0; };
Activate()120 int32_t Activate() override { return 0; };
Deactivate()121 int32_t Deactivate() override { return 0; };
IsActive()122 bool IsActive() override { return true; };
Destroy()123 int32_t Destroy() override { return 0; };
AddSupportCommand(const int32_t cmd)124 int32_t AddSupportCommand(const int32_t cmd) override { return 0; };
DeleteSupportCommand(const int32_t cmd)125 int32_t DeleteSupportCommand(const int32_t cmd) override { return 0; };
SetSessionEvent(const std::string & event,const OHOS::AAFwk::WantParams & args)126 int32_t SetSessionEvent(const std::string &event, const OHOS::AAFwk::WantParams &args) override { return 0; };
UpdateAVQueueInfo(const AVQueueInfo & info)127 int32_t UpdateAVQueueInfo(const AVQueueInfo& info) override { return 0; };
128
129 #ifdef CASTPLUS_CAST_ENGINE_ENABLE
GetAVCastController()130 std::shared_ptr<AVCastController> GetAVCastController() override { return nullptr; };
ReleaseCast(bool continuePlay=false)131 int32_t ReleaseCast(bool continuePlay = false) override { return 0; };
StartCastDisplayListener()132 int32_t StartCastDisplayListener() override { return 0; };
StopCastDisplayListener()133 int32_t StopCastDisplayListener() override { return 0; };
GetAllCastDisplays(std::vector<CastDisplayInfo> & castDisplays)134 int32_t GetAllCastDisplays(std::vector<CastDisplayInfo> &castDisplays) override { return 0; };
135 #endif
136
137 protected:
RegisterCallbackInner(const OHOS::sptr<IAVSessionCallback> & callback)138 int32_t RegisterCallbackInner(const OHOS::sptr<IAVSessionCallback> &callback) override { return 0; };
GetControllerInner()139 OHOS::sptr<IRemoteObject> GetControllerInner() override { return nullptr; };
140
141 #ifdef CASTPLUS_CAST_ENGINE_ENABLE
GetAVCastControllerInner()142 OHOS::sptr<IRemoteObject> GetAVCastControllerInner() override { return nullptr; };
143 #endif
144 };
145
146 /**
147 * @tc.name: OnRemoteRequest001
148 * @tc.desc: Test OnRemoteRequest
149 * @tc.type: FUNC
150 */
151 static HWTEST(AVSessionStubTest, OnRemoteRequest001, TestSize.Level0)
152 {
153 SLOGI("OnRemoteRequest001 begin!");
154 uint32_t code = 0;
155 AVSessionStubDemo avSessionStub;
156 OHOS::MessageParcel data;
157 OHOS::MessageParcel reply;
158 OHOS::MessageOption option;
159 int ret = avSessionStub.OnRemoteRequest(code, data, reply, option);
160 EXPECT_EQ(ret, AVSESSION_ERROR);
161 SLOGI("OnRemoteRequest001 end!");
162 }
163
164 /**
165 * @tc.name: OnRemoteRequest002
166 * @tc.desc: Test OnRemoteRequest
167 * @tc.type: FUNC
168 */
169 static HWTEST(AVSessionStubTest, OnRemoteRequest002, TestSize.Level0)
170 {
171 SLOGI("OnRemoteRequest002 begin!");
172 uint32_t code = 25;
173 AVSessionStubDemo avSessionStub;
174 OHOS::MessageParcel data;
175 OHOS::MessageParcel reply;
176 OHOS::MessageOption option;
177 int ret = avSessionStub.OnRemoteRequest(code, data, reply, option);
178 EXPECT_EQ(ret, AVSESSION_ERROR);
179 SLOGI("OnRemoteRequest002 end!");
180 }
181
182 /**
183 * @tc.name: HandleRegisterCallbackInner001
184 * @tc.desc: Test HandleRegisterCallbackInner
185 * @tc.type: FUNC
186 */
187 static HWTEST(AVSessionStubTest, HandleRegisterCallbackInner001, TestSize.Level0)
188 {
189 SLOGI("HandleRegisterCallbackInner001 begin!");
190 AVSessionStubDemo avSessionStub;
191 OHOS::MessageParcel data;
192 OHOS::MessageParcel reply;
193 int ret = avSessionStub.HandleRegisterCallbackInner(data, reply);
194 EXPECT_EQ(ret, OHOS::ERR_NONE);
195 SLOGI("HandleRegisterCallbackInner001 end!");
196 }
197
198 /**
199 * @tc.name: HandleSetAVCallMetaData001
200 * @tc.desc: Test HandleSetAVCallMetaData
201 * @tc.type: FUNC
202 */
203 static HWTEST(AVSessionStubTest, HandleSetAVCallMetaData001, TestSize.Level0)
204 {
205 SLOGI("HandleSetAVCallMetaData001 begin!");
206 AVSessionStubDemo avSessionStub;
207 OHOS::MessageParcel data;
208 OHOS::MessageParcel reply;
209 int ret = avSessionStub.HandleSetAVCallMetaData(data, reply);
210 EXPECT_EQ(ret, OHOS::ERR_NONE);
211 SLOGI("HandleSetAVCallMetaData001 end!");
212 }
213
214 /**
215 * @tc.name: HandleSetAVCallState001
216 * @tc.desc: Test HandleSetAVCallState
217 * @tc.type: FUNC
218 */
219 static HWTEST(AVSessionStubTest, HandleSetAVCallState001, TestSize.Level0)
220 {
221 SLOGI("HandleSetAVCallState001 begin!");
222 AVSessionStubDemo avSessionStub;
223 OHOS::MessageParcel data;
224 OHOS::MessageParcel reply;
225 int ret = avSessionStub.HandleSetAVCallState(data, reply);
226 EXPECT_EQ(ret, OHOS::ERR_NONE);
227 SLOGI("HandleSetAVCallState001 end!");
228 }
229
230 /**
231 * @tc.name: HandleSetAVPlaybackState001
232 * @tc.desc: Test HandleSetAVPlaybackState
233 * @tc.type: FUNC
234 */
235 static HWTEST(AVSessionStubTest, HandleSetAVPlaybackState001, TestSize.Level0)
236 {
237 SLOGI("HandleSetAVPlaybackState001 begin!");
238 AVSessionStubDemo avSessionStub;
239 OHOS::MessageParcel data;
240 OHOS::MessageParcel reply;
241 int ret = avSessionStub.HandleSetAVPlaybackState(data, reply);
242 EXPECT_EQ(ret, OHOS::ERR_NONE);
243 SLOGI("HandleSetAVPlaybackState001 end!");
244 }
245
246 /**
247 * @tc.name: HandleSendCustomData001
248 * @tc.desc: Test HandleSendCustomData
249 * @tc.type: FUNC
250 */
251 static HWTEST(AVSessionStubTest, HandleSendCustomData001, TestSize.Level0)
252 {
253 SLOGI("HandleSendCustomData001 begin!");
254 AVSessionStubDemo avSessionStub;
255 OHOS::MessageParcel data;
256 OHOS::AAFwk::WantParams customData;
257 data.WriteParcelable(&customData);
258 OHOS::MessageParcel reply;
259 int ret = avSessionStub.HandleSendCustomData(data, reply);
260 EXPECT_EQ(ret, OHOS::ERR_NONE);
261 SLOGI("HandleSendCustomData001 end!");
262 }
263
264 /**
265 * @tc.name: HandleSendCustomData002
266 * @tc.desc: Test HandleSendCustomData
267 * @tc.type: FUNC
268 */
269 static HWTEST(AVSessionStubTest, HandleSendCustomData002, TestSize.Level0)
270 {
271 SLOGI("HandleSendCustomData002 begin!");
272 AVSessionStubDemo avSessionStub;
273 OHOS::MessageParcel data;
274 OHOS::MessageParcel reply;
275 int ret = avSessionStub.HandleSendCustomData(data, reply);
276 EXPECT_EQ(ret, OHOS::ERR_NONE);
277 SLOGI("HandleSendCustomData002 end!");
278 }
279
280 /**
281 * @tc.name: HandleSetLaunchAbility001
282 * @tc.desc: Test HandleSetLaunchAbility
283 * @tc.type: FUNC
284 */
285 static HWTEST(AVSessionStubTest, HandleSetLaunchAbility001, TestSize.Level0)
286 {
287 SLOGI("HandleSetLaunchAbility001 begin!");
288 AVSessionStubDemo avSessionStub;
289 OHOS::MessageParcel data;
290 OHOS::MessageParcel reply;
291 int ret = avSessionStub.HandleSetLaunchAbility(data, reply);
292 EXPECT_EQ(ret, OHOS::ERR_NONE);
293 SLOGI("HandleSetLaunchAbility001 end!");
294 }
295
296 /**
297 * @tc.name: HandleSetAVQueueItems001
298 * @tc.desc: Test HandleSetAVQueueItems
299 * @tc.type: FUNC
300 */
301 static HWTEST(AVSessionStubTest, HandleSetAVQueueItems001, TestSize.Level0)
302 {
303 SLOGI("HandleSetAVQueueItems001 begin!");
304 AVSessionStubDemo avSessionStub;
305 OHOS::MessageParcel data;
306 OHOS::MessageParcel reply;
307 int ret = avSessionStub.HandleSetAVQueueItems(data, reply);
308 EXPECT_EQ(ret, OHOS::ERR_NONE);
309 SLOGI("HandleSetAVQueueItems001 end!");
310 }
311
312 /**
313 * @tc.name: HandleSetExtras001
314 * @tc.desc: Test HandleSetExtras
315 * @tc.type: FUNC
316 */
317 static HWTEST(AVSessionStubTest, HandleSetExtras001, TestSize.Level0)
318 {
319 SLOGI("HandleSetExtras001 begin!");
320 AVSessionStubDemo avSessionStub;
321 OHOS::MessageParcel data;
322 OHOS::MessageParcel reply;
323 int ret = avSessionStub.HandleSetExtras(data, reply);
324 EXPECT_EQ(ret, OHOS::ERR_NONE);
325 SLOGI("HandleSetExtras001 end!");
326 }
327
328 /**
329 * @tc.name: HandleSetSessionEvent001
330 * @tc.desc: Test HandleSetSessionEvent
331 * @tc.type: FUNC
332 */
333 static HWTEST(AVSessionStubTest, HandleSetSessionEvent001, TestSize.Level0)
334 {
335 SLOGI("HandleSetSessionEvent001 begin!");
336 AVSessionStubDemo avSessionStub;
337 OHOS::MessageParcel data;
338 OHOS::MessageParcel reply;
339 int ret = avSessionStub.HandleSetSessionEvent(data, reply);
340 EXPECT_EQ(ret, OHOS::ERR_NONE);
341 SLOGI("HandleSetSessionEvent001 end!");
342 }
343
344 /**
345 * @tc.name: HandleGetAVMetaData001
346 * @tc.desc: Test HandleGetAVMetaData
347 * @tc.type: FUNC
348 */
349 static HWTEST(AVSessionStubTest, HandleGetAVMetaData001, TestSize.Level0)
350 {
351 SLOGI("HandleGetAVMetaData001 begin!");
352 AVSessionStubDemo avSessionStub;
353 OHOS::MessageParcel data;
354 OHOS::MessageParcel reply;
355 int ret = avSessionStub.HandleGetAVMetaData(data, reply);
356 EXPECT_EQ(ret, OHOS::ERR_NONE);
357 SLOGI("HandleGetAVMetaData001 end!");
358 }
359
360 /**
361 * @tc.name: HandleSetAVMetaData001
362 * @tc.desc: Test HandleSetAVMetaData
363 * @tc.type: FUNC
364 */
365 static HWTEST(AVSessionStubTest, HandleSetAVMetaData001, TestSize.Level0)
366 {
367 SLOGI("HandleSetAVMetaData001 begin!");
368 AVSessionStubDemo avSessionStub;
369 OHOS::MessageParcel data;
370 data.WriteInterfaceToken(IAVSession::GetDescriptor());
371 data.WriteInt32(-1);
372 OHOS::MessageParcel reply;
373 int ret = avSessionStub.HandleSetAVMetaData(data, reply);
374 EXPECT_EQ(ret, OHOS::ERR_NONE);
375 SLOGI("HandleSetAVMetaData001 end!");
376 }
377
378 /**
379 * @tc.name: HandleSetAVMetaData002
380 * @tc.desc: Test HandleSetAVMetaData
381 * @tc.type: FUNC
382 */
383 static HWTEST(AVSessionStubTest, HandleSetAVMetaData002, TestSize.Level0)
384 {
385 SLOGI("HandleSetAVMetaData002 begin!");
386 AVSessionStubDemo avSessionStub;
387 OHOS::MessageParcel data;
388 data.WriteInterfaceToken(IAVSession::GetDescriptor());
389 data.WriteInt32(MAX_IMAGE_SIZE + 1);
390 OHOS::MessageParcel reply;
391 int ret = avSessionStub.HandleSetAVMetaData(data, reply);
392 EXPECT_EQ(ret, OHOS::ERR_NONE);
393 SLOGI("HandleSetAVMetaData002 end!");
394 }
395
396 /**
397 * @tc.name: HandleSetAVMetaData003
398 * @tc.desc: Test HandleSetAVMetaData
399 * @tc.type: FUNC
400 */
401 static HWTEST(AVSessionStubTest, HandleSetAVMetaData003, TestSize.Level0)
402 {
403 SLOGI("HandleSetAVMetaData003 begin!");
404 AVSessionStubDemo avSessionStub;
405 OHOS::MessageParcel data;
406 data.WriteInt32(MAX_IMAGE_SIZE - 1);
407 OHOS::MessageParcel reply;
408 int ret = avSessionStub.HandleSetAVMetaData(data, reply);
409 EXPECT_EQ(ret, OHOS::ERR_NONE);
410 SLOGI("HandleSetAVMetaData003 end!");
411 }
412
413 /**
414 * @tc.name: HandleSetAVMetaData004
415 * @tc.desc: Test HandleSetAVMetaData
416 * @tc.type: FUNC
417 */
418 static HWTEST(AVSessionStubTest, HandleSetAVMetaData004, TestSize.Level0)
419 {
420 SLOGI("HandleSetAVMetaData004 begin!");
421 AVSessionStubDemo avSessionStub;
422 AVMetaData meta;
423 std::string assetId = "assetId";
424 meta.SetAssetId(assetId);
425 std::shared_ptr<AVSessionPixelMap> mediaImage = std::make_shared<AVSessionPixelMap>();
426 std::vector<uint8_t> imgBuffer = {1, 2, 3, 4, 5, 6, 7, 8};
427 mediaImage->SetInnerImgBuffer(imgBuffer);
428 meta.SetMediaImage(mediaImage);
429 OHOS::MessageParcel data;
430 OHOS::MessageParcel reply;
431 data.WriteParcelable(&meta);
432 int ret = avSessionStub.HandleSetAVMetaData(data, reply);
433 EXPECT_EQ(ret, OHOS::ERR_NONE);
434 SLOGI("HandleSetAVMetaData004 end!");
435 }
436
437 /**
438 * @tc.name: HandleUpdateAVQueueInfoEvent001
439 * @tc.desc: Test HandleUpdateAVQueueInfoEvent
440 * @tc.type: FUNC
441 */
442 static HWTEST(AVSessionStubTest, HandleUpdateAVQueueInfoEvent001, TestSize.Level1)
443 {
444 SLOGI("HandleUpdateAVQueueInfoEvent001 begin!");
445 AVQueueInfo info = AVQueueInfo();
446 AVSessionStubDemo avSessionStub;
447 OHOS::MessageParcel data;
448 data.WriteInt32(1);
449 info.MarshallingMessageParcel(data);
450 OHOS::MessageParcel reply;
451 int ret = avSessionStub.HandleUpdateAVQueueInfoEvent(data, reply);
452 EXPECT_EQ(ret, OHOS::ERR_NONE);
453 SLOGI("HandleUpdateAVQueueInfoEvent001 end!");
454 }
455
456 /**
457 * @tc.name: HandleUpdateAVQueueInfoEvent002
458 * @tc.desc: Test HandleUpdateAVQueueInfoEvent
459 * @tc.type: FUNC
460 */
461 static HWTEST(AVSessionStubTest, HandleUpdateAVQueueInfoEvent002, TestSize.Level1)
462 {
463 SLOGI("HandleUpdateAVQueueInfoEvent002 begin!");
464 AVQueueInfo info = AVQueueInfo();
465 AVSessionStubDemo avSessionStub;
466 OHOS::MessageParcel data;
467 data.WriteInt32(-1);
468 info.MarshallingMessageParcel(data);
469 OHOS::MessageParcel reply;
470 int ret = avSessionStub.HandleUpdateAVQueueInfoEvent(data, reply);
471 EXPECT_NE(ret, OHOS::ERR_NONE);
472 SLOGI("HandleUpdateAVQueueInfoEvent002 end!");
473 }