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 "av_session_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::Security::AccessToken;
26
27 namespace OHOS {
28 namespace AVSession {
29 static uint64_t g_selfTokenId = 0;
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 AVSessionCallbackStubTest : 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 AVSessionCallbackStubTest::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 AVSessionCallbackStubTest::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 AVSessionCallbackStubTest::SetUp()
88 {
89 }
90
TearDown()91 void AVSessionCallbackStubTest::TearDown()
92 {
93 }
94
95 class AVSessionCallbackStubDemo : public AVSessionCallbackStub {
OnPlay()96 ErrCode OnPlay() override { return AVSESSION_SUCCESS; };
OnPause()97 ErrCode OnPause() override { return AVSESSION_SUCCESS; };
OnStop()98 ErrCode OnStop() override { return AVSESSION_SUCCESS; };
OnPlayNext()99 ErrCode OnPlayNext() override { return AVSESSION_SUCCESS; };
OnPlayPrevious()100 ErrCode OnPlayPrevious() override { return AVSESSION_SUCCESS; };
OnFastForward(int64_t time)101 ErrCode OnFastForward(int64_t time) override { return AVSESSION_SUCCESS; };
OnRewind(int64_t time)102 ErrCode OnRewind(int64_t time) override { return AVSESSION_SUCCESS; };
OnSeek(int64_t time)103 ErrCode OnSeek(int64_t time) override { return AVSESSION_SUCCESS; };
OnSetSpeed(double speed)104 ErrCode OnSetSpeed(double speed) override { return AVSESSION_SUCCESS; };
OnSetLoopMode(int32_t loopMode)105 ErrCode OnSetLoopMode(int32_t loopMode) override { return AVSESSION_SUCCESS; };
OnSetTargetLoopMode(int32_t targetLoopMode)106 ErrCode OnSetTargetLoopMode(int32_t targetLoopMode) override
107 {
108 onSetTargetLoopMode_ = true;
109 return AVSESSION_SUCCESS;
110 };
OnToggleFavorite(const std::string & mediaId)111 ErrCode OnToggleFavorite(const std::string &mediaId) override { return AVSESSION_SUCCESS; };
OnMediaKeyEvent(const OHOS::MMI::KeyEvent & keyEvent)112 ErrCode OnMediaKeyEvent(const OHOS::MMI::KeyEvent &keyEvent) override { return AVSESSION_SUCCESS; };
OnOutputDeviceChange(const int32_t connectionState,const OutputDeviceInfo & outputDeviceInfo)113 ErrCode OnOutputDeviceChange(const int32_t connectionState,
114 const OutputDeviceInfo &outputDeviceInfo) override { return AVSESSION_SUCCESS; };
OnCommonCommand(const std::string & commonCommand,const OHOS::AAFwk::WantParams & commandArgs)115 ErrCode OnCommonCommand(const std::string &commonCommand,
116 const OHOS::AAFwk::WantParams &commandArgs) override { return AVSESSION_SUCCESS; };
OnSkipToQueueItem(int32_t itemId)117 ErrCode OnSkipToQueueItem(int32_t itemId) override { return AVSESSION_SUCCESS; };
OnAVCallAnswer()118 ErrCode OnAVCallAnswer() override { return AVSESSION_SUCCESS; };
OnAVCallHangUp()119 ErrCode OnAVCallHangUp() override { return AVSESSION_SUCCESS; };
OnAVCallToggleCallMute()120 ErrCode OnAVCallToggleCallMute() override { return AVSESSION_SUCCESS; };
OnPlayFromAssetId(int64_t assetId)121 ErrCode OnPlayFromAssetId(int64_t assetId) override
122 {
123 onPlayFromAssetId_ = true;
124 return AVSESSION_SUCCESS;
125 };
OnPlayWithAssetId(const std::string & assetId)126 ErrCode OnPlayWithAssetId(const std::string &assetId) override
127 {
128 onPlayWithAssetId_ = true;
129 return AVSESSION_SUCCESS;
130 };
OnCastDisplayChange(const CastDisplayInfo & castDisplayInfo)131 ErrCode OnCastDisplayChange(const CastDisplayInfo &castDisplayInfo) override { return AVSESSION_SUCCESS; };
OnCastDisplaySizeChange(const CastDisplayInfo & castDisplayInfo)132 ErrCode OnCastDisplaySizeChange(const CastDisplayInfo &castDisplayInfo) override { return AVSESSION_SUCCESS; };
OnCustomData(const OHOS::AAFwk::WantParams & data)133 ErrCode OnCustomData(const OHOS::AAFwk::WantParams& data) override
134 {
135 return AVSESSION_SUCCESS;
136 };
137 public:
138 bool onSetTargetLoopMode_ = false;
139 bool onPlayFromAssetId_ = false;
140 bool onPlayWithAssetId_ = false;
141 };
142
143 /**
144 * @tc.name: OnRemoteRequest000
145 * @tc.desc: Test OnRemoteRequest
146 * @tc.type: FUNC
147 */
148 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest000, TestSize.Level0)
149 {
150 SLOGI("OnRemoteRequest000 begin!");
151 uint32_t code = 1;
152 AVSessionCallbackStubDemo avSessionCallbackStub;
153 OHOS::MessageParcel data;
154 OHOS::MessageParcel reply;
155 OHOS::MessageOption option;
156 int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
157 EXPECT_EQ(ret, OHOS::ERR_TRANSACTION_FAILED);
158 SLOGI("OnRemoteRequest000 end!");
159 }
160 /**
161 * @tc.name: OnRemoteRequest001
162 * @tc.desc: Test OnRemoteRequest
163 * @tc.type: FUNC
164 */
165 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest001, TestSize.Level0)
166 {
167 SLOGI("OnRemoteRequest001 begin!");
168 uint32_t code = 2;
169 AVSessionCallbackStubDemo avSessionCallbackStub;
170 OHOS::MessageParcel data;
171 data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
172 OHOS::MessageParcel reply;
173 OHOS::MessageOption option;
174 int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
175 EXPECT_EQ(ret, OHOS::ERR_NONE);
176 SLOGI("OnRemoteRequest001 end!");
177 }
178
179 /**
180 * @tc.name: OnRemoteRequest002
181 * @tc.desc: Test OnRemoteRequest
182 * @tc.type: FUNC
183 */
184 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest002, TestSize.Level0)
185 {
186 SLOGI("OnRemoteRequest002 begin!");
187 uint32_t code = 3;
188 AVSessionCallbackStubDemo avSessionCallbackStub;
189 OHOS::MessageParcel data;
190 data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
191 OHOS::MessageParcel reply;
192 OHOS::MessageOption option;
193 int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
194 EXPECT_EQ(ret, OHOS::ERR_NONE);
195 SLOGI("OnRemoteRequest002 end!");
196 }
197
198 /**
199 * @tc.name: OnRemoteRequest003
200 * @tc.desc: Test OnRemoteRequest
201 * @tc.type: FUNC
202 */
203 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest003, TestSize.Level0)
204 {
205 SLOGI("OnRemoteRequest003 begin!");
206 uint32_t code = 4;
207 AVSessionCallbackStubDemo avSessionCallbackStub;
208 OHOS::MessageParcel data;
209 data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
210 OHOS::MessageParcel reply;
211 OHOS::MessageOption option;
212 int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
213 EXPECT_EQ(ret, OHOS::ERR_NONE);
214 SLOGI("OnRemoteRequest003 end!");
215 }
216
217 /**
218 * @tc.name: OnRemoteRequest004
219 * @tc.desc: Test OnRemoteRequest
220 * @tc.type: FUNC
221 */
222 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest004, TestSize.Level0)
223 {
224 SLOGI("OnRemoteRequest004 begin!");
225 uint32_t code = 5;
226 AVSessionCallbackStubDemo avSessionCallbackStub;
227 OHOS::MessageParcel data;
228 data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
229 OHOS::MessageParcel reply;
230 OHOS::MessageOption option;
231 int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
232 EXPECT_EQ(ret, OHOS::ERR_NONE);
233 SLOGI("OnRemoteRequest004 end!");
234 }
235
236 /**
237 * @tc.name: OnRemoteRequest005
238 * @tc.desc: Test OnRemoteRequest
239 * @tc.type: FUNC
240 */
241 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest005, TestSize.Level0)
242 {
243 SLOGI("OnRemoteRequest005 begin!");
244 uint32_t code = 6;
245 AVSessionCallbackStubDemo avSessionCallbackStub;
246 OHOS::MessageParcel data;
247 data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
248 OHOS::MessageParcel reply;
249 OHOS::MessageOption option;
250 int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
251 EXPECT_EQ(ret, OHOS::ERR_NONE);
252 SLOGI("OnRemoteRequest005 end!");
253 }
254
255 /**
256 * @tc.name: OnRemoteRequest006
257 * @tc.desc: Test OnRemoteRequest
258 * @tc.type: FUNC
259 */
260 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest006, TestSize.Level0)
261 {
262 SLOGI("OnRemoteRequest006 begin!");
263 uint32_t code = 7;
264 AVSessionCallbackStubDemo avSessionCallbackStub;
265 OHOS::MessageParcel data;
266 data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
267 OHOS::MessageParcel reply;
268 OHOS::MessageOption option;
269 int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
270 EXPECT_EQ(ret, OHOS::ERR_NONE);
271 SLOGI("OnRemoteRequest006 end!");
272 }
273
274 /**
275 * @tc.name: OnRemoteRequest007
276 * @tc.desc: Test OnRemoteRequest
277 * @tc.type: FUNC
278 */
279 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest007, TestSize.Level0)
280 {
281 SLOGI("OnRemoteRequest007 begin!");
282 uint32_t code = 8;
283 AVSessionCallbackStubDemo avSessionCallbackStub;
284 OHOS::MessageParcel data;
285 OHOS::MessageParcel reply;
286 OHOS::MessageOption option;
287
288 data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
289 int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
290 EXPECT_EQ(ret, OHOS::ERR_NONE);
291 SLOGI("OnRemoteRequest007 end!");
292 }
293
294 /**
295 * @tc.name: OnSetTargetLoopMode_001
296 * @tc.desc: Test OnSetTargetLoopMode
297 * @tc.type: FUNC
298 */
299 static HWTEST_F(AVSessionCallbackStubTest, OnSetTargetLoopMode001, TestSize.Level0)
300 {
301 SLOGI("OnSetTargetLoopMode001 begin!");
302 std::string assetId = "test";
303 AVSessionCallbackStubDemo avSessionCallbackStub;
304 avSessionCallbackStub.OnPlayWithAssetId(assetId);
305 EXPECT_EQ(avSessionCallbackStub.onPlayWithAssetId_, true);
306 int32_t targetLoopMode = 0;
307 avSessionCallbackStub.OnSetTargetLoopMode(targetLoopMode);
308 EXPECT_EQ(avSessionCallbackStub.onSetTargetLoopMode_, true);
309 SLOGI("OnSetTargetLoopMode001 end!");
310 }
311
312 /**
313 * @tc.name: OnPlayWithAssetId001
314 * @tc.desc: Test OnPlayWithAssetId
315 * @tc.type: FUNC
316 */
317 static HWTEST_F(AVSessionCallbackStubTest, OnPlayWithAssetId001, TestSize.Level0)
318 {
319 SLOGI("OnPlayWithAssetId001 begin!");
320 std::string assetId = "test";
321 AVSessionCallbackStubDemo avSessionCallbackStub;
322 avSessionCallbackStub.OnPlayWithAssetId(assetId);
323 EXPECT_EQ(avSessionCallbackStub.onPlayWithAssetId_, true);
324 SLOGI("OnPlayWithAssetId001 end!");
325 }
326 }
327 }
328