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 "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; };
127 
128 #ifdef CASTPLUS_CAST_ENGINE_ENABLE
GetAVCastController()129     std::shared_ptr<AVCastController> GetAVCastController() override { return nullptr; };
ReleaseCast()130     int32_t ReleaseCast() override { return 0; };
StartCastDisplayListener()131     int32_t StartCastDisplayListener() override { return 0; };
StopCastDisplayListener()132     int32_t StopCastDisplayListener() override { return 0; };
GetAllCastDisplays(std::vector<CastDisplayInfo> & castDisplays)133     int32_t GetAllCastDisplays(std::vector<CastDisplayInfo> &castDisplays) override { return 0; };
134 #endif
135 
136 protected:
RegisterCallbackInner(const OHOS::sptr<IAVSessionCallback> & callback)137     int32_t RegisterCallbackInner(const OHOS::sptr<IAVSessionCallback> &callback) override { return 0; };
GetControllerInner()138     OHOS::sptr<IRemoteObject> GetControllerInner() override { return nullptr; };
139 
140 #ifdef CASTPLUS_CAST_ENGINE_ENABLE
GetAVCastControllerInner()141     OHOS::sptr<IRemoteObject> GetAVCastControllerInner() override { return nullptr; };
142 #endif
143 };
144 
145 /**
146  * @tc.name: OnRemoteRequest001
147  * @tc.desc: Test OnRemoteRequest
148  * @tc.type: FUNC
149  */
150 static HWTEST(AVSessionStubTest, OnRemoteRequest001, TestSize.Level1)
151 {
152     SLOGI("OnRemoteRequest001 begin!");
153     uint32_t code = 0;
154     AVSessionStubDemo avSessionStub;
155     OHOS::MessageParcel data;
156     OHOS::MessageParcel reply;
157     OHOS::MessageOption option;
158     int ret = avSessionStub.OnRemoteRequest(code, data, reply, option);
159     EXPECT_EQ(ret, AVSESSION_ERROR);
160     SLOGI("OnRemoteRequest001 end!");
161 }
162 
163 /**
164  * @tc.name: OnRemoteRequest002
165  * @tc.desc: Test OnRemoteRequest
166  * @tc.type: FUNC
167  */
168 static HWTEST(AVSessionStubTest, OnRemoteRequest002, TestSize.Level1)
169 {
170     SLOGI("OnRemoteRequest002 begin!");
171     uint32_t code = 25;
172     AVSessionStubDemo avSessionStub;
173     OHOS::MessageParcel data;
174     OHOS::MessageParcel reply;
175     OHOS::MessageOption option;
176     int ret = avSessionStub.OnRemoteRequest(code, data, reply, option);
177     EXPECT_EQ(ret, AVSESSION_ERROR);
178     SLOGI("OnRemoteRequest002 end!");
179 }
180 
181 /**
182  * @tc.name: HandleRegisterCallbackInner001
183  * @tc.desc: Test HandleRegisterCallbackInner
184  * @tc.type: FUNC
185  */
186 static HWTEST(AVSessionStubTest, HandleRegisterCallbackInner001, TestSize.Level1)
187 {
188     SLOGI("HandleRegisterCallbackInner001 begin!");
189     AVSessionStubDemo avSessionStub;
190     OHOS::MessageParcel data;
191     OHOS::MessageParcel reply;
192     int ret = avSessionStub.HandleRegisterCallbackInner(data, reply);
193     EXPECT_EQ(ret, OHOS::ERR_NONE);
194     SLOGI("HandleRegisterCallbackInner001 end!");
195 }
196 
197 /**
198  * @tc.name: HandleSetAVCallMetaData001
199  * @tc.desc: Test HandleSetAVCallMetaData
200  * @tc.type: FUNC
201  */
202 static HWTEST(AVSessionStubTest, HandleSetAVCallMetaData001, TestSize.Level1)
203 {
204     SLOGI("HandleSetAVCallMetaData001 begin!");
205     AVSessionStubDemo avSessionStub;
206     OHOS::MessageParcel data;
207     OHOS::MessageParcel reply;
208     int ret = avSessionStub.HandleSetAVCallMetaData(data, reply);
209     EXPECT_EQ(ret, OHOS::ERR_NONE);
210     SLOGI("HandleSetAVCallMetaData001 end!");
211 }
212 
213 /**
214  * @tc.name: HandleSetAVCallState001
215  * @tc.desc: Test HandleSetAVCallState
216  * @tc.type: FUNC
217  */
218 static HWTEST(AVSessionStubTest, HandleSetAVCallState001, TestSize.Level1)
219 {
220     SLOGI("HandleSetAVCallState001 begin!");
221     AVSessionStubDemo avSessionStub;
222     OHOS::MessageParcel data;
223     OHOS::MessageParcel reply;
224     int ret = avSessionStub.HandleSetAVCallState(data, reply);
225     EXPECT_EQ(ret, OHOS::ERR_NONE);
226     SLOGI("HandleSetAVCallState001 end!");
227 }
228 
229 /**
230  * @tc.name: HandleSetAVPlaybackState001
231  * @tc.desc: Test HandleSetAVPlaybackState
232  * @tc.type: FUNC
233  */
234 static HWTEST(AVSessionStubTest, HandleSetAVPlaybackState001, TestSize.Level1)
235 {
236     SLOGI("HandleSetAVPlaybackState001 begin!");
237     AVSessionStubDemo avSessionStub;
238     OHOS::MessageParcel data;
239     OHOS::MessageParcel reply;
240     int ret = avSessionStub.HandleSetAVPlaybackState(data, reply);
241     EXPECT_EQ(ret, OHOS::ERR_NONE);
242     SLOGI("HandleSetAVPlaybackState001 end!");
243 }
244 
245 /**
246  * @tc.name: HandleSetLaunchAbility001
247  * @tc.desc: Test HandleSetLaunchAbility
248  * @tc.type: FUNC
249  */
250 static HWTEST(AVSessionStubTest, HandleSetLaunchAbility001, TestSize.Level1)
251 {
252     SLOGI("HandleSetLaunchAbility001 begin!");
253     AVSessionStubDemo avSessionStub;
254     OHOS::MessageParcel data;
255     OHOS::MessageParcel reply;
256     int ret = avSessionStub.HandleSetLaunchAbility(data, reply);
257     EXPECT_EQ(ret, OHOS::ERR_NONE);
258     SLOGI("HandleSetLaunchAbility001 end!");
259 }
260 
261 /**
262  * @tc.name: HandleSetAVQueueItems001
263  * @tc.desc: Test HandleSetAVQueueItems
264  * @tc.type: FUNC
265  */
266 static HWTEST(AVSessionStubTest, HandleSetAVQueueItems001, TestSize.Level1)
267 {
268     SLOGI("HandleSetAVQueueItems001 begin!");
269     AVSessionStubDemo avSessionStub;
270     OHOS::MessageParcel data;
271     OHOS::MessageParcel reply;
272     int ret = avSessionStub.HandleSetAVQueueItems(data, reply);
273     EXPECT_EQ(ret, OHOS::ERR_NONE);
274     SLOGI("HandleSetAVQueueItems001 end!");
275 }
276 
277 /**
278  * @tc.name: HandleSetExtras001
279  * @tc.desc: Test HandleSetExtras
280  * @tc.type: FUNC
281  */
282 static HWTEST(AVSessionStubTest, HandleSetExtras001, TestSize.Level1)
283 {
284     SLOGI("HandleSetExtras001 begin!");
285     AVSessionStubDemo avSessionStub;
286     OHOS::MessageParcel data;
287     OHOS::MessageParcel reply;
288     int ret = avSessionStub.HandleSetExtras(data, reply);
289     EXPECT_EQ(ret, OHOS::ERR_NONE);
290     SLOGI("HandleSetExtras001 end!");
291 }
292 
293 /**
294  * @tc.name: HandleSetSessionEvent001
295  * @tc.desc: Test HandleSetSessionEvent
296  * @tc.type: FUNC
297  */
298 static HWTEST(AVSessionStubTest, HandleSetSessionEvent001, TestSize.Level1)
299 {
300     SLOGI("HandleSetSessionEvent001 begin!");
301     AVSessionStubDemo avSessionStub;
302     OHOS::MessageParcel data;
303     OHOS::MessageParcel reply;
304     int ret = avSessionStub.HandleSetSessionEvent(data, reply);
305     EXPECT_EQ(ret, OHOS::ERR_NONE);
306     SLOGI("HandleSetSessionEvent001 end!");
307 }
308 
309 /**
310  * @tc.name: HandleGetController001
311  * @tc.desc: Test HandleGetController
312  * @tc.type: FUNC
313  */
314 static HWTEST(AVSessionStubTest, HandleGetController001, TestSize.Level1)
315 {
316     SLOGI("HandleGetController001 begin!");
317     AVSessionStubDemo avSessionStub;
318     OHOS::MessageParcel data;
319     OHOS::MessageParcel reply;
320     int ret = avSessionStub.HandleGetController(data, reply);
321     EXPECT_EQ(ret, OHOS::ERR_NONE);
322     SLOGI("HandleGetController001 end!");
323 }
324 
325 /**
326  * @tc.name: HandleGetAVMetaData001
327  * @tc.desc: Test HandleGetAVMetaData
328  * @tc.type: FUNC
329  */
330 static HWTEST(AVSessionStubTest, HandleGetAVMetaData001, TestSize.Level1)
331 {
332     SLOGI("HandleGetAVMetaData001 begin!");
333     AVSessionStubDemo avSessionStub;
334     OHOS::MessageParcel data;
335     OHOS::MessageParcel reply;
336     int ret = avSessionStub.HandleGetAVMetaData(data, reply);
337     EXPECT_EQ(ret, OHOS::ERR_NONE);
338     SLOGI("HandleGetAVMetaData001 end!");
339 }
340 
341 /**
342  * @tc.name: HandleSetAVMetaData001
343  * @tc.desc: Test HandleSetAVMetaData
344  * @tc.type: FUNC
345  */
346 static HWTEST(AVSessionStubTest, HandleSetAVMetaData001, TestSize.Level1)
347 {
348     SLOGI("HandleSetAVMetaData001 begin!");
349     AVSessionStubDemo avSessionStub;
350     OHOS::MessageParcel data;
351     data.WriteInterfaceToken(IAVSession::GetDescriptor());
352     data.WriteInt32(-1);
353     OHOS::MessageParcel reply;
354     int ret = avSessionStub.HandleSetAVMetaData(data, reply);
355     EXPECT_EQ(ret, OHOS::ERR_NONE);
356     SLOGI("HandleSetAVMetaData001 end!");
357 }
358 
359 /**
360  * @tc.name: HandleSetAVMetaData002
361  * @tc.desc: Test HandleSetAVMetaData
362  * @tc.type: FUNC
363  */
364 static HWTEST(AVSessionStubTest, HandleSetAVMetaData002, TestSize.Level1)
365 {
366     SLOGI("HandleSetAVMetaData002 begin!");
367     AVSessionStubDemo avSessionStub;
368     OHOS::MessageParcel data;
369     data.WriteInterfaceToken(IAVSession::GetDescriptor());
370     data.WriteInt32(MAX_IMAGE_SIZE + 1);
371     OHOS::MessageParcel reply;
372     int ret = avSessionStub.HandleSetAVMetaData(data, reply);
373     EXPECT_EQ(ret, OHOS::ERR_NONE);
374     SLOGI("HandleSetAVMetaData002 end!");
375 }
376 
377 /**
378  * @tc.name: HandleSetAVMetaData003
379  * @tc.desc: Test HandleSetAVMetaData
380  * @tc.type: FUNC
381  */
382 static HWTEST(AVSessionStubTest, HandleSetAVMetaData003, TestSize.Level1)
383 {
384     SLOGI("HandleSetAVMetaData003 begin!");
385     AVSessionStubDemo avSessionStub;
386     OHOS::MessageParcel data;
387     data.WriteInterfaceToken(IAVSession::GetDescriptor());
388     data.WriteInt32(MAX_IMAGE_SIZE - 1);
389     OHOS::MessageParcel reply;
390     int ret = avSessionStub.HandleSetAVMetaData(data, reply);
391     EXPECT_EQ(ret, OHOS::ERR_NONE);
392     SLOGI("HandleSetAVMetaData003 end!");
393 }