1 /**
2 * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <log.h>
17 #include <semaphore.h>
18 #include <string>
19
20 #include "gtest/gtest.h"
21 #include "securec.h"
22 #include "bundle_info.h"
23 #include "bundle_manager.h"
24 #include "want.h"
25
26 using namespace std;
27 using namespace testing::ext;
28 using namespace OHOS;
29 static bool g_installState = false;
30 static int g_errorCode = -1;
31 static sem_t g_sem;
32 static string g_testPath;
33
34 extern "C" {
HOS_SystemInit(void)35 void __attribute__((weak)) HOS_SystemInit(void) { }
36 }
37
38 /* callback */
TestBundleStateCallback(const uint8_t resultCode,const void * resultMessage)39 static void TestBundleStateCallback(const uint8_t resultCode, const void *resultMessage)
40 {
41 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleStateCallback resultCode: %d", resultCode);
42 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleStateCallback resultMessage: %s", (char *) resultMessage);
43 g_installState = (resultCode == 0);
44 g_errorCode = resultCode;
45 sem_post(&g_sem);
46 }
47
48 /* *
49 * get current dir
50 * @return string current file path of the test suits
51 */
GetCurDir()52 static string GetCurDir()
53 {
54 string filePath = "";
55 char *buffer;
56 if ((buffer = getcwd(NULL, 0)) == NULL) {
57 perror("get file path error");
58 } else {
59 printf("Current Dir: %s\r\n", buffer);
60 filePath = buffer;
61 free(buffer);
62 }
63 return filePath + "/";
64 }
65
66 class BundleMgrTest : public testing::Test {
67 protected:
SetUpTestCase(void)68 static void SetUpTestCase(void)
69 {
70 printf("----------test case with BundleMgrTest start-------------\n");
71 HOS_SystemInit();
72 sem_init(&g_sem, 0, 0);
73 InstallParam installParam = { .installLocation = 1, .keepData = false };
74 g_testPath = GetCurDir();
75 string hapPath = g_testPath + "testjsdemo.hap";
76 Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
77 sem_wait(&g_sem);
78 printf("callback installresult is %d \n", g_errorCode);
79 EXPECT_EQ(g_errorCode, 0);
80 }
TearDownTestCase(void)81 static void TearDownTestCase(void)
82 {
83 sem_init(&g_sem, 0, 0);
84 InstallParam installParam = { .installLocation = 1, .keepData = false };
85 Uninstall("com.openharmony.testjsdemo", &installParam, TestBundleStateCallback);
86 sem_wait(&g_sem);
87 printf("callback uninstallresult is %d \n", g_errorCode);
88 EXPECT_EQ(g_errorCode, 0);
89 printf("----------test case with BundleMgrTest end-------------\n");
90 }
91 };
92
93
94 /**
95 * @tc.number : SUB_APPEXECFWK_BMS_API_0044
96 * @tc.name : ClearAbilityInfo parameter illegal test
97 * @tc.desc : [C- SOFTWARE -0200]
98 */
99 HWTEST_F(BundleMgrTest, testClearAbilityInfoIllegal, Function | MediumTest | Level2)
100 {
101 printf("------start testClearAbilityInfoIllegal------\n");
102 // abilityInfo is nullptr
103 AbilityInfo abilityInfo;
104 int32_t result = memset_s(&abilityInfo, sizeof(abilityInfo), 0, sizeof(abilityInfo));
105 EXPECT_EQ(result, 0);
106 abilityInfo.bundleName = (char*)"com.openharmony.testjsdemo";
107 printf("abilityInfo.bundleName is %s \n", abilityInfo.bundleName);
108 ClearAbilityInfo(nullptr);
109 EXPECT_STREQ(abilityInfo.bundleName, "com.openharmony.testjsdemo");
110 printf("------end testClearAbilityInfoIllegal------\n");
111 }
112
113 /**
114 * @tc.number : SUB_APPEXECFWK_BMS_API_0045
115 * @tc.name : ClearAbilityInfo parameter legal test with bundle name
116 * @tc.desc : [C- SOFTWARE -0200]
117 */
118 HWTEST_F(BundleMgrTest, testClearBundleInfoIllegal, Function | MediumTest | Level2)
119 {
120 printf("------start testClearBundleInfoIllegal------\n");
121 BundleInfo bundleInfo;
122 int32_t result = memset_s(&bundleInfo, sizeof(bundleInfo), 0, sizeof(bundleInfo));
123 EXPECT_EQ(result, 0);
124 bundleInfo.bundleName = (char*)"com.openharmony.testjsdemo";
125 printf("abilityInfo.bundleName is %s \n", bundleInfo.bundleName);
126 ClearBundleInfo(nullptr);
127 printf("abilityInfo.bundleName afterclear is %s \n", bundleInfo.bundleName);
128 EXPECT_STREQ(bundleInfo.bundleName, "com.openharmony.testjsdemo");
129 printf("------end testClearBundleInfoIllegal------\n");
130 }
131
132 /**
133 * @tc.number : SUB_APPEXECFWK_BMS_API_0046
134 * @tc.name : ClearAbilityInfo parameter legal test with module info
135 * @tc.desc : [C- SOFTWARE -0200]
136 */
137 HWTEST_F(BundleMgrTest, testClearModuleInfoIllegal, Function | MediumTest | Level1)
138 {
139 printf("------start testClearModuleInfoIllegal------\n");
140 ModuleInfo moduleInfo;
141 int32_t result = memset_s(&moduleInfo, sizeof(moduleInfo), 0, sizeof(moduleInfo));
142 EXPECT_EQ(result, 0);
143 moduleInfo.description = (char*)"test app";
144 moduleInfo.moduleType = (char*)"entry";
145 ClearModuleInfo(nullptr);
146 EXPECT_STREQ(moduleInfo.description, "test app");
147 EXPECT_STREQ(moduleInfo.moduleType, "entry");
148 printf("------end testClearModuleInfoIllegal------\n");
149 }
150
151 /**
152 * @tc.number : SUB_APPEXECFWK_AMS_API_0009
153 * @tc.name : testAbilityMgrSetWantElement parameter legal test
154 * @tc.desc : [C- SOFTWARE -0100]
155 */
156 HWTEST_F(BundleMgrTest, testSetElementAbilityName, Function | MediumTest | Level0)
157 {
158 printf("------start testSetElementAbilityName------\n");
159 Want want = { nullptr };
160 ElementName element = { nullptr };
161 SetElementAbilityName(&element, "SecondAbility");
162 SetWantElement(&want, element);
163 printf("element is %s \n", want.element->abilityName);
164 char aName[] = "SecondAbility";
165 printf("aName is %s \n", aName);
166 EXPECT_STREQ(want.element->abilityName, aName);
167 ClearElement(&element);
168 ClearWant(&want);
169 printf("------end testSetElementAbilityName------\n");
170 }
171
172 /**
173 * @tc.number : SUB_APPEXECFWK_AMS_API_0010
174 * @tc.name : testSetElementAbilityName parameter illegal test
175 * @tc.desc : [C- SOFTWARE -0100]
176 */
177 HWTEST_F(BundleMgrTest, testSetElementAbilityNameIllegal, Function | MediumTest | Level2)
178 {
179 printf("------start testSetElementAbilityNameIllegal------\n");
180 Want want = { nullptr };
181 ElementName element = { nullptr };
182 SetElementAbilityName(&element, nullptr);
183 SetWantElement(&want, element);
184 printf("AbilityName1 is %s \n", want.element->abilityName);
185 EXPECT_STREQ(want.element->abilityName, nullptr);
186 char aName[] = "";
187 SetElementAbilityName(&element, aName);
188 SetWantElement(&want, element);
189 printf("AbilityName2 is %s \n", want.element->abilityName);
190 EXPECT_STREQ(want.element->abilityName, "");
191 ClearElement(&element);
192 ClearWant(&want);
193 printf("------end testSetElementAbilityNameIllegal------\n");
194 }
195
196 /**
197 * @tc.number : SUB_APPEXECFWK_AMS_API_0007
198 * @tc.name : testSetElementBundleName parameter legal test
199 * @tc.desc : [C- SOFTWARE -0100]
200 */
201 HWTEST_F(BundleMgrTest, testSetElementBundleName, Function | MediumTest | Level0)
202 {
203 printf("------start testSetElementBundleName------\n");
204 Want want = { nullptr };
205 ElementName element = { nullptr };
206 SetElementBundleName(&element, "com.openharmony.testjsdemo");
207 SetWantElement(&want, element);
208 printf("element is %s \n", want.element->bundleName);
209 char bName[] = "com.openharmony.testjsdemo";
210 EXPECT_STREQ(want.element->bundleName, bName);
211 ClearElement(&element);
212 ClearWant(&want);
213 printf("------end testSetElementBundleName------\n");
214 }
215
216 /**
217 * @tc.number : SUB_APPEXECFWK_AMS_API_0008
218 * @tc.name : testAbilityMgrSetWantElement parameter illegal test
219 * @tc.desc : [C- SOFTWARE -0100]
220 */
221 HWTEST_F(BundleMgrTest, testSetElementBundleNameIllegal, Function | MediumTest | Level2)
222 {
223 printf("------start testSetElementBundleNameIllegal------\n");
224 Want want = { nullptr };
225 ElementName element = { nullptr };
226 SetElementBundleName(&element, "");
227 SetWantElement(&want, element);
228 printf("BundleName1 is %s \n", want.element->bundleName);
229 char bName[] = "";
230 EXPECT_STREQ(want.element->bundleName, bName);
231 SetElementBundleName(&element, nullptr);
232 SetWantElement(&want, element);
233 printf("BundleName2 is %s \n", want.element->bundleName);
234 EXPECT_STREQ(want.element->bundleName, nullptr);
235 ClearElement(&element);
236 ClearWant(&want);
237 printf("------end testSetElementBundleNameIllegal------\n");
238 }
239
240 /**
241 * @tc.number : SUB_APPEXECFWK_AMS_API_0005
242 * @tc.name : testSetElementDeviceID parameter legal test
243 * @tc.desc : [C- SOFTWARE -0100]
244 */
245 HWTEST_F(BundleMgrTest, testSetElementDeviceID, Function | MediumTest | Level0)
246 {
247 printf("------start testSetElementDeviceID------\n");
248 Want want = { nullptr };
249 ElementName element = { nullptr };
250 SetElementDeviceID(&element, "0001000");
251 SetWantElement(&want, element);
252 char dID[] = "0001000";
253 EXPECT_STREQ(want.element->deviceId, dID);
254 ClearElement(&element);
255 ClearWant(&want);
256 printf("------end testSetElementDeviceID------\n");
257 }
258
259 /**
260 * @tc.number : SUB_APPEXECFWK_AMS_API_0006
261 * @tc.name : testSetElementDeviceID parameter illegal test
262 * @tc.desc : [C- SOFTWARE -0100]
263 */
264 HWTEST_F(BundleMgrTest, testSetElementDeviceIDIllegal, Function | MediumTest | Level2)
265 {
266 printf("------start testSetElementDeviceIDIllegal------\n");
267 Want want = { nullptr };
268 ElementName element = { nullptr };
269 SetElementDeviceID(&element, "");
270 SetWantElement(&want, element);
271 char dID[] = "";
272 EXPECT_STREQ(want.element->deviceId, dID);
273 SetElementDeviceID(&element, nullptr);
274 SetWantElement(&want, element);
275 EXPECT_STREQ(want.element->deviceId, nullptr);
276 ClearElement(&element);
277 ClearWant(&want);
278 printf("------end testSetElementDeviceIDIllegal------\n");
279 }
280
281 /**
282 * @tc.number : SUB_APPEXECFWK_BMS_API_0007
283 * @tc.name : Install parameter illegal test that callback is null
284 * @tc.desc : [C- SOFTWARE -0200]
285 */
286 HWTEST_F(BundleMgrTest, testInstallWithNullptr, Function | MediumTest | Level2)
287 {
288 printf("------start testInstallWithNullptr------\n");
289 string hapPath = g_testPath + "testnative.hap";
290 InstallParam installParam = { .installLocation = 1, .keepData = false };
291 bool isInstallSuccess = Install(hapPath.c_str(), &installParam, nullptr);
292 EXPECT_FALSE(isInstallSuccess);
293 printf("install result is %d \n", isInstallSuccess);
294 printf("------end testInstallWithNullptr------\n");
295 }
296
297 /**
298 * @tc.number : SUB_APPEXECFWK_BMS_API_0004
299 * @tc.name : Install parameter illegal test that path is null
300 * @tc.desc : [C- SOFTWARE -0200]
301 */
302 HWTEST_F(BundleMgrTest, testInstallWithNullPath, Function | MediumTest | Level2)
303 {
304 printf("------start testInstallWithNullPath------\n");
305 InstallParam installParam = { .installLocation = 1, .keepData = false };
306 bool isInstallSuccess = Install(nullptr, &installParam, TestBundleStateCallback);
307 EXPECT_FALSE(isInstallSuccess);
308 printf("install result is %d \n", isInstallSuccess);
309 printf("------end testInstallWithNullPath------\n");
310 }
311
312 /**
313 * @tc.number : SUB_APPEXECFWK_BMS_API_0002
314 * @tc.name : Install parameter illegal test that ErrorPath is wrong
315 * @tc.desc : [C- SOFTWARE -0200]
316 */
317 HWTEST_F(BundleMgrTest, testInstallWithErrorPath, Function | MediumTest | Level2)
318 {
319 printf("------start testBundleMgrInstallWithErrorPath------\n");
320 string hapPath = "appexecfwk/nothishap.hap";
321 bool isInstallSuccess = false;
322 sem_init(&g_sem, 0, 0);
323 InstallParam installParam = { .installLocation = 1, .keepData = false };
324 bool installResult = Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
325 sem_wait(&g_sem);
326 if (g_errorCode == 0) {
327 isInstallSuccess = true;
328 }else if (g_errorCode > 0) {
329 isInstallSuccess = false;
330 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleMgrInstall failed,g_errorCode is: %d", g_errorCode);
331 }
332 EXPECT_FALSE(isInstallSuccess);
333 printf("install result is %d", installResult);
334 printf("------end testBundleMgrInstallWithErrorPath------\n");
335 }
336
337 /**
338 * @tc.number : SUB_APPEXECFWK_BMS_API_0001
339 * @tc.name : Install parameter legal test
340 * @tc.desc : [C- SOFTWARE -0200]
341 */
342 HWTEST_F(BundleMgrTest, testBundleMgrInstallright, Function | MediumTest | Level0)
343 {
344 printf("------start testBundleMgrInstallright------\n");
345 string hapPath = g_testPath + "testnative.hap";
346 bool isInstallSuccess = false;
347 sem_init(&g_sem, 0, 0);
348 InstallParam installParam = { .installLocation = 1, .keepData = false };
349 bool installResult = Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
350 sem_wait(&g_sem);
351 if (g_errorCode == 0) {
352 isInstallSuccess = true;
353 }else if (g_errorCode > 0) {
354 isInstallSuccess = false;
355 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleMgrInstall failed,g_errorCode is: %d", g_errorCode);
356 }
357 EXPECT_TRUE(isInstallSuccess);
358 printf("install result is %d \n", installResult);
359 printf("------end testBundleMgrInstallright------\n");
360 }
361 /**
362 * @tc.number : SUB_APPEXECFWK_BMS_API_0003
363 * @tc.name : Install parameter illegal test that Path is empty
364 * @tc.desc : [C- SOFTWARE -0200]
365 */
366 HWTEST_F(BundleMgrTest, testBundleMgrInstallEmpty, Function | MediumTest | Level2)
367 {
368 printf("------start testBundleMgrInstallEmpty------\n");
369 string hapPath = "";
370 bool isInstallSuccess = false;
371 sem_init(&g_sem, 0, 0);
372 InstallParam installParam = { .installLocation = 1, .keepData = false };
373 bool installResult = Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
374 sem_wait(&g_sem);
375 if (g_errorCode == 0) {
376 isInstallSuccess = true;
377 }else if (g_errorCode > 0) {
378 isInstallSuccess = false;
379 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleMgrInstall failed,g_errorCode is: %d", g_errorCode);
380 }
381 EXPECT_FALSE(isInstallSuccess);
382 printf("install result is %d", installResult);
383 printf("------end testBundleMgrInstallEmpty------\n");
384 }
385
386 /**
387 * @tc.number : SUB_APPEXECFWK_BMS_API_0009
388 * @tc.name : Install parameter illegal test that file is bin
389 * @tc.desc : [C- SOFTWARE -0200]
390 */
391 HWTEST_F(BundleMgrTest, testBundleMgrInstallBin, Function | MediumTest | Level1)
392 {
393 printf("------start testBundleMgrInstallBin------\n");
394 string hapPath = g_testPath + "testdemo.bin";
395 bool isInstallSuccess = false;
396 sem_init(&g_sem, 0, 0);
397 InstallParam installParam = { .installLocation = 1, .keepData = false };
398 bool installResult = Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
399 sem_wait(&g_sem);
400 if (g_errorCode == 0) {
401 isInstallSuccess = true;
402 }else if (g_errorCode > 0) {
403 isInstallSuccess = false;
404 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleMgrInstall failed,g_errorCode is: %d", g_errorCode);
405 }
406 EXPECT_FALSE(isInstallSuccess);
407 printf("install result is %d", installResult);
408 printf("------end testBundleMgrInstallBin------\n");
409 }
410
411 /**
412 * @tc.number : SUB_APPEXECFWK_BMS_API_0008
413 * @tc.name : Install parameter illegal test that hap is destroyed
414 * @tc.desc : [C- SOFTWARE -0200]
415 */
416 HWTEST_F(BundleMgrTest, testBundleMgrInstallBadfile, Function | MediumTest | Level2)
417 {
418 printf("------start testBundleMgrInstallBadfile------\n");
419 string hapPath = g_testPath + "errpinjie.hap";
420 bool isInstallSuccess = false;
421 sem_init(&g_sem, 0, 0);
422 InstallParam installParam = { .installLocation = 1, .keepData = false };
423 bool installResult = Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
424 sem_wait(&g_sem);
425 if (g_errorCode == 0) {
426 isInstallSuccess = true;
427 }else if (g_errorCode > 0) {
428 isInstallSuccess = false;
429 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleMgrInstall failed,g_errorCode is: %d", g_errorCode);
430 }
431 EXPECT_FALSE(isInstallSuccess);
432 printf("install result is %d", installResult);
433 printf("------start testBundleMgrInstallBadfile------\n");
434 }
435
436 /**
437 * @tc.number : SUB_APPEXECFWK_BMS_API_0014
438 * @tc.name : Uninstall parameter illegal test that callback is null
439 * @tc.desc : [C- SOFTWARE -0200]
440 */
441 HWTEST_F(BundleMgrTest, testUninstallNullCallback, Function | MediumTest | Level2)
442 {
443 printf("------start testUninstallNullCallback------\n");
444 const char *bundleName = (char*)"com.openharmony.testdemo";
445 InstallParam installParam = { .installLocation = 1, .keepData = false };
446 bool isUninstallSuccess = Uninstall(bundleName, &installParam, nullptr);
447 EXPECT_FALSE(isUninstallSuccess);
448 printf("uninstall result is %d", isUninstallSuccess);
449 printf("------end testUninstallNullCallback------\n");
450 }
451
452 /**
453 * @tc.number : SUB_APPEXECFWK_BMS_API_0013
454 * @tc.name : Uninstall parameter illegal test that bundleName is null
455 * @tc.desc : [C- SOFTWARE -0200]
456 */
457 HWTEST_F(BundleMgrTest, testUninstallnullBundleName, Function | MediumTest | Level2)
458 {
459 printf("------start testUninstallnullBundleName------\n");
460 InstallParam installParam = { .installLocation = 1, .keepData = false };
461 bool isUninstallSuccess = Uninstall(nullptr, &installParam, TestBundleStateCallback);
462 EXPECT_FALSE(isUninstallSuccess);
463 printf("uninstall result is %d", isUninstallSuccess);
464 printf("------end testUninstallnullBundleName------\n");
465 }
466
467 /**
468 * @tc.number : SUB_APPEXECFWK_BMS_API_0010
469 * @tc.name : Uninstall parameter legal test
470 * @tc.desc : [C- SOFTWARE -0200]
471 */
472 HWTEST_F(BundleMgrTest, testUninstallright, Function | MediumTest | Level0)
473 {
474 printf("------start testUninstallright------\n");
475 string hapPath = g_testPath + "testnative.hap";
476 sem_init(&g_sem, 0, 0);
477 InstallParam installParam = { .installLocation = 1, .keepData = false };
478 bool installResult = Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
479 sem_wait(&g_sem);
480 EXPECT_TRUE(installResult);
481 const char *bundleName = (char*)"com.openharmony.testnative";
482 bool isUninstallSuccess = false;
483 sem_init(&g_sem, 0, 0);
484 bool uninstallState = Uninstall(bundleName, &installParam, TestBundleStateCallback);
485 sem_wait(&g_sem);
486 printf("uninstall result is %d", uninstallState);
487 if (g_installState) {
488 isUninstallSuccess = true;
489 }else if (g_errorCode > 0) {
490 isUninstallSuccess = false;
491 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleMgrUninstall failed,g_errorCode is: %d", g_errorCode);
492 }
493 EXPECT_TRUE(uninstallState);
494 printf("uninstall result is %d", isUninstallSuccess);
495 printf("------end testUninstallright------\n");
496 }
497
498 /**
499 * @tc.number : SUB_APPEXECFWK_BMS_API_0011
500 * @tc.name : Uninstall parameter illegal test that bundleName is wrong
501 * @tc.desc : [C- SOFTWARE -0200]
502 */
503 HWTEST_F(BundleMgrTest, testUninstallErrorName, Function | MediumTest | Level2)
504 {
505 printf("------start testUninstallErrorName------\n");
506 const char *bundleName = (char*)"com.openharmony.nothisBundleName";
507 bool isUninstallSuccess = false;
508 sem_init(&g_sem, 0, 0);
509 InstallParam installParam = { .installLocation = 1, .keepData = false };
510 bool uninstallState = Uninstall(bundleName, &installParam, TestBundleStateCallback);
511 sem_wait(&g_sem);
512 printf("uninstall result is %d", uninstallState);
513 if (g_installState) {
514 isUninstallSuccess = true;
515 }else if (g_errorCode > 0) {
516 isUninstallSuccess = false;
517 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleMgrUninstall failed,g_errorCode is: %d", g_errorCode);
518 }
519 EXPECT_FALSE(isUninstallSuccess);
520 printf("uninstall result is %d", isUninstallSuccess);
521 printf("------end testUninstallErrorName------\n");
522 }
523
524 /**
525 * @tc.number : SUB_APPEXECFWK_BMS_API_0012
526 * @tc.name : Uninstall parameter illegal test that bundleName is empty
527 * @tc.desc : [C- SOFTWARE -0200]
528 */
529 HWTEST_F(BundleMgrTest, testUninstallEmptyName, Function | MediumTest | Level2)
530 {
531 printf("------start testUninstallEmptyName------\n");
532 const char *bundleName = (char*)"";
533 bool isUninstallSuccess = false;
534 sem_init(&g_sem, 0, 0);
535 InstallParam installParam = { .installLocation = 1, .keepData = false };
536 bool uninstallState = Uninstall(bundleName, &installParam, TestBundleStateCallback);
537 sem_wait(&g_sem);
538 printf("uninstall resute is %d", uninstallState);
539 if (g_installState) {
540 isUninstallSuccess = true;
541 }else if (g_errorCode > 0) {
542 isUninstallSuccess = false;
543 HILOG_DEBUG(HILOG_MODULE_APP, "TestBundleMgrUninstall failed,g_errorCode is: %d", g_errorCode);
544 }
545 EXPECT_FALSE(isUninstallSuccess);
546 printf("uninstall result is %d", isUninstallSuccess);
547 printf("------end testUninstallEmptyName------\n");
548 }
549
550
551 /**
552 * @tc.number : SUB_APPEXECFWK_BMS_API_0040
553 * @tc.name : QueryAbilityInfo parameter legal test
554 * @tc.desc : [C- SOFTWARE -0200]
555 */
556 HWTEST_F(BundleMgrTest, testQueryAbilityInfoRight, Function | MediumTest | Level1)
557 {
558 printf("------start testQueryAbilityInfoRight------\n");
559 Want want;
560 int32_t resultWant = memset_s(&want, sizeof(Want), 0, sizeof(Want));
561 EXPECT_EQ(resultWant, 0);
562 ElementName element;
563 int32_t resultElementName = memset_s(&element, sizeof(ElementName), 0, sizeof(ElementName));
564 EXPECT_EQ(resultElementName, 0);
565 SetElementAbilityName(&element, "MainAbility");
566 SetElementBundleName(&element, "com.openharmony.testjsdemo");
567 SetWantElement(&want, element);
568 SetWantData(&want, "test", 4);
569 AbilityInfo abilityInfo;
570 int32_t result = memset_s(&abilityInfo, sizeof(abilityInfo), 0, sizeof(abilityInfo));
571 EXPECT_EQ(result, 0);
572 printf("element.elementname is %s \n", want.element->bundleName);
573 printf("AbilityName2 is %s \n", want.element->abilityName);
574 g_errorCode = QueryAbilityInfo(&want, &abilityInfo);
575 printf("abilityInfo.bundleName is %s \n", abilityInfo.bundleName);
576 printf("abilityInfo.label is %s \n", abilityInfo.label);
577 printf("abilityInfo.iconPath is %s \n", abilityInfo.iconPath);
578 printf("ret is %d \n", g_errorCode);
579 EXPECT_EQ(g_errorCode, 0);
580 printf("------end testQueryAbilityInfoRight------\n");
581 }
582 /**
583 * @tc.number : SUB_APPEXECFWK_BMS_API_0041
584 * @tc.name : QueryAbilityInfo parameter illegal test
585 * @tc.desc : [C- SOFTWARE -0200]
586 */
587 HWTEST_F(BundleMgrTest, testQueryAbilityInfoIllegal, Function | MediumTest | Level2)
588 {
589 printf("------start testQueryAbilityInfoIllegal------\n");
590 AbilityInfo abilityInfo;
591 int32_t result = memset_s(&abilityInfo, sizeof(AbilityInfo), 0, sizeof(AbilityInfo));
592 EXPECT_EQ(result, 0);
593 // want is nullptr
594 g_errorCode = QueryAbilityInfo(nullptr, &abilityInfo);
595 printf("ret is %d \n", g_errorCode);
596 EXPECT_EQ(g_errorCode, 4);
597 // abilityInfo is nullptr
598 Want want;
599 int32_t resultWant = memset_s(&want, sizeof(Want), 0, sizeof(Want));
600 EXPECT_EQ(resultWant, 0);
601 ElementName element;
602 int32_t resultElementName = memset_s(&element, sizeof(ElementName), 0, sizeof(ElementName));
603 EXPECT_EQ(resultElementName, 0);
604 SetElementAbilityName(&element, "MainAbility");
605 SetElementBundleName(&element, "com.openharmony.testjsdemo");
606 SetWantElement(&want, element);
607 SetWantData(&want, "test", 4);
608 g_errorCode = QueryAbilityInfo(&want, nullptr);
609 printf("ret is %d \n", g_errorCode);
610 EXPECT_EQ(g_errorCode, 4);
611 // content of want is ""
612 Want want1 = { nullptr };
613 ElementName element1 = { nullptr };
614 SetElementBundleName(&element1, "");
615 SetElementAbilityName(&element1, "");
616 SetWantElement(&want1, element1);
617 AbilityInfo abilityInfo1;
618 g_errorCode = QueryAbilityInfo(&want1, &abilityInfo1);
619 printf("abilityInfo is null \n");
620 printf("ret is %d \n", g_errorCode);
621 EXPECT_EQ(g_errorCode, 2);
622 printf("------end testQueryAbilityInfoIllegal------\n");
623 }
624
625 /**
626 * @tc.number : SUB_APPEXECFWK_BMS_API_0029
627 * @tc.name : GetBundleInfo parameter legal test.
628 * @tc.desc : [C- SOFTWARE -0200]
629 */
630 HWTEST_F(BundleMgrTest, testGetBundleInfoRight, Function | MediumTest | Level1)
631 {
632 printf("------start testGetBundleInfoRight------\n");
633 BundleInfo bundleInfo;
634 int32_t result = memset_s(&bundleInfo, sizeof(bundleInfo), 0, sizeof(bundleInfo));
635 EXPECT_EQ(result, 0);
636 const char *bundleName = (char*)"com.openharmony.testjsdemo";
637 int32_t flags = 0;
638 printf("bundleName is %s \n", bundleName);
639 g_errorCode = GetBundleInfo(bundleName, flags, &bundleInfo);
640 printf("getBundleInfo result is %d \n", g_errorCode);
641 EXPECT_STREQ(bundleInfo.bundleName, bundleName);
642 EXPECT_EQ(bundleInfo.numOfAbility, 0);
643 EXPECT_EQ(g_errorCode, 0);
644 flags = 1;
645 printf("bundleName is %s \n", bundleName);
646 g_errorCode = GetBundleInfo(bundleName, flags, &bundleInfo);
647 printf("getBundleInfo result is %d \n", g_errorCode);
648 EXPECT_EQ(g_errorCode, 0);
649 EXPECT_STREQ(bundleInfo.bundleName, bundleName);
650 EXPECT_EQ(bundleInfo.numOfAbility, 3);
651 ClearBundleInfo(&bundleInfo);
652 printf("------end testGetBundleInfoRight------\n");
653 }
654
655 /**
656 * @tc.number : SUB_APPEXECFWK_BMS_API_0030
657 * @tc.name : GetBundleInfo parameter illegal test.
658 * @tc.desc : [C- SOFTWARE -0200]
659 */
660 HWTEST_F(BundleMgrTest, testGetBundleInfoIllegal, Function | MediumTest | Level2)
661 {
662 printf("------start testGetBundleInfoIllegal------\n");
663 BundleInfo bundleInfo;
664 int32_t result = memset_s(&bundleInfo, sizeof(bundleInfo), 0, sizeof(bundleInfo));
665 EXPECT_EQ(result, 0);
666 const char *bundleName = (char*)"com.openharmony.nothishap";
667 int32_t flags = 0;
668 // error bundleName
669 g_errorCode = GetBundleInfo(bundleName, flags, &bundleInfo);
670 printf("bundleInfo1.bundleName is %s \n", bundleInfo.bundleName);
671 printf("bundleInfo1.versionCode is %d \n", bundleInfo.versionCode);
672 printf("bundleInfo1.codePath is %s \n", bundleInfo.codePath);
673 EXPECT_EQ(g_errorCode, 2);
674 // bundleName = nullptr
675 g_errorCode = GetBundleInfo(nullptr, flags, &bundleInfo);
676 printf("abilityInfo2 is %d \n", g_errorCode);
677 EXPECT_EQ(g_errorCode, 4);
678 printf("bundleInfo2.bundleName is %s \n", bundleInfo.bundleName);
679 printf("bundleInfo2.versionCode is %d \n", bundleInfo.versionCode);
680 printf("bundleInfo2.codePath is %s \n", bundleInfo.codePath);
681 // bunldeName = ""
682 g_errorCode = GetBundleInfo("", flags, &bundleInfo);
683 printf("bundleInfo3.bundleName is %s \n", bundleInfo.bundleName);
684 printf("bundleInfo3.versionCode is %d \n", bundleInfo.versionCode);
685 printf("bundleInfo3.codePath is %s \n", bundleInfo.codePath);
686 EXPECT_EQ(g_errorCode, 2);
687 // flags not exit
688 g_errorCode = GetBundleInfo("com.openharmony.testjsdemo", 2, &bundleInfo);
689 printf("bundleInfo3.bundleName is %s \n", bundleInfo.bundleName);
690 printf("bundleInfo3.versionCode is %d \n", bundleInfo.versionCode);
691 printf("bundleInfo3.codePath is %s \n", bundleInfo.codePath);
692 EXPECT_EQ(g_errorCode, 1);
693 printf("------end testGetBundleInfoIllegal------\n");
694 }
695
696 /**
697 * @tc.number : SUB_APPEXECFWK_BMS_API_0042
698 * @tc.name : GetBundleInfos parameter legal test
699 * @tc.desc : [C- SOFTWARE -0200]
700 */
701 HWTEST_F(BundleMgrTest, testGetBundleInfosRight, Function | MediumTest | Level1)
702 {
703 printf("------start testGetBundleInfosRight------\n");
704 BundleInfo *bundleInfos = nullptr;
705 int32_t flags = 0;
706 int32_t length = 0;
707 g_errorCode = GetBundleInfos(flags, &bundleInfos, &length);
708 printf("getBundleInfo result is %d \n", g_errorCode);
709 EXPECT_EQ(g_errorCode, 0);
710 if (g_errorCode == 0){
711 printf("bundleInfos.codePath is %s \n", bundleInfos[0].codePath);
712 printf("bundleInfos.bundleName is %s \n", bundleInfos[0].bundleName);
713 printf("bundleInfos.versionCode is %d \n", bundleInfos[0].versionCode);
714 }
715 flags = 1;
716 g_errorCode = GetBundleInfos(flags, &bundleInfos, &length);
717 printf("getBundleInfo result is %d \n", g_errorCode);
718 EXPECT_EQ(g_errorCode, 0);
719 if (g_errorCode == 0){
720 printf("bundleInfos.codePath is %s \n", bundleInfos[0].codePath);
721 printf("bundleInfos.bundleName is %s \n", bundleInfos[0].bundleName);
722 printf("bundleInfos.versionCode is %d \n", bundleInfos[0].versionCode);
723 }
724 free(bundleInfos);
725 printf("------end testGetBundleInfosRight------\n");
726 }
727
728 /**
729 * @tc.number : SUB_APPEXECFWK_BMS_API_0043
730 * @tc.name : GetBundleInfos parameter illegal test
731 * @tc.desc : [C- SOFTWARE -0200]
732 */
733 HWTEST_F(BundleMgrTest, testGetBundleInfosIllegal, Function | MediumTest | Level2)
734 {
735 printf("------start testGetBundleInfosIllegal------\n");
736 BundleInfo *bundleInfos = {nullptr};
737 int32_t *length = nullptr;
738 int32_t flags = 0;
739 g_errorCode = GetBundleInfos(flags, nullptr, length);
740 EXPECT_EQ(g_errorCode, 4);
741 g_errorCode = GetBundleInfos(flags, &bundleInfos, nullptr);
742 printf("g_errorCode is %d \n", g_errorCode);
743 EXPECT_EQ(g_errorCode, 4);
744 g_errorCode = GetBundleInfos(2, &bundleInfos, length);
745 printf("g_errorCode is %d \n", g_errorCode);
746 EXPECT_EQ(g_errorCode, 4);
747 printf("------end testGetBundleInfosIllegal------\n");
748 }
749
750 /**
751 * @tc.number : SUB_APPEXECFWK_BMS_API_0039
752 * @tc.name : GetBundleInfosByMetaData parameter illegal test
753 * @tc.desc : [C- SOFTWARE -0200]
754 */
755 HWTEST_F(BundleMgrTest, testGetBundleInfosByMetaDataIllegal, Function | MediumTest | Level2)
756 {
757 printf("------start testGetBundleInfosByMetaDataIllegal------\n");
758 BundleInfo *bundleInfos = {nullptr};
759 int32_t length = 0;
760 const char *metaDataKey = "appId";
761 g_errorCode = GetBundleInfosByMetaData(nullptr, &bundleInfos, &length);
762 EXPECT_EQ(g_errorCode, 4);
763 g_errorCode = GetBundleInfosByMetaData(metaDataKey, &bundleInfos, nullptr);
764 printf("g_errorCode is %d \n", g_errorCode);
765 EXPECT_EQ(g_errorCode, 4);
766 g_errorCode = GetBundleInfosByMetaData(metaDataKey, nullptr, &length);
767 printf("g_errorCode is %d \n", g_errorCode);
768 EXPECT_EQ(g_errorCode, 4);
769 const char *metaDataKey1 = "noThisKey";
770 printf("metaDataKey is %s \n", metaDataKey1);
771 g_errorCode = GetBundleInfosByMetaData(metaDataKey1, &bundleInfos, &length);
772 printf("GetBundleInfosByMetaData result is %d \n", g_errorCode);
773 EXPECT_EQ(g_errorCode, 2);
774 const char *metaDataKey2 = "";
775 g_errorCode = GetBundleInfosByMetaData(metaDataKey2, &bundleInfos, &length);
776 printf("GetBundleInfosByMetaData result is %d \n", g_errorCode);
777 EXPECT_EQ(g_errorCode, 2);
778 printf("------end testGetBundleInfosByMetaDataIllegal------\n");
779 }
780
781 /**
782 * @tc.number : SUB_APPEXECFWK_BMS_API_0038
783 * @tc.name : GetBundleInfosByMetaData parameter legal test
784 * @tc.desc : [C- SOFTWARE -0200]
785 */
786 HWTEST_F(BundleMgrTest, testGetBundleInfosByMetaDataRight, Function | MediumTest | Level1)
787 {
788 printf("------start testGetBundleInfosByMetaDataRight------\n");
789 BundleInfo *bundleInfos = nullptr;
790 const char *metaDataKey = "appId";
791 int32_t length = 0;
792 printf("metaDataKey is %s \n", metaDataKey);
793 g_errorCode = GetBundleInfosByMetaData(metaDataKey, &bundleInfos, &length);
794 printf("GetBundleInfosByMetaData result is %d \n", g_errorCode);
795 EXPECT_EQ(g_errorCode, 0);
796 if (g_errorCode == 0){
797 printf("bundleInfos.bundleName is %s \n", bundleInfos[0].bundleName);
798 }
799 printf("------end testGetBundleInfosByMetaDataRight------\n");
800 }
801
802 /**
803 * @tc.number : SUB_APPEXECFWK_BMS_API_0037
804 * @tc.name : QueryKeepAliveBundleInfos parameter illegal test
805 * @tc.desc : [C- SOFTWARE -0200]
806 */
807 HWTEST_F(BundleMgrTest, testQueryKeepAliveBundleInfosIllegal, Function | MediumTest | Level2)
808 {
809 printf("------start testQueryKeepAliveBundleInfosIllegal------\n");
810 BundleInfo *bundleInfos = {nullptr};
811 int32_t length = 0;
812 g_errorCode = QueryKeepAliveBundleInfos(nullptr, &length);
813 printf("g_errorCode1 is %d \n", g_errorCode);
814 EXPECT_EQ(g_errorCode, 4);
815 g_errorCode = QueryKeepAliveBundleInfos(&bundleInfos, nullptr);
816 printf("g_errorCode2 is %d \n", g_errorCode);
817 EXPECT_EQ(g_errorCode, 4);
818 printf("------end testQueryKeepAliveBundleInfosIllegal------\n");
819 }
820
821 /**
822 * @tc.number : SUB_APPEXECFWK_BMS_API_0034
823 * @tc.name : GetBundleNameForUid parameter nullptr test
824 * @tc.desc : [C- SOFTWARE -0200]
825 */
826 HWTEST_F(BundleMgrTest, testGetBundleNameForUidWithNullptr, Function | MediumTest | Level2)
827 {
828 printf("------start testGetBundleNameForUidWithNullptr------\n");
829 int32_t resultCode = GetBundleNameForUid(0, nullptr);
830 EXPECT_EQ(resultCode, 4);
831 printf("GetBundleNameForUid result is %d \n", resultCode);
832 printf("------end testGetBundleNameForUidWithNullptr------\n");
833 }
834
835 /**
836 * @tc.number : SUB_APPEXECFWK_BMS_API_0035
837 * @tc.name : GetBundleNameForUid parameter illegal test
838 * @tc.desc : [C- SOFTWARE -0200]
839 */
840 HWTEST_F(BundleMgrTest, testGetBundleNameForUidWithIllegal, Function | MediumTest | Level2)
841 {
842 printf("------start testGetBundleNameForUidWithIllegal------\n");
843 char *bundleName = nullptr;
844 int32_t resultCode = GetBundleNameForUid(0, &bundleName);
845 EXPECT_EQ(resultCode, 114);
846 printf("GetBundleNameForUid result is %d \n", resultCode);
847 if (bundleName != nullptr) {
848 free(bundleName);
849 }
850 printf("------end testGetBundleNameForUidWithIllegal------\n");
851 }
852
853 /**
854 * @tc.number : SUB_APPEXECFWK_BMS_SIZE_0001
855 * @tc.name : Test the GetBundleSize of the thirld hap can be obtained normally
856 * @tc.desc : [C- SOFTWARE -0200]
857 */
858 HWTEST_F(BundleMgrTest, testGetBundleSizeWithLegal_0001, Function | MediumTest | Level1)
859 {
860 printf("------start testGetBundleSizeWithLegal_0001------\n");
861 char *bundleName = (char*)"com.openharmony.testjsdemo";
862 uint32_t resultCode = GetBundleSize(bundleName);
863 EXPECT_GT(resultCode, 0);
864 printf("------end testGetBundleSizeWithLegal_0001------\n");
865 }
866
867 /**
868 * @tc.number : SUB_APPEXECFWK_BMS_SIZE_0002
869 * @tc.name : GetBundleSize parameter legal and bundleName length equal to 127 test
870 * @tc.desc : [C- SOFTWARE -0200]
871 */
872 HWTEST_F(BundleMgrTest, testGetBundleSizeWithLegal_0002, Function | MediumTest | Level1)
873 {
874 printf("------start testGetBundleSizeWithLegal_0002------\n");
875 char *bundleName = (char*)"com.openharmony.testjsdemoBundleNameleng" \
876 "thequalto127testjsdemoBundleNamelengthequalto127testjsdemoBundleNamelengthequalto127tes";
877 sem_init(&g_sem, 0, 0);
878 InstallParam installParam = {.installLocation = 1, .keepData = false };
879 string hapPath = g_testPath + "testGetBundleNameWithLegal127.hap";
880 Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
881 sem_wait(&g_sem);
882 uint32_t resultCode = GetBundleSize(bundleName);
883 EXPECT_EQ(strlen(bundleName), 127);
884 EXPECT_GT(resultCode, 0);
885 // uninstall
886 sem_init(&g_sem, 0, 0);
887 Uninstall(bundleName, &installParam, TestBundleStateCallback);
888 sem_wait(&g_sem);
889 printf("------end testGetBundleSizeWithLegal_0002------\n");
890 }
891
892 /**
893 * @tc.number : SUB_APPEXECFWK_BMS_SIZE_0003
894 * @tc.name : GetBundleSize parameter illegal and bundleName length equal to 128 test
895 * @tc.desc : [C- SOFTWARE -0200]
896 */
897 HWTEST_F(BundleMgrTest, testGetBundleSizeWithIllegal_0001, Function | MediumTest | Level2)
898 {
899 printf("------start testGetBundleSizeWithIllegal_0001------\n");
900 char *bundleName = (char*)"com.openharmony.testjsdemoBundleNameLength128test" \
901 "jsdemoBundleNameLength128testjsdemoBundleNameLength128testjsdemoBundleNameLengt";
902 EXPECT_EQ(strlen(bundleName), 128);
903 uint32_t resultCode = GetBundleSize(bundleName);
904 EXPECT_EQ(resultCode, 0);
905 printf("------end testGetBundleSizeWithIllegal_0001------\n");
906 }
907
908 /**
909 * @tc.number : SUB_APPEXECFWK_BMS_SIZE_0004
910 * @tc.name : GetBundleSize parameter illegal and bundleName nullptr test
911 * @tc.desc : [C- SOFTWARE -0200]
912 */
913 HWTEST_F(BundleMgrTest, testGetBundleSizeWithIllegal_0002, Function | MediumTest | Level2)
914 {
915 printf("------start testGetBundleSizeWithIllegal_0002------\n");
916 char *bundleName = nullptr;
917 // bundleName nullptr
918 uint32_t resultCode = GetBundleSize(bundleName);
919 EXPECT_EQ(resultCode, 0);
920 printf("------end testGetBundleSizeWithIllegal_0002------\n");
921 }
922
923 /**
924 * @tc.number : SUB_APPEXECFWK_BMS_SIZE_0005
925 * @tc.name : GetBundleSize parameter illegal and bundleName error test
926 * @tc.desc : [C- SOFTWARE -0200]
927 */
928 HWTEST_F(BundleMgrTest, testGetBundleSizeWithIllegal_0003, Function | MediumTest | Level2)
929 {
930 printf("------start testGetBundleSizeWithIllegal_0003------\n");
931 char *bundleName = (char*)"com.openharmony.nothishap";
932 // error bundleName
933 uint32_t resultCode = GetBundleSize(bundleName);
934 EXPECT_EQ(resultCode, 0);
935 printf("------end testGetBundleSizeWithIllegal_0003------\n");
936 }
937
938 /**
939 * @tc.number : SUB_APPEXECFWK_BMS_SIZE_0006
940 * @tc.name : GetBundleSize parameter illegal and bundleName " " test
941 * @tc.desc : [C- SOFTWARE -0200]
942 */
943 HWTEST_F(BundleMgrTest, testGetBundleSizeWithIllegal_0004, Function | MediumTest | Level2)
944 {
945 printf("------start testGetBundleSizeWithIllegal_0004------\n");
946 char *bundleName = (char*)" ";
947 // bundleName " "
948 uint32_t resultCode = GetBundleSize(bundleName);
949 EXPECT_EQ(resultCode, 0);
950 printf("------end testGetBundleSizeWithIllegal_0004------\n");
951 }
952
953 /**
954 * @tc.number : SUB_APPEXECFWK_BMS_SIZE_0007
955 * @tc.name : stress test of the same application
956 * @tc.desc : [C- SOFTWARE -0200]
957 */
958 HWTEST_F(BundleMgrTest, testStressConfig_0001, Function | MediumTest | Level2)
959 {
960 printf("------start testStressConfig_0001------\n");
961 char *bundleName = (char*)"com.openharmony.testjsdemo";
962 for (int i = 1; i <= 100; i++) {
963 uint32_t resultCode = GetBundleSize(bundleName);
964 EXPECT_GT(resultCode, 0);
965 }
966 printf("------end testStressConfig_0001------\n");
967 }
968
969 /**
970 * @tc.number : SUB_APPEXECFWK_BMS_SIZE_0008
971 * @tc.name : stress test of the difference application
972 * @tc.desc : [C- SOFTWARE -0200]
973 */
974 HWTEST_F(BundleMgrTest, testStressConfig_0002, Function | MediumTest | Level2)
975 {
976 printf("------start testStressConfig_0002------\n");
977 char *bundleName = (char*)"com.openharmony.testjsdemo";
978 char *bundleName2 = (char*)"com.openharmony.testjsdemoBtestjsdemoB";
979 sem_init(&g_sem, 0, 0);
980 InstallParam installParam = {.installLocation = 1, .keepData = false };
981 string hapPath = g_testPath + "frequentlyStress.hap";
982 Install(hapPath.c_str(), &installParam, TestBundleStateCallback);
983 sem_wait(&g_sem);
984 for (int i = 1; i <= 100; i++) {
985 uint32_t resultCode = GetBundleSize(bundleName);
986 EXPECT_GT(resultCode, 0);
987 resultCode = GetBundleSize(bundleName2);
988 EXPECT_GT(resultCode, 0);
989 }
990 // uninstall
991 sem_init(&g_sem, 0, 0);
992 Uninstall(bundleName2, &installParam, TestBundleStateCallback);
993 sem_wait(&g_sem);
994 printf("------end testStressConfig_0002------\n");
995 }
996