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 "session_listener_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::AVSession;
26 using namespace OHOS::Security::AccessToken;
27
28 static uint64_t g_selfTokenId = 0;
29 static HapInfoParams g_info = {
30 .userID = 100,
31 .bundleName = "ohos.permission_test.demo",
32 .instIndex = 0,
33 .appIDDesc = "ohos.permission_test.demo",
34 .isSystemApp = true
35 };
36
37 static HapPolicyParams g_policy = {
38 .apl = APL_NORMAL,
39 .domain = "test.domain",
40 .permList = {
41 {
42 .permissionName = "ohos.permission.MANAGE_MEDIA_RESOURCES",
43 .bundleName = "ohos.permission_test.demo",
44 .grantMode = 1,
45 .availableLevel = APL_NORMAL,
46 .label = "label",
47 .labelId = 1,
48 .description = "test",
49 .descriptionId = 1
50 }
51 },
52 .permStateList = {
53 {
54 .permissionName = "ohos.permission.MANAGE_MEDIA_RESOURCES",
55 .isGeneral = true,
56 .resDeviceID = {"local"},
57 .grantStatus = {PermissionState::PERMISSION_GRANTED},
58 .grantFlags = {1}
59 }
60 }
61 };
62
63 class SessionListenerStubTest : public testing::Test {
64 public:
65 static void SetUpTestCase();
66 static void TearDownTestCase();
67 void SetUp() override;
68 void TearDown() override;
69 };
70
SetUpTestCase()71 void SessionListenerStubTest::SetUpTestCase()
72 {
73 g_selfTokenId = GetSelfTokenID();
74 AccessTokenKit::AllocHapToken(g_info, g_policy);
75 AccessTokenIDEx tokenID = AccessTokenKit::GetHapTokenIDEx(g_info.userID, g_info.bundleName, g_info.instIndex);
76 SetSelfTokenID(tokenID.tokenIDEx);
77 }
78
TearDownTestCase()79 void SessionListenerStubTest::TearDownTestCase()
80 {
81 SetSelfTokenID(g_selfTokenId);
82 auto tokenId = AccessTokenKit::GetHapTokenID(g_info.userID, g_info.bundleName, g_info.instIndex);
83 AccessTokenKit::DeleteToken(tokenId);
84 }
85
SetUp()86 void SessionListenerStubTest::SetUp()
87 {
88 }
89
TearDown()90 void SessionListenerStubTest::TearDown()
91 {
92 }
93
94 class SessionListenerStubDemo : public SessionListenerStub {
OnSessionCreate(const AVSessionDescriptor & descriptor)95 void OnSessionCreate(const AVSessionDescriptor &descriptor) override {};
OnSessionRelease(const AVSessionDescriptor & descriptor)96 void OnSessionRelease(const AVSessionDescriptor &descriptor) override {};
OnTopSessionChange(const AVSessionDescriptor & descriptor)97 void OnTopSessionChange(const AVSessionDescriptor &descriptor) override {};
OnAudioSessionChecked(const int32_t uid)98 void OnAudioSessionChecked(const int32_t uid) override {};
OnDeviceAvailable(const OutputDeviceInfo & castOutputDeviceInfo)99 void OnDeviceAvailable(const OutputDeviceInfo &castOutputDeviceInfo) override {};
OnDeviceLogEvent(const DeviceLogEventCode eventId,const int64_t param)100 void OnDeviceLogEvent(const DeviceLogEventCode eventId, const int64_t param) override {};
OnDeviceOffline(const std::string & deviceId)101 void OnDeviceOffline(const std::string &deviceId) override {};
102 };
103
104 /**
105 * @tc.name: OnRemoteRequest001
106 * @tc.desc:
107 * @tc.type: FUNC
108 */
109 static HWTEST_F(SessionListenerStubTest, OnRemoteRequest001, TestSize.Level1)
110 {
111 SLOGI("OnRemoteRequest001 begin!");
112 uint32_t code = 0;
113 SessionListenerStubDemo sessionListenerStub;
114 OHOS::MessageParcel data;
115 OHOS::MessageParcel reply;
116 OHOS::MessageOption option;
117 int ret = sessionListenerStub.OnRemoteRequest(code, data, reply, option);
118 EXPECT_EQ(ret, OHOS::AVSession::AVSESSION_ERROR);
119 SLOGI("OnRemoteRequest001 end!");
120 }
121
122 /**
123 * @tc.name: OnRemoteRequest002
124 * @tc.desc:
125 * @tc.type: FUNC
126 */
127 static HWTEST_F(SessionListenerStubTest, OnRemoteRequest002, TestSize.Level1)
128 {
129 SLOGI("OnRemoteRequest002 begin!");
130 uint32_t code = 0;
131 SessionListenerStubDemo sessionListenerStub;
132 OHOS::MessageParcel data;
133 data.WriteInterfaceToken(ISessionListener::GetDescriptor());
134 data.WriteString("test");
135 OHOS::MessageParcel reply;
136 OHOS::MessageOption option;
137 int ret = sessionListenerStub.OnRemoteRequest(code, data, reply, option);
138 EXPECT_EQ(ret, OHOS::ERR_NONE);
139 SLOGI("OnRemoteRequest002 end!");
140 }
141
142 /**
143 * @tc.name: OnRemoteRequest003
144 * @tc.desc:
145 * @tc.type: FUNC
146 */
147 static HWTEST_F(SessionListenerStubTest, OnRemoteRequest003, TestSize.Level1)
148 {
149 SLOGI("OnRemoteRequest003 begin!");
150 uint32_t code = 1;
151 SessionListenerStubDemo sessionListenerStub;
152 OHOS::MessageParcel data;
153 data.WriteInterfaceToken(ISessionListener::GetDescriptor());
154 data.WriteString("test");
155 OHOS::MessageParcel reply;
156 OHOS::MessageOption option;
157 int ret = sessionListenerStub.OnRemoteRequest(code, data, reply, option);
158 EXPECT_EQ(ret, OHOS::ERR_NONE);
159 SLOGI("OnRemoteRequest003 end!");
160 }
161
162 /**
163 * @tc.name: OnRemoteRequest004
164 * @tc.desc:
165 * @tc.type: FUNC
166 */
167 static HWTEST_F(SessionListenerStubTest, OnRemoteRequest004, TestSize.Level1)
168 {
169 SLOGI("OnRemoteRequest004 begin!");
170 uint32_t code = 2;
171 SessionListenerStubDemo sessionListenerStub;
172 OHOS::MessageParcel data;
173 data.WriteInterfaceToken(ISessionListener::GetDescriptor());
174 data.WriteString("test");
175 OHOS::MessageParcel reply;
176 OHOS::MessageOption option;
177 int ret = sessionListenerStub.OnRemoteRequest(code, data, reply, option);
178 EXPECT_EQ(ret, OHOS::ERR_NONE);
179 SLOGI("OnRemoteRequest004 end!");
180 }
181
182 /**
183 * @tc.name: OnRemoteRequest005
184 * @tc.desc:
185 * @tc.type: FUNC
186 */
187 static HWTEST_F(SessionListenerStubTest, OnRemoteRequest005, TestSize.Level1)
188 {
189 SLOGI("OnRemoteRequest005 begin!");
190 uint32_t code = 3;
191 SessionListenerStubDemo sessionListenerStub;
192 OHOS::MessageParcel data;
193 data.WriteInterfaceToken(ISessionListener::GetDescriptor());
194 data.WriteString("test");
195 OHOS::MessageParcel reply;
196 OHOS::MessageOption option;
197 int ret = sessionListenerStub.OnRemoteRequest(code, data, reply, option);
198 EXPECT_EQ(ret, OHOS::ERR_NONE);
199 SLOGI("OnRemoteRequest005 end!");
200 }
201
202 /**
203 * @tc.name: OnRemoteRequest006
204 * @tc.desc:
205 * @tc.type: FUNC
206 */
207 static HWTEST_F(SessionListenerStubTest, OnRemoteRequest006, TestSize.Level1)
208 {
209 SLOGI("OnRemoteRequest006 begin!");
210 uint32_t code = 4;
211 SessionListenerStubDemo sessionListenerStub;
212 OHOS::MessageParcel data;
213 data.WriteInterfaceToken(ISessionListener::GetDescriptor());
214 data.WriteString("test");
215 OHOS::MessageParcel reply;
216 OHOS::MessageOption option;
217 int ret = sessionListenerStub.OnRemoteRequest(code, data, reply, option);
218 EXPECT_EQ(ret, OHOS::ERR_NONE);
219 SLOGI("OnRemoteRequest006 end!");
220 }
221
222 /**
223 * @tc.name: OnRemoteRequest007
224 * @tc.desc:
225 * @tc.type: FUNC
226 */
227 static HWTEST_F(SessionListenerStubTest, OnRemoteRequest007, TestSize.Level1)
228 {
229 SLOGI("OnRemoteRequest007 begin!");
230 uint32_t code = 5;
231 SessionListenerStubDemo sessionListenerStub;
232 OHOS::MessageParcel data;
233 data.WriteInterfaceToken(ISessionListener::GetDescriptor());
234 data.WriteString("test");
235 OHOS::MessageParcel reply;
236 OHOS::MessageOption option;
237 int ret = sessionListenerStub.OnRemoteRequest(code, data, reply, option);
238 EXPECT_EQ(ret, OHOS::ERR_NONE);
239 SLOGI("OnRemoteRequest007 end!");
240 }
241
242 /**
243 * @tc.name: OnRemoteRequest008
244 * @tc.desc:
245 * @tc.type: FUNC
246 */
247 static HWTEST_F(SessionListenerStubTest, OnRemoteRequest008, TestSize.Level1)
248 {
249 SLOGI("OnRemoteRequest008 begin!");
250 uint32_t code = 25;
251 SessionListenerStubDemo sessionListenerStub;
252 OHOS::MessageParcel data;
253 data.WriteInterfaceToken(ISessionListener::GetDescriptor());
254 data.WriteString("test");
255 OHOS::MessageParcel reply;
256 OHOS::MessageOption option;
257 int ret = sessionListenerStub.OnRemoteRequest(code, data, reply, option);
258 EXPECT_EQ(ret, 305);
259 SLOGI("OnRemoteRequest008 end!");
260 }