• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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