1 /*
2  * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #define private public
17 
18 #include <fstream>
19 #include <gtest/gtest.h>
20 
21 #include "ability_manager_helper.h"
22 #include "app_log_wrapper.h"
23 #include "appexecfwk_errors.h"
24 #include "bundle_data_storage_interface.h"
25 #include "bundle_data_mgr.h"
26 #include "bundle_mgr_service.h"
27 #include "int_wrapper.h"
28 #include "json_constants.h"
29 #include "json_serializer.h"
30 #include "mime_type_mgr.h"
31 #include "parcel.h"
32 #include "shortcut_data_storage_rdb.h"
33 #include "want_params_wrapper.h"
34 
35 using namespace testing::ext;
36 using namespace OHOS::AppExecFwk;
37 using OHOS::Parcel;
38 using OHOS::AAFwk::Want;
39 
40 namespace OHOS {
41 namespace {
42 const std::string BUNDLE_NAME = "com.example.l3jsdemo";
43 const std::string APP_NAME = "com.example.l3jsdemo";
44 const std::string ABILITY_NAME = "com.example.l3jsdemo.MainAbility";
45 const std::string PACKAGE_NAME = "com.example.l3jsdemo";
46 const std::string EMPTY_STRING = "";
47 const std::string MODULE_NAME = "entry";
48 const std::string DEVICE_ID = "PHONE-001";
49 const std::string LABEL = "hello";
50 const std::string DESCRIPTION = "mainEntry";
51 const std::string ICON_PATH = "/data/data/icon.png";
52 const std::string KIND = "test";
53 const AbilityType ABILITY_TYPE = AbilityType::PAGE;
54 const DisplayOrientation ORIENTATION = DisplayOrientation::PORTRAIT;
55 const LaunchMode LAUNCH_MODE = LaunchMode::SINGLETON;
56 const std::string CODE_PATH = "/data/app/el1/bundle/public/com.example.l3jsdemo";
57 const std::string RESOURCE_PATH = "/data/app/el1/bundle/public/com.example.l3jsdemo";
58 const std::string LIB_PATH = "/data/app/el1/bundle/public/com.example.l3jsdemo";
59 const bool VISIBLE = true;
60 const int32_t USERID = 100;
61 const std::string ACTION = "action.system.home";
62 const std::string ENTITY = "entity.system.home";
63 const std::string ISOLATION_ONLY = "isolationOnly";
64 constexpr const char* SHARE_ACTION_VALUE = "ohos.want.action.sendData";
65 constexpr const char* WANT_PARAM_PICKER_SUMMARY = "ability.picker.summary";
66 constexpr const char* WANT_PARAM_SUMMARY = "summary";
67 constexpr const char* SUMMARY_TOTAL_COUNT = "totalCount";
68 }  // namespace
69 
70 class BmsDataMgrTest : public testing::Test {
71 public:
72     BmsDataMgrTest();
73     ~BmsDataMgrTest();
74     static void SetUpTestCase();
75     static void TearDownTestCase();
76     void SetUp();
77     void TearDown();
78     const std::shared_ptr<BundleDataMgr> GetDataMgr() const;
79     AbilityInfo GetDefaultAbilityInfo() const;
80     ShortcutInfo InitShortcutInfo();
81 
82 private:
83     std::shared_ptr<BundleDataMgr> dataMgr_ = std::make_shared<BundleDataMgr>();
84     static std::shared_ptr<BundleMgrService> bundleMgrService_;
85     std::vector<Skill> CreateSkillsForMatchShareTest();
86     AAFwk::Want CreateWantForMatchShareTest(std::map<std::string, int32_t> &utds);
87     bool MatchShare(std::map<std::string, int32_t> &utds, std::vector<Skill> &skills);
88 };
89 
90 std::shared_ptr<BundleMgrService> BmsDataMgrTest::bundleMgrService_ =
91     DelayedSingleton<BundleMgrService>::GetInstance();
92 
BmsDataMgrTest()93 BmsDataMgrTest::BmsDataMgrTest()
94 {}
95 
~BmsDataMgrTest()96 BmsDataMgrTest::~BmsDataMgrTest()
97 {}
98 
SetUpTestCase()99 void BmsDataMgrTest::SetUpTestCase()
100 {}
101 
TearDownTestCase()102 void BmsDataMgrTest::TearDownTestCase()
103 {
104     bundleMgrService_->OnStop();
105 }
106 
107 
SetUp()108 void BmsDataMgrTest::SetUp()
109 {}
110 
TearDown()111 void BmsDataMgrTest::TearDown()
112 {
113     dataMgr_->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
114 }
115 
GetDefaultAbilityInfo() const116 AbilityInfo BmsDataMgrTest::GetDefaultAbilityInfo() const
117 {
118     AbilityInfo abilityInfo;
119     abilityInfo.package = PACKAGE_NAME;
120     abilityInfo.name = ABILITY_NAME;
121     abilityInfo.bundleName = BUNDLE_NAME;
122     abilityInfo.applicationName = APP_NAME;
123     abilityInfo.deviceId = DEVICE_ID;
124     abilityInfo.label = LABEL;
125     abilityInfo.description = DESCRIPTION;
126     abilityInfo.iconPath = ICON_PATH;
127     abilityInfo.visible = VISIBLE;
128     abilityInfo.kind = KIND;
129     abilityInfo.type = ABILITY_TYPE;
130     abilityInfo.orientation = ORIENTATION;
131     abilityInfo.launchMode = LAUNCH_MODE;
132     abilityInfo.codePath = CODE_PATH;
133     abilityInfo.resourcePath = RESOURCE_PATH;
134     abilityInfo.libPath = LIB_PATH;
135     return abilityInfo;
136 }
137 
GetDataMgr() const138 const std::shared_ptr<BundleDataMgr> BmsDataMgrTest::GetDataMgr() const
139 {
140     return dataMgr_;
141 }
142 
InitShortcutInfo()143 ShortcutInfo BmsDataMgrTest::InitShortcutInfo()
144 {
145     ShortcutInfo shortcutInfos;
146     shortcutInfos.id = "id_test1";
147     shortcutInfos.bundleName = "com.ohos.hello";
148     shortcutInfos.hostAbility = "hostAbility";
149     shortcutInfos.icon = "$media:16777224";
150     shortcutInfos.label = "shortcutLabel";
151     shortcutInfos.disableMessage = "shortcutDisableMessage";
152     shortcutInfos.isStatic = true;
153     shortcutInfos.isHomeShortcut = true;
154     shortcutInfos.isEnables = true;
155     return shortcutInfos;
156 }
157 
CreateSkillsForMatchShareTest()158 std::vector<Skill> BmsDataMgrTest::CreateSkillsForMatchShareTest()
159 {
160     std::vector<Skill> skills;
161 
162     Skill skill;
163     skill.actions.push_back(SHARE_ACTION_VALUE);
164 
165     SkillUri uriPng;
166     uriPng.scheme = "file";
167     uriPng.utd = "general.png";
168     uriPng.maxFileSupported = 3;
169     skill.uris.push_back(uriPng);
170 
171     SkillUri uriImage;
172     uriImage.scheme = "file";
173     uriImage.utd = "general.image";
174     uriImage.maxFileSupported = 6;
175     skill.uris.push_back(uriImage);
176 
177     SkillUri uriMedia;
178     uriMedia.scheme = "file";
179     uriMedia.utd = "general.media";
180     uriMedia.maxFileSupported = 9;
181     skill.uris.push_back(uriMedia);
182 
183     skills.push_back(skill);
184 
185     return skills;
186 }
187 
CreateWantForMatchShareTest(std::map<std::string,int32_t> & utds)188 AAFwk::Want BmsDataMgrTest::CreateWantForMatchShareTest(std::map<std::string, int32_t> &utds)
189 {
190     AAFwk::WantParams summaryWp;
191     int32_t totalCount = 0;
192     for (const auto &pair : utds) {
193         totalCount += pair.second;
194         summaryWp.SetParam(pair.first, Integer::Box(pair.second));
195     }
196 
197     AAFwk::WantParams pickerWp;
198     pickerWp.SetParam(WANT_PARAM_SUMMARY, AAFwk::WantParamWrapper::Box(summaryWp));
199     pickerWp.SetParam(SUMMARY_TOTAL_COUNT, Integer::Box(totalCount));
200 
201     AAFwk::WantParams wp;
202     wp.SetParam(WANT_PARAM_PICKER_SUMMARY, AAFwk::WantParamWrapper::Box(pickerWp));
203 
204     AAFwk::Want want;
205     want.SetAction(SHARE_ACTION_VALUE);
206     want.SetParams(wp);
207 
208     return want;
209 }
210 
MatchShare(std::map<std::string,int32_t> & utds,std::vector<Skill> & skills)211 bool BmsDataMgrTest::MatchShare(std::map<std::string, int32_t> &utds, std::vector<Skill> &skills)
212 {
213     auto dataMgr = GetDataMgr();
214     AAFwk::Want want = CreateWantForMatchShareTest(utds);
215     return dataMgr->MatchShare(want, skills);
216 }
217 
218 /**
219  * @tc.number: UpdateInstallState_0100
220  * @tc.name: UpdateInstallState
221  * @tc.desc: 1. correct status transfer INSTALL_START->INSTALL_FAIL
222  *           2. verify function return value
223  */
224 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0100, Function | SmallTest | Level0)
225 {
226     auto dataMgr = GetDataMgr();
227     EXPECT_NE(dataMgr, nullptr);
228     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
229     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
230     EXPECT_TRUE(ret1);
231     EXPECT_TRUE(ret2);
232 }
233 
234 /**
235  * @tc.number: UpdateInstallState_0200
236  * @tc.name: UpdateInstallState
237  * @tc.desc: 1. correct status transfer INSTALL_START->INSTALL_SUCCESS->UPDATING_START->UPDATING_FAIL
238  *           2. verify function return value
239  */
240 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0200, Function | SmallTest | Level0)
241 {
242     auto dataMgr = GetDataMgr();
243     EXPECT_NE(dataMgr, nullptr);
244     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
245     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
246     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
247     bool ret4 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_FAIL);
248     EXPECT_TRUE(ret1);
249     EXPECT_TRUE(ret2);
250     EXPECT_TRUE(ret3);
251     EXPECT_TRUE(ret4);
252 }
253 
254 /**
255  * @tc.number: UpdateInstallState_0300
256  * @tc.name: UpdateInstallState
257  * @tc.desc: 1. correct status transfer INSTALL_START->INSTALL_SUCCESS->UPDATING_START->UPDATING_SUCCESS
258  *           2. verify function return value
259  */
260 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0300, Function | SmallTest | Level0)
261 {
262     auto dataMgr = GetDataMgr();
263     EXPECT_NE(dataMgr, nullptr);
264     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
265     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
266     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
267     bool ret4 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_SUCCESS);
268     EXPECT_TRUE(ret1);
269     EXPECT_TRUE(ret2);
270     EXPECT_TRUE(ret3);
271     EXPECT_TRUE(ret4);
272     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
273     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
274 }
275 
276 /**
277  * @tc.number: UpdateInstallState_0400
278  * @tc.name: UpdateInstallState
279  * @tc.desc: 1. correct status transfer INSTALL_START->INSTALL_SUCCESS->UNINSTALL_START->UNINSTALL_SUCCESS
280  *           2. verify function return value
281  */
282 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0400, Function | SmallTest | Level0)
283 {
284     auto dataMgr = GetDataMgr();
285     EXPECT_NE(dataMgr, nullptr);
286     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
287     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
288     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
289     bool ret4 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
290     EXPECT_TRUE(ret1);
291     EXPECT_TRUE(ret2);
292     EXPECT_TRUE(ret3);
293     EXPECT_TRUE(ret4);
294 }
295 
296 /**
297  * @tc.number: UpdateInstallState_0500
298  * @tc.name: UpdateInstallState
299  * @tc.desc: 1. correct status transfer INSTALL_START->INSTALL_SUCCESS->UNINSTALL_START->UNINSTALL_FAIL
300  *           2. verify function return value
301  */
302 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0500, Function | SmallTest | Level0)
303 {
304     auto dataMgr = GetDataMgr();
305     EXPECT_NE(dataMgr, nullptr);
306     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
307     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
308     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
309     bool ret4 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_FAIL);
310     EXPECT_TRUE(ret1);
311     EXPECT_TRUE(ret2);
312     EXPECT_TRUE(ret3);
313     EXPECT_TRUE(ret4);
314 }
315 
316 /**
317  * @tc.number: UpdateInstallState_0600
318  * @tc.name: UpdateInstallState
319  * @tc.desc: 1. NOT correct status transfer INSTALL_START->INSTALL_START
320  *           2. verify function return value
321  */
322 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0600, Function | SmallTest | Level0)
323 {
324     auto dataMgr = GetDataMgr();
325     EXPECT_NE(dataMgr, nullptr);
326     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
327     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
328     EXPECT_TRUE(ret1);
329     EXPECT_FALSE(ret2);
330     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
331 }
332 
333 /**
334  * @tc.number: UpdateInstallState_0700
335  * @tc.name: UpdateInstallState
336  * @tc.desc: 1. NOT correct status transfer INSTALL_START->UNINSTALL_START
337  *           2. verify function return value
338  */
339 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0700, Function | SmallTest | Level0)
340 {
341     auto dataMgr = GetDataMgr();
342     EXPECT_NE(dataMgr, nullptr);
343     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
344     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
345     EXPECT_TRUE(ret1);
346     EXPECT_TRUE(ret2);
347     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
348 }
349 
350 /**
351  * @tc.number: UpdateInstallState_0800
352  * @tc.name: UpdateInstallState
353  * @tc.desc: 1. NOT correct status transfer INSTALL_START->UNINSTALL_SUCCESS
354  *           2. verify function return value
355  */
356 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0800, Function | SmallTest | Level0)
357 {
358     auto dataMgr = GetDataMgr();
359     EXPECT_NE(dataMgr, nullptr);
360     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
361     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
362     EXPECT_TRUE(ret1);
363     EXPECT_FALSE(ret2);
364     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
365 }
366 
367 /**
368  * @tc.number: UpdateInstallState_0900
369  * @tc.name: UpdateInstallState
370  * @tc.desc: 1. NOT correct status transfer INSTALL_START->UNINSTALL_FAIL
371  *           2. verify function return value
372  */
373 HWTEST_F(BmsDataMgrTest, UpdateInstallState_0900, Function | SmallTest | Level0)
374 {
375     auto dataMgr = GetDataMgr();
376     EXPECT_NE(dataMgr, nullptr);
377     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
378     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_FAIL);
379     EXPECT_TRUE(ret1);
380     EXPECT_FALSE(ret2);
381     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
382 }
383 
384 /**
385  * @tc.number: UpdateInstallState_1000
386  * @tc.name: UpdateInstallState
387  * @tc.desc: 1. NOT correct status transfer INSTALL_START->UPDATING_STAR
388  *           2. verify function return value
389  */
390 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1000, Function | SmallTest | Level0)
391 {
392     auto dataMgr = GetDataMgr();
393     EXPECT_NE(dataMgr, nullptr);
394     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
395     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
396     EXPECT_TRUE(ret1);
397     EXPECT_TRUE(ret2);
398     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
399 }
400 
401 /**
402  * @tc.number: UpdateInstallState_1100
403  * @tc.name: UpdateInstallState
404  * @tc.desc: 1. NOT correct status transfer INSTALL_START->UPDATING_SUCCESS
405  *           2. verify function return value
406  */
407 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1100, Function | SmallTest | Level0)
408 {
409     auto dataMgr = GetDataMgr();
410     EXPECT_NE(dataMgr, nullptr);
411     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
412     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_SUCCESS);
413     EXPECT_TRUE(ret1);
414     EXPECT_FALSE(ret2);
415     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
416 }
417 
418 /**
419  * @tc.number: UpdateInstallState_1200
420  * @tc.name: UpdateInstallState
421  * @tc.desc: 1. NOT correct status transfer INSTALL_START->UPDATING_FAIL
422  *           2. verify function return value
423  */
424 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1200, Function | SmallTest | Level0)
425 {
426     auto dataMgr = GetDataMgr();
427     EXPECT_NE(dataMgr, nullptr);
428     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
429     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_FAIL);
430     EXPECT_TRUE(ret1);
431     EXPECT_TRUE(ret2);
432     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
433 }
434 
435 /**
436  * @tc.number: UpdateInstallState_1300
437  * @tc.name: UpdateInstallState
438  * @tc.desc: 1. NOT correct status transfer INSTALL_START->INSTALL_SUCCESS->INSTALL_SUCCESS
439  *           2. verify function return value
440  */
441 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1300, Function | SmallTest | Level0)
442 {
443     auto dataMgr = GetDataMgr();
444     EXPECT_NE(dataMgr, nullptr);
445     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
446     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
447     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
448     EXPECT_TRUE(ret1);
449     EXPECT_TRUE(ret2);
450     EXPECT_FALSE(ret3);
451     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
452     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
453 }
454 
455 /**
456  * @tc.number: UpdateInstallState_1400
457  * @tc.name: UpdateInstallState
458  * @tc.desc: 1. NOT correct status transfer INSTALL_START->INSTALL_SUCCESS->INSTALL_START
459  *           2. verify function return value
460  */
461 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1400, Function | SmallTest | Level0)
462 {
463     auto dataMgr = GetDataMgr();
464     EXPECT_NE(dataMgr, nullptr);
465     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
466     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
467     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
468     EXPECT_TRUE(ret1);
469     EXPECT_TRUE(ret2);
470     EXPECT_FALSE(ret3);
471     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
472     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
473 }
474 
475 /**
476  * @tc.number: UpdateInstallState_1500
477  * @tc.name: UpdateInstallState
478  * @tc.desc: 1. NOT correct status transfer INSTALL_START->INSTALL_SUCCESS->INSTALL_FAIL
479  *           2. verify function return value
480  */
481 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1500, Function | SmallTest | Level0)
482 {
483     auto dataMgr = GetDataMgr();
484     EXPECT_NE(dataMgr, nullptr);
485     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
486     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
487     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_FAIL);
488     EXPECT_TRUE(ret1);
489     EXPECT_TRUE(ret2);
490     EXPECT_FALSE(ret3);
491     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
492     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
493 }
494 
495 /**
496  * @tc.number: UpdateInstallState_1600
497  * @tc.name: UpdateInstallState
498  * @tc.desc: 1. NOT correct status transfer INSTALL_START->INSTALL_SUCCESS->UNINSTALL_SUCCESS
499  *           2. verify function return value
500  */
501 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1600, Function | SmallTest | Level0)
502 {
503     auto dataMgr = GetDataMgr();
504     EXPECT_NE(dataMgr, nullptr);
505     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
506     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
507     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
508     EXPECT_TRUE(ret1);
509     EXPECT_TRUE(ret2);
510     EXPECT_FALSE(ret3);
511     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
512     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
513 }
514 
515 /**
516  * @tc.number: UpdateInstallState_1700
517  * @tc.name: UpdateInstallState
518  * @tc.desc: 1. NOT correct status transfer INSTALL_START->INSTALL_SUCCESS->UNINSTALL_FAIL
519  *           2. verify function return value
520  */
521 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1700, Function | SmallTest | Level0)
522 {
523     auto dataMgr = GetDataMgr();
524     EXPECT_NE(dataMgr, nullptr);
525     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
526     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
527     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_FAIL);
528     EXPECT_TRUE(ret1);
529     EXPECT_TRUE(ret2);
530     EXPECT_FALSE(ret3);
531     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
532     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
533 }
534 
535 /**
536  * @tc.number: UpdateInstallState_1800
537  * @tc.name: UpdateInstallState
538  * @tc.desc: 1. NOT correct status transfer INSTALL_START->INSTALL_SUCCESS->UPDATING_FAIL
539  *           2. verify function return value
540  */
541 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1800, Function | SmallTest | Level0)
542 {
543     auto dataMgr = GetDataMgr();
544     EXPECT_NE(dataMgr, nullptr);
545     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
546     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
547     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_FAIL);
548     EXPECT_TRUE(ret1);
549     EXPECT_TRUE(ret2);
550     EXPECT_FALSE(ret3);
551     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
552     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
553 }
554 
555 /**
556  * @tc.number: UpdateInstallState_1900
557  * @tc.name: UpdateInstallState
558  * @tc.desc: 1. NOT correct status transfer INSTALL_START->INSTALL_SUCCESS->UPDATING_SUCCESS
559  *           2. verify function return value
560  */
561 HWTEST_F(BmsDataMgrTest, UpdateInstallState_1900, Function | SmallTest | Level0)
562 {
563     auto dataMgr = GetDataMgr();
564     EXPECT_NE(dataMgr, nullptr);
565     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
566     bool ret2 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
567     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_SUCCESS);
568     EXPECT_TRUE(ret1);
569     EXPECT_TRUE(ret2);
570     EXPECT_FALSE(ret3);
571     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
572     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
573 }
574 
575 /**
576  * @tc.number: UpdateInstallState_2000
577  * @tc.name: UpdateInstallState
578  * @tc.desc: 1. empty bundle name
579  *           2. verify function return value
580  */
581 HWTEST_F(BmsDataMgrTest, UpdateInstallState_2000, Function | SmallTest | Level0)
582 {
583     auto dataMgr = GetDataMgr();
584     EXPECT_NE(dataMgr, nullptr);
585     bool ret1 = dataMgr->UpdateBundleInstallState("", InstallState::INSTALL_START);
586     EXPECT_FALSE(ret1);
587 }
588 
589 /**
590  * @tc.number: AddBundleInfo_0100
591  * @tc.name: AddBundleInfo
592  * @tc.desc: 1. add info to the data manager
593  *           2. query data then verify
594  */
595 HWTEST_F(BmsDataMgrTest, AddBundleInfo_0100, Function | SmallTest | Level0)
596 {
597     InnerBundleInfo info;
598     BundleInfo bundleInfo;
599     bundleInfo.name = BUNDLE_NAME;
600     bundleInfo.applicationInfo.name = APP_NAME;
601     ApplicationInfo applicationInfo;
602     applicationInfo.name = BUNDLE_NAME;
603     applicationInfo.deviceId = DEVICE_ID;
604     applicationInfo.bundleName = BUNDLE_NAME;
605     info.SetBaseBundleInfo(bundleInfo);
606     info.SetBaseApplicationInfo(applicationInfo);
607     auto dataMgr = GetDataMgr();
608     EXPECT_NE(dataMgr, nullptr);
609     InnerBundleInfo info1;
610     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
611     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
612     bool ret3 = dataMgr->GetInnerBundleInfo(BUNDLE_NAME, info1);
613     EXPECT_TRUE(ret1);
614     EXPECT_TRUE(ret2);
615     EXPECT_TRUE(ret3);
616 
617     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
618 }
619 
620 /**
621  * @tc.number: AddBundleInfo_0200
622  * @tc.name: AddBundleInfo
623  * @tc.desc: 1. add info to the data manager
624  *           2. query data then verify
625  */
626 HWTEST_F(BmsDataMgrTest, AddBundleInfo_0200, Function | SmallTest | Level0)
627 {
628     InnerBundleUserInfo innerBundleUserInfo;
629     innerBundleUserInfo.bundleName = BUNDLE_NAME;
630     innerBundleUserInfo.bundleUserInfo.enabled = true;
631     innerBundleUserInfo.bundleUserInfo.userId = USERID;
632 
633     InnerBundleInfo info1;
634     BundleInfo bundleInfo1;
635     bundleInfo1.name = BUNDLE_NAME;
636     bundleInfo1.applicationInfo.name = APP_NAME;
637     bundleInfo1.applicationInfo.bundleName = BUNDLE_NAME;
638     ApplicationInfo applicationInfo1;
639     applicationInfo1.name = BUNDLE_NAME;
640     applicationInfo1.bundleName = BUNDLE_NAME;
641     applicationInfo1.deviceId = DEVICE_ID;
642     info1.SetBaseBundleInfo(bundleInfo1);
643     info1.SetBaseApplicationInfo(applicationInfo1);
644     info1.AddInnerBundleUserInfo(innerBundleUserInfo);
645 
646     InnerBundleInfo info2;
647     BundleInfo bundleInfo2;
648     bundleInfo2.name = BUNDLE_NAME;
649     bundleInfo2.applicationInfo.name = APP_NAME;
650     bundleInfo2.applicationInfo.bundleName = BUNDLE_NAME;
651     ApplicationInfo applicationInfo2;
652     applicationInfo2.name = BUNDLE_NAME;
653     applicationInfo2.bundleName = BUNDLE_NAME;
654     applicationInfo2.deviceId = DEVICE_ID;
655     info2.SetBaseBundleInfo(bundleInfo2);
656     info2.SetBaseApplicationInfo(applicationInfo2);
657     info2.AddInnerBundleUserInfo(innerBundleUserInfo);
658 
659     auto dataMgr = GetDataMgr();
660     EXPECT_NE(dataMgr, nullptr);
661     dataMgr->AddUserId(USERID);
662 
663     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
664     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info1);
665     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
666     bool ret4 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_SUCCESS);
667     bool ret5 = dataMgr->UpdateInnerBundleInfo(BUNDLE_NAME, info2, info1);
668     bool ret6 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
669     EXPECT_TRUE(ret1);
670     EXPECT_TRUE(ret2);
671     EXPECT_TRUE(ret3);
672     EXPECT_TRUE(ret4);
673     EXPECT_TRUE(ret5);
674     EXPECT_TRUE(ret6);
675 
676     ApplicationInfo appInfo;
677     bool ret7 = dataMgr->GetApplicationInfo(BUNDLE_NAME, ApplicationFlag::GET_BASIC_APPLICATION_INFO, USERID, appInfo);
678     EXPECT_TRUE(ret7);
679 
680     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
681 }
682 
683 /**
684  * @tc.number: AddBundleInfo_0300
685  * @tc.name: AddBundleInfo
686  * @tc.desc: 1. scan dir not exist
687  *           2. verify scan result file number is 0
688  */
689 HWTEST_F(BmsDataMgrTest, AddBundleInfo_0300, Function | SmallTest | Level0)
690 {
691     auto dataMgr = GetDataMgr();
692     EXPECT_NE(dataMgr, nullptr);
693     InnerBundleInfo info;
694     InnerBundleInfo info1;
695     bool ret = dataMgr->AddInnerBundleInfo("", info);
696     bool ret1 = dataMgr->GetInnerBundleInfo("", info1);
697     EXPECT_FALSE(ret);
698     EXPECT_FALSE(ret1);
699 }
700 
701 /**
702  * @tc.number: AddBundleInfo_0400
703  * @tc.name: AddBundleInfo
704  * @tc.desc: 1. add info to the data manager, then uninstall, then reinstall
705  *           2. query data then verify
706  */
707 HWTEST_F(BmsDataMgrTest, AddBundleInfo_0400, Function | SmallTest | Level0)
708 {
709     InnerBundleInfo info;
710     BundleInfo bundleInfo;
711     bundleInfo.name = BUNDLE_NAME;
712     bundleInfo.applicationInfo.name = APP_NAME;
713     ApplicationInfo applicationInfo;
714     applicationInfo.name = BUNDLE_NAME;
715     applicationInfo.deviceId = DEVICE_ID;
716     applicationInfo.bundleName = BUNDLE_NAME;
717     info.SetBaseBundleInfo(bundleInfo);
718     info.SetBaseApplicationInfo(applicationInfo);
719     auto dataMgr = GetDataMgr();
720     EXPECT_NE(dataMgr, nullptr);
721     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
722     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
723     EXPECT_TRUE(ret1);
724     EXPECT_TRUE(ret2);
725 
726     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
727     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
728     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
729     bool ret4 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
730     EXPECT_TRUE(ret3);
731     EXPECT_TRUE(ret4);
732     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
733     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
734 }
735 
736 /**
737  * @tc.number: AddBundleInfo_0500
738  * @tc.name: AddBundleInfo
739  * @tc.desc: 1. add module info to the data manager
740  *           2. query data then verify
741  */
742 HWTEST_F(BmsDataMgrTest, AddBundleInfo_0500, Function | SmallTest | Level0)
743 {
744     InnerBundleInfo info1;
745     BundleInfo bundleInfo1;
746     bundleInfo1.name = BUNDLE_NAME;
747     bundleInfo1.applicationInfo.name = APP_NAME;
748     bundleInfo1.applicationInfo.bundleName = BUNDLE_NAME;
749     ApplicationInfo applicationInfo1;
750     applicationInfo1.name = BUNDLE_NAME;
751     applicationInfo1.deviceId = DEVICE_ID;
752     applicationInfo1.bundleName = BUNDLE_NAME;
753     info1.SetBaseBundleInfo(bundleInfo1);
754     info1.SetBaseApplicationInfo(applicationInfo1);
755 
756     InnerBundleInfo info2;
757     BundleInfo bundleInfo2;
758     bundleInfo2.name = BUNDLE_NAME;
759     bundleInfo2.applicationInfo.name = APP_NAME;
760     bundleInfo2.applicationInfo.bundleName = BUNDLE_NAME;
761     ApplicationInfo applicationInfo2;
762     applicationInfo2.name = BUNDLE_NAME;
763     applicationInfo2.deviceId = DEVICE_ID;
764     applicationInfo2.bundleName = BUNDLE_NAME;
765     info2.SetBaseBundleInfo(bundleInfo2);
766     info2.SetBaseApplicationInfo(applicationInfo2);
767 
768     InnerBundleInfo info3;
769     InnerBundleInfo info4;
770     auto dataMgr = GetDataMgr();
771     EXPECT_NE(dataMgr, nullptr);
772     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
773     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info1);
774     bool ret3 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
775     bool ret4 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_SUCCESS);
776     bool ret5 = dataMgr->AddNewModuleInfo(BUNDLE_NAME, info2, info1);
777     bool ret6 = dataMgr->GetInnerBundleInfo(BUNDLE_NAME, info3);
778     bool ret7 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_SUCCESS);
779     bool ret8 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
780     bool ret9 = dataMgr->RemoveModuleInfo(BUNDLE_NAME, PACKAGE_NAME, info1);
781     bool ret10 = dataMgr->GetInnerBundleInfo(BUNDLE_NAME, info4);
782     EXPECT_TRUE(ret1);
783     EXPECT_TRUE(ret2);
784     EXPECT_TRUE(ret3);
785     EXPECT_TRUE(ret4);
786     EXPECT_TRUE(ret5);
787     EXPECT_TRUE(ret6);
788     EXPECT_TRUE(ret7);
789     EXPECT_TRUE(ret8);
790     EXPECT_TRUE(ret9);
791     EXPECT_TRUE(ret10);
792 
793     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
794     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_SUCCESS);
795 }
796 
797 /**
798  * @tc.number: GenerateUidAndGid_0100
799  * @tc.name: GenerateUidAndGid
800  * @tc.desc: 1. app type is system app
801  *           2. generate uid and gid then verify
802  */
803 HWTEST_F(BmsDataMgrTest, GenerateUidAndGid_0100, Function | SmallTest | Level0)
804 {
805     InnerBundleInfo info;
806     BundleInfo bundleInfo;
807     bundleInfo.name = BUNDLE_NAME;
808     bundleInfo.applicationInfo.name = APP_NAME;
809     ApplicationInfo applicationInfo;
810     applicationInfo.name = BUNDLE_NAME;
811     applicationInfo.deviceId = DEVICE_ID;
812     applicationInfo.bundleName = BUNDLE_NAME;
813     info.SetBaseBundleInfo(bundleInfo);
814     info.SetBaseApplicationInfo(applicationInfo);
815     info.SetAppType(Constants::AppType::SYSTEM_APP);
816     InnerBundleUserInfo innerBundleUserInfo;
817     innerBundleUserInfo.bundleUserInfo.userId = 0;
818     innerBundleUserInfo.bundleName = BUNDLE_NAME;
819     auto dataMgr = GetDataMgr();
820     EXPECT_NE(dataMgr, nullptr);
821     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
822     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
823     bool ret3 = dataMgr->GenerateUidAndGid(innerBundleUserInfo);
824     EXPECT_TRUE(ret1);
825     EXPECT_TRUE(ret2);
826     EXPECT_TRUE(ret3);
827 
828     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
829 }
830 
831 /**
832  * @tc.number: GenerateUidAndGid_0200
833  * @tc.name: GenerateUidAndGid
834  * @tc.desc: 1. app type is third party app
835  *           2. generate uid and gid then verify
836  */
837 HWTEST_F(BmsDataMgrTest, GenerateUidAndGid_0200, Function | SmallTest | Level0)
838 {
839     InnerBundleInfo info;
840     BundleInfo bundleInfo;
841     bundleInfo.name = BUNDLE_NAME;
842     bundleInfo.applicationInfo.name = APP_NAME;
843     ApplicationInfo applicationInfo;
844     applicationInfo.name = BUNDLE_NAME;
845     applicationInfo.deviceId = DEVICE_ID;
846     applicationInfo.bundleName = BUNDLE_NAME;
847     InnerBundleUserInfo innerBundleUserInfo;
848     innerBundleUserInfo.bundleUserInfo.userId = 0;
849     innerBundleUserInfo.bundleName = BUNDLE_NAME;
850     info.SetBaseBundleInfo(bundleInfo);
851     info.SetBaseApplicationInfo(applicationInfo);
852     info.SetAppType(Constants::AppType::THIRD_SYSTEM_APP);
853     auto dataMgr = GetDataMgr();
854     EXPECT_NE(dataMgr, nullptr);
855     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
856     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
857     bool ret3 = dataMgr->GenerateUidAndGid(innerBundleUserInfo);
858     EXPECT_TRUE(ret1);
859     EXPECT_TRUE(ret2);
860     EXPECT_TRUE(ret3);
861 
862     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
863 }
864 
865 /**
866  * @tc.number: GenerateUidAndGid_0300
867  * @tc.name: GenerateUidAndGid
868  * @tc.desc: 1. app type is third party app
869  *           2. generate uid and gid then verify
870  */
871 HWTEST_F(BmsDataMgrTest, GenerateUidAndGid_0300, Function | SmallTest | Level0)
872 {
873     InnerBundleInfo info;
874     BundleInfo bundleInfo;
875     bundleInfo.name = BUNDLE_NAME;
876     bundleInfo.applicationInfo.name = APP_NAME;
877     ApplicationInfo applicationInfo;
878     applicationInfo.name = BUNDLE_NAME;
879     applicationInfo.deviceId = DEVICE_ID;
880     applicationInfo.bundleName = BUNDLE_NAME;
881     InnerBundleUserInfo innerBundleUserInfo;
882     innerBundleUserInfo.bundleUserInfo.userId = 0;
883     innerBundleUserInfo.bundleName = BUNDLE_NAME;
884     info.SetBaseBundleInfo(bundleInfo);
885     info.SetBaseApplicationInfo(applicationInfo);
886     info.SetAppType(Constants::AppType::THIRD_PARTY_APP);
887     auto dataMgr = GetDataMgr();
888     EXPECT_NE(dataMgr, nullptr);
889     dataMgr->AddUserId(USERID);
890 
891     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
892     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
893     bool ret3 = dataMgr->GenerateUidAndGid(innerBundleUserInfo);
894     EXPECT_TRUE(ret1);
895     EXPECT_TRUE(ret2);
896     EXPECT_TRUE(ret3);
897     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
898 }
899 
900 /**
901  * @tc.number: GenerateUidAndGid_0400
902  * @tc.name: GenerateUidAndGid
903  * @tc.desc: 1. app type is third party app
904  *           2. test GenerateUidAndGid failed by empty params
905  */
906 HWTEST_F(BmsDataMgrTest, GenerateUidAndGid_0400, Function | SmallTest | Level0)
907 {
908     InnerBundleUserInfo innerBundleUserInfo;
909     innerBundleUserInfo.bundleName = "";
910 
911     auto dataMgr = GetDataMgr();
912     EXPECT_NE(dataMgr, nullptr);
913     dataMgr->AddUserId(USERID);
914 
915     bool ret = dataMgr->GenerateUidAndGid(innerBundleUserInfo);
916     EXPECT_FALSE(ret);
917 
918     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
919 }
920 
921 /**
922  * @tc.number: QueryAbilityInfo_0100
923  * @tc.name: QueryAbilityInfo
924  * @tc.desc: 1. add info to the data manager
925  *           2. query data then verify
926  */
927 HWTEST_F(BmsDataMgrTest, QueryAbilityInfo_0100, Function | SmallTest | Level0)
928 {
929     InnerBundleUserInfo innerBundleUserInfo;
930     innerBundleUserInfo.bundleName = BUNDLE_NAME;
931     innerBundleUserInfo.bundleUserInfo.enabled = true;
932     innerBundleUserInfo.bundleUserInfo.userId = USERID;
933 
934     InnerBundleInfo info1;
935     BundleInfo bundleInfo1;
936     bundleInfo1.name = BUNDLE_NAME;
937     bundleInfo1.applicationInfo.name = APP_NAME;
938     bundleInfo1.applicationInfo.bundleName = BUNDLE_NAME;
939     ApplicationInfo applicationInfo1;
940     applicationInfo1.name = BUNDLE_NAME;
941     applicationInfo1.bundleName = BUNDLE_NAME;
942 
943     AbilityInfo abilityInfo = GetDefaultAbilityInfo();
944     bundleInfo1.abilityInfos.push_back(abilityInfo);
945     info1.SetBaseBundleInfo(bundleInfo1);
946     info1.SetBaseApplicationInfo(applicationInfo1);
947     info1.InsertAbilitiesInfo(BUNDLE_NAME + PACKAGE_NAME + ABILITY_NAME, abilityInfo);
948     info1.AddInnerBundleUserInfo(innerBundleUserInfo);
949     info1.SetAbilityEnabled(Constants::EMPTY_STRING, ABILITY_NAME, true, USERID);
950     auto dataMgr = GetDataMgr();
951     EXPECT_NE(dataMgr, nullptr);
952     dataMgr->AddUserId(USERID);
953 
954     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
955     EXPECT_TRUE(ret1);
956     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info1);
957     EXPECT_TRUE(ret2);
958 
959     Want want;
960     ElementName name;
961     name.SetAbilityName(ABILITY_NAME);
962     name.SetBundleName(BUNDLE_NAME);
963     want.SetElement(name);
964 
965     AbilityInfo abilityInfo2;
966     bool ret3 = dataMgr->QueryAbilityInfo(want, 0, USERID, abilityInfo2);
967     EXPECT_TRUE(ret3);
968 
969     EXPECT_EQ(abilityInfo2.package, abilityInfo.package);
970     EXPECT_EQ(abilityInfo2.name, abilityInfo.name);
971     EXPECT_EQ(abilityInfo2.bundleName, abilityInfo.bundleName);
972     EXPECT_EQ(abilityInfo2.applicationName, abilityInfo.applicationName);
973     EXPECT_EQ(abilityInfo2.deviceId, abilityInfo.deviceId);
974     EXPECT_EQ(abilityInfo2.label, abilityInfo.label);
975     EXPECT_EQ(abilityInfo2.description, abilityInfo.description);
976     EXPECT_EQ(abilityInfo2.iconPath, abilityInfo.iconPath);
977     EXPECT_EQ(abilityInfo2.visible, abilityInfo.visible);
978     EXPECT_EQ(abilityInfo2.kind, abilityInfo.kind);
979     EXPECT_EQ(abilityInfo2.type, abilityInfo.type);
980     EXPECT_EQ(abilityInfo2.orientation, abilityInfo.orientation);
981     EXPECT_EQ(abilityInfo2.launchMode, abilityInfo.launchMode);
982     EXPECT_EQ(abilityInfo2.codePath, abilityInfo.codePath);
983     EXPECT_EQ(abilityInfo2.resourcePath, abilityInfo.resourcePath);
984     EXPECT_EQ(abilityInfo2.libPath, abilityInfo.libPath);
985 
986     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
987 }
988 
989 /**
990  * @tc.number: QueryAbilityInfo_0200
991  * @tc.name: QueryAbilityInfo
992  * @tc.desc: 1. add info to the data manager
993  *           2. query data then verify
994  */
995 HWTEST_F(BmsDataMgrTest, QueryAbilityInfo_0200, Function | SmallTest | Level0)
996 {
997     Want want;
998     ElementName name;
999     name.SetAbilityName(ABILITY_NAME);
1000     want.SetElement(name);
1001     auto dataMgr = GetDataMgr();
1002     EXPECT_NE(dataMgr, nullptr);
1003     AbilityInfo abilityInfo;
1004     bool ret = dataMgr->QueryAbilityInfo(want, 0, 0, abilityInfo);
1005     EXPECT_FALSE(ret);
1006 }
1007 
1008 /**
1009  * @tc.number: QueryAbilityInfo_0300
1010  * @tc.name: QueryAbilityInfo
1011  * @tc.desc: 1. add info to the data manager
1012  *           2. query data then verify
1013  */
1014 HWTEST_F(BmsDataMgrTest, QueryAbilityInfo_0300, Function | SmallTest | Level0)
1015 {
1016     Want want;
1017     ElementName element1;
1018     EXPECT_EQ("///", element1.GetURI());
1019 
1020     element1.SetDeviceID(DEVICE_ID);
1021     EXPECT_EQ(DEVICE_ID, element1.GetDeviceID());
1022 
1023     element1.SetBundleName(BUNDLE_NAME);
1024     EXPECT_EQ(BUNDLE_NAME, element1.GetBundleName());
1025 
1026     element1.SetAbilityName(ABILITY_NAME);
1027     EXPECT_EQ(ABILITY_NAME, element1.GetAbilityName());
1028     EXPECT_EQ(DEVICE_ID + "/" + BUNDLE_NAME + "//" + ABILITY_NAME, element1.GetURI());
1029 
1030     ElementName element2(DEVICE_ID, BUNDLE_NAME, ABILITY_NAME);
1031     EXPECT_EQ(DEVICE_ID + "/" + BUNDLE_NAME + "//" + ABILITY_NAME, element2.GetURI());
1032 
1033     bool equal = (element2 == element1);
1034     EXPECT_TRUE(equal);
1035 
1036     Parcel parcel;
1037     parcel.WriteParcelable(&element1);
1038     std::unique_ptr<ElementName> newElement;
1039     newElement.reset(parcel.ReadParcelable<ElementName>());
1040     EXPECT_EQ(newElement->GetDeviceID(), element1.GetDeviceID());
1041     EXPECT_EQ(newElement->GetBundleName(), element1.GetBundleName());
1042     EXPECT_EQ(newElement->GetAbilityName(), element1.GetAbilityName());
1043 
1044     want.SetElement(element1);
1045     auto dataMgr = GetDataMgr();
1046     EXPECT_NE(dataMgr, nullptr);
1047     AbilityInfo abilityInfo;
1048     bool ret = dataMgr->QueryAbilityInfo(want, 0, 0, abilityInfo);
1049     EXPECT_FALSE(ret);
1050 }
1051 
1052 /**
1053  * @tc.number: GetApplicationInfo_0100
1054  * @tc.name: GetApplicationInfo
1055  * @tc.desc: 1. add info to the data manager
1056  *           2. query data then verify
1057  */
1058 HWTEST_F(BmsDataMgrTest, GetApplicationInfo_0100, Function | SmallTest | Level0)
1059 {
1060     InnerBundleUserInfo innerBundleUserInfo;
1061     innerBundleUserInfo.bundleName = BUNDLE_NAME;
1062     innerBundleUserInfo.bundleUserInfo.enabled = true;
1063     innerBundleUserInfo.bundleUserInfo.userId = USERID;
1064 
1065     InnerBundleInfo info1;
1066     BundleInfo bundleInfo1;
1067     bundleInfo1.name = BUNDLE_NAME;
1068     bundleInfo1.applicationInfo.name = APP_NAME;
1069     bundleInfo1.applicationInfo.bundleName = BUNDLE_NAME;
1070     ApplicationInfo applicationInfo1;
1071     applicationInfo1.name = BUNDLE_NAME;
1072     applicationInfo1.bundleName = BUNDLE_NAME;
1073     info1.SetBaseBundleInfo(bundleInfo1);
1074     info1.SetBaseApplicationInfo(applicationInfo1);
1075     info1.AddInnerBundleUserInfo(innerBundleUserInfo);
1076 
1077     auto dataMgr = GetDataMgr();
1078     EXPECT_NE(dataMgr, nullptr);
1079     dataMgr->AddUserId(USERID);
1080 
1081     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
1082     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info1);
1083 
1084     ApplicationInfo appInfo;
1085     bool ret3 = dataMgr->GetApplicationInfo(APP_NAME, ApplicationFlag::GET_BASIC_APPLICATION_INFO, USERID, appInfo);
1086     std::string name = appInfo.name;
1087     EXPECT_TRUE(ret1);
1088     EXPECT_TRUE(ret2);
1089     EXPECT_TRUE(ret3);
1090     EXPECT_EQ(name, APP_NAME);
1091     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
1092 }
1093 
1094 /**
1095  * @tc.number: GetApplicationInfo_0200
1096  * @tc.name: GetApplicationInfo
1097  * @tc.desc: 1. add info to the data manager
1098  *           2. query data then verify
1099  */
1100 HWTEST_F(BmsDataMgrTest, GetApplicationInfo_0200, Function | SmallTest | Level0)
1101 {
1102     ApplicationInfo appInfo;
1103     appInfo.name = APP_NAME;
1104     appInfo.bundleName = BUNDLE_NAME;
1105     appInfo.deviceId = DEVICE_ID;
1106 
1107     auto dataMgr = GetDataMgr();
1108     EXPECT_NE(dataMgr, nullptr);
1109     dataMgr->AddUserId(USERID);
1110 
1111     ApplicationInfo appInfo3;
1112     bool ret = dataMgr->GetApplicationInfo(BUNDLE_NAME, ApplicationFlag::GET_BASIC_APPLICATION_INFO, USERID, appInfo3);
1113     EXPECT_FALSE(ret);
1114 
1115     EXPECT_NE(appInfo.name, appInfo3.name);
1116     EXPECT_NE(appInfo.bundleName, appInfo3.bundleName);
1117     EXPECT_NE(appInfo.deviceId, appInfo3.deviceId);
1118 }
1119 
1120 /**
1121  * @tc.number: BundleStateStorage_0100
1122  * @tc.name: Test DeleteBundleState, a param is error
1123  * @tc.desc: 1.Test the DeleteBundleState of BundleStateStorage
1124 */
1125 HWTEST_F(BmsDataMgrTest, BundleStateStorage_0100, Function | SmallTest | Level0)
1126 {
1127     BundleStateStorage bundleStateStorage;
1128     bool ret = bundleStateStorage.DeleteBundleState("", USERID);
1129     EXPECT_EQ(ret, false);
1130     ret = bundleStateStorage.DeleteBundleState(BUNDLE_NAME, -1);
1131     EXPECT_EQ(ret, false);
1132 }
1133 
1134 /**
1135  * @tc.number: BundleStateStorage_0200
1136  * @tc.name: Test GetBundleStateStorage, a param is error
1137  * @tc.desc: 1.Test the GetBundleStateStorage of BundleStateStorage
1138 */
1139 HWTEST_F(BmsDataMgrTest, BundleStateStorage_0200, Function | SmallTest | Level0)
1140 {
1141     BundleStateStorage bundleStateStorage;
1142     BundleUserInfo bundleUserInfo;
1143     bundleStateStorage.GetBundleStateStorage(BUNDLE_NAME, USERID, bundleUserInfo);
1144     bool ret = bundleStateStorage.GetBundleStateStorage(
1145         "", USERID, bundleUserInfo);
1146     EXPECT_EQ(ret, false);
1147     ret = bundleStateStorage.GetBundleStateStorage(
1148         BUNDLE_NAME, -1, bundleUserInfo);
1149     EXPECT_EQ(ret, false);
1150 }
1151 
1152 /**
1153  * @tc.number: AbilityManager_0100
1154  * @tc.name: Test GetBundleStateStorage, a param is error
1155  * @tc.desc: 1.Test the GetBundleStateStorage of BundleStateStorage
1156 */
1157 HWTEST_F(BmsDataMgrTest, AbilityManager_0100, Function | SmallTest | Level0)
1158 {
1159 #ifdef BUNDLE_FRAMEWORK_FREE_INSTALL
1160     int bundleUid = -1;
1161     int ret = AbilityManagerHelper::IsRunning("", bundleUid);
1162     EXPECT_EQ(ret, -1);
1163     bool res = AbilityManagerHelper::UninstallApplicationProcesses("", 0);
1164     EXPECT_EQ(res, true);
1165 #endif
1166 }
1167 
1168 /**
1169  * @tc.number: AbilityManager_0200
1170  * @tc.name: test IsRunning
1171  * @tc.desc: 1.test IsRunning of AbilityManagerHelper
1172  */
1173 HWTEST_F(BmsDataMgrTest, AbilityManager_0200, Function | SmallTest | Level0)
1174 {
1175     AbilityManagerHelper helper;
1176     int failed = -1;
1177     int ret = helper.IsRunning("");
1178     EXPECT_EQ(ret, failed);
1179     ret = helper.IsRunning("com.ohos.tes1");
1180     EXPECT_EQ(ret, failed);
1181 }
1182 
1183 #ifdef BUNDLE_FRAMEWORK_FREE_INSTALL
1184 /**
1185  * @tc.number: GetFreeInstallModules_0100
1186  * @tc.name: test GetFreeInstallModules
1187  * @tc.desc: 1.test GetFreeInstallModules of BundleDataMgr
1188  */
1189 HWTEST_F(BmsDataMgrTest, GetFreeInstallModules_0100, Function | SmallTest | Level0)
1190 {
1191     auto dataMgr = GetDataMgr();
1192     EXPECT_NE(dataMgr, nullptr);
1193     dataMgr->bundleInfos_.clear();
1194     std::map<std::string, std::vector<std::string>> freeInstallModules;
1195     bool ret = dataMgr->GetFreeInstallModules(freeInstallModules);
1196     EXPECT_EQ(ret, false);
1197     InnerBundleInfo info1;
1198     dataMgr->bundleInfos_.try_emplace("com.ohos.tes1", info1);
1199     ret = dataMgr->GetFreeInstallModules(freeInstallModules);
1200     EXPECT_EQ(ret, false);
1201     freeInstallModules.clear();
1202     InnerBundleInfo info2;
1203     std::map<std::string, InnerModuleInfo> innerModuleInfos;
1204     InnerModuleInfo innerModuleInfo;
1205     innerModuleInfo.installationFree = true;
1206     innerModuleInfo.moduleName = "entry";
1207     innerModuleInfos.try_emplace("module", innerModuleInfo);
1208     info2.innerModuleInfos_ = innerModuleInfos;
1209     dataMgr->bundleInfos_.try_emplace("com.ohos.tes2", info2);
1210     ret = dataMgr->GetFreeInstallModules(freeInstallModules);
1211     EXPECT_EQ(ret, true);
1212 }
1213 #endif
1214 
1215 /**
1216  * @tc.number: InnerBundleInfo_0100
1217  * @tc.name: Test GetBundleStateStorage, a param is error
1218  * @tc.desc: 1.Test the GetBundleStateStorage of BundleStateStorage
1219 */
1220 HWTEST_F(BmsDataMgrTest, InnerBundleInfo_0100, Function | SmallTest | Level0)
1221 {
1222     InnerBundleInfo innerBundleInfo;
1223     InnerBundleInfo newInfo;
1224     bool res = innerBundleInfo.AddModuleInfo(newInfo);
1225     EXPECT_EQ(res, false);
1226 }
1227 
1228 /**
1229  * @tc.number: UpdateInnerBundleInfo_0001
1230  * @tc.name: UpdateInnerBundleInfo
1231  * @tc.desc: UpdateInnerBundleInfo, bundleName is empty
1232  */
1233 HWTEST_F(BmsDataMgrTest, UpdateInnerBundleInfo_0001, Function | SmallTest | Level0)
1234 {
1235     auto dataMgr = GetDataMgr();
1236     EXPECT_NE(dataMgr, nullptr);
1237     if (dataMgr != nullptr) {
1238         InnerBundleInfo info;
1239         bool ret = dataMgr->UpdateInnerBundleInfo(info);
1240         EXPECT_FALSE(ret);
1241     }
1242 }
1243 
1244 /**
1245  * @tc.number: UpdateInnerBundleInfo_0002
1246  * @tc.name: UpdateInnerBundleInfo
1247  * @tc.desc: UpdateInnerBundleInfo, bundleInfos_ is empty
1248  */
1249 HWTEST_F(BmsDataMgrTest, UpdateInnerBundleInfo_0002, Function | SmallTest | Level0)
1250 {
1251     auto dataMgr = GetDataMgr();
1252     EXPECT_NE(dataMgr, nullptr);
1253     if (dataMgr != nullptr) {
1254         ApplicationInfo applicationInfo;
1255         applicationInfo.bundleName = BUNDLE_NAME;
1256         InnerBundleInfo info;
1257         info.SetBaseApplicationInfo(applicationInfo);
1258         bool ret = dataMgr->UpdateInnerBundleInfo(info);
1259         EXPECT_FALSE(ret);
1260     }
1261 }
1262 
1263 /**
1264  * @tc.number: UpdateInnerBundleInfo_0003
1265  * @tc.name: UpdateInnerBundleInfo
1266  * @tc.desc: 1. add info to the data manager
1267  *           2. UpdateInnerBundleInfo, bundleInfos_ is not empty
1268  */
1269 HWTEST_F(BmsDataMgrTest, UpdateInnerBundleInfo_0003, Function | SmallTest | Level0)
1270 {
1271     auto dataMgr = GetDataMgr();
1272     EXPECT_NE(dataMgr, nullptr);
1273     if (dataMgr != nullptr) {
1274         BundleInfo bundleInfo;
1275         bundleInfo.name = BUNDLE_NAME;
1276         bundleInfo.applicationInfo.name = APP_NAME;
1277         ApplicationInfo applicationInfo;
1278         applicationInfo.name = BUNDLE_NAME;
1279         applicationInfo.deviceId = DEVICE_ID;
1280         applicationInfo.bundleName = BUNDLE_NAME;
1281         InnerBundleInfo info;
1282         info.SetBaseBundleInfo(bundleInfo);
1283         info.SetBaseApplicationInfo(applicationInfo);
1284         bool ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
1285         EXPECT_TRUE(ret);
1286         ret = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
1287         EXPECT_TRUE(ret);
1288         ret = dataMgr->UpdateInnerBundleInfo(info);
1289         EXPECT_TRUE(ret);
1290         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
1291         EXPECT_TRUE(ret);
1292     }
1293 }
1294 
1295 /**
1296  * @tc.number: UpdateInnerBundleInfo_0004
1297  * @tc.name: UpdateInnerBundleInfo
1298  * @tc.desc: 1. add info to the data manager
1299  *           2. UpdateInnerBundleInfo
1300  */
1301 HWTEST_F(BmsDataMgrTest, UpdateInnerBundleInfo_0004, Function | SmallTest | Level0)
1302 {
1303     auto dataMgr = GetDataMgr();
1304     EXPECT_NE(dataMgr, nullptr);
1305     if (dataMgr != nullptr) {
1306         BundleInfo bundleInfo;
1307         bundleInfo.name = BUNDLE_NAME;
1308         bundleInfo.applicationInfo.name = APP_NAME;
1309         ApplicationInfo applicationInfo;
1310         applicationInfo.name = BUNDLE_NAME;
1311         applicationInfo.deviceId = DEVICE_ID;
1312         applicationInfo.bundleName = BUNDLE_NAME;
1313         applicationInfo.needAppDetail = false;
1314         InnerBundleInfo info;
1315         info.SetBaseBundleInfo(bundleInfo);
1316         info.SetBaseApplicationInfo(applicationInfo);
1317         bool ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
1318         EXPECT_TRUE(ret);
1319         ret = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
1320         EXPECT_TRUE(ret);
1321         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
1322         EXPECT_TRUE(ret);
1323         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_SUCCESS);
1324         EXPECT_TRUE(ret);
1325         ret = dataMgr->UpdateInnerBundleInfo(BUNDLE_NAME, info, info);
1326         EXPECT_TRUE(ret);
1327         InnerBundleInfo newInfo = info;
1328         applicationInfo.needAppDetail = true;
1329         newInfo.SetBaseApplicationInfo(applicationInfo);
1330         ret = dataMgr->UpdateInnerBundleInfo(BUNDLE_NAME, newInfo, info);
1331         EXPECT_TRUE(ret);
1332         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
1333         EXPECT_TRUE(ret);
1334     }
1335 }
1336 
1337 /**
1338  * @tc.number: UpdateInnerBundleInfo_0005
1339  * @tc.name: UpdateInnerBundleInfo
1340  * @tc.desc: 1. add info to the data manager
1341  *           2. UpdateInnerBundleInfo
1342  */
1343 HWTEST_F(BmsDataMgrTest, UpdateInnerBundleInfo_0005, Function | SmallTest | Level0)
1344 {
1345     auto dataMgr = GetDataMgr();
1346     EXPECT_NE(dataMgr, nullptr);
1347     if (dataMgr != nullptr) {
1348         BundleInfo bundleInfo;
1349         bundleInfo.name = BUNDLE_NAME;
1350         bundleInfo.applicationInfo.name = APP_NAME;
1351         ApplicationInfo applicationInfo;
1352         applicationInfo.name = BUNDLE_NAME;
1353         applicationInfo.deviceId = DEVICE_ID;
1354         applicationInfo.bundleName = BUNDLE_NAME;
1355         applicationInfo.needAppDetail = true;
1356         InnerBundleInfo info;
1357         info.SetBaseBundleInfo(bundleInfo);
1358         info.SetBaseApplicationInfo(applicationInfo);
1359         bool ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
1360         EXPECT_TRUE(ret);
1361         ret = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
1362         EXPECT_TRUE(ret);
1363         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
1364         EXPECT_TRUE(ret);
1365         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_SUCCESS);
1366         EXPECT_TRUE(ret);
1367         ret = dataMgr->UpdateInnerBundleInfo(BUNDLE_NAME, info, info);
1368         EXPECT_TRUE(ret);
1369         InnerBundleInfo newInfo = info;
1370         applicationInfo.needAppDetail = false;
1371         newInfo.SetBaseApplicationInfo(applicationInfo);
1372         ret = dataMgr->UpdateInnerBundleInfo(BUNDLE_NAME, newInfo, info);
1373         EXPECT_TRUE(ret);
1374         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
1375         EXPECT_TRUE(ret);
1376     }
1377 }
1378 
1379 /**
1380  * @tc.number: UpdateInnerBundleInfo_0006
1381  * @tc.name: UpdateInnerBundleInfo
1382  * @tc.desc: 1. add info to the data manager
1383  *           2. UpdateInnerBundleInfo
1384  */
1385 HWTEST_F(BmsDataMgrTest, UpdateInnerBundleInfo_0006, Function | SmallTest | Level0)
1386 {
1387     auto dataMgr = GetDataMgr();
1388     EXPECT_NE(dataMgr, nullptr);
1389     if (dataMgr != nullptr) {
1390         BundleInfo bundleInfo;
1391         bundleInfo.name = BUNDLE_NAME;
1392         bundleInfo.applicationInfo.name = APP_NAME;
1393         ApplicationInfo applicationInfo;
1394         applicationInfo.name = BUNDLE_NAME;
1395         applicationInfo.deviceId = DEVICE_ID;
1396         applicationInfo.bundleName = BUNDLE_NAME;
1397         InnerBundleInfo info;
1398         info.SetBaseBundleInfo(bundleInfo);
1399         info.SetBaseApplicationInfo(applicationInfo);
1400         bool ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
1401         EXPECT_TRUE(ret);
1402         ret = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
1403         EXPECT_TRUE(ret);
1404         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_START);
1405         EXPECT_TRUE(ret);
1406         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UPDATING_SUCCESS);
1407         EXPECT_TRUE(ret);
1408         InnerBundleInfo newInfo = info;
1409         newInfo.baseApplicationInfo_->multiAppMode.multiAppModeType = MultiAppModeType::MULTI_INSTANCE;
1410         newInfo.baseApplicationInfo_->multiAppMode.maxCount = 100;
1411         newInfo.baseApplicationInfo_->multiProjects = true;
1412         ret = dataMgr->UpdateInnerBundleInfo(BUNDLE_NAME, newInfo, info);
1413         EXPECT_TRUE(ret);
1414         EXPECT_EQ(info.baseApplicationInfo_->multiAppMode.multiAppModeType,
1415             newInfo.baseApplicationInfo_->multiAppMode.multiAppModeType);
1416         EXPECT_EQ(info.baseApplicationInfo_->multiAppMode.maxCount,
1417             newInfo.baseApplicationInfo_->multiAppMode.maxCount);
1418         EXPECT_EQ(info.baseApplicationInfo_->multiProjects, newInfo.baseApplicationInfo_->multiProjects);
1419         ret = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
1420         EXPECT_TRUE(ret);
1421     }
1422 }
1423 
1424 /**
1425  * @tc.number: AddInnerBundleInfo_0001
1426  * @tc.name: AddInnerBundleInfo
1427  * @tc.desc: AddInnerBundleInfo, needAppDetail is true
1428  */
1429 HWTEST_F(BmsDataMgrTest, AddInnerBundleInfo_0001, Function | SmallTest | Level0)
1430 {
1431     InnerBundleInfo info;
1432     BundleInfo bundleInfo;
1433     bundleInfo.name = BUNDLE_NAME;
1434     bundleInfo.applicationInfo.name = APP_NAME;
1435     ApplicationInfo applicationInfo;
1436     applicationInfo.name = BUNDLE_NAME;
1437     applicationInfo.bundleName = BUNDLE_NAME;
1438     applicationInfo.needAppDetail = true;
1439     info.SetBaseBundleInfo(bundleInfo);
1440     info.SetBaseApplicationInfo(applicationInfo);
1441     auto dataMgr = GetDataMgr();
1442     EXPECT_NE(dataMgr, nullptr);
1443     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
1444     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
1445     EXPECT_TRUE(ret1);
1446     EXPECT_TRUE(ret2);
1447 
1448     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
1449 }
1450 
1451 /**
1452  * @tc.number: AddInnerBundleInfo_0002
1453  * @tc.name: AddInnerBundleInfo
1454  * @tc.desc: AddInnerBundleInfo, needAppDetail is false
1455  */
1456 HWTEST_F(BmsDataMgrTest, AddInnerBundleInfo_0002, Function | SmallTest | Level0)
1457 {
1458     InnerBundleInfo info;
1459     BundleInfo bundleInfo;
1460     bundleInfo.name = BUNDLE_NAME;
1461     bundleInfo.applicationInfo.name = APP_NAME;
1462     ApplicationInfo applicationInfo;
1463     applicationInfo.name = BUNDLE_NAME;
1464     applicationInfo.bundleName = BUNDLE_NAME;
1465     applicationInfo.needAppDetail = false;
1466     info.SetBaseBundleInfo(bundleInfo);
1467     info.SetBaseApplicationInfo(applicationInfo);
1468     auto dataMgr = GetDataMgr();
1469     EXPECT_NE(dataMgr, nullptr);
1470     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
1471     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
1472     EXPECT_TRUE(ret1);
1473     EXPECT_TRUE(ret2);
1474 
1475     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
1476 }
1477 
1478 /**
1479  * @tc.number: AddInnerBundleInfo_0003
1480  * @tc.name: AddInnerBundleInfo
1481  * @tc.desc: AddInnerBundleInfo, needAppDetail is false
1482  */
1483 HWTEST_F(BmsDataMgrTest, AddInnerBundleInfo_0003, Function | SmallTest | Level0)
1484 {
1485     InnerBundleInfo info;
1486     BundleInfo bundleInfo;
1487     bundleInfo.name = BUNDLE_NAME;
1488     bundleInfo.applicationInfo.name = APP_NAME;
1489     ApplicationInfo applicationInfo;
1490     applicationInfo.name = BUNDLE_NAME;
1491     applicationInfo.bundleName = BUNDLE_NAME;
1492     applicationInfo.needAppDetail = false;
1493     info.SetBaseBundleInfo(bundleInfo);
1494     info.SetBaseApplicationInfo(applicationInfo);
1495     auto dataMgr = GetDataMgr();
1496     EXPECT_NE(dataMgr, nullptr);
1497     bool ret1 = dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::INSTALL_START);
1498     bool ret2 = dataMgr->AddInnerBundleInfo(BUNDLE_NAME, info);
1499     EXPECT_TRUE(ret1);
1500     EXPECT_TRUE(ret2);
1501 
1502     dataMgr->UpdateBundleInstallState(BUNDLE_NAME, InstallState::UNINSTALL_START);
1503 }
1504 
1505 /**
1506  * @tc.number: GetMatchLauncherAbilityInfos_0001
1507  * @tc.name: GetMatchLauncherAbilityInfos
1508  * @tc.desc: GetMatchLauncherAbilityInfos, needAppDetail is false
1509  */
1510 HWTEST_F(BmsDataMgrTest, GetMatchLauncherAbilityInfos_0001, Function | SmallTest | Level0)
1511 {
1512     InnerBundleInfo innerBundleInfo;
1513     BundleInfo bundleInfo;
1514     bundleInfo.name = BUNDLE_NAME;
1515     ApplicationInfo applicationInfo;
1516     applicationInfo.name = BUNDLE_NAME;
1517     applicationInfo.needAppDetail = false;
1518     innerBundleInfo.SetBaseBundleInfo(bundleInfo);
1519     innerBundleInfo.SetBaseApplicationInfo(applicationInfo);
1520 
1521     BundleUserInfo userInfo;
1522     userInfo.userId = 100;
1523     InnerBundleUserInfo innerBundleUserInfo;
1524     innerBundleUserInfo.bundleUserInfo = userInfo;
1525     innerBundleInfo.AddInnerBundleUserInfo(innerBundleUserInfo);
1526 
1527     Skill skill;
1528     skill.actions = {ACTION};
1529     skill.entities = {ENTITY};
1530     std::vector<Skill> skills;
1531     skills.emplace_back(skill);
1532     innerBundleInfo.InsertSkillInfo(BUNDLE_NAME, skills);
1533     AbilityInfo abilityInfo;
1534     abilityInfo.name = BUNDLE_NAME;
1535     abilityInfo.type = AbilityType::PAGE;
1536     innerBundleInfo.InsertAbilitiesInfo(BUNDLE_NAME, abilityInfo);
1537     InnerModuleInfo moduleInfo;
1538     moduleInfo.entryAbilityKey = BUNDLE_NAME;
1539     moduleInfo.isEntry = true;
1540     innerBundleInfo.innerModuleInfos_.try_emplace(BUNDLE_NAME, moduleInfo);
1541 
1542     auto dataMgr = GetDataMgr();
1543     EXPECT_NE(dataMgr, nullptr);
1544     OHOS::AAFwk::Want want;
1545     want.SetAction(OHOS::AAFwk::Want::ACTION_HOME);
1546     want.AddEntity(OHOS::AAFwk::Want::ENTITY_HOME);
1547     std::vector<AbilityInfo> abilityInfos;
1548     int64_t installTime = 0;
1549     dataMgr->GetMatchLauncherAbilityInfos(want, innerBundleInfo, abilityInfos, installTime, Constants::ANY_USERID);
1550     EXPECT_FALSE(abilityInfos.empty());
1551 
1552     applicationInfo.needAppDetail = true;
1553     innerBundleInfo.SetBaseApplicationInfo(applicationInfo);
1554     dataMgr->GetMatchLauncherAbilityInfos(want, innerBundleInfo, abilityInfos, installTime, Constants::ANY_USERID);
1555     EXPECT_FALSE(abilityInfos.empty());
1556 }
1557 
1558 /**
1559  * @tc.number: GetMatchLauncherAbilityInfos_0002
1560  * @tc.name: GetMatchLauncherAbilityInfos
1561  * @tc.desc: GetMatchLauncherAbilityInfos, needAppDetail is true
1562  */
1563 HWTEST_F(BmsDataMgrTest, GetMatchLauncherAbilityInfos_0002, Function | SmallTest | Level0)
1564 {
1565     InnerBundleInfo innerBundleInfo;
1566     BundleInfo bundleInfo;
1567     bundleInfo.name = BUNDLE_NAME;
1568     ApplicationInfo applicationInfo;
1569     applicationInfo.name = BUNDLE_NAME;
1570     applicationInfo.needAppDetail = false;
1571     innerBundleInfo.SetBaseBundleInfo(bundleInfo);
1572     innerBundleInfo.SetBaseApplicationInfo(applicationInfo);
1573 
1574     BundleUserInfo userInfo;
1575     userInfo.userId = 100;
1576     InnerBundleUserInfo innerBundleUserInfo;
1577     innerBundleUserInfo.bundleUserInfo = userInfo;
1578     innerBundleInfo.AddInnerBundleUserInfo(innerBundleUserInfo);
1579 
1580     auto dataMgr = GetDataMgr();
1581     EXPECT_NE(dataMgr, nullptr);
1582     OHOS::AAFwk::Want want;
1583     want.SetAction(OHOS::AAFwk::Want::ACTION_HOME);
1584     want.AddEntity(OHOS::AAFwk::Want::ENTITY_HOME);
1585     std::vector<AbilityInfo> abilityInfos;
1586     int64_t installTime = 0;
1587     dataMgr->GetMatchLauncherAbilityInfos(want, innerBundleInfo, abilityInfos, installTime, Constants::ANY_USERID);
1588     EXPECT_TRUE(abilityInfos.empty());
1589 
1590     applicationInfo.needAppDetail = true;
1591     innerBundleInfo.SetBaseApplicationInfo(applicationInfo);
1592     dataMgr->GetMatchLauncherAbilityInfos(want, innerBundleInfo, abilityInfos, installTime, Constants::ANY_USERID);
1593     EXPECT_TRUE(abilityInfos.empty());
1594 
1595     AbilityInfo abilityInfo;
1596     abilityInfo.name = ServiceConstants::APP_DETAIL_ABILITY;
1597     innerBundleInfo.InsertAbilitiesInfo(BUNDLE_NAME, abilityInfo);
1598     dataMgr->GetMatchLauncherAbilityInfos(want, innerBundleInfo, abilityInfos, installTime, Constants::ANY_USERID);
1599     EXPECT_FALSE(abilityInfos.empty());
1600 
1601     abilityInfos.clear();
1602     innerBundleInfo.SetIsNewVersion(true);
1603     dataMgr->GetMatchLauncherAbilityInfos(want, innerBundleInfo, abilityInfos, installTime, Constants::ANY_USERID);
1604     EXPECT_FALSE(abilityInfos.empty());
1605 }
1606 
1607 /**
1608  * @tc.number: AddAppDetailAbilityInfo_0001
1609  * @tc.name: AddAppDetailAbilityInfo
1610  * @tc.desc: AddAppDetailAbilityInfo, needAppDetail is true
1611  */
1612 HWTEST_F(BmsDataMgrTest, AddAppDetailAbilityInfo_0001, Function | SmallTest | Level0)
1613 {
1614     ApplicationInfo applicationInfo;
1615     applicationInfo.name = BUNDLE_NAME;
1616     applicationInfo.bundleName = BUNDLE_NAME;
1617     applicationInfo.iconId = 1;
1618     InnerBundleInfo innerBundleInfo;
1619     innerBundleInfo.SetBaseApplicationInfo(applicationInfo);
1620 
1621     auto dataMgr = GetDataMgr();
1622     EXPECT_NE(dataMgr, nullptr);
1623     dataMgr->AddAppDetailAbilityInfo(innerBundleInfo);
1624     auto ability = innerBundleInfo.FindAbilityInfo(Constants::EMPTY_STRING,
1625         ServiceConstants::APP_DETAIL_ABILITY, USERID);
1626     if (ability) {
1627         EXPECT_EQ(ability->name, ServiceConstants::APP_DETAIL_ABILITY);
1628     }
1629 
1630     InnerModuleInfo innerModuleInfo;
1631     innerModuleInfo.name = BUNDLE_NAME;
1632     innerModuleInfo.moduleName = BUNDLE_NAME;
1633     innerBundleInfo.InsertInnerModuleInfo(BUNDLE_NAME, innerModuleInfo);
1634     applicationInfo.iconId = 0;
1635     innerBundleInfo.SetBaseApplicationInfo(applicationInfo);
1636     innerBundleInfo.SetCurrentModulePackage(BUNDLE_NAME);
1637     innerBundleInfo.SetIsNewVersion(true);
1638     dataMgr->AddAppDetailAbilityInfo(innerBundleInfo);
1639 
1640     ability = innerBundleInfo.FindAbilityInfo(BUNDLE_NAME, ServiceConstants::APP_DETAIL_ABILITY, USERID);
1641     if (ability) {
1642         EXPECT_EQ(ability->name, ServiceConstants::APP_DETAIL_ABILITY);
1643     }
1644 }
1645 
1646 /**
1647  * @tc.number: ModifyLauncherAbilityInfo_0001
1648  * @tc.name: ModifyLauncherAbilityInfo
1649  * @tc.desc: 1. ModifyLauncherAbilityInfo, labelId is equal 0
1650  *           2. stage mode
1651  */
1652 HWTEST_F(BmsDataMgrTest, ModifyLauncherAbilityInfo_0001, Function | SmallTest | Level0)
1653 {
1654     auto dataMgr = GetDataMgr();
1655     EXPECT_NE(dataMgr, nullptr);
1656     if (dataMgr) {
1657         AbilityInfo abilityInfo;
1658         abilityInfo.applicationInfo.label = "$string:label";
1659         abilityInfo.applicationInfo.labelId = 1111;
1660         abilityInfo.label = "";
1661         abilityInfo.labelId = 0;
1662         dataMgr->ModifyLauncherAbilityInfo(true, abilityInfo);
1663         EXPECT_EQ(abilityInfo.label, abilityInfo.applicationInfo.label);
1664         EXPECT_EQ(abilityInfo.labelId, abilityInfo.applicationInfo.labelId);
1665     }
1666 }
1667 
1668 /**
1669  * @tc.number: ModifyLauncherAbilityInfo_0002
1670  * @tc.name: ModifyLauncherAbilityInfo
1671  * @tc.desc: 1. ModifyLauncherAbilityInfo, labelId is not equal 0
1672  *           2. stage mode
1673  */
1674 HWTEST_F(BmsDataMgrTest, ModifyLauncherAbilityInfo_0002, Function | SmallTest | Level0)
1675 {
1676     auto dataMgr = GetDataMgr();
1677     EXPECT_NE(dataMgr, nullptr);
1678     if (dataMgr) {
1679         AbilityInfo abilityInfo;
1680         abilityInfo.applicationInfo.label = "$string:label";
1681         abilityInfo.applicationInfo.labelId = 1111;
1682         abilityInfo.label = "#string:aaa";
1683         abilityInfo.labelId = 2222;
1684         dataMgr->ModifyLauncherAbilityInfo(true, abilityInfo);
1685         EXPECT_NE(abilityInfo.label, abilityInfo.applicationInfo.label);
1686         EXPECT_NE(abilityInfo.labelId, abilityInfo.applicationInfo.labelId);
1687     }
1688 }
1689 
1690 /**
1691  * @tc.number: ModifyLauncherAbilityInfo_0003
1692  * @tc.name: ModifyLauncherAbilityInfo
1693  * @tc.desc: 1. ModifyLauncherAbilityInfo, labelId is equal 0
1694  *           2. FA mode
1695  */
1696 HWTEST_F(BmsDataMgrTest, ModifyLauncherAbilityInfo_0003, Function | SmallTest | Level0)
1697 {
1698     auto dataMgr = GetDataMgr();
1699     EXPECT_NE(dataMgr, nullptr);
1700     if (dataMgr) {
1701         AbilityInfo abilityInfo;
1702         abilityInfo.bundleName = "test";
1703         abilityInfo.applicationInfo.label = "$string:label";
1704         abilityInfo.applicationInfo.labelId = 1111;
1705         abilityInfo.label = "";
1706         abilityInfo.labelId = 0;
1707         dataMgr->ModifyLauncherAbilityInfo(false, abilityInfo);
1708         EXPECT_EQ(abilityInfo.applicationInfo.label, abilityInfo.bundleName);
1709         EXPECT_EQ(abilityInfo.label, abilityInfo.bundleName);
1710     }
1711 }
1712 
1713 /**
1714  * @tc.number: ModifyLauncherAbilityInfo_0004
1715  * @tc.name: ModifyLauncherAbilityInfo
1716  * @tc.desc: 1. ModifyLauncherAbilityInfo, labelId is not equal 0
1717  *           2. FA mode
1718  */
1719 HWTEST_F(BmsDataMgrTest, ModifyLauncherAbilityInfo_0004, Function | SmallTest | Level0)
1720 {
1721     auto dataMgr = GetDataMgr();
1722     EXPECT_NE(dataMgr, nullptr);
1723     if (dataMgr) {
1724         AbilityInfo abilityInfo;
1725         abilityInfo.applicationInfo.label = "$string:label";
1726         abilityInfo.applicationInfo.labelId = 1111;
1727         abilityInfo.label = "#string:aaa";
1728         abilityInfo.labelId = 2222;
1729         dataMgr->ModifyLauncherAbilityInfo(false, abilityInfo);
1730         EXPECT_NE(abilityInfo.label, abilityInfo.applicationInfo.label);
1731         EXPECT_NE(abilityInfo.labelId, abilityInfo.applicationInfo.labelId);
1732     }
1733 }
1734 
1735 /**
1736  * @tc.number: ModifyLauncherAbilityInfo_0005
1737  * @tc.name: ModifyLauncherAbilityInfo
1738  * @tc.desc: 1. ModifyLauncherAbilityInfo, iconId is equal 0
1739  *           2. stage mode
1740  */
1741 HWTEST_F(BmsDataMgrTest, ModifyLauncherAbilityInfo_0005, Function | SmallTest | Level0)
1742 {
1743     auto dataMgr = GetDataMgr();
1744     EXPECT_NE(dataMgr, nullptr);
1745     if (dataMgr) {
1746         AbilityInfo abilityInfo;
1747         abilityInfo.iconId = 0;
1748         abilityInfo.applicationInfo.iconId = 1111;
1749 
1750         dataMgr->ModifyLauncherAbilityInfo(true, abilityInfo);
1751         EXPECT_EQ(abilityInfo.iconId, abilityInfo.applicationInfo.iconId);
1752     }
1753 }
1754 
1755 /**
1756  * @tc.number: ModifyLauncherAbilityInfo_0006
1757  * @tc.name: ModifyLauncherAbilityInfo
1758  * @tc.desc: 1. ModifyLauncherAbilityInfo, iconId is not equal 0
1759  *           2. stage mode
1760  */
1761 HWTEST_F(BmsDataMgrTest, ModifyLauncherAbilityInfo_0006, Function | SmallTest | Level0)
1762 {
1763     auto dataMgr = GetDataMgr();
1764     EXPECT_NE(dataMgr, nullptr);
1765     if (dataMgr) {
1766         AbilityInfo abilityInfo;
1767         abilityInfo.iconId = 2222;
1768         dataMgr->ModifyLauncherAbilityInfo(true, abilityInfo);
1769         EXPECT_EQ(abilityInfo.iconId, abilityInfo.iconId);
1770     }
1771 }
1772 
1773 /**
1774  * @tc.number: ModifyLauncherAbilityInfo_0007
1775  * @tc.name: ModifyLauncherAbilityInfo
1776  * @tc.desc: 1. ModifyLauncherAbilityInfo, iconId is equal 0
1777  *           2. FA mode
1778  */
1779 HWTEST_F(BmsDataMgrTest, ModifyLauncherAbilityInfo_0007, Function | SmallTest | Level0)
1780 {
1781     auto dataMgr = GetDataMgr();
1782     EXPECT_NE(dataMgr, nullptr);
1783     if (dataMgr) {
1784         AbilityInfo abilityInfo;
1785         abilityInfo.iconId = 0;
1786 
1787         ApplicationInfo applicationInfo;
1788         applicationInfo.iconId = 222;
1789         abilityInfo.applicationInfo = applicationInfo;
1790 
1791         dataMgr->ModifyLauncherAbilityInfo(false, abilityInfo);
1792         EXPECT_EQ(abilityInfo.iconId, applicationInfo.iconId);
1793     }
1794 }
1795 
1796 /**
1797  * @tc.number: ModifyLauncherAbilityInfo_0008
1798  * @tc.name: ModifyLauncherAbilityInfo
1799  * @tc.desc: 1. ModifyLauncherAbilityInfo, iconId is not equal 0
1800  *           2. FA mode
1801  */
1802 HWTEST_F(BmsDataMgrTest, ModifyLauncherAbilityInfo_0008, Function | SmallTest | Level0)
1803 {
1804     auto dataMgr = GetDataMgr();
1805     EXPECT_NE(dataMgr, nullptr);
1806     if (dataMgr) {
1807         AbilityInfo abilityInfo;
1808         abilityInfo.iconId = 2222;
1809         dataMgr->ModifyLauncherAbilityInfo(false, abilityInfo);
1810         EXPECT_EQ(abilityInfo.iconId, abilityInfo.iconId);
1811     }
1812 }
1813 
1814 /**
1815  * @tc.number: GetProxyDataInfos_0001
1816  * @tc.name: GetProxyDataInfos
1817  * @tc.desc: GetProxyDataInfos, return is true
1818  */
1819 HWTEST_F(BmsDataMgrTest, GetProxyDataInfos_0001, Function | SmallTest | Level0)
1820 {
1821     InnerBundleInfo innerBundleInfo;
1822 
1823     InnerModuleInfo innerModuleInfo;
1824     innerModuleInfo.moduleName = MODULE_NAME;
1825     innerBundleInfo.InsertInnerModuleInfo(BUNDLE_NAME, innerModuleInfo);
1826     std::vector<ProxyData> proxyDatas;
1827 
1828     auto res = innerBundleInfo.GetProxyDataInfos(EMPTY_STRING, proxyDatas);
1829     EXPECT_EQ(res, ERR_OK);
1830 }
1831 
1832 /**
1833  * @tc.number: GetProxyDataInfos_0002
1834  * @tc.name: GetProxyDataInfos
1835  * @tc.desc: GetProxyDataInfos, return is ERR_OK
1836  */
1837 HWTEST_F(BmsDataMgrTest, GetProxyDataInfos_0002, Function | SmallTest | Level0)
1838 {
1839     InnerBundleInfo innerBundleInfo;
1840     std::vector<ProxyData> proxyDatas;
1841     auto res = innerBundleInfo.GetProxyDataInfos(EMPTY_STRING, proxyDatas);
1842     EXPECT_EQ(res, ERR_OK);
1843 }
1844 
1845 /**
1846  * @tc.number: GetProxyDataInfos_0003
1847  * @tc.name: GetProxyDataInfos
1848  * @tc.desc: GetProxyDataInfos, return is ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST
1849  */
1850 HWTEST_F(BmsDataMgrTest, GetProxyDataInfos_0003, Function | SmallTest | Level0)
1851 {
1852     InnerBundleInfo innerBundleInfo;
1853 
1854     InnerModuleInfo innerModuleInfo;
1855     innerModuleInfo.moduleName = MODULE_NAME;
1856     innerBundleInfo.InsertInnerModuleInfo(BUNDLE_NAME, innerModuleInfo);
1857     std::vector<ProxyData> proxyDatas;
1858 
1859     auto res = innerBundleInfo.GetProxyDataInfos(BUNDLE_NAME, proxyDatas);
1860     EXPECT_EQ(res, ERR_BUNDLE_MANAGER_MODULE_NOT_EXIST);
1861 }
1862 
1863 /**
1864  * @tc.number: GetIsolationMode_0001
1865  * @tc.name: GetIsolationMode
1866  * @tc.desc: GetIsolationMode
1867  */
1868 HWTEST_F(BmsDataMgrTest, GetIsolationMode_0001, Function | SmallTest | Level0)
1869 {
1870     InnerBundleInfo innerBundleInfo;
1871     IsolationMode res = innerBundleInfo.GetIsolationMode("");
1872     EXPECT_EQ(res, IsolationMode::NONISOLATION_FIRST);
1873 }
1874 
1875 /**
1876  * @tc.number: GetIsolationMode_0002
1877  * @tc.name: GetIsolationMode
1878  * @tc.desc: GetIsolationMode
1879  */
1880 HWTEST_F(BmsDataMgrTest, GetIsolationMode_0002, Function | SmallTest | Level0)
1881 {
1882     InnerBundleInfo innerBundleInfo;
1883     IsolationMode res = innerBundleInfo.GetIsolationMode(ISOLATION_ONLY);
1884     EXPECT_EQ(res, IsolationMode::ISOLATION_ONLY);
1885 }
1886 
1887 /**
1888  * @tc.number: MatchPrivateType_0001
1889  * @tc.name: MatchPrivateType
1890  * @tc.desc: 1. MatchPrivateType
1891  */
1892 HWTEST_F(BmsDataMgrTest, MatchPrivateType_0001, Function | SmallTest | Level0)
1893 {
1894     auto dataMgr = GetDataMgr();
1895     EXPECT_NE(dataMgr, nullptr);
1896     Want want;
1897     want.SetUri("/test/test.book");
1898     std::vector<std::string> supportExtNames;
1899     supportExtNames.emplace_back("book");
1900     std::vector<std::string> supportMimeTypes;
1901     std::vector<std::string> mimeTypes;
1902     MimeTypeMgr::GetMimeTypeByUri(want.GetUriString(), mimeTypes);
1903     bool ret = dataMgr->MatchPrivateType(want, supportExtNames, supportMimeTypes, mimeTypes);
1904     EXPECT_TRUE(ret);
1905 }
1906 
1907 /**
1908  * @tc.number: MatchPrivateType_0002
1909  * @tc.name: MatchPrivateType
1910  * @tc.desc: 1. MatchPrivateType
1911  */
1912 HWTEST_F(BmsDataMgrTest, MatchPrivateType_0002, Function | SmallTest | Level0)
1913 {
1914     auto dataMgr = GetDataMgr();
1915     EXPECT_NE(dataMgr, nullptr);
1916     Want want;
1917     want.SetUri("/test/test.book");
1918     std::vector<std::string> supportExtNames;
1919     std::vector<std::string> supportMimeTypes;
1920     std::vector<std::string> mimeTypes;
1921     MimeTypeMgr::GetMimeTypeByUri(want.GetUriString(), mimeTypes);
1922     bool ret = dataMgr->MatchPrivateType(want, supportExtNames, supportMimeTypes, mimeTypes);
1923     EXPECT_FALSE(ret);
1924 }
1925 
1926 /**
1927  * @tc.number: MatchPrivateType_0003
1928  * @tc.name: MatchPrivateType
1929  * @tc.desc: 1. MatchPrivateType
1930  */
1931 HWTEST_F(BmsDataMgrTest, MatchPrivateType_0003, Function | SmallTest | Level0)
1932 {
1933     auto dataMgr = GetDataMgr();
1934     EXPECT_NE(dataMgr, nullptr);
1935     Want want;
1936     want.SetUri("/test/test");
1937     std::vector<std::string> supportExtNames;
1938     std::vector<std::string> supportMimeTypes;
1939     std::vector<std::string> mimeTypes;
1940     MimeTypeMgr::GetMimeTypeByUri(want.GetUriString(), mimeTypes);
1941     bool ret = dataMgr->MatchPrivateType(want, supportExtNames, supportMimeTypes, mimeTypes);
1942     EXPECT_FALSE(ret);
1943 }
1944 
1945 /**
1946  * @tc.number: MatchPrivateType_0004
1947  * @tc.name: MatchPrivateType
1948  * @tc.desc: 1. MatchPrivateType
1949  */
1950 HWTEST_F(BmsDataMgrTest, MatchPrivateType_0004, Function | SmallTest | Level0)
1951 {
1952     auto dataMgr = GetDataMgr();
1953     EXPECT_NE(dataMgr, nullptr);
1954     Want want;
1955     want.SetUri("/test/test.jpg");
1956     std::vector<std::string> supportExtNames;
1957     std::vector<std::string> supportMimeTypes;
1958     supportMimeTypes.emplace_back("image/jpeg");
1959     std::vector<std::string> mimeTypes;
1960     MimeTypeMgr::GetMimeTypeByUri(want.GetUriString(), mimeTypes);
1961     bool ret = dataMgr->MatchPrivateType(want, supportExtNames, supportMimeTypes, mimeTypes);
1962     EXPECT_TRUE(ret);
1963 }
1964 
1965 /**
1966  * @tc.number: MatchShare_0100
1967  * @tc.name: test MatchShare
1968  * @tc.desc: 1.test match share based on want and skill
1969  */
1970 HWTEST_F(BmsDataMgrTest, MatchShare_0100, Function | SmallTest | Level1)
1971 {
1972     auto dataMgr = GetDataMgr();
1973     ASSERT_NE(dataMgr, nullptr);
1974     AAFwk::Want want;
1975     want.SetAction(OHOS::AAFwk::Want::ACTION_HOME);
1976     want.AddEntity(OHOS::AAFwk::Want::ENTITY_HOME);
1977     want.SetElementName("", BUNDLE_NAME, "", MODULE_NAME);
1978     std::vector<Skill> skills;
1979     bool result = dataMgr->MatchShare(want, skills);
1980     EXPECT_EQ(result, false);
1981     want.SetAction(SHARE_ACTION_VALUE);
1982     result = dataMgr->MatchShare(want, skills);
1983     EXPECT_EQ(result, false);
1984     struct Skill skill;
1985     skills.emplace_back(skill);
1986     result = dataMgr->MatchShare(want, skills);
1987     EXPECT_EQ(result, false);
1988 }
1989 
1990 /**
1991  * @tc.number: MatchShare_0200
1992  * @tc.name: test MatchShare
1993  * @tc.desc: 1.test match share based on want and skill
1994  */
1995 HWTEST_F(BmsDataMgrTest, MatchShare_0200, Function | SmallTest | Level1)
1996 {
1997     std::vector<Skill> skills = CreateSkillsForMatchShareTest();
1998 
1999     std::map<std::string, int32_t> utds1 = {{"general.png", 2}};
2000     EXPECT_EQ(MatchShare(utds1, skills), true);
2001 
2002     std::map<std::string, int32_t> utds2 = {{"general.png", 3}};
2003     EXPECT_EQ(MatchShare(utds2, skills), true);
2004 
2005     std::map<std::string, int32_t> utds3 = {{"general.png", 4}};
2006     EXPECT_EQ(MatchShare(utds3, skills), false);
2007 
2008     std::map<std::string, int32_t> utds4 = {{"general.jpeg", 5}};
2009     EXPECT_EQ(MatchShare(utds4, skills), true);
2010 
2011     std::map<std::string, int32_t> utds5 = {{"general.jpeg", 6}};
2012     EXPECT_EQ(MatchShare(utds5, skills), true);
2013 
2014     std::map<std::string, int32_t> utds6 = {{"general.jpeg", 7}};
2015     EXPECT_EQ(MatchShare(utds6, skills), false);
2016 
2017     std::map<std::string, int32_t> utds7 = {{"general.png", 3}, {"general.image", 2}};
2018     EXPECT_EQ(MatchShare(utds7, skills), true);
2019 
2020     std::map<std::string, int32_t> utds8 = {{"general.png", 3}, {"general.image", 3}};
2021     EXPECT_EQ(MatchShare(utds8, skills), true);
2022 
2023     std::map<std::string, int32_t> utds9 = {{"general.png", 3}, {"general.image", 4}};
2024     EXPECT_EQ(MatchShare(utds9, skills), false);
2025 
2026     std::map<std::string, int32_t> utds10 = {{"general.png", 2}, {"general.image", 4}};
2027     EXPECT_EQ(MatchShare(utds10, skills), true);
2028 
2029     std::map<std::string, int32_t> utds11 = {{"general.png", 1}, {"general.image", 6}};
2030     EXPECT_EQ(MatchShare(utds11, skills), false);
2031 
2032     std::map<std::string, int32_t> utds12 = {{"general.image", 6}};
2033     EXPECT_EQ(MatchShare(utds12, skills), true);
2034 
2035     std::map<std::string, int32_t> utds13 = {{"general.media", 8}};
2036     EXPECT_EQ(MatchShare(utds13, skills), true);
2037 
2038     std::map<std::string, int32_t> utds14 = {{"general.media", 9}};
2039     EXPECT_EQ(MatchShare(utds14, skills), true);
2040 
2041     std::map<std::string, int32_t> utds15 = {{"general.media", 10}};
2042     EXPECT_EQ(MatchShare(utds15, skills), false);
2043 
2044     std::map<std::string, int32_t> utds16 = {{"general.png", 1}, {"general.media", 9}};
2045     EXPECT_EQ(MatchShare(utds16, skills), false);
2046 
2047     std::map<std::string, int32_t> utds17 = {{"general.png", 1}, {"general.media", 8}};
2048     EXPECT_EQ(MatchShare(utds17, skills), true);
2049 
2050     std::map<std::string, int32_t> utds18 = {{"general.image", 1}, {"general.media", 8}};
2051     EXPECT_EQ(MatchShare(utds18, skills), true);
2052 
2053     std::map<std::string, int32_t> utds19 = {{"general.png", 2}, {"general.image", 1}, {"general.media", 7}};
2054     EXPECT_EQ(MatchShare(utds19, skills), false);
2055 
2056     std::map<std::string, int32_t> utds20 = {{"general.png", 3}, {"general.image", 3}, {"general.media", 3}};
2057     EXPECT_EQ(MatchShare(utds20, skills), true);
2058 
2059     std::map<std::string, int32_t> utds21 = {{"general.png", 1}, {"general.image", 4}, {"general.media", 4}};
2060     EXPECT_EQ(MatchShare(utds21, skills), true);
2061 
2062     std::map<std::string, int32_t> utds22 = {{"general.jpeg", 9}};
2063     EXPECT_EQ(MatchShare(utds22, skills), false);
2064 
2065     std::map<std::string, int32_t> utds23 = {{"general.text", 3}};
2066     EXPECT_EQ(MatchShare(utds23, skills), false);
2067 }
2068 
2069 /**
2070  * @tc.number: MatchUtd_0100
2071  * @tc.name: test MatchUtd
2072  * @tc.desc: 1.test match utd
2073  */
2074 HWTEST_F(BmsDataMgrTest, MatchUtd_0100, Function | SmallTest | Level1)
2075 {
2076     auto dataMgr = GetDataMgr();
2077     ASSERT_NE(dataMgr, nullptr);
2078     struct Skill skill;
2079     std::string utd = "";
2080     int32_t count = 0;
2081     bool result = dataMgr->MatchUtd(skill, utd, count);
2082     EXPECT_EQ(result, false);
2083 
2084     SkillUri skillUri;
2085     skillUri.type = "image/*";
2086     skill.uris.emplace_back(skillUri);
2087     result = dataMgr->MatchUtd(skill, utd, count);
2088     EXPECT_EQ(result, false);
2089 }
2090 
2091 /**
2092  * @tc.number: MatchUtd_0200
2093  * @tc.name: test MatchUtd
2094  * @tc.desc: 1.test match utd without count
2095  */
2096 HWTEST_F(BmsDataMgrTest, MatchUtd_0200, Function | SmallTest | Level1)
2097 {
2098     auto dataMgr = GetDataMgr();
2099     ASSERT_NE(dataMgr, nullptr);
2100     std::string skillUtd = "";
2101     std::string wantUtd = "";
2102     bool result = dataMgr->MatchUtd(skillUtd, wantUtd);
2103     EXPECT_EQ(result, false);
2104 }
2105 
2106 /**
2107  * @tc.number: MatchTypeWithUtd_0100
2108  * @tc.name: test MatchTypeWithUtd
2109  * @tc.desc: 1.test match type with utd
2110  */
2111 HWTEST_F(BmsDataMgrTest, MatchTypeWithUtd_0100, Function | SmallTest | Level1)
2112 {
2113     auto dataMgr = GetDataMgr();
2114     ASSERT_NE(dataMgr, nullptr);
2115     struct Skill skill;
2116     std::string mimeType = "";
2117     std::string wantUtd = "";
2118     bool ret = dataMgr->MatchTypeWithUtd(wantUtd, mimeType);
2119     EXPECT_EQ(ret, false);
2120 }
2121 
2122 /**
2123  * @tc.number: FindSkillsContainShareAction_0200
2124  * @tc.name: test FindSkillsContainShareAction
2125  * @tc.desc: 1.test find skills that include sharing action
2126  */
2127 HWTEST_F(BmsDataMgrTest, FindSkillsContainShareAction_0200, Function | SmallTest | Level1)
2128 {
2129     auto dataMgr = GetDataMgr();
2130     ASSERT_NE(dataMgr, nullptr);
2131     std::vector<Skill> skills;
2132     auto result = dataMgr->FindSkillsContainShareAction(skills);
2133     EXPECT_EQ(result.empty(), true);
2134 
2135     struct Skill skill;
2136     skill.actions.emplace_back(SHARE_ACTION_VALUE);
2137     skills.emplace_back(skill);
2138     result = dataMgr->FindSkillsContainShareAction(skills);
2139     EXPECT_EQ(result.empty(), false);
2140 }
2141 
2142 /**
2143  * @tc.number: LoadDataFromPersistentStorage_0100
2144  * @tc.name: test CompatibleOldBundleStateInKvDb
2145  * @tc.desc: 1.compatible old bundle status in Kvdb
2146  */
2147 HWTEST_F(BmsDataMgrTest, LoadDataFromPersistentStorage_0100, Function | SmallTest | Level1)
2148 {
2149     auto dataMgr = GetDataMgr();
2150     ASSERT_NE(dataMgr, nullptr);
2151     auto ret = dataMgr->LoadDataFromPersistentStorage();
2152     dataMgr->CompatibleOldBundleStateInKvDb();
2153     std::map<std::string, InnerBundleInfo> infos;
2154     InnerBundleInfo innerBundleInfo;
2155     infos.emplace("", innerBundleInfo);
2156     dataMgr->bundleInfos_.swap(infos);
2157     dataMgr->CompatibleOldBundleStateInKvDb();
2158     EXPECT_EQ(ret, true);
2159 }
2160 
2161 /**
2162  * @tc.number: GetMatchLauncherAbilityInfosForCloneInfos_0100
2163  * @tc.name: test GetMatchLauncherAbilityInfosForCloneInfos
2164  * @tc.desc: 1.obtain matching launcher ability information for clone information
2165  */
2166 HWTEST_F(BmsDataMgrTest, GetMatchLauncherAbilityInfosForCloneInfos_0100, Function | SmallTest | Level1)
2167 {
2168     auto dataMgr = GetDataMgr();
2169     ASSERT_NE(dataMgr, nullptr);
2170     InnerBundleInfo innerBundleInfo;
2171     AbilityInfo abilityInfo;
2172     abilityInfo.iconId = 0;
2173     ApplicationInfo applicationInfo;
2174     applicationInfo.iconId = 200;
2175     abilityInfo.applicationInfo = applicationInfo;
2176     InnerBundleUserInfo innerBundleUserInfo;
2177     innerBundleUserInfo.bundleName = BUNDLE_NAME;
2178     innerBundleUserInfo.bundleUserInfo.enabled = true;
2179     innerBundleUserInfo.bundleUserInfo.userId = USERID;
2180     std::vector<AbilityInfo> abilityInfos;
2181     dataMgr->GetMatchLauncherAbilityInfosForCloneInfos(innerBundleInfo, abilityInfo, innerBundleUserInfo, abilityInfos);
2182     EXPECT_EQ(abilityInfos.empty(), true);
2183     InnerBundleCloneInfo cloneInfo;
2184     innerBundleUserInfo.cloneInfos.emplace("", cloneInfo);
2185     dataMgr->GetMatchLauncherAbilityInfosForCloneInfos(innerBundleInfo, abilityInfo, innerBundleUserInfo, abilityInfos);
2186     EXPECT_EQ(abilityInfos.empty(), false);
2187 }
2188 
2189 /**
2190  * @tc.number: ModifyBundleInfoByCloneInfo_0100
2191  * @tc.name: test ModifyBundleInfoByCloneInfo
2192  * @tc.desc: 1.modify bundle information based on clone information
2193  */
2194 HWTEST_F(BmsDataMgrTest, ModifyBundleInfoByCloneInfo_0100, Function | SmallTest | Level1)
2195 {
2196     auto dataMgr = GetDataMgr();
2197     ASSERT_NE(dataMgr, nullptr);
2198     InnerBundleCloneInfo cloneInfo;
2199     BundleInfo bundleInfo;
2200     dataMgr->ModifyBundleInfoByCloneInfo(cloneInfo, bundleInfo);
2201     bundleInfo.applicationInfo.bundleName = BUNDLE_NAME;
2202     dataMgr->ModifyBundleInfoByCloneInfo(cloneInfo, bundleInfo);
2203     EXPECT_EQ(bundleInfo.uid, cloneInfo.uid);
2204 }
2205 
2206 /**
2207  * @tc.number: ModifyApplicationInfoByCloneInfo_0100
2208  * @tc.name: test ModifyApplicationInfoByCloneInfo
2209  * @tc.desc: 1.modify application information based on clone information
2210  */
2211 HWTEST_F(BmsDataMgrTest, ModifyApplicationInfoByCloneInfo_0100, Function | SmallTest | Level1)
2212 {
2213     auto dataMgr = GetDataMgr();
2214     ASSERT_NE(dataMgr, nullptr);
2215     InnerBundleCloneInfo cloneInfo;
2216     ApplicationInfo applicationInfo;
2217     dataMgr->ModifyApplicationInfoByCloneInfo(cloneInfo, applicationInfo);
2218     EXPECT_EQ(applicationInfo.enabled, cloneInfo.enabled);
2219 }
2220 
2221 /**
2222  * @tc.number: UpateExtResources_0100
2223  * @tc.name: test UpateExtResources
2224  * @tc.desc: 1.test update external resources
2225  */
2226 HWTEST_F(BmsDataMgrTest, UpateExtResources_0100, Function | SmallTest | Level1)
2227 {
2228     auto dataMgr = GetDataMgr();
2229     ASSERT_NE(dataMgr, nullptr);
2230     std::string bundleName = "";
2231     std::vector<ExtendResourceInfo> extendResourceInfos;
2232     bool ret = dataMgr->UpateExtResources(bundleName, extendResourceInfos);
2233     EXPECT_EQ(ret, false);
2234 
2235     std::map<std::string, InnerBundleInfo> infos;
2236     InnerBundleInfo innerBundleInfo;
2237     infos.emplace(BUNDLE_NAME, innerBundleInfo);
2238     dataMgr->bundleInfos_.swap(infos);
2239     ret = dataMgr->UpateExtResources(BUNDLE_NAME, extendResourceInfos);
2240     EXPECT_EQ(ret, true);
2241 }
2242 
2243 /**
2244  * @tc.number: RemoveExtResources_0100
2245  * @tc.name: test RemoveExtResources
2246  * @tc.desc: 1.test remove external resources
2247  */
2248 HWTEST_F(BmsDataMgrTest, RemoveExtResources_0100, Function | SmallTest | Level1)
2249 {
2250     auto dataMgr = GetDataMgr();
2251     ASSERT_NE(dataMgr, nullptr);
2252     std::string bundleName = "";
2253     std::vector<std::string> moduleNames;
2254     bool ret = dataMgr->RemoveExtResources(bundleName, moduleNames);
2255     EXPECT_EQ(ret, false);
2256     std::map<std::string, InnerBundleInfo> infos;
2257     InnerBundleInfo innerBundleInfo;
2258     infos.emplace(BUNDLE_NAME, innerBundleInfo);
2259     dataMgr->bundleInfos_.swap(infos);
2260     ret = dataMgr->RemoveExtResources(BUNDLE_NAME, moduleNames);
2261     EXPECT_EQ(ret, true);
2262 }
2263 
2264 /**
2265  * @tc.number: IsBundleExist_0100
2266  * @tc.name: test IsBundleExist
2267  * @tc.desc: 1.judge bundle exist
2268  */
2269 HWTEST_F(BmsDataMgrTest, IsBundleExist_0100, Function | SmallTest | Level1)
2270 {
2271     auto dataMgr = GetDataMgr();
2272     ASSERT_NE(dataMgr, nullptr);
2273     std::string bundleName = "";
2274     bool ret = dataMgr->IsBundleExist(bundleName);
2275     EXPECT_EQ(ret, false);
2276 
2277     std::map<std::string, InnerBundleInfo> infos;
2278     InnerBundleInfo innerBundleInfo;
2279     infos.emplace(BUNDLE_NAME, innerBundleInfo);
2280     dataMgr->bundleInfos_.swap(infos);
2281     ret = dataMgr->IsBundleExist(BUNDLE_NAME);
2282     EXPECT_EQ(ret, true);
2283 }
2284 
2285 /**
2286  * @tc.number: GetAllBundleStats_0100
2287  * @tc.name: test GetAllBundleStats
2288  * @tc.desc: 1.test get all bundle stats
2289  */
2290 HWTEST_F(BmsDataMgrTest, GetAllBundleStats_0100, Function | SmallTest | Level1)
2291 {
2292     auto dataMgr = GetDataMgr();
2293     ASSERT_NE(dataMgr, nullptr);
2294     int32_t userId = 0;
2295     std::vector<int64_t> bundleStats;
2296     bool ret = dataMgr->GetAllBundleStats(userId, bundleStats);
2297     EXPECT_EQ(ret, false);
2298 }
2299 
2300 /**
2301  * @tc.number: IsApplicationEnabled_0100
2302  * @tc.name: test IsApplicationEnabled
2303  * @tc.desc: 1.test enable application
2304  */
2305 HWTEST_F(BmsDataMgrTest, IsApplicationEnabled_0100, Function | SmallTest | Level1)
2306 {
2307     auto dataMgr = GetDataMgr();
2308     ASSERT_NE(dataMgr, nullptr);
2309     const std::string bundleName = BUNDLE_NAME;
2310     int32_t appIndex = 1;
2311     bool isEnabled = false;
2312     bool ret = dataMgr->IsApplicationEnabled(bundleName, appIndex, isEnabled);
2313     EXPECT_EQ(ret, true);
2314 }
2315 
2316 /**
2317  * @tc.number: ImplicitQueryAllExtensionInfos_0100
2318  * @tc.name: test ImplicitQueryAllExtensionInfos
2319  * @tc.desc: 1.test implicit query of all extended information
2320  */
2321 HWTEST_F(BmsDataMgrTest, ImplicitQueryAllExtensionInfos_0100, Function | SmallTest | Level1)
2322 {
2323     auto dataMgr = GetDataMgr();
2324     ASSERT_NE(dataMgr, nullptr);
2325     uint32_t flags = 0;
2326     int32_t userId = 0;
2327     std::vector<ExtensionAbilityInfo> infos;
2328     int32_t appIndex = 0;
2329     ErrCode ret = dataMgr->ImplicitQueryAllExtensionInfos(flags, userId, infos, appIndex);
2330     EXPECT_EQ(ret, ERR_OK);
2331     appIndex = -1;
2332     ret = dataMgr->ImplicitQueryAllExtensionInfos(flags, userId, infos, appIndex);
2333     EXPECT_EQ(ret, ERR_OK);
2334 }
2335 
2336 /**
2337  * @tc.number: UpateCurDynamicIconModule_0100
2338  * @tc.name: test UpateCurDynamicIconModule
2339  * @tc.desc: 1.test update dynamic icon module
2340  */
2341 HWTEST_F(BmsDataMgrTest, UpateCurDynamicIconModule_0100, Function | SmallTest | Level1)
2342 {
2343     auto dataMgr = GetDataMgr();
2344     ASSERT_NE(dataMgr, nullptr);
2345     std::string bundleName = "";
2346     std::string moduleName = MODULE_NAME;
2347     bool ret = dataMgr->UpateCurDynamicIconModule(bundleName, moduleName);
2348     EXPECT_EQ(ret, false);
2349     ret = dataMgr->UpateCurDynamicIconModule(BUNDLE_NAME, moduleName);
2350     EXPECT_EQ(ret, false);
2351     std::map<std::string, InnerBundleInfo> infos;
2352     InnerBundleInfo innerBundleInfo;
2353     infos.emplace(BUNDLE_NAME, innerBundleInfo);
2354     dataMgr->bundleInfos_.swap(infos);
2355     ret = dataMgr->UpateCurDynamicIconModule(BUNDLE_NAME, moduleName);
2356     EXPECT_EQ(ret, true);
2357 }
2358 
2359 /**
2360  * @tc.number: AddDesktopShortcutInfo_0001
2361  * @tc.name: AddDesktopShortcutInfo
2362  * @tc.desc: 1. system run normally
2363  *           2. enter if (rdbDataManager_ == nullptr)
2364  */
2365 HWTEST_F(BmsDataMgrTest, AddDesktopShortcutInfo_0001, Function | SmallTest | Level1)
2366 {
2367     std::shared_ptr<ShortcutDataStorageRdb> shortcutDataStorageRdb = std::make_shared<ShortcutDataStorageRdb>();
2368     ASSERT_NE(shortcutDataStorageRdb, nullptr);
2369     ShortcutInfo shortcutInfo = BmsDataMgrTest::InitShortcutInfo();
2370     bool isIdIllegal = false;
2371 
2372     bool ret = shortcutDataStorageRdb->AddDesktopShortcutInfo(shortcutInfo, USERID, isIdIllegal);
2373     EXPECT_TRUE(ret);
2374 
2375     ret = shortcutDataStorageRdb->DeleteDesktopShortcutInfo(shortcutInfo, USERID);
2376     EXPECT_TRUE(ret);
2377 
2378     shortcutDataStorageRdb->rdbDataManager_ = nullptr;
2379     ret = shortcutDataStorageRdb->AddDesktopShortcutInfo(shortcutInfo, USERID, isIdIllegal);
2380     EXPECT_FALSE(ret);
2381 }
2382 
2383 /**
2384  * @tc.number: AddDesktopShortcutInfo_0002
2385  * @tc.name: AddDesktopShortcutInfo
2386  * @tc.desc: 1. system run normally
2387  *           2. enter if (rdbDataManager_ == nullptr)
2388  */
2389 HWTEST_F(BmsDataMgrTest, AddDesktopShortcutInfo_0002, Function | MediumTest | Level1)
2390 {
2391     std::shared_ptr<ShortcutDataStorageRdb> shortcutDataStorageRdb = std::make_shared<ShortcutDataStorageRdb>();
2392     ASSERT_NE(shortcutDataStorageRdb, nullptr);
2393     ShortcutInfo shortcutInfo = BmsDataMgrTest::InitShortcutInfo();
2394     bool isIdIllegal = false;
2395 
2396     bool ret = shortcutDataStorageRdb->AddDesktopShortcutInfo(shortcutInfo, USERID, isIdIllegal);
2397     EXPECT_TRUE(ret);
2398 
2399     ret = shortcutDataStorageRdb->DeleteDesktopShortcutInfo(shortcutInfo, USERID);
2400     EXPECT_TRUE(ret);
2401 
2402     shortcutDataStorageRdb->rdbDataManager_ = nullptr;
2403     ret = shortcutDataStorageRdb->AddDesktopShortcutInfo(shortcutInfo, USERID, isIdIllegal);
2404     EXPECT_FALSE(ret);
2405 }
2406 
2407 /**
2408  * @tc.number: DeleteDesktopShortcutInfo_0001
2409  * @tc.name: DeleteDesktopShortcutInfo
2410  * @tc.desc: 1. system run normally
2411  *           2. enter if (rdbDataManager_ == nullptr)
2412  */
2413 HWTEST_F(BmsDataMgrTest, DeleteDesktopShortcutInfo_0001, Function | SmallTest | Level1)
2414 {
2415     std::shared_ptr<ShortcutDataStorageRdb> shortcutDataStorageRdb = std::make_shared<ShortcutDataStorageRdb>();
2416     ASSERT_NE(shortcutDataStorageRdb, nullptr);
2417     ShortcutInfo shortcutInfo = BmsDataMgrTest::InitShortcutInfo();
2418     bool isIdIllegal = false;
2419 
2420     shortcutDataStorageRdb->AddDesktopShortcutInfo(shortcutInfo, USERID, isIdIllegal);
2421 
2422     bool ret = shortcutDataStorageRdb->DeleteDesktopShortcutInfo(shortcutInfo, USERID);
2423     EXPECT_TRUE(ret);
2424 
2425     shortcutDataStorageRdb->rdbDataManager_ = nullptr;
2426 
2427     ret = shortcutDataStorageRdb->DeleteDesktopShortcutInfo(shortcutInfo, USERID);
2428     EXPECT_FALSE(ret);
2429 
2430     shortcutDataStorageRdb = nullptr;
2431 }
2432 
2433 /**
2434  * @tc.number: DeleteDesktopShortcutInfo_0002
2435  * @tc.name: DeleteDesktopShortcutInfo
2436  * @tc.desc: 1. system run normally
2437  *           2. enter if (rdbDataManager_ == nullptr)
2438  */
2439 HWTEST_F(BmsDataMgrTest, DeleteDesktopShortcutInfo_0002, Function | MediumTest | Level1)
2440 {
2441     std::shared_ptr<ShortcutDataStorageRdb> shortcutDataStorageRdb = std::make_shared<ShortcutDataStorageRdb>();
2442     ASSERT_NE(shortcutDataStorageRdb, nullptr);
2443     ShortcutInfo shortcutInfo = BmsDataMgrTest::InitShortcutInfo();
2444     bool isIdIllegal = false;
2445     shortcutDataStorageRdb->AddDesktopShortcutInfo(shortcutInfo, USERID, isIdIllegal);
2446 
2447     bool ret = shortcutDataStorageRdb->DeleteDesktopShortcutInfo(shortcutInfo, USERID);
2448     EXPECT_TRUE(ret);
2449 
2450     shortcutDataStorageRdb->rdbDataManager_ = nullptr;
2451 
2452     ret = shortcutDataStorageRdb->DeleteDesktopShortcutInfo(shortcutInfo, USERID);
2453     EXPECT_FALSE(ret);
2454 
2455     shortcutDataStorageRdb = nullptr;
2456 }
2457 
2458 /**
2459  * @tc.number: GetAllDesktopShortcutInfo_0001
2460  * @tc.name: GetAllDesktopShortcutInfo
2461  * @tc.desc: 1. enter if (!BundlePermissionMgr::IsSystemApp())
2462  *           2. system run normally
2463  *           3. enter if (!rdbDataManager_->QueryAllData(datas))
2464  */
2465 HWTEST_F(BmsDataMgrTest, GetAllDesktopShortcutInfo_0001, Function | SmallTest | Level1)
2466 {
2467     std::shared_ptr<ShortcutDataStorageRdb> shortcutDataStorageRdb = std::make_shared<ShortcutDataStorageRdb>();
2468     ASSERT_NE(shortcutDataStorageRdb, nullptr);
2469     ShortcutInfo shortcutInfo = BmsDataMgrTest::InitShortcutInfo();
2470     std::vector<ShortcutInfo> vecShortcutInfo;
2471     vecShortcutInfo.push_back(shortcutInfo);
2472     shortcutDataStorageRdb->rdbDataManager_->rdbStore_ = nullptr;
2473 
2474     shortcutDataStorageRdb->GetAllDesktopShortcutInfo(USERID, vecShortcutInfo);
2475     EXPECT_NE(shortcutDataStorageRdb->rdbDataManager_, nullptr);
2476 
2477     shortcutDataStorageRdb->DeleteDesktopShortcutInfo(shortcutInfo, USERID);
2478 
2479     vecShortcutInfo.clear();
2480     shortcutDataStorageRdb->GetAllDesktopShortcutInfo(USERID, vecShortcutInfo);
2481     EXPECT_TRUE(vecShortcutInfo.empty());
2482 
2483     shortcutDataStorageRdb->rdbDataManager_ = nullptr;
2484     shortcutDataStorageRdb->GetAllDesktopShortcutInfo(USERID, vecShortcutInfo);
2485     EXPECT_EQ(shortcutDataStorageRdb->rdbDataManager_, nullptr);
2486 
2487     shortcutDataStorageRdb = nullptr;
2488 }
2489 
2490 /**
2491  * @tc.number: GetAllDesktopShortcutInfo_0002
2492  * @tc.name: GetAllDesktopShortcutInfo
2493  * @tc.desc: 1. enter if (!BundlePermissionMgr::IsSystemApp())
2494  *           2. system run normally
2495  *           3. enter if (!rdbDataManager_->QueryAllData(datas))
2496  */
2497 HWTEST_F(BmsDataMgrTest, GetAllDesktopShortcutInfo_0002, Function | MediumTest | Level1)
2498 {
2499     std::shared_ptr<ShortcutDataStorageRdb> shortcutDataStorageRdb = std::make_shared<ShortcutDataStorageRdb>();
2500     ASSERT_NE(shortcutDataStorageRdb, nullptr);
2501     ShortcutInfo shortcutInfo = BmsDataMgrTest::InitShortcutInfo();
2502     std::vector<ShortcutInfo> vecShortcutInfo;
2503     vecShortcutInfo.push_back(shortcutInfo);
2504     shortcutDataStorageRdb->rdbDataManager_->rdbStore_ = nullptr;
2505 
2506     shortcutDataStorageRdb->GetAllDesktopShortcutInfo(USERID, vecShortcutInfo);
2507     EXPECT_NE(shortcutDataStorageRdb->rdbDataManager_, nullptr);
2508 
2509     shortcutDataStorageRdb->DeleteDesktopShortcutInfo(shortcutInfo, USERID);
2510 
2511     vecShortcutInfo.clear();
2512     shortcutDataStorageRdb->GetAllDesktopShortcutInfo(USERID, vecShortcutInfo);
2513     EXPECT_TRUE(vecShortcutInfo.empty());
2514 
2515     shortcutDataStorageRdb->rdbDataManager_ = nullptr;
2516     shortcutDataStorageRdb->GetAllDesktopShortcutInfo(USERID, vecShortcutInfo);
2517     EXPECT_EQ(shortcutDataStorageRdb->rdbDataManager_, nullptr);
2518 
2519     shortcutDataStorageRdb = nullptr;
2520 }
2521 
2522 HWTEST_F(BmsDataMgrTest, GetOneExtensionInfosByExtensionTypeName_0100, Function | SmallTest | Level1)
2523 {
2524     auto dataMgr = GetDataMgr();
2525     ASSERT_NE(dataMgr, nullptr);
2526     uint32_t flags = 0;
2527     int32_t userId = 0;
2528     InnerBundleInfo info;
2529     std::vector<ExtensionAbilityInfo> infos;
2530     int32_t appIndex = 0;
2531     std::string typeName = "";
2532     dataMgr->GetOneExtensionInfosByExtensionTypeName(typeName, flags, userId, info, infos, appIndex);
2533     EXPECT_EQ(infos.empty(), true);
2534     ExtensionAbilityInfo extensionAbilityInfo;
2535     info.InsertExtensionInfo("", extensionAbilityInfo);
2536     dataMgr->GetOneExtensionInfosByExtensionTypeName(typeName, flags, userId, info, infos, appIndex);
2537     EXPECT_EQ(infos.empty(), false);
2538     flags = 1;
2539     dataMgr->GetOneExtensionInfosByExtensionTypeName(typeName, flags, userId, info, infos, appIndex);
2540     EXPECT_EQ(infos.empty(), false);
2541 }
2542 } // OHOS