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