• 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 "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