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 }