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_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     void OnPlay() override {};
OnPause()97     void OnPause() override {};
OnStop()98     void OnStop() override {};
OnPlayNext()99     void OnPlayNext() override {};
OnPlayPrevious()100     void OnPlayPrevious() override {};
OnFastForward(int64_t time)101     void OnFastForward(int64_t time) override {};
OnRewind(int64_t time)102     void OnRewind(int64_t time) override {};
OnSeek(int64_t time)103     void OnSeek(int64_t time) override {};
OnSetSpeed(double speed)104     void OnSetSpeed(double speed) override {};
OnSetLoopMode(int32_t loopMode)105     void OnSetLoopMode(int32_t loopMode) override {};
OnToggleFavorite(const std::string & mediald)106     void OnToggleFavorite(const std::string &mediald) override {};
OnMediaKeyEvent(const OHOS::MMI::KeyEvent & keyEvent)107     void OnMediaKeyEvent(const OHOS::MMI::KeyEvent &keyEvent) override {};
OnOutputDeviceChange(const int32_t connectionState,const OutputDeviceInfo & outputDeviceInfo)108     void OnOutputDeviceChange(const int32_t connectionState, const OutputDeviceInfo &outputDeviceInfo) override {};
OnCommonCommand(const std::string & commonCommand,const OHOS::AAFwk::WantParams & commandArgs)109     void OnCommonCommand(const std::string &commonCommand, const OHOS::AAFwk::WantParams &commandArgs) override {};
OnSkipToQueueItem(int32_t itemId)110     void OnSkipToQueueItem(int32_t itemId) override {};
OnAVCallAnswer()111     void OnAVCallAnswer() override {};
OnAVCallHangUp()112     void OnAVCallHangUp() override {};
OnAVCallToggleCallMute()113     void OnAVCallToggleCallMute() override {};
OnPlayFromAssetId(int64_t assetId)114     void OnPlayFromAssetId(int64_t assetId) override {};
OnCastDisplayChange(const CastDisplayInfo & castDisplayInfo)115     void OnCastDisplayChange(const CastDisplayInfo &castDisplayInfo) override {};
116 };
117 
118 /**
119  * @tc.name: OnRemoteRequest000
120  * @tc.desc: Test OnRemoteRequest
121  * @tc.type: FUNC
122  */
123 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest000, TestSize.Level1)
124 {
125     SLOGI("OnRemoteRequest000 begin!");
126     uint32_t code = 0;
127     AVSessionCallbackStubDemo avSessionCallbackStub;
128     OHOS::MessageParcel data;
129     OHOS::MessageParcel reply;
130     OHOS::MessageOption option;
131     int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
132     EXPECT_EQ(ret, AVSESSION_ERROR);
133     SLOGI("OnRemoteRequest000 end!");
134 }
135 /**
136  * @tc.name: OnRemoteRequest001
137  * @tc.desc: Test OnRemoteRequest
138  * @tc.type: FUNC
139  */
140 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest001, TestSize.Level1)
141 {
142     SLOGI("OnRemoteRequest001 begin!");
143     uint32_t code = 11;
144     AVSessionCallbackStubDemo avSessionCallbackStub;
145     OHOS::MessageParcel data;
146     data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
147     data.WriteString("test");
148     OHOS::MessageParcel reply;
149     OHOS::MessageOption option;
150     int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
151     EXPECT_EQ(ret, OHOS::ERR_NONE);
152     SLOGI("OnRemoteRequest001 end!");
153 }
154 
155 /**
156  * @tc.name: OnRemoteRequest002
157  * @tc.desc: Test OnRemoteRequest
158  * @tc.type: FUNC
159  */
160 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest002, TestSize.Level1)
161 {
162     SLOGI("OnRemoteRequest002 begin!");
163     uint32_t code = 12;
164     AVSessionCallbackStubDemo avSessionCallbackStub;
165     OHOS::MessageParcel data;
166     data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
167     SLOGI("OnRemoteRequest002");
168     data.WriteString("test");
169     OHOS::MessageParcel reply;
170     OHOS::MessageOption option;
171     int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
172     EXPECT_EQ(ret, OHOS::ERR_NONE);
173     SLOGI("OnRemoteRequest002 end!");
174 }
175 
176 /**
177  * @tc.name: OnRemoteRequest003
178  * @tc.desc: Test OnRemoteRequest
179  * @tc.type: FUNC
180  */
181 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest003, TestSize.Level1)
182 {
183     SLOGI("OnRemoteRequest003 begin!");
184     uint32_t code = 13;
185     AVSessionCallbackStubDemo avSessionCallbackStub;
186     OHOS::MessageParcel data;
187     data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
188     data.WriteString("test");
189     OHOS::MessageParcel reply;
190     OHOS::MessageOption option;
191     int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
192     EXPECT_EQ(ret, OHOS::ERR_NONE);
193     SLOGI("OnRemoteRequest003 end!");
194 }
195 
196 /**
197  * @tc.name: OnRemoteRequest004
198  * @tc.desc: Test OnRemoteRequest
199  * @tc.type: FUNC
200  */
201 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest004, TestSize.Level1)
202 {
203     SLOGI("OnRemoteRequest004 begin!");
204     uint32_t code = 14;
205     AVSessionCallbackStubDemo avSessionCallbackStub;
206     OHOS::MessageParcel data;
207     data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
208     data.WriteString("test");
209     OHOS::MessageParcel reply;
210     OHOS::MessageOption option;
211     int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
212     EXPECT_EQ(ret, OHOS::ERR_NONE);
213     SLOGI("OnRemoteRequest004 end!");
214 }
215 
216 /**
217  * @tc.name: OnRemoteRequest005
218  * @tc.desc: Test OnRemoteRequest
219  * @tc.type: FUNC
220  */
221 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest005, TestSize.Level1)
222 {
223     SLOGI("OnRemoteRequest005 begin!");
224     uint32_t code = 19;
225     AVSessionCallbackStubDemo avSessionCallbackStub;
226     OHOS::MessageParcel data;
227     data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
228     data.WriteString("test");
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("OnRemoteRequest005 end!");
234 }
235 
236 /**
237  * @tc.name: OnRemoteRequest006
238  * @tc.desc: Test OnRemoteRequest
239  * @tc.type: FUNC
240  */
241 static HWTEST_F(AVSessionCallbackStubTest, OnRemoteRequest006, TestSize.Level1)
242 {
243     SLOGI("OnRemoteRequest006 begin!");
244     uint32_t code = 25;
245     AVSessionCallbackStubDemo avSessionCallbackStub;
246     OHOS::MessageParcel data;
247     data.WriteInterfaceToken(IAVSessionCallback::GetDescriptor());
248     data.WriteString("test");
249     OHOS::MessageParcel reply;
250     OHOS::MessageOption option;
251     int ret = avSessionCallbackStub.OnRemoteRequest(code, data, reply, option);
252     EXPECT_EQ(ret, 305);
253     SLOGI("OnRemoteRequest006 end!");
254 }
255 }
256 }