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