1 /*
2 * Copyright (C) 2022 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 #define private public
16 #define protected public
17 #include "wallpaper_service.h"
18 #undef private
19 #undef protected
20
21 #include <ctime>
22 #include <gtest/gtest.h>
23
24 #include "accesstoken_kit.h"
25 #include "directory_ex.h"
26 #include "file_deal.h"
27 #include "hilog_wrapper.h"
28 #include "image_packer.h"
29 #include "nativetoken_kit.h"
30 #include "pixel_map.h"
31 #include "scene_board_judgement.h"
32 #include "token_setproc.h"
33 #include "wallpaper_common_event_subscriber.h"
34 #include "wallpaper_manager.h"
35 #include "wallpaper_manager_kits.h"
36 #include "wallpaper_service.h"
37
38 namespace OHOS {
39 namespace WallpaperMgrService {
40 constexpr int32_t SYSTYEM = 0;
41 constexpr int32_t LOCKSCREEN = 1;
42 constexpr int32_t INVALID_WALLPAPER_TYPE = 2;
43 constexpr int32_t HUNDRED = 100;
44 constexpr int32_t DEFAULT_WALLPAPER_ID = -1;
45 constexpr int32_t FOO_MAX_LEN = 60000000;
46 constexpr int32_t TEST_USERID = 99;
47 constexpr int32_t INVALID_USERID = -1;
48 uint64_t selfTokenID_ = 0;
49 constexpr const char *URI = "/data/test/theme/wallpaper/wallpaper_test.JPG";
50 constexpr const char *URI_30FPS_3S_MP4 = "/data/test/theme/wallpaper/30fps_3s.mp4";
51 constexpr const char *URI_15FPS_7S_MP4 = "/data/test/theme/wallpaper/15fps_7s.mp4";
52 constexpr const char *URI_30FPS_3S_MOV = "/data/test/theme/wallpaper/30fps_3s.mov";
53 constexpr const char *WALLPAPER_DEFAULT_PATH = "/data/service/el1/public/wallpaper";
54 constexpr const char *SYSTEM_FILE = "/system/wallpaper_system_orig";
55 constexpr const char *LOCKSCREEN_FILE = "/lockscreen/wallpaper_lock_orig";
56
57 std::shared_ptr<WallpaperCommonEventSubscriber> subscriber = nullptr;
58
59 using namespace testing::ext;
60 using namespace testing;
61 using namespace OHOS::Media;
62 using namespace OHOS::HiviewDFX;
63 using namespace OHOS::MiscServices;
64 using namespace OHOS::Security::AccessToken;
65
66 static HapPolicyParams policyParams = { .apl = APL_SYSTEM_CORE,
67 .domain = "test.domain",
68 .permList = { { .permissionName = "ohos.permission.GET_WALLPAPER",
69 .bundleName = "ohos.wallpaper_test.demo",
70 .grantMode = 1,
71 .availableLevel = APL_NORMAL,
72 .label = "label",
73 .labelId = 1,
74 .description = "test",
75 .descriptionId = 1 },
76 { .permissionName = "ohos.permission.SET_WALLPAPER",
77 .bundleName = "ohos.wallpaper_test.demo",
78 .grantMode = 1,
79 .availableLevel = APL_NORMAL,
80 .label = "label",
81 .labelId = 1,
82 .description = "test",
83 .descriptionId = 1 },
84 { .permissionName = "ohos.permission.MANAGE_LOCAL_ACCOUNTS",
85 .bundleName = "ohos.wallpaper_test.demo",
86 .grantMode = 1,
87 .availableLevel = APL_NORMAL,
88 .label = "label",
89 .labelId = 1,
90 .description = "test",
91 .descriptionId = 1 } },
92 .permStateList = { { .permissionName = "ohos.permission.GET_WALLPAPER",
93 .isGeneral = true,
94 .resDeviceID = { "local" },
95 .grantStatus = { PermissionState::PERMISSION_GRANTED },
96 .grantFlags = { 1 } },
97 { .permissionName = "ohos.permission.SET_WALLPAPER",
98 .isGeneral = true,
99 .resDeviceID = { "local" },
100 .grantStatus = { PermissionState::PERMISSION_GRANTED },
101 .grantFlags = { 1 } },
102 { .permissionName = "ohos.permission.MANAGE_LOCAL_ACCOUNTS",
103 .isGeneral = true,
104 .resDeviceID = { "local" },
105 .grantStatus = { PermissionState::PERMISSION_GRANTED },
106 .grantFlags = { 1 } } } };
107
108 HapInfoParams infoParams = { .userID = 1,
109 .bundleName = "wallpaper_service",
110 .instIndex = 0,
111 .appIDDesc = "test",
112 .apiVersion = 9,
113 .isSystemApp = true };
114
GrantNativePermission()115 void GrantNativePermission()
116 {
117 selfTokenID_ = GetSelfTokenID();
118 AccessTokenIDEx tokenIdEx = { 0 };
119 tokenIdEx = AccessTokenKit::AllocHapToken(infoParams, policyParams);
120 int32_t ret = SetSelfTokenID(tokenIdEx.tokenIDEx);
121 if (ret == 0) {
122 HILOG_INFO("SetSelfTokenID success!");
123 } else {
124 HILOG_ERROR("SetSelfTokenID fail!");
125 }
126 }
127
128 class WallpaperTest : public testing::Test {
129 public:
130 static void SetUpTestCase(void);
131 static void TearDownTestCase(void);
132 void SetUp();
133 void TearDown();
134 static void CreateTempImage();
135 static std::shared_ptr<PixelMap> CreateTempPixelMap();
136 static bool SubscribeCommonEvent(shared_ptr<WallpaperService> wallpaperService);
137 static void TriggerEvent(int32_t userId, const std::string &commonEventSupport);
138 static std::string GetUserFilePath(int32_t userId, const char *filePath);
139 };
140 const std::string VALID_SCHEMA_STRICT_DEFINE = "{\"SCHEMA_VERSION\":\"1.0\","
141 "\"SCHEMA_MODE\":\"STRICT\","
142 "\"SCHEMA_SKIPSIZE\":0,"
143 "\"SCHEMA_DEFINE\":{"
144 "\"age\":\"INTEGER, NOT NULL\""
145 "},"
146 "\"SCHEMA_INDEXES\":[\"$.age\"]}";
147
SetUpTestCase(void)148 void WallpaperTest::SetUpTestCase(void)
149 {
150 HILOG_INFO("SetUpTestCase");
151 GrantNativePermission();
152 CreateTempImage();
153 HILOG_INFO("SetUpTestCase end");
154 }
155
TearDownTestCase(void)156 void WallpaperTest::TearDownTestCase(void)
157 {
158 HILOG_INFO("TearDownTestCase");
159 ApiInfo apiInfo{ false, false };
160 WallpaperManagerkits::GetInstance().ResetWallpaper(SYSTYEM, apiInfo);
161 WallpaperManagerkits::GetInstance().ResetWallpaper(LOCKSCREEN, apiInfo);
162 auto ret = SetSelfTokenID(selfTokenID_);
163 HILOG_INFO("SetSelfTokenID ret = %{public}d", ret);
164 }
165
SetUp(void)166 void WallpaperTest::SetUp(void)
167 {
168 }
169
TearDown(void)170 void WallpaperTest::TearDown(void)
171 {
172 }
173
174 class WallpaperEventListenerTestImpl : public WallpaperEventListener {
175 public:
176 std::vector<uint64_t> color_;
177 int wallpaperType_;
178 WallpaperEventListenerTestImpl();
~WallpaperEventListenerTestImpl()179 ~WallpaperEventListenerTestImpl()
180 {
181 }
182
183 WallpaperEventListenerTestImpl(const WallpaperEventListenerTestImpl &) = delete;
184 WallpaperEventListenerTestImpl &operator=(const WallpaperEventListenerTestImpl &) = delete;
185 WallpaperEventListenerTestImpl(WallpaperEventListenerTestImpl &&) = delete;
186 WallpaperEventListenerTestImpl &operator=(WallpaperEventListenerTestImpl &&) = delete;
187
188 // callback function will be called when the db data is changed.
189 void OnColorsChange(const std::vector<uint64_t> &color, int wallpaperType) override;
190 void OnWallpaperChange(WallpaperType wallpaperType, WallpaperResourceType resourceType,
191 const std::string &uri) override;
192 // reset the callCount_ to zero.
193 void ResetToZero();
194
195 unsigned long GetCallCount() const;
196
197 private:
198 unsigned long callCount_;
199 };
200
OnColorsChange(const std::vector<uint64_t> & color,int wallpaperType)201 void WallpaperEventListenerTestImpl::OnColorsChange(const std::vector<uint64_t> &color, int wallpaperType)
202 {
203 callCount_++;
204 for (auto const &each : color) {
205 color_.push_back(each);
206 }
207 wallpaperType_ = wallpaperType;
208 }
209
OnWallpaperChange(WallpaperType wallpaperType,WallpaperResourceType resourceType,const std::string & uri)210 void WallpaperEventListenerTestImpl::OnWallpaperChange(WallpaperType wallpaperType, WallpaperResourceType resourceType,
211 const std::string &uri)
212 {
213 HILOG_INFO("wallpaperType: %{public}d, resourceType: %{public}d, uri: %{public}s",
214 static_cast<int32_t>(wallpaperType), static_cast<int32_t>(resourceType), uri.c_str());
215 }
216
WallpaperEventListenerTestImpl()217 WallpaperEventListenerTestImpl::WallpaperEventListenerTestImpl()
218 {
219 callCount_ = 0;
220 wallpaperType_ = -1;
221 }
222
ResetToZero()223 void WallpaperEventListenerTestImpl::ResetToZero()
224 {
225 callCount_ = 0;
226 }
227
GetCallCount() const228 unsigned long WallpaperEventListenerTestImpl::GetCallCount() const
229 {
230 return callCount_;
231 }
232
CreateTempImage()233 void WallpaperTest::CreateTempImage()
234 {
235 std::shared_ptr<PixelMap> pixelMap = CreateTempPixelMap();
236 ImagePacker imagePacker;
237 PackOption option;
238 option.format = "image/jpeg";
239 option.quality = HUNDRED;
240 option.numberHint = 1;
241 std::set<std::string> formats;
242 imagePacker.GetSupportedFormats(formats);
243 imagePacker.StartPacking(URI, option);
244 HILOG_INFO("AddImage start");
245 imagePacker.AddImage(*pixelMap);
246 int64_t packedSize = 0;
247 HILOG_INFO("FinalizePacking start");
248 imagePacker.FinalizePacking(packedSize);
249 if (packedSize == 0) {
250 HILOG_INFO("FinalizePacking error");
251 }
252 }
253
CreateTempPixelMap()254 std::shared_ptr<PixelMap> WallpaperTest::CreateTempPixelMap()
255 {
256 uint32_t color[100] = { 3, 7, 9, 9, 7, 6 };
257 InitializationOptions opts = { { 5, 7 }, OHOS::Media::PixelFormat::ARGB_8888 };
258 std::unique_ptr<PixelMap> uniquePixelMap = PixelMap::Create(color, sizeof(color) / sizeof(color[0]), opts);
259 std::shared_ptr<PixelMap> pixelMap = std::move(uniquePixelMap);
260 return pixelMap;
261 }
262
SubscribeCommonEvent(shared_ptr<WallpaperService> wallpaperService)263 bool WallpaperTest::SubscribeCommonEvent(shared_ptr<WallpaperService> wallpaperService)
264 {
265 subscriber = std::make_shared<WallpaperCommonEventSubscriber>(*wallpaperService);
266 if (subscriber == nullptr) {
267 HILOG_INFO("wallpaperCommonEvent is nullptr");
268 return false;
269 }
270 if (!EventFwk::CommonEventManager::SubscribeCommonEvent(subscriber)) {
271 HILOG_INFO("SubscribeCommonEvent failed");
272 return false;
273 }
274 return true;
275 }
276
TriggerEvent(int32_t userId,const std::string & commonEventSupport)277 void WallpaperTest::TriggerEvent(int32_t userId, const std::string &commonEventSupport)
278 {
279 EventFwk::Want want;
280 want.SetAction(commonEventSupport);
281 int32_t code = userId;
282 std::string data(commonEventSupport);
283 EventFwk::CommonEventData eventData(want, code, data);
284 subscriber->OnReceiveEvent(eventData);
285 }
286
GetUserFilePath(int32_t userId,const char * filePath)287 std::string WallpaperTest::GetUserFilePath(int32_t userId, const char *filePath)
288 {
289 return WALLPAPER_DEFAULT_PATH + std::string("/") + std::to_string(userId) + filePath;
290 }
291
292 /********************* ResetWallpaper *********************/
293 /**
294 * @tc.name: Reset001
295 * @tc.desc: Reset wallpaper with wallpaperType[0].
296 * @tc.type: FUNC
297 * @tc.require: issueI5UHRG
298 */
299 HWTEST_F(WallpaperTest, Reset001, TestSize.Level1)
300 {
301 HILOG_INFO("Reset001 begin.");
302 ApiInfo apiInfo{ false, false };
303 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(SYSTYEM, apiInfo);
304 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to reset.";
305 }
306
307 /**
308 * @tc.name: Reset002
309 * @tc.desc: Reset wallpaper with wallpaperType[1].
310 * @tc.type: FUNC
311 * @tc.require: issueI5UHRG
312 */
313 HWTEST_F(WallpaperTest, Reset002, TestSize.Level1)
314 {
315 HILOG_INFO("Reset002 begin.");
316 ApiInfo apiInfo{ false, false };
317 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(LOCKSCREEN, apiInfo);
318 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to reset.";
319 }
320
321 /**
322 * @tc.name: Reset003
323 * @tc.desc: Reset wallpaper with wallpaperType[2] throw parameters error.
324 * @tc.type: FUNC
325 * @tc.require: issueI5UHRG
326 */
327 HWTEST_F(WallpaperTest, Reset003, TestSize.Level1)
328 {
329 HILOG_INFO("Reset003 begin.");
330 ApiInfo apiInfo{ false, false };
331 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(INVALID_WALLPAPER_TYPE, apiInfo);
332 EXPECT_EQ(wallpaperErrorCode, E_PARAMETERS_INVALID) << "Failed to throw error.";
333 }
334
335 /**
336 * @tc.name: Reset004
337 * @tc.desc: Reset wallpaper with wallpaperType[0] after resetting wallpaper[0].
338 * @tc.type: FUNC
339 * @tc.require: issueI5UHRG
340 */
341 HWTEST_F(WallpaperTest, Reset004, TestSize.Level1)
342 {
343 HILOG_INFO("Reset004 begin.");
344 ApiInfo apiInfo{ false, false };
345 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(SYSTYEM, apiInfo);
346 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to reset.";
347
348 /* duplicate reset */
349 wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(SYSTYEM, apiInfo);
350 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to reset.";
351 }
352
353 /**
354 * @tc.name: Reset005
355 * @tc.desc: Reset wallpaper with wallpaperType[1] after resetting wallpaper[1] and check whether Id is same one.
356 * @tc.type: FUNC
357 * @tc.require: issueI5UHRG
358 */
359 HWTEST_F(WallpaperTest, Reset005, TestSize.Level1)
360 {
361 HILOG_INFO("Reset005 begin.");
362 ApiInfo apiInfo{ false, false };
363 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(LOCKSCREEN, apiInfo);
364 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to reset.";
365 int firstId = WallpaperManagerkits::GetInstance().GetWallpaperId(LOCKSCREEN);
366
367 /* duplicate reset */
368 wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(LOCKSCREEN, apiInfo);
369 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to reset.";
370 int secondId = WallpaperManagerkits::GetInstance().GetWallpaperId(LOCKSCREEN);
371 EXPECT_EQ(firstId, secondId) << "Id should be same one.";
372 }
373
374 /**
375 * @tc.name: Reset006
376 * @tc.desc: Reset wallpaper throw permission error
377 * @tc.type: FUNC
378 * @tc.require: issueI5UHRG
379 */
380 HWTEST_F(WallpaperTest, Reset006, TestSize.Level1)
381 {
382 HILOG_INFO("Reset006 begin.");
383 ApiInfo apiInfo{ true, true };
384 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(LOCKSCREEN, apiInfo);
385 EXPECT_EQ(wallpaperErrorCode, E_OK);
386 wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(SYSTYEM, apiInfo);
387 EXPECT_EQ(wallpaperErrorCode, E_OK);
388 }
389 /********************* ResetWallpaper *********************/
390
391 /********************* IsChangePermitted *********************/
392
393 /**
394 * @tc.name: IsChangePermitted001
395 * @tc.desc: check permission.
396 * @tc.type: FUNC
397 * @tc.require:
398 * @tc.author:
399 */
400 HWTEST_F(WallpaperTest, IsChangePermitted001, TestSize.Level1)
401 {
402 EXPECT_EQ(WallpaperManagerkits::GetInstance().IsChangePermitted(), true);
403 }
404
405 /********************* IsChangePermitted *********************/
406
407 /********************* IsOperationAllowed *********************/
408
409 /**
410 * @tc.name: IsOperationAllowed001
411 * @tc.desc: check permission.
412 * @tc.type: FUNC
413 * @tc.require:
414 * @tc.author:
415 */
416 HWTEST_F(WallpaperTest, IsOperationAllowed001, TestSize.Level1)
417 {
418 EXPECT_EQ(WallpaperManagerkits::GetInstance().IsOperationAllowed(), true);
419 }
420
421 /********************* IsOperationAllowed *********************/
422
423 /********************* On & Off *********************/
424
425 /**
426 * @tc.name: On001
427 * @tc.desc: set wallpaper and get callback.
428 * @tc.type: FUNC
429 * @tc.require:
430 * @tc.author:
431 */
432 HWTEST_F(WallpaperTest, On001, TestSize.Level1)
433 {
434 HILOG_INFO("On001 begin");
435 auto listener = std::make_shared<WallpaperEventListenerTestImpl>();
436 auto status = WallpaperManagerkits::GetInstance().On("colorChange", listener);
437 EXPECT_EQ(status, E_OK) << "subscribe wallpaper color change failed.";
438 auto offSubStatus = WallpaperManagerkits::GetInstance().Off("colorChange", listener);
439 EXPECT_EQ(offSubStatus, E_OK) << "unsubscribe wallpaper color change failed.";
440 }
441
442 /**
443 * @tc.name: On002
444 * @tc.desc: set wallpaper and get callback.
445 * @tc.type: FUNC
446 * @tc.require:
447 * @tc.author:
448 */
449 HWTEST_F(WallpaperTest, On002, TestSize.Level1)
450 {
451 HILOG_INFO("On002 begin");
452 auto listener = std::make_shared<WallpaperEventListenerTestImpl>();
453 auto status = WallpaperManagerkits::GetInstance().On("wallpaperChange", listener);
454 EXPECT_EQ(status, E_OK);
455 auto offSubStatus = WallpaperManagerkits::GetInstance().Off("wallpaperChange", listener);
456 EXPECT_EQ(offSubStatus, E_OK);
457 }
458
459 /********************* On & Off *********************/
460
461 /********************* GetColors *********************/
462 /**
463 * @tc.name: GetColors001
464 * @tc.desc: GetColors with wallpaperType[0].
465 * @tc.type: FUNC
466 * @tc.require:
467 * @tc.author:
468 */
469 HWTEST_F(WallpaperTest, GetColors001, TestSize.Level0)
470 {
471 HILOG_INFO("GetColors001 begin");
472 std::vector<uint64_t> colors;
473 ApiInfo apiInfo{ false, false };
474 ErrorCode errorCode = WallpaperManagerkits::GetInstance().GetColors(SYSTYEM, apiInfo, colors);
475 EXPECT_EQ(errorCode, E_OK) << "Failed to GetColors.";
476 EXPECT_FALSE(colors.empty());
477 }
478
479 /**
480 * @tc.name: GetColors002
481 * @tc.desc: GetColors with wallpaperType[1].
482 * @tc.type: FUNC
483 * @tc.require:
484 * @tc.author:
485 */
486 HWTEST_F(WallpaperTest, GetColors002, TestSize.Level0)
487 {
488 HILOG_INFO("GetColors002 begin");
489 std::vector<uint64_t> colors;
490 ApiInfo apiInfo{ false, false };
491 ErrorCode errorCode = WallpaperManagerkits::GetInstance().GetColors(LOCKSCREEN, apiInfo, colors);
492 EXPECT_EQ(errorCode, E_OK) << "Failed to GetColors.";
493 EXPECT_FALSE(colors.empty());
494 }
495
496 /**
497 * @tc.name: GetColors003
498 * @tc.desc: GetColors throw permission error.
499 * @tc.type: FUNC
500 * @tc.require:
501 * @tc.author:
502 */
503 HWTEST_F(WallpaperTest, GetColors003, TestSize.Level0)
504 {
505 HILOG_INFO("GetColors003 begin");
506 std::vector<uint64_t> colors;
507 ApiInfo apiInfo{ true, true };
508 ErrorCode errorCode = WallpaperManagerkits::GetInstance().GetColors(LOCKSCREEN, apiInfo, colors);
509 EXPECT_EQ(errorCode, E_OK);
510 errorCode = WallpaperManagerkits::GetInstance().GetColors(SYSTYEM, apiInfo, colors);
511 EXPECT_EQ(errorCode, E_OK);
512 }
513 /********************* GetColors *********************/
514
515 /********************* GetId *********************/
516 /**
517 * @tc.name: GetId001
518 * @tc.desc: GetId with wallpaperType[0].
519 * @tc.type: FUNC
520 * @tc.require: issueI65VF1
521 * @tc.author: lvbai
522 */
523 HWTEST_F(WallpaperTest, GetId001, TestSize.Level0)
524 {
525 HILOG_INFO("GetId001 begin");
526 ApiInfo apiInfo{ false, false };
527 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(SYSTYEM, apiInfo);
528 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to ResetWallpaper";
529 int32_t id = WallpaperManagerkits::GetInstance().GetWallpaperId(SYSTYEM);
530 EXPECT_EQ(id, DEFAULT_WALLPAPER_ID) << "Failed to GetId";
531 }
532
533 /**
534 * @tc.name: GetId002
535 * @tc.desc: GetId with wallpaperType[1].
536 * @tc.type: FUNC
537 * @tc.require: issueI65VF1
538 * @tc.author: lvbai
539 */
540 HWTEST_F(WallpaperTest, GetId002, TestSize.Level0)
541 {
542 HILOG_INFO("GetId002 begin");
543 ApiInfo apiInfo{ false, false };
544 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(LOCKSCREEN, apiInfo);
545 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to ResetWallpaper";
546 int32_t id = WallpaperManagerkits::GetInstance().GetWallpaperId(LOCKSCREEN);
547 EXPECT_EQ(id, DEFAULT_WALLPAPER_ID) << "Failed to GetId";
548 }
549
550 /**
551 * @tc.name: GetId003
552 * @tc.desc: GetId with wallpaperType[0] after setWallpaper.
553 * @tc.type: FUNC
554 * @tc.require: issueI65VF1
555 * @tc.author: lvbai
556 */
557 HWTEST_F(WallpaperTest, GetId003, TestSize.Level0)
558 {
559 HILOG_INFO("GetId003 begin");
560 ApiInfo apiInfo{ false, false };
561 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(URI, SYSTYEM, apiInfo);
562 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to SetWallpaper";
563 int32_t id = WallpaperManagerkits::GetInstance().GetWallpaperId(SYSTYEM);
564 EXPECT_GT(id, DEFAULT_WALLPAPER_ID) << "Failed to GetId";
565 }
566
567 /**
568 * @tc.name: GetId004
569 * @tc.desc: GetId with wallpaperType[1] after setWallpaper.
570 * @tc.type: FUNC
571 * @tc.require: issueI65VF1
572 * @tc.author: lvbai
573 */
574 HWTEST_F(WallpaperTest, GetId004, TestSize.Level0)
575 {
576 HILOG_INFO("GetId004 begin");
577 ApiInfo apiInfo{ false, false };
578 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(URI, LOCKSCREEN, apiInfo);
579 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to SetWallpaper";
580 int32_t id = WallpaperManagerkits::GetInstance().GetWallpaperId(LOCKSCREEN);
581 EXPECT_GT(id, DEFAULT_WALLPAPER_ID) << "Failed to GetId";
582 }
583 /********************* GetId *********************/
584
585 /********************* GetFile *********************/
586 /**
587 * @tc.name: GetFile001
588 * @tc.desc: GetFile with wallpaperType[0].
589 * @tc.type: FUNC
590 * @tc.require: issueI5UHRG
591 */
592 HWTEST_F(WallpaperTest, GetFile001, TestSize.Level0)
593 {
594 HILOG_INFO("GetFile001 begin");
595 int32_t wallpaperFd = 0;
596 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetFile(SYSTYEM, wallpaperFd);
597 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to get File.";
598 }
599
600 /**
601 * @tc.name: GetFile002
602 * @tc.desc: GetFile with wallpaperType[1].
603 * @tc.type: FUNC
604 * @tc.require: issueI5UHRG
605 */
606 HWTEST_F(WallpaperTest, GetFile002, TestSize.Level0)
607 {
608 HILOG_INFO("GetFile002 begin");
609 int32_t wallpaperFd = 0;
610 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetFile(LOCKSCREEN, wallpaperFd);
611 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to get File.";
612 }
613
614 /**
615 * @tc.name: GetFile003
616 * @tc.desc: GetFile with wallpaperType[2] throw parameters error.
617 * @tc.type: FUNC
618 * @tc.require: issueI5UHRG
619 */
620 HWTEST_F(WallpaperTest, GetFile003, TestSize.Level0)
621 {
622 HILOG_INFO("GetFile003 begin");
623 int32_t wallpaperFd = 0;
624 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetFile(INVALID_WALLPAPER_TYPE, wallpaperFd);
625 EXPECT_EQ(wallpaperErrorCode, E_PARAMETERS_INVALID) << "Failed to throw parameters error";
626 }
627
628 /**
629 * @tc.name: GetFile004
630 * @tc.desc: GetFile with wallpaperType[0].
631 * @tc.type: FUNC
632 * @tc.require:
633 * @tc.author:
634 */
635 HWTEST_F(WallpaperTest, GetFile004, TestSize.Level0)
636 {
637 HILOG_INFO("GetFile001 begin");
638 int32_t wallpaperFd = 0;
639 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetFile(SYSTYEM, wallpaperFd);
640 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to get File.";
641 }
642 /********************* GetFile *********************/
643
644 /********************* GetWallpaperMinHeight *********************/
645 /**
646 * @tc.name: getMinHeight001
647 * @tc.desc: GetWallpaperMinHeight .
648 * @tc.type: FUNC
649 * @tc.require:
650 */
651 HWTEST_F(WallpaperTest, getMinHeight001, TestSize.Level0)
652 {
653 HILOG_INFO("getMinHeight001 begin");
654 int height = 0;
655 ApiInfo apiInfo{ false, false };
656 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetWallpaperMinHeight(apiInfo, height);
657 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to get WallpaperMinHeight.";
658 EXPECT_GT(height, 0);
659 }
660
661 /**
662 * @tc.name: getMinHeight002
663 * @tc.desc: GetWallpaperMinHeight throw permission error.
664 * @tc.type: FUNC
665 * @tc.require:
666 */
667 HWTEST_F(WallpaperTest, getMinHeight002, TestSize.Level0)
668 {
669 HILOG_INFO("getMinHeight002 begin");
670 int height = 0;
671 ApiInfo apiInfo{ true, true };
672 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetWallpaperMinHeight(apiInfo, height);
673 EXPECT_EQ(wallpaperErrorCode, E_OK);
674 }
675 /********************* GetWallpaperMinHeight *********************/
676
677 /********************* GetWallpaperMinWidth *********************/
678 /**
679 * @tc.name: getMinWidth001
680 * @tc.desc: GetWallpaperMinWidth .
681 * @tc.type: FUNC
682 * @tc.require:
683 */
684 HWTEST_F(WallpaperTest, getMinWidth001, TestSize.Level0)
685 {
686 HILOG_INFO("getMinWidth001 begin");
687 int width = 0;
688 ApiInfo apiInfo{ false, false };
689 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetWallpaperMinWidth(apiInfo, width);
690 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to get WallpaperMinWidth.";
691 EXPECT_GT(width, 0);
692 }
693
694 /**
695 * @tc.name: getMinWidth002
696 * @tc.desc: GetWallpaperMinWidth throw permission error.
697 * @tc.type: FUNC
698 * @tc.require:
699 */
700 HWTEST_F(WallpaperTest, getMinWidth002, TestSize.Level0)
701 {
702 HILOG_INFO("getMinWidth002 begin");
703 int width = 0;
704 ApiInfo apiInfo{ true, true };
705 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetWallpaperMinWidth(apiInfo, width);
706 EXPECT_EQ(wallpaperErrorCode, E_OK);
707 }
708 /********************* GetWallpaperMinWidth *********************/
709
710 /********************* GetPixelMap *********************/
711 /**
712 * @tc.name: GetPixelMap001
713 * @tc.desc: GetPixelMap with wallpaperType[0].
714 * @tc.type: FUNC
715 * @tc.require: issueI5UHRG
716 */
717 HWTEST_F(WallpaperTest, GetPixelMap001, TestSize.Level0)
718 {
719 HILOG_INFO("GetPixelMap001 begin");
720 std::shared_ptr<OHOS::Media::PixelMap> pixelMap;
721 ApiInfo apiInfo{ false, false };
722 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetPixelMap(SYSTYEM, apiInfo, pixelMap);
723 EXPECT_EQ(wallpaperErrorCode, E_OK);
724 }
725
726 /**
727 * @tc.name: GetPixelMap002
728 * @tc.desc: GetPixelMap with wallpaperType[1].
729 * @tc.type: FUNC
730 * @tc.require: issueI5UHRG
731 */
732 HWTEST_F(WallpaperTest, GetPixelMap002, TestSize.Level0)
733 {
734 HILOG_INFO("GetPixelMap002 begin");
735 std::shared_ptr<OHOS::Media::PixelMap> pixelMap;
736 ApiInfo apiInfo{ false, false };
737 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetPixelMap(LOCKSCREEN, apiInfo, pixelMap);
738 EXPECT_EQ(wallpaperErrorCode, E_OK);
739 }
740
741 /**
742 * @tc.name: GetPixelMap003
743 * @tc.desc: GetPixelMap throw permission error.
744 * @tc.type: FUNC
745 * @tc.require:
746 */
747 HWTEST_F(WallpaperTest, GetPixelMap003, TestSize.Level0)
748 {
749 HILOG_INFO("GetPixelMap003 begin");
750 std::shared_ptr<OHOS::Media::PixelMap> pixelMap;
751 ApiInfo apiInfo{ true, true };
752 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetPixelMap(LOCKSCREEN, apiInfo, pixelMap);
753 EXPECT_EQ(wallpaperErrorCode, E_OK);
754 wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetPixelMap(SYSTYEM, apiInfo, pixelMap);
755 EXPECT_EQ(wallpaperErrorCode, E_OK);
756 }
757 /********************* GetPixelMap *********************/
758
759 /********************* SetWallpaperByMap *********************/
760 /**
761 * @tc.name: SetWallpaperByMap001
762 * @tc.desc: SetWallpaperByMap with wallpaperType[0].
763 * @tc.type: FUNC
764 * @tc.require: issueI5UHRG
765 */
766 HWTEST_F(WallpaperTest, SetWallpaperByMap001, TestSize.Level0)
767 {
768 HILOG_INFO("SetWallpaperByMap001 begin");
769 std::shared_ptr<PixelMap> pixelMap = WallpaperTest::CreateTempPixelMap();
770 ApiInfo apiInfo{ false, false };
771 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(pixelMap, SYSTYEM, apiInfo);
772 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to set SYSTYEM PixelMap.";
773 }
774
775 /**
776 * @tc.name: SetWallpaperByMap002
777 * @tc.desc: SetWallpaperByMap with wallpaperType[1].
778 * @tc.type: FUNC
779 * @tc.require: issueI5UHRG
780 */
781 HWTEST_F(WallpaperTest, SetWallpaperByMap002, TestSize.Level0)
782 {
783 HILOG_INFO("SetWallpaperByMap002 begin");
784 std::shared_ptr<PixelMap> pixelMap = WallpaperTest::CreateTempPixelMap();
785 ApiInfo apiInfo{ false, false };
786 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(pixelMap, LOCKSCREEN, apiInfo);
787 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to set LOCKSCREEN PixelMap.";
788 }
789
790 /**
791 * @tc.name: SetWallpaperByMap003
792 * @tc.desc: SetWallpaperByMap with wallpaperType[2] throw parameters error.
793 * @tc.type: FUNC
794 * @tc.require: issueI5UHRG
795 */
796 HWTEST_F(WallpaperTest, SetWallpaperByMap003, TestSize.Level0)
797 {
798 HILOG_INFO("SetWallpaperByMap003 begin");
799 std::shared_ptr<PixelMap> pixelMap = WallpaperTest::CreateTempPixelMap();
800 ApiInfo apiInfo{ false, false };
801 ErrorCode wallpaperErrorCode =
802 WallpaperManagerkits::GetInstance().SetWallpaper(pixelMap, INVALID_WALLPAPER_TYPE, apiInfo);
803 EXPECT_EQ(wallpaperErrorCode, E_PARAMETERS_INVALID) << "Failed to throw parameters error";
804 }
805 /********************* SetWallpaperByMap *********************/
806
807 /********************* SetWallpaperByUri *********************/
808 /**
809 * @tc.name: SetWallpaperByUri001
810 * @tc.desc: SetWallpaperByUri with wallpaperType[0] .
811 * @tc.type: FUNC
812 * @tc.require: issueI5UHRG
813 */
814 HWTEST_F(WallpaperTest, SetWallpaperByUri001, TestSize.Level0)
815 {
816 HILOG_INFO("SetWallpaperByUri001 begin");
817 ApiInfo apiInfo{ false, false };
818 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(URI, SYSTYEM, apiInfo);
819 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to set SYSTYEM.";
820 }
821
822 /**
823 * @tc.name: SetWallpaperByUri002
824 * @tc.desc: SetWallpaperByUri with wallpaperType[1].
825 * @tc.type: FUNC
826 * @tc.require: issueI5UHRG
827 */
828 HWTEST_F(WallpaperTest, SetWallpaperByUri002, TestSize.Level0)
829 {
830 HILOG_INFO("SetWallpaperByUri002 begin");
831 ApiInfo apiInfo{ false, false };
832 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(URI, LOCKSCREEN, apiInfo);
833 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to set LOCKSCREEN.";
834 }
835
836 /**
837 * @tc.name: SetWallpaperByUri003
838 * @tc.desc: SetWallpaperByUri with wallpaperType[2] throw parameters error.
839 * @tc.type: FUNC
840 * @tc.require: issueI5UHRG
841 */
842 HWTEST_F(WallpaperTest, SetWallpaperByUri003, TestSize.Level0)
843 {
844 HILOG_INFO("SetWallpaperByUri003 begin");
845 ApiInfo apiInfo{ false, false };
846 ErrorCode wallpaperErrorCode =
847 WallpaperManagerkits::GetInstance().SetWallpaper(URI, INVALID_WALLPAPER_TYPE, apiInfo);
848 EXPECT_EQ(wallpaperErrorCode, E_PARAMETERS_INVALID) << "Failed to throw error";
849 }
850
851 /**
852 * @tc.name: SetWallpaperByUri004
853 * @tc.desc: SetWallpaperByUri with error uri.
854 * @tc.type: FUNC
855 * @tc.require: issueI5UHRG
856 */
857 HWTEST_F(WallpaperTest, SetWallpaperByUri004, TestSize.Level0)
858 {
859 HILOG_INFO("SetWallpaperByUri004 begin");
860 ApiInfo apiInfo{ false, false };
861 ErrorCode wallpaperErrorCode =
862 WallpaperManagerkits::GetInstance().SetWallpaper("/data/test/theme/wallpaper/errorURI", LOCKSCREEN, apiInfo);
863 EXPECT_NE(wallpaperErrorCode, E_OK) << "Failed to throw error";
864 }
865
866 /**
867 * @tc.name: SetWallpaperByUri005
868 * @tc.desc: SetWallpaperByUri with unsafe uri.
869 * @tc.type: FUNC
870 * @tc.require: issueI647HI
871 */
872 HWTEST_F(WallpaperTest, SetWallpaperByUri005, TestSize.Level0)
873 {
874 HILOG_INFO("SetWallpaperByUri005 begin");
875 ApiInfo apiInfo{ false, false };
876 ErrorCode wallpaperErrorCode =
877 WallpaperManagerkits::GetInstance().SetWallpaper("../data/test/theme/wallpaper/errorURI", LOCKSCREEN, apiInfo);
878 EXPECT_EQ(wallpaperErrorCode, E_FILE_ERROR) << "Failed to return error";
879 }
880
881 /**
882 * @tc.name: SetWallpaperByUri006
883 * @tc.desc: SetWallpaperByUri throw permission error.
884 * @tc.type: FUNC
885 * @tc.require:
886 */
887 HWTEST_F(WallpaperTest, SetWallpaperByUri006, TestSize.Level0)
888 {
889 HILOG_INFO("SetWallpaperByUri006 begin");
890 ApiInfo apiInfo{ true, true };
891 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(URI, LOCKSCREEN, apiInfo);
892 EXPECT_EQ(wallpaperErrorCode, E_OK);
893 wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(URI, SYSTYEM, apiInfo);
894 EXPECT_EQ(wallpaperErrorCode, E_OK);
895 }
896 /********************* SetWallpaperByUri *********************/
897
898 /********************* FILE_DEAL *********************/
899 /**
900 * @tc.name: FILE_DEAL001
901 * @tc.desc: File operation-related interfaces
902 * @tc.type: FUNC
903 * @tc.require:
904 * @tc.author:
905 */
906 HWTEST_F(WallpaperTest, FILE_DEAL001, TestSize.Level0)
907 {
908 HILOG_INFO("FILE_DEAL001 begin");
909 FileDeal fileOperation;
910 bool isExist = fileOperation.Mkdir("/data/test/theme/wallpaper/");
911 EXPECT_EQ(isExist, true);
912 isExist = fileOperation.Mkdir("/data/test/theme/errorURI/");
913 EXPECT_EQ(isExist, true);
914 isExist = fileOperation.IsFileExist(URI);
915 EXPECT_EQ(isExist, true);
916 isExist = fileOperation.IsFileExist("/data/test/theme/wallpaper/errorURI");
917 EXPECT_EQ(isExist, false);
918 }
919 /********************* FILE_DEAL *********************/
920
921 /**
922 * @tc.name: SetWallpaper001
923 * @tc.desc: SetWallpaper with error length
924 * @tc.type: FUNC
925 * @tc.require: issueI6AW6M
926 * @tc.author: weishaoxiong
927 */
928 HWTEST_F(WallpaperTest, SetWallpaper001, TestSize.Level0)
929 {
930 HILOG_INFO("SetWallpaper001 begin");
931 std::shared_ptr<WallpaperService> wallpaperService = std::make_shared<WallpaperService>();
932 ErrorCode wallpaperErrorCode = wallpaperService->SetWallpaper(0, 0, -1);
933 EXPECT_EQ(wallpaperErrorCode, E_PARAMETERS_INVALID) << "Failed to throw error";
934 wallpaperErrorCode = wallpaperService->SetWallpaper(0, 0, FOO_MAX_LEN);
935
936 EXPECT_EQ(wallpaperErrorCode, E_PARAMETERS_INVALID) << "Failed to throw error";
937 }
938
939 /********************* USER_DEAL *********************/
940 /**
941 * @tc.name: AddUsersDeal001
942 * @tc.desc: Create a user directory after the user is added
943 * @tc.type: FUNC
944 * @tc.require: issueI6DWHR
945 */
946 HWTEST_F(WallpaperTest, AddUsersDeal001, TestSize.Level0)
947 {
948 std::shared_ptr<WallpaperService> wallpaperService = std::make_shared<WallpaperService>();
949 bool ret = WallpaperTest::SubscribeCommonEvent(wallpaperService);
950 ASSERT_EQ(ret, true);
951 std::string commonEvent = EventFwk::CommonEventSupport::COMMON_EVENT_USER_ADDED;
952 WallpaperTest::TriggerEvent(TEST_USERID, commonEvent);
953 ret = FileDeal::IsFileExist(WallpaperTest::GetUserFilePath(TEST_USERID, SYSTEM_FILE));
954 EXPECT_EQ(ret, true);
955 ret = FileDeal::IsFileExist(WallpaperTest::GetUserFilePath(TEST_USERID, LOCKSCREEN_FILE));
956 EXPECT_EQ(ret, true);
957 std::string userDir = WALLPAPER_DEFAULT_PATH + std::string("/") + std::to_string(TEST_USERID);
958 if (!OHOS::ForceRemoveDirectory(userDir)) {
959 HILOG_ERROR("Force remove user directory path failed, errno %{public}d.", errno);
960 }
961 }
962
963 /**
964 * @tc.name: RemovedUserDeal001
965 * @tc.desc: delete a user directory after the user is removed
966 * @tc.type: FUNC
967 * @tc.require: issueI6DWHR
968 */
969 HWTEST_F(WallpaperTest, RemovedUserDeal001, TestSize.Level0)
970 {
971 std::shared_ptr<WallpaperService> wallpaperService = std::make_shared<WallpaperService>();
972 ASSERT_EQ(WallpaperTest::SubscribeCommonEvent(wallpaperService), true);
973 std::string commonEvent = EventFwk::CommonEventSupport::COMMON_EVENT_USER_ADDED;
974 WallpaperTest::TriggerEvent(TEST_USERID, commonEvent);
975 std::string userDir = WALLPAPER_DEFAULT_PATH + std::string("/") + std::to_string(TEST_USERID);
976 ASSERT_EQ(FileDeal::IsDirExist(userDir), true);
977
978 commonEvent = EventFwk::CommonEventSupport::COMMON_EVENT_USER_REMOVED;
979 WallpaperTest::TriggerEvent(TEST_USERID, commonEvent);
980 EXPECT_EQ(FileDeal::IsDirExist(userDir), false);
981 if (!OHOS::ForceRemoveDirectory(userDir)) {
982 HILOG_ERROR("Force remove user directory path failed, errno %{public}d.", errno);
983 }
984 }
985
986 /**
987 * @tc.name: SwitchedUserIdDeal001
988 * @tc.desc: The wallpaper has changed after switched user
989 * @tc.type: FUNC
990 * @tc.require: issueI6DWHR
991 */
992 HWTEST_F(WallpaperTest, SwitchedUserIdDeal001, TestSize.Level0)
993 {
994 std::shared_ptr<WallpaperService> wallpaperService = std::make_shared<WallpaperService>();
995 wallpaperService->InitServiceHandler();
996 ASSERT_EQ(WallpaperTest::SubscribeCommonEvent(wallpaperService), true);
997 ApiInfo apiInfo{ false, false };
998 std::vector<int32_t> ids;
999 AccountSA::OsAccountManager::QueryActiveOsAccountIds(ids);
1000 int32_t beforeUserId = ids[0];
1001 std::string addCommonEvent = EventFwk::CommonEventSupport::COMMON_EVENT_USER_ADDED;
1002 WallpaperTest::TriggerEvent(TEST_USERID, addCommonEvent);
1003 std::string userDir = WALLPAPER_DEFAULT_PATH + std::string("/") + std::to_string(TEST_USERID);
1004 ASSERT_EQ(FileDeal::IsDirExist(userDir), true);
1005 ErrorCode wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(LOCKSCREEN, apiInfo);
1006 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to reset lockscreen wallpaper";
1007
1008 std::vector<uint64_t> oldLockscreenColor;
1009 wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetColors(LOCKSCREEN, apiInfo, oldLockscreenColor);
1010 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to GetColors";
1011 wallpaperErrorCode = WallpaperManagerkits::GetInstance().ResetWallpaper(SYSTYEM, apiInfo);
1012 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to reset system wallpaper";
1013 std::vector<uint64_t> oldSystemColor;
1014 wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetColors(SYSTYEM, apiInfo, oldSystemColor);
1015 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to GetColors";
1016
1017 std::string switchCommonEvent = EventFwk::CommonEventSupport::COMMON_EVENT_USER_SWITCHED;
1018 WallpaperTest::TriggerEvent(TEST_USERID, switchCommonEvent);
1019 wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(URI, LOCKSCREEN, apiInfo);
1020 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to set lockscreen wallpaper";
1021 std::vector<uint64_t> newLockscreenColor;
1022 wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetColors(LOCKSCREEN, apiInfo, newLockscreenColor);
1023 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to GetColors";
1024 wallpaperErrorCode = WallpaperManagerkits::GetInstance().SetWallpaper(URI, SYSTYEM, apiInfo);
1025 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to set system wallpaper";
1026 std::vector<uint64_t> newSystemColor;
1027 wallpaperErrorCode = WallpaperManagerkits::GetInstance().GetColors(SYSTYEM, apiInfo, newSystemColor);
1028 EXPECT_EQ(wallpaperErrorCode, E_OK) << "Failed to GetColors";
1029 EXPECT_NE(oldLockscreenColor, newLockscreenColor);
1030 EXPECT_NE(oldSystemColor, newSystemColor);
1031
1032 WallpaperTest::TriggerEvent(beforeUserId, switchCommonEvent);
1033 std::string removeCommonEvent = EventFwk::CommonEventSupport::COMMON_EVENT_USER_REMOVED;
1034 WallpaperTest::TriggerEvent(TEST_USERID, removeCommonEvent);
1035 EXPECT_EQ(FileDeal::IsDirExist(userDir), false);
1036 if (!OHOS::ForceRemoveDirectory(userDir)) {
1037 HILOG_ERROR("Force remove user directory path failed, errno %{public}d.", errno);
1038 }
1039 }
1040
1041 /**
1042 * @tc.name: InvalidUserIdDeal001
1043 * @tc.desc: Invalid user id deal
1044 * @tc.type: FUNC
1045 * @tc.require: issueI6DWHR
1046 */
1047 HWTEST_F(WallpaperTest, InvalidUserIdDeal001, TestSize.Level0)
1048 {
1049 std::shared_ptr<WallpaperService> wallpaperService = std::make_shared<WallpaperService>();
1050 wallpaperService->InitServiceHandler();
1051 ASSERT_EQ(WallpaperTest::SubscribeCommonEvent(wallpaperService), true);
1052 std::string commonEvent = EventFwk::CommonEventSupport::COMMON_EVENT_USER_ADDED;
1053 WallpaperTest::TriggerEvent(INVALID_USERID, commonEvent);
1054 std::string userDir = WALLPAPER_DEFAULT_PATH + std::string("/") + std::to_string(INVALID_USERID);
1055 EXPECT_EQ(FileDeal::IsDirExist(userDir), false);
1056 FileDeal::Mkdir(userDir);
1057 commonEvent = EventFwk::CommonEventSupport::COMMON_EVENT_USER_REMOVED;
1058 WallpaperTest::TriggerEvent(INVALID_USERID, commonEvent);
1059 EXPECT_EQ(FileDeal::IsDirExist(userDir), true);
1060 if (!OHOS::ForceRemoveDirectory(userDir)) {
1061 HILOG_ERROR("Force remove user directory path failed, errno %{public}d.", errno);
1062 }
1063 }
1064 /********************* USER_DEAL *********************/
1065
1066 /********************* SetVideo *********************/
1067 /**
1068 * @tc.name: SetVideo001
1069 * @tc.desc: SetVideo input error fileType
1070 * @tc.type: FUNC
1071 * @tc.require: issueI6R07J
1072 */
1073 HWTEST_F(WallpaperTest, SetVideo001, TestSize.Level0)
1074 {
1075 HILOG_INFO("SetVideo001 begin");
1076 ErrorCode ret = WallpaperManagerkits::GetInstance().SetVideo(URI_30FPS_3S_MOV, SYSTYEM);
1077 EXPECT_EQ(ret, E_PARAMETERS_INVALID);
1078 }
1079
1080 /**
1081 * @tc.name: SetVideo002
1082 * @tc.desc: SetVideo input error uri
1083 * @tc.type: FUNC
1084 * @tc.require: issueI6R07J
1085 */
1086 HWTEST_F(WallpaperTest, SetVideo002, TestSize.Level0)
1087 {
1088 HILOG_INFO("SetVideo002 begin");
1089 std::string errUri = "errorPath/zm_30fps_4s.mp4";
1090 ErrorCode ret = WallpaperManagerkits::GetInstance().SetVideo(errUri, SYSTYEM);
1091 EXPECT_EQ(ret, E_FILE_ERROR);
1092 }
1093
1094 /**
1095 * @tc.name: SetVideo003
1096 * @tc.desc: SetVideo input correct parameter
1097 * @tc.type: FUNC
1098 * @tc.require: issueI6R07J
1099 */
1100 HWTEST_F(WallpaperTest, SetVideo003, TestSize.Level0)
1101 {
1102 HILOG_INFO("SetVideo003 begin");
1103 ErrorCode ret = WallpaperManagerkits::GetInstance().SetVideo(URI_30FPS_3S_MP4, SYSTYEM);
1104 EXPECT_EQ(ret, E_OK);
1105 }
1106
1107 /**
1108 * @tc.name: SetVideo004
1109 * @tc.desc: SetVideo input error duration
1110 * @tc.type: FUNC
1111 * @tc.require: issueI6R07J
1112 */
1113 HWTEST_F(WallpaperTest, SetVideo004, TestSize.Level0)
1114 {
1115 HILOG_INFO("SetVideo004 begin");
1116 ErrorCode ret = WallpaperManagerkits::GetInstance().SetVideo(URI_15FPS_7S_MP4, SYSTYEM);
1117 EXPECT_EQ(ret, E_PARAMETERS_INVALID);
1118 }
1119
1120 /**
1121 * @tc.name: SetVideo005
1122 * @tc.desc: SetVideo input error fileType
1123 * @tc.type: FUNC
1124 * @tc.require: issueI6R07J
1125 */
1126 HWTEST_F(WallpaperTest, SetVideo005, TestSize.Level0)
1127 {
1128 HILOG_INFO("SetVideo005 begin");
1129 ErrorCode ret = WallpaperManagerkits::GetInstance().SetVideo(URI_30FPS_3S_MOV, LOCKSCREEN);
1130 EXPECT_EQ(ret, E_PARAMETERS_INVALID);
1131 }
1132
1133 /**
1134 * @tc.name: SetVideo006
1135 * @tc.desc: SetVideo input error uri
1136 * @tc.type: FUNC
1137 * @tc.require: issueI6R07J
1138 */
1139 HWTEST_F(WallpaperTest, SetVideo006, TestSize.Level0)
1140 {
1141 HILOG_INFO("SetVideo006 begin");
1142 std::string errUri = "errorPath/zm_30fps_4s.mp4";
1143 ErrorCode ret = WallpaperManagerkits::GetInstance().SetVideo(errUri, LOCKSCREEN);
1144 EXPECT_EQ(ret, E_FILE_ERROR);
1145 }
1146
1147 /**
1148 * @tc.name: SetVideo007
1149 * @tc.desc: SetVideo input correct parameter
1150 * @tc.type: FUNC
1151 * @tc.require: issueI6R07J
1152 */
1153 HWTEST_F(WallpaperTest, SetVideo007, TestSize.Level0)
1154 {
1155 HILOG_INFO("SetVideo007 begin");
1156 ErrorCode ret = WallpaperManagerkits::GetInstance().SetVideo(URI_30FPS_3S_MP4, LOCKSCREEN);
1157 EXPECT_EQ(ret, E_OK);
1158 }
1159
1160 /**
1161 * @tc.name: SetVideo008
1162 * @tc.desc: SetVideo input error duration
1163 * @tc.type: FUNC
1164 * @tc.require: issueI6R07J
1165 */
1166 HWTEST_F(WallpaperTest, SetVideo008, TestSize.Level0)
1167 {
1168 HILOG_INFO("SetVideo008 begin");
1169 ErrorCode ret = WallpaperManagerkits::GetInstance().SetVideo(URI_15FPS_7S_MP4, LOCKSCREEN);
1170 EXPECT_EQ(ret, E_PARAMETERS_INVALID);
1171 }
1172 /********************* SetVideo *********************/
1173
1174 /**
1175 * @tc.name: SetCustomWallpaper001
1176 * @tc.desc: Set a custom wallpaper in the Sceneborad scene
1177 * @tc.type: FUNC
1178 * @tc.require: issueI7AAMU
1179 */
1180 HWTEST_F(WallpaperTest, SetCustomWallpaper001, TestSize.Level0)
1181 {
1182 HILOG_INFO("SetCustomWallpaper001 begin");
1183 ErrorCode testErrorCode = E_OK;
1184 if (!Rosen::SceneBoardJudgement::IsSceneBoardEnabled()) {
1185 testErrorCode = E_NO_PERMISSION;
1186 }
1187 ErrorCode ret = WallpaperManagerkits::GetInstance().SetCustomWallpaper(URI, SYSTYEM);
1188 EXPECT_EQ(ret, testErrorCode);
1189 ret = WallpaperManagerkits::GetInstance().SetCustomWallpaper(URI, LOCKSCREEN);
1190 EXPECT_EQ(ret, testErrorCode);
1191 }
1192
1193 /********************* SendEvent *********************/
1194
1195 /**
1196 * @tc.name: SendEvent001
1197 * @tc.desc: SetVideo input error fileType
1198 * @tc.type: FUNC
1199 * @tc.require: issueI6R07J
1200 */
1201 HWTEST_F(WallpaperTest, SendEvent001, TestSize.Level0)
1202 {
1203 HILOG_INFO("SendEvent001 begin");
1204 std::string errEventType = "SHOW_ERROREVENTTYPE";
1205 ErrorCode ret = WallpaperManagerkits::GetInstance().SendEvent("SHOW_ERROREVENTTYPE");
1206 EXPECT_EQ(ret, E_PARAMETERS_INVALID);
1207 }
1208
1209 /**
1210 * @tc.name: SendEvent002
1211 * @tc.desc: SetVideo input error fileType
1212 * @tc.type: FUNC
1213 * @tc.require: issueI6R07J
1214 */
1215 HWTEST_F(WallpaperTest, SendEvent002, TestSize.Level0)
1216 {
1217 HILOG_INFO("SendEvent002 begin");
1218 ErrorCode ret = WallpaperManagerkits::GetInstance().SendEvent("SHOW_SYSTEMSCREEN");
1219 EXPECT_EQ(ret, E_OK);
1220 }
1221
1222 /**
1223 * @tc.name: SendEvent003
1224 * @tc.desc: SetVideo input error fileType
1225 * @tc.type: FUNC
1226 * @tc.require: issueI6R07J
1227 */
1228 HWTEST_F(WallpaperTest, SendEvent003, TestSize.Level0)
1229 {
1230 HILOG_INFO("SendEvent003 begin");
1231 ErrorCode ret = WallpaperManagerkits::GetInstance().SendEvent("SHOW_LOCKSCREEN");
1232 EXPECT_EQ(ret, E_OK);
1233 }
1234
1235 /**
1236 * @tc.name: WallpaperTest_001
1237 * @tc.desc: Test Onstop and OnStart.
1238 * @tc.type: FUNC
1239 * @tc.require: issueI7OUB6
1240 */
1241 HWTEST_F(WallpaperTest, WallpaperTest_001, TestSize.Level0)
1242 {
1243 HILOG_INFO("Test Onstop");
1244 std::shared_ptr<WallpaperService> wallpaperService = std::make_shared<WallpaperService>();
1245 wallpaperService->state_ = WallpaperService::ServiceRunningState::STATE_RUNNING;
1246 wallpaperService->OnStop();
1247 EXPECT_EQ(wallpaperService->state_, WallpaperService::ServiceRunningState::STATE_NOT_START);
1248 }
1249 } // namespace WallpaperMgrService
1250 } // namespace OHOS