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