From 2447d32f710ca5b092aa1d603f28ebf1c9c9a158 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=BE=BE?= Date: Wed, 5 Mar 2025 21:46:49 +0800 Subject: [PATCH 1/2] add permisson set ut MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王达 --- test/mock/app_spawn_stub.h | 1 + .../app_spawn_common_test.cpp | 94 +++++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/test/mock/app_spawn_stub.h b/test/mock/app_spawn_stub.h index b3a4d6a7..17982d51 100644 --- a/test/mock/app_spawn_stub.h +++ b/test/mock/app_spawn_stub.h @@ -113,6 +113,7 @@ void SetSystemEnv(void); void RunAppSandbox(const char *ptyName); HOOK_MGR *GetAppSpawnHookMgr(void); int SpawnKickDogStart(AppSpawnMgr *mgrContent); +int AddPermissionToEncaps(cJSON *extInfoJson, cJSON *encaps, uint32_t *permissionCount); #define STUB_NEED_CHECK 0x01 typedef int (*ExecvFunc)(const char *pathname, char *const argv[]); enum { diff --git a/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp b/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp index c545f7ab..3b53cc29 100644 --- a/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp +++ b/test/unittest/app_spawn_standard_test/app_spawn_common_test.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "appspawn_modulemgr.h" #include "appspawn_server.h" @@ -649,6 +650,99 @@ HWTEST_F(AppSpawnCommonTest, App_Spawn_Common_031, TestSize.Level0) AppSpawnClientInit(nullptr, nullptr); } +HWTEST_F(AppSpawnCommonTest, App_Spawn_Encaps_001, TestSize.Level0) +{ + const char encapsJsonStr[] = "{\"name\":\"Permissions\",\"ohos.encaps.count\":0,\"permissions\":" + "[{\"ohos.permission.bool\":true},{\"ohos.permission.int\":3225},{\"ohos.permission.string\":\"test\"}," + "{\"ohos.permission.array\":[1,2,3,4,5]}]}"; + + cJSON *encapsJson = cJSON_Parse(encapsJsonStr); + uint32_t permissionCount = 0; + int ret = AddPermissionToEncaps(encapsJson, NULL, &permissionCount); + EXPECT_EQ(ret, APPSPAWN_ARG_INVALID); + + cJSON_Delete(encapsJson); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_Encaps_002, TestSize.Level0) +{ + const char encapsJsonStr[] = "{\"name\":\"Permissions\",\"ohos.encaps.count\":4,\"permissions\":" + "[{\"ohos.permission.bool\":true},{\"ohos.permission.int\":3225},{\"ohos.permission.string\":\"test\"}," + "{\"ohos.permission.array\":[1,2,3,4,5]}]}"; + + cJSON *encapsJson = cJSON_Parse(encapsJsonStr); + uint32_t permissionCount = 0; + int ret = AddPermissionToEncaps(encapsJson, NULL, &permissionCount); + EXPECT_EQ(ret, APPSPAWN_ERROR_UTILS_ADD_JSON_FAIL); + + cJSON_Delete(encapsJson); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_Encaps_003, TestSize.Level0) +{ + const char encapsJsonStr[] = "{\"name\":\"Permissions\",\"ohos.encaps.count\":5,\"permissions\":" + "[{\"ohos.permission.bool\":true},{\"ohos.permission.int\":3225},{\"ohos.permission.string\":\"test\"}," + "{\"ohos.permission.array\":[1,2,3,4,5]}]}"; + + cJSON *encapsOut = cJSON_CreateObject(); + EXPECT_NE(encapsOut, nullptr); + cJSON *encapsJson = cJSON_Parse(encapsJsonStr); + uint32_t permissionCount = 0; + + cJSON *permissions = cJSON_GetObjectItemCaseSensitive(encapsJson, "permissions"); + EXPECT_NE(permissions, nullptr); + cJSON *emptyItem = cJSON_CreateObject(); + cJSON_AddItemToArray(permissions, emptyItem); + + int ret = AddPermissionToEncaps(encapsJson, encapsOut, &permissionCount); + EXPECT_EQ(ret, APPSPAWN_ERROR_UTILS_DECODE_JSON_FAIL); + + cJSON_Delete(encapsJson); + cJSON_Delete(encapsOut); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_Encaps_004, TestSize.Level0) +{ + const char encapsJsonStr[] = "{\"name\":\"Permissions\",\"ohos.encaps.count\":4,\"permissions\":" + "[{\"ohos.permission.bool\":true},{\"ohos.permission.int\":3225},{\"ohos.permission.string\":\"test\"}," + "{\"ohos.permission.array\":[1,2,3,4,5]}]}"; + + cJSON *encapsOut = cJSON_CreateObject(); + EXPECT_NE(encapsOut, nullptr); + cJSON *encapsJson = cJSON_Parse(encapsJsonStr); + uint32_t permissionCount = 0; + + cJSON *permissions = cJSON_GetObjectItemCaseSensitive(encapsJson, "permissions"); + EXPECT_NE(permissions, nullptr); + cJSON *permission = cJSON_GetArrayItem(permissions, 0); + EXPECT_NE(permission, nullptr); + permission->child = nullptr; + int ret = AddPermissionToEncaps(encapsJson, encapsOut, &permissionCount); + EXPECT_EQ(ret, APPSPAWN_ERROR_UTILS_DECODE_JSON_FAIL); + + cJSON_Delete(encapsJson); + cJSON_Delete(encapsOut); +} + +HWTEST_F(AppSpawnCommonTest, App_Spawn_Encaps_005, TestSize.Level0) +{ + const char encapsJsonStr[] = "{\"name\":\"Permissions\",\"ohos.encaps.count\":4,\"permissions\":" + "[{\"ohos.permission.bool\":true},{\"ohos.permission.int\":3225},{\"ohos.permission.string\":\"test\"}," + "{\"ohos.permission.array\":[1,2,3,4,5]}]}"; + + cJSON *encapsOut = cJSON_CreateObject(); + EXPECT_NE(encapsOut, nullptr); + cJSON *encapsJson = cJSON_Parse(encapsJsonStr); + uint32_t permissionCount = 0; + + int ret = AddPermissionToEncaps(encapsJson, encapsOut, &permissionCount); + EXPECT_EQ(ret, 0); + EXPECT_EQ(permissionCount, 4); + + cJSON_Delete(encapsJson); + cJSON_Delete(encapsOut); +} + HWTEST_F(AppSpawnCommonTest, App_Spawn_SetFdEnv, TestSize.Level0) { int ret = SetFdEnv(nullptr, nullptr); -- Gitee From 941b737207bb990de4d97765853d642b1ea0dd7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=BE=BE?= Date: Thu, 6 Mar 2025 11:31:16 +0800 Subject: [PATCH 2/2] fix bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 王达 --- test/unittest/app_spawn_standard_test/BUILD.gn | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test/unittest/app_spawn_standard_test/BUILD.gn b/test/unittest/app_spawn_standard_test/BUILD.gn index 7a2e1921..c5232268 100644 --- a/test/unittest/app_spawn_standard_test/BUILD.gn +++ b/test/unittest/app_spawn_standard_test/BUILD.gn @@ -493,6 +493,7 @@ ohos_unittest("AppSpawn_common_ut") { "${appspawn_path}/modules/common/appspawn_cgroup.c", "${appspawn_path}/modules/common/appspawn_common.c", "${appspawn_path}/modules/common/appspawn_dfx_dump.cpp", + "${appspawn_path}/modules/common/appspawn_encaps.c", "${appspawn_path}/modules/common/appspawn_namespace.c", "${appspawn_path}/modules/common/appspawn_silk.c", "${appspawn_path}/modules/nweb_adapter/nwebspawn_adapter.cpp", @@ -506,10 +507,6 @@ ohos_unittest("AppSpawn_common_ut") { "${appspawn_path}/modules/sandbox/sandbox_manager.c", ] - if (appspawn_use_encaps == true) { - sources += [ "${appspawn_path}/modules/common/appspawn_encaps.c" ] - } - # add stub include_dirs += [ "${appspawn_path}/test/mock" ] sources += [ -- Gitee