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