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 "accesstoken_kit.h"
18 #include "avcast_controller_callback_stub.h"
19 #include "avsession_descriptor.h"
20 #include "avsession_errors.h"
21 #include "avsession_log.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
30 static uint64_t g_selfTokenId = 0;
31 static HapInfoParams g_info = {
32 .userID = 100,
33 .bundleName = "ohos.permission_test.demo",
34 .instIndex = 0,
35 .appIDDesc = "ohos.permission_test.demo",
36 .isSystemApp = true
37 };
38
39 static HapPolicyParams g_policy = {
40 .apl = APL_NORMAL,
41 .domain = "test.domain",
42 .permList = {
43 {
44 .permissionName = "ohos.permission.MANAGE_MEDIA_RESOURCES",
45 .bundleName = "ohos.permission_test.demo",
46 .grantMode = 1,
47 .availableLevel = APL_NORMAL,
48 .label = "label",
49 .labelId = 1,
50 .description = "test",
51 .descriptionId = 1
52 }
53 },
54 .permStateList = {
55 {
56 .permissionName = "ohos.permission.MANAGE_MEDIA_RESOURCES",
57 .isGeneral = true,
58 .resDeviceID = {"local"},
59 .grantStatus = {PermissionState::PERMISSION_GRANTED},
60 .grantFlags = {1}
61 }
62 }
63 };
64
65 class AVCastControllerCallbackStubTest : public testing::Test {
66 public:
67 static void SetUpTestCase();
68 static void TearDownTestCase();
69 void SetUp() override;
70 void TearDown() override;
71 };
72
SetUpTestCase()73 void AVCastControllerCallbackStubTest::SetUpTestCase()
74 {
75 g_selfTokenId = GetSelfTokenID();
76 AccessTokenKit::AllocHapToken(g_info, g_policy);
77 AccessTokenIDEx tokenID = AccessTokenKit::GetHapTokenIDEx(g_info.userID, g_info.bundleName, g_info.instIndex);
78 SetSelfTokenID(tokenID.tokenIDEx);
79 }
80
TearDownTestCase()81 void AVCastControllerCallbackStubTest::TearDownTestCase()
82 {
83 SetSelfTokenID(g_selfTokenId);
84 auto tokenId = AccessTokenKit::GetHapTokenID(g_info.userID, g_info.bundleName, g_info.instIndex);
85 AccessTokenKit::DeleteToken(tokenId);
86 }
87
SetUp()88 void AVCastControllerCallbackStubTest::SetUp()
89 {}
90
TearDown()91 void AVCastControllerCallbackStubTest::TearDown()
92 {}
93
94 class AVCastControllerCallbackStubDemo : public AVCastControllerCallbackStub {
95 public:
OnCastPlaybackStateChange(const AVPlaybackState & state)96 void OnCastPlaybackStateChange(const AVPlaybackState& state) override {}
97
OnMediaItemChange(const AVQueueItem & avQueueItem)98 void OnMediaItemChange(const AVQueueItem& avQueueItem) override {}
99
OnPlayNext()100 void OnPlayNext() override {}
101
OnPlayPrevious()102 void OnPlayPrevious() override {}
103
OnSeekDone(const int32_t seekNumber)104 void OnSeekDone(const int32_t seekNumber) override {}
105
OnVideoSizeChange(const int32_t width,const int32_t height)106 void OnVideoSizeChange(const int32_t width, const int32_t height) override {}
107
OnPlayerError(const int32_t errorCode,const std::string & errorMsg)108 void OnPlayerError(const int32_t errorCode, const std::string& errorMsg) override {}
109
OnEndOfStream(const int32_t isLooping)110 void OnEndOfStream(const int32_t isLooping) override {}
111
OnPlayRequest(const AVQueueItem & avQueueItem)112 void OnPlayRequest(const AVQueueItem& avQueueItem) override {}
113
OnKeyRequest(const std::string & assetId,const std::vector<uint8_t> & keyRequestData)114 void OnKeyRequest(const std::string& assetId, const std::vector<uint8_t>& keyRequestData) override {}
115
OnCastValidCommandChanged(const std::vector<int32_t> & cmds)116 void OnCastValidCommandChanged(const std::vector<int32_t> &cmds) override {}
117 };
118
119 /**
120 * @tc.name: OnRemoteRequest001
121 * @tc.desc: test OnRemoteRequest with failed code
122 * @tc.type: FUNC
123 */
124 static HWTEST_F(AVCastControllerCallbackStubTest, OnRemoteRequest001, TestSize.Level1)
125 {
126 uint32_t code = 100;
127 AVCastControllerCallbackStubDemo avCastControllerCallbackStubDemo;
128 OHOS::MessageParcel data;
129 OHOS::MessageParcel reply;
130 OHOS::MessageOption option;
131 auto localDescriptor = IAVCastControllerCallback::GetDescriptor();
132 data.WriteInterfaceToken(localDescriptor);
133 int ret = avCastControllerCallbackStubDemo.OnRemoteRequest(code, data, reply, option);
134 EXPECT_EQ(ret, IPC_STUB_UNKNOW_TRANS_ERR);
135 }
136
137 /**
138 * @tc.name: OnRemoteRequest002
139 * @tc.desc: test OnRemoteRequest with failed Descriptor
140 * @tc.type: FUNC
141 */
142 static HWTEST_F(AVCastControllerCallbackStubTest, OnRemoteRequest002, TestSize.Level1)
143 {
144 uint32_t code = 100;
145 AVCastControllerCallbackStubDemo avCastControllerCallbackStubDemo;
146 OHOS::MessageParcel data;
147 OHOS::MessageParcel reply;
148 OHOS::MessageOption option;
149 int ret = avCastControllerCallbackStubDemo.OnRemoteRequest(code, data, reply, option);
150 EXPECT_EQ(ret, AVSESSION_ERROR);
151 }
152
153 /**
154 * @tc.name: OnRemoteRequest003
155 * @tc.desc: test HandleOnKeyRequest
156 * @tc.type: FUNC
157 */
158 static HWTEST_F(AVCastControllerCallbackStubTest, OnRemoteRequest003, TestSize.Level1)
159 {
160 uint32_t code = 9;
161 AVCastControllerCallbackStubDemo avCastControllerCallbackStubDemo;
162 OHOS::MessageParcel data;
163 OHOS::MessageParcel reply;
164 OHOS::MessageOption option;
165
166 auto localDescriptor = IAVCastControllerCallback::GetDescriptor();
167 data.WriteInterfaceToken(localDescriptor);
168 int ret = avCastControllerCallbackStubDemo.OnRemoteRequest(code, data, reply, option);
169 EXPECT_EQ(ret, ERR_NONE);
170 }
171
172 /**
173 * @tc.name: OnRemoteRequest004
174 * @tc.desc: test HandleOnKeyRequest
175 * @tc.type: FUNC
176 */
177 static HWTEST_F(AVCastControllerCallbackStubTest, OnRemoteRequest004, TestSize.Level1)
178 {
179 uint32_t code = 9;
180 AVCastControllerCallbackStubDemo avCastControllerCallbackStubDemo;
181 OHOS::MessageParcel data;
182 OHOS::MessageParcel reply;
183 OHOS::MessageOption option;
184
185 data.WriteString("***");
186 auto localDescriptor = IAVCastControllerCallback::GetDescriptor();
187 data.WriteInterfaceToken(localDescriptor);
188 void* ptr = nullptr;
189 data.WriteBuffer(ptr, 0);
190 data.WriteInt32(1);
191
192 int ret = avCastControllerCallbackStubDemo.OnRemoteRequest(code, data, reply, option);
193 EXPECT_EQ(ret, INVALID_FD);
194 }
195
196 /**
197 * @tc.name: OnRemoteRequest005
198 * @tc.desc: test HandleOnKeyRequest
199 * @tc.type: FUNC
200 */
201 static HWTEST_F(AVCastControllerCallbackStubTest, OnRemoteRequest005, TestSize.Level1)
202 {
203 uint32_t code = 9;
204 AVCastControllerCallbackStubDemo avCastControllerCallbackStubDemo;
205 OHOS::MessageParcel data;
206 OHOS::MessageParcel reply;
207 OHOS::MessageOption option;
208
209 data.WriteString("***");
210 auto localDescriptor = IAVCastControllerCallback::GetDescriptor();
211 data.WriteInterfaceToken(localDescriptor);
212 std::string str{"0000"};
213 data.WriteBuffer(str.c_str(), 4);
214 data.WriteInt32(0);
215
216 int ret = avCastControllerCallbackStubDemo.OnRemoteRequest(code, data, reply, option);
217 EXPECT_EQ(ret, INVALID_FD);
218 }
219
220 /**
221 * @tc.name: OnRemoteRequest006
222 * @tc.desc: test HandleOnKeyRequest
223 * @tc.type: FUNC
224 */
225 static HWTEST_F(AVCastControllerCallbackStubTest, OnRemoteRequest006, TestSize.Level1)
226 {
227 uint32_t code = 9;
228 AVCastControllerCallbackStubDemo avCastControllerCallbackStubDemo;
229 OHOS::MessageParcel data;
230 OHOS::MessageParcel reply;
231 OHOS::MessageOption option;
232
233 data.WriteString("***");
234 auto localDescriptor = IAVCastControllerCallback::GetDescriptor();
235 data.WriteInterfaceToken(localDescriptor);
236 std::string str{"0000"};
237 data.WriteBuffer(str.c_str(), 4);
238 data.WriteInt32(4);
239
240 int ret = avCastControllerCallbackStubDemo.OnRemoteRequest(code, data, reply, option);
241 EXPECT_EQ(ret, INVALID_FD);
242 }
243
244 } // namespace OHOS
245 } // namespace AVSession