• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 "accesstoken_kit.h"
17 #include <gmock/gmock.h>
18 #include "gtest/gtest.h"
19 #include "ipc_skeleton.h"
20 
21 #include "boomerang_manager.h"
22 #include "boomerang_callback_stub.h"
23 #include "boomerang_server.h"
24 #include "devicestatus_callback_stub.h"
25 #include "devicestatus_define.h"
26 #include "devicestatus_dumper.h"
27 #include "devicestatus_manager.h"
28 #include "devicestatus_hisysevent.h"
29 #include "fi_log.h"
30 #include "nativetoken_kit.h"
31 #include "token_setproc.h"
32 #include "parcel.h"
33 
34 #undef LOG_TAG
35 #define LOG_TAG "BoomerangServerTest"
36 
37 namespace OHOS {
38 namespace Msdp {
39 namespace DeviceStatus {
40 using namespace testing::ext;
41 namespace {
42 constexpr int32_t RET_IPC_ERR = 5;
43 inline constexpr size_t MAX_STRING_LEN{1024};
44 } // namespace
45 
46 class BoomerangManagerTest : public testing::Test {
47 public:
SetUpTestCase()48     static void SetUpTestCase() {};
TearDownTestCase()49     static void TearDownTestCase() {};
SetUp()50     void SetUp() {};
TearDown()51     void TearDown() {};
52     class BoomerangManagerTestCallback : public BoomerangCallbackStub {
53     public:
BoomerangManagerTestCallback()54     explicit BoomerangManagerTestCallback() {}
~BoomerangManagerTestCallback()55     virtual ~BoomerangManagerTestCallback() {};
56     MOCK_METHOD(void, OnScreenshotResult, (const BoomerangData& data), (override));
57     MOCK_METHOD(void, OnNotifyMetadata, (const std::string& metadata), (override));
58     MOCK_METHOD(void, OnEncodeImageResult, (std::shared_ptr<Media::PixelMap> pixelMap), (override));
59     MOCK_METHOD(void, EmitOnEvent, (BoomerangData& data));
60     MOCK_METHOD(void, EmitOnMetadata, (std::string metadata));
61     MOCK_METHOD(void, EmitOnEncodeImage, (std::shared_ptr<Media::PixelMap> pixelMap));
62     };
63 };
64 
65 /**
66  * @tc.name: BoomerangManagerTest001
67  * @tc.desc: BoomerangManagerTest001 for check GetInstance
68  * @tc.type: FUNC
69  * @tc.require:
70  */
71 
72 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest001, TestSize.Level1)
73 {
74     GTEST_LOG_(INFO) << "BoomerangManagerTest001 start";
75     string metadata = "test";
76     ASSERT_NO_FATAL_FAILURE(BoomerangManager::GetInstance().SubmitMetadata(metadata));
77     GTEST_LOG_(INFO) << "BoomerangManagerTest001 end";
78 }
79 
80 /**
81  * @tc.name: BoomerangManagerTest002
82  * @tc.desc: BoomerangManagerTest002 for SubscribeCallback subCallback is nullptr
83  * @tc.type: FUNC
84  * @tc.require:
85  */
86 
87 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest002, TestSize.Level1)
88 {
89     GTEST_LOG_(INFO) << "BoomerangManagerTest002 start";
90     char bundleName[MAX_STRING_LEN] = {0};
91     BoomerangType type { BOOMERANG_TYPE_BOOMERANG };
92     sptr<IRemoteBoomerangCallback> subCallback { nullptr };
93     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
94     int32_t ret = boomerangManager.SubscribeCallback(type, bundleName, subCallback);
95     EXPECT_EQ(ret, RET_IPC_ERR);
96     GTEST_LOG_(INFO) << "BoomerangManagerTest002 end";
97 }
98 
99 /**
100  * @tc.name: BoomerangManagerTest003
101  * @tc.desc: BoomerangManagerTest003 for SubscribeCallback
102  * @tc.type: FUNC
103  * @tc.require:
104  */
105 
106 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest003, TestSize.Level1)
107 {
108     GTEST_LOG_(INFO) << "BoomerangManagerTest003 start";
109     char bundleName[MAX_STRING_LEN] = {0};
110     BoomerangType type { BOOMERANG_TYPE_BOOMERANG };
111     sptr<IRemoteBoomerangCallback> subCallback = new (std::nothrow) BoomerangManagerTestCallback();
112     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
113     int32_t ret = boomerangManager.SubscribeCallback(type, bundleName, subCallback);
114     EXPECT_EQ(ret, RET_OK);
115     GTEST_LOG_(INFO) << "BoomerangManagerTest003 end";
116 }
117 
118 /**
119  * @tc.name: BoomerangManagerTest004
120  * @tc.desc: BoomerangManagerTest004 for UnsubscribeCallback subCallback is nullptr
121  * @tc.type: FUNC
122  * @tc.require:
123  */
124 
125 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest004, TestSize.Level1)
126 {
127     GTEST_LOG_(INFO) << "BoomerangManagerTest004 start";
128     BoomerangType type { BOOMERANG_TYPE_BOOMERANG };
129     char bundleName[MAX_STRING_LEN] = {0};
130     sptr<IRemoteBoomerangCallback> unsubCallback { nullptr };
131     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
132     int32_t ret = boomerangManager.UnsubscribeCallback(type, bundleName, unsubCallback);
133     EXPECT_EQ(ret, RET_IPC_ERR);
134     GTEST_LOG_(INFO) << "BoomerangManagerTest004 end";
135 }
136 
137 /**
138  * @tc.name: BoomerangManagerTest005
139  * @tc.desc: BoomerangManagerTest005 for UnsubscribeCallback
140  * @tc.type: FUNC
141  * @tc.require:
142  */
143 
144 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest005, TestSize.Level1)
145 {
146     GTEST_LOG_(INFO) << "BoomerangManagerTest005 start";
147     char bundleName[MAX_STRING_LEN] = {0};
148     BoomerangType type { BOOMERANG_TYPE_BOOMERANG };
149     sptr<IRemoteBoomerangCallback> unsubCallback = new (std::nothrow) BoomerangManagerTestCallback();
150     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
151     int32_t ret = boomerangManager.UnsubscribeCallback(type, bundleName, unsubCallback);
152     EXPECT_EQ(ret, RET_OK);
153     GTEST_LOG_(INFO) << "BoomerangManagerTest005 end";
154 }
155 
156 /**
157  * @tc.name: BoomerangManagerTest006
158  * @tc.desc: BoomerangManagerTest006 for NotifyMetadataBindingEvent subCallback is nullptr
159  * @tc.type: FUNC
160  * @tc.require:
161  */
162 
163 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest006, TestSize.Level1)
164 {
165     GTEST_LOG_(INFO) << "BoomerangManagerTest006 start";
166     char bundleName[MAX_STRING_LEN] = {0};
167     sptr<IRemoteBoomerangCallback> notifyCallback { nullptr };
168     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
169     int32_t ret = boomerangManager.NotifyMetadataBindingEvent(bundleName, notifyCallback);
170     EXPECT_EQ(ret, RET_IPC_ERR);
171     GTEST_LOG_(INFO) << "BoomerangManagerTest006 end";
172 }
173 
174 /**
175  * @tc.name: BoomerangManagerTest007
176  * @tc.desc: BoomerangManagerTest007 for NotifyMetadataBindingEvent
177  * @tc.type: FUNC
178  * @tc.require:
179  */
180 
181 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest007, TestSize.Level1)
182 {
183     GTEST_LOG_(INFO) << "BoomerangManagerTest007 start";
184     char bundleName[MAX_STRING_LEN] = {0};
185     sptr<IRemoteBoomerangCallback> notifyCallback = new (std::nothrow) BoomerangManagerTestCallback();
186     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
187     int32_t ret = boomerangManager.NotifyMetadataBindingEvent(bundleName, notifyCallback);
188     EXPECT_EQ(ret, RET_OK);
189     GTEST_LOG_(INFO) << "BoomerangManagerTest007 end";
190 }
191 
192 /**
193  * @tc.name: BoomerangManagerTest008
194  * @tc.desc: BoomerangManagerTest008 for encodeCallback is nullptr
195  * @tc.type: FUNC
196  * @tc.require:
197  */
198 
199 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest008, TestSize.Level1)
200 {
201     GTEST_LOG_(INFO) << "BoomerangManagerTest008 start";
202     string metadata = "test";
203     sptr<IRemoteBoomerangCallback> encodeCallback = nullptr;
204     Media::InitializationOptions initOptions;
205     initOptions.size = {1080, 1920};
206     initOptions.pixelFormat = Media::PixelFormat::BGRA_8888;
207     initOptions.editable = true;
208     std::shared_ptr<Media::PixelMap> pixelMap = Media::PixelMap::Create(initOptions);
209     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
210     int32_t ret = boomerangManager.BoomerangEncodeImage(pixelMap, metadata, encodeCallback);
211     EXPECT_EQ(ret, RET_IPC_ERR);
212     GTEST_LOG_(INFO) << "BoomerangManagerTest008 end";
213 }
214 
215 /**
216  * @tc.name: BoomerangManagerTest009
217  * @tc.desc: BoomerangManagerTest009 for pixelMap is nullptr
218  * @tc.type: FUNC
219  * @tc.require:
220  */
221 
222 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest009, TestSize.Level1)
223 {
224     GTEST_LOG_(INFO) << "BoomerangManagerTest009 start";
225     string metadata = "test";
226     sptr<IRemoteBoomerangCallback> encodeCallback = new (std::nothrow) BoomerangManagerTestCallback();
227     std::shared_ptr<Media::PixelMap> pixelMap { nullptr };
228     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
229     int32_t ret = boomerangManager.BoomerangEncodeImage(pixelMap, metadata, encodeCallback);
230     EXPECT_EQ(ret, RET_IPC_ERR);
231     GTEST_LOG_(INFO) << "BoomerangManagerTest009 end";
232 }
233 
234 /**
235  * @tc.name: BoomerangManagerTest010
236  * @tc.desc: BoomerangManagerTest010 for pixelMap and encodeCallback is nullptr
237  * @tc.type: FUNC
238  * @tc.require:
239  */
240 
241 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest010, TestSize.Level1)
242 {
243     GTEST_LOG_(INFO) << "BoomerangManagerTest010 start";
244     string metadata = "test";
245     sptr<IRemoteBoomerangCallback> encodeCallback = nullptr;
246     std::shared_ptr<Media::PixelMap> pixelMap { nullptr };
247     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
248     int32_t ret = boomerangManager.BoomerangEncodeImage(pixelMap, metadata, encodeCallback);
249     EXPECT_EQ(ret, RET_IPC_ERR);
250     GTEST_LOG_(INFO) << "BoomerangManagerTest010 end";
251 }
252 
253 /**
254  * @tc.name: BoomerangManagerTest011
255  * @tc.desc: BoomerangManagerTest011 for BoomerangEncodeImage
256  * @tc.type: FUNC
257  * @tc.require:
258  */
259 
260 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest011, TestSize.Level1)
261 {
262     GTEST_LOG_(INFO) << "BoomerangManagerTest011 start";
263     string metadata = "test";
264     sptr<IRemoteBoomerangCallback> encodeCallback = new (std::nothrow) BoomerangManagerTestCallback();
265     Media::InitializationOptions initOptions;
266     initOptions.size = {1080, 1920};
267     initOptions.pixelFormat = Media::PixelFormat::BGRA_8888;
268     initOptions.editable = true;
269     std::shared_ptr<Media::PixelMap> pixelMap = Media::PixelMap::Create(initOptions);
270     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
271     int32_t ret = boomerangManager.BoomerangEncodeImage(pixelMap, metadata, encodeCallback);
272     EXPECT_EQ(ret, RET_OK);
273     GTEST_LOG_(INFO) << "BoomerangManagerTest011 end";
274 }
275 
276 /**
277  * @tc.name: BoomerangManagerTest012
278  * @tc.desc: BoomerangManagerTest012 for SubmitMetadata
279  * @tc.type: FUNC
280  * @tc.require:
281  */
282 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest012, TestSize.Level1)
283 {
284     GTEST_LOG_(INFO) << "BoomerangManagerTest012 start";
285     string metadata = "";
286     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
287     int32_t ret = boomerangManager.SubmitMetadata(metadata);
288     EXPECT_EQ(ret, RET_OK);
289     GTEST_LOG_(INFO) << "BoomerangManagerTest012 end";
290 }
291 
292 /**
293  * @tc.name: BoomerangManagerTest013
294  * @tc.desc: BoomerangManagerTest013 for SubmitMetadata
295  * @tc.type: FUNC
296  * @tc.require:
297  */
298 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest013, TestSize.Level1)
299 {
300     GTEST_LOG_(INFO) << "BoomerangManagerTest013 start";
301     string metadata = "test";
302     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
303     int32_t ret = boomerangManager.SubmitMetadata(metadata);
304     EXPECT_EQ(ret, RET_ERR);
305     GTEST_LOG_(INFO) << "BoomerangManagerTest013 end";
306 }
307 
308 /**
309  * @tc.name: BoomerangManagerTest014
310  * @tc.desc: BoomerangManagerTest014 for decodeCallback is nullptr
311  * @tc.type: FUNC
312  * @tc.require:
313  */
314 
315 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest014, TestSize.Level1)
316 {
317     GTEST_LOG_(INFO) << "BoomerangManagerTest014 start";
318     sptr<IRemoteBoomerangCallback> decodeCallback { nullptr };
319     Media::InitializationOptions initOptions;
320     initOptions.size = {1080, 1920};
321     initOptions.pixelFormat = Media::PixelFormat::BGRA_8888;
322     initOptions.editable = true;
323     std::shared_ptr<Media::PixelMap> pixelMap = Media::PixelMap::Create(initOptions);
324     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
325     int32_t ret = boomerangManager.BoomerangDecodeImage(pixelMap, decodeCallback);
326     EXPECT_EQ(ret, RET_IPC_ERR);
327     GTEST_LOG_(INFO) << "BoomerangManagerTest014 end";
328 }
329 
330 /**
331  * @tc.name: BoomerangManagerTest015
332  * @tc.desc: BoomerangManagerTest015 for pixelMap is nullptr
333  * @tc.type: FUNC
334  * @tc.require:
335  */
336 
337 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest015, TestSize.Level1)
338 {
339     GTEST_LOG_(INFO) << "BoomerangManagerTest015 start";
340     sptr<IRemoteBoomerangCallback> decodeCallback = new (std::nothrow) BoomerangManagerTestCallback();
341     std::shared_ptr<Media::PixelMap> pixelMap { nullptr };
342     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
343     int32_t ret = boomerangManager.BoomerangDecodeImage(pixelMap, decodeCallback);
344     EXPECT_EQ(ret, RET_IPC_ERR);
345     GTEST_LOG_(INFO) << "BoomerangManagerTest015 end";
346 }
347 
348 /**
349  * @tc.name: BoomerangManagerTest016
350  * @tc.desc: BoomerangManagerTest016 for pixelMap and decodeCallback is nullptr
351  * @tc.type: FUNC
352  * @tc.require:
353  */
354 
355 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest016, TestSize.Level1)
356 {
357     GTEST_LOG_(INFO) << "BoomerangManagerTest016 start";
358     sptr<IRemoteBoomerangCallback> decodeCallback { nullptr };
359     std::shared_ptr<Media::PixelMap> pixelMap { nullptr };
360     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
361     int32_t ret = boomerangManager.BoomerangDecodeImage(pixelMap, decodeCallback);
362     EXPECT_EQ(ret, RET_IPC_ERR);
363     GTEST_LOG_(INFO) << "BoomerangManagerTest016 end";
364 }
365 
366 /**
367  * @tc.name: BoomerangManagerTest017
368  * @tc.desc: BoomerangManagerTest017 for BoomerangDecodeImage
369  * @tc.type: FUNC
370  * @tc.require:
371  */
372 
373 HWTEST_F(BoomerangManagerTest, BoomerangManagerTest017, TestSize.Level1)
374 {
375     GTEST_LOG_(INFO) << "BoomerangManagerTest017 start";
376     sptr<IRemoteBoomerangCallback> decodeCallback = new (std::nothrow) BoomerangManagerTestCallback();
377     Media::InitializationOptions initOptions;
378     initOptions.size = {1080, 1920};
379     initOptions.pixelFormat = Media::PixelFormat::BGRA_8888;
380     initOptions.editable = true;
381     std::shared_ptr<Media::PixelMap> pixelMap = Media::PixelMap::Create(initOptions);
382     BoomerangManager& boomerangManager = BoomerangManager::GetInstance();
383     int32_t ret = boomerangManager.BoomerangDecodeImage(pixelMap, decodeCallback);
384     EXPECT_EQ(ret, RET_OK);
385     GTEST_LOG_(INFO) << "BoomerangManagerTest017 end";
386 }
387 } // namespace DeviceStatus
388 } // namespace Msdp
389 } // namespace OHOS