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