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 }