169570cc8Sopenharmony_ci/*
269570cc8Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
369570cc8Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
469570cc8Sopenharmony_ci * you may not use this file except in compliance with the License.
569570cc8Sopenharmony_ci * You may obtain a copy of the License at
669570cc8Sopenharmony_ci *
769570cc8Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
869570cc8Sopenharmony_ci *
969570cc8Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1069570cc8Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1169570cc8Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1269570cc8Sopenharmony_ci * See the License for the specific language governing permissions and
1369570cc8Sopenharmony_ci * limitations under the License.
1469570cc8Sopenharmony_ci */
1569570cc8Sopenharmony_ci
1669570cc8Sopenharmony_ci#include <gtest/gtest.h>
1769570cc8Sopenharmony_ci
1869570cc8Sopenharmony_ci#include <cerrno>
1969570cc8Sopenharmony_ci#include <climits>
2069570cc8Sopenharmony_ci#include <cstdlib>
2169570cc8Sopenharmony_ci#include <cstring>
2269570cc8Sopenharmony_ci#include <memory>
2369570cc8Sopenharmony_ci#include <string>
2469570cc8Sopenharmony_ci#include <sys/stat.h>
2569570cc8Sopenharmony_ci#include <sys/types.h>
2669570cc8Sopenharmony_ci#include <unistd.h>
2769570cc8Sopenharmony_ci#include <cstdio>
2869570cc8Sopenharmony_ci#include <cerrno>
2969570cc8Sopenharmony_ci
3069570cc8Sopenharmony_ci#include "appspawn_utils.h"
3169570cc8Sopenharmony_ci#include "parameter.h"
3269570cc8Sopenharmony_ci#include "hnp_base.h"
3369570cc8Sopenharmony_ci#include "hnp_pack.h"
3469570cc8Sopenharmony_ci#include "hnp_installer.h"
3569570cc8Sopenharmony_ci#include "hnp_api.h"
3669570cc8Sopenharmony_ci#include "securec.h"
3769570cc8Sopenharmony_ci#include "hnp_stub.h"
3869570cc8Sopenharmony_ci
3969570cc8Sopenharmony_ciusing namespace testing;
4069570cc8Sopenharmony_ciusing namespace testing::ext;
4169570cc8Sopenharmony_ci
4269570cc8Sopenharmony_ci#define HNP_BASE_PATH "/data/app/el1/bundle/10000"
4369570cc8Sopenharmony_ci#define PARAM_BUFFER_SIZE 10
4469570cc8Sopenharmony_ci
4569570cc8Sopenharmony_ci#ifdef __cplusplus
4669570cc8Sopenharmony_ci    extern "C" {
4769570cc8Sopenharmony_ci#endif
4869570cc8Sopenharmony_ci
4969570cc8Sopenharmony_ci
5069570cc8Sopenharmony_ci#ifdef __cplusplus
5169570cc8Sopenharmony_ci    }
5269570cc8Sopenharmony_ci#endif
5369570cc8Sopenharmony_ci
5469570cc8Sopenharmony_cinamespace OHOS {
5569570cc8Sopenharmony_ciclass HnpInstallerTest : public testing::Test {
5669570cc8Sopenharmony_cipublic:
5769570cc8Sopenharmony_ci    static void SetUpTestCase();
5869570cc8Sopenharmony_ci    static void TearDownTestCase();
5969570cc8Sopenharmony_ci    void SetUp();
6069570cc8Sopenharmony_ci    void TearDown();
6169570cc8Sopenharmony_ci};
6269570cc8Sopenharmony_ci
6369570cc8Sopenharmony_civoid HnpInstallerTest::SetUpTestCase()
6469570cc8Sopenharmony_ci{
6569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_TEST SetUpTestCase";
6669570cc8Sopenharmony_ci}
6769570cc8Sopenharmony_ci
6869570cc8Sopenharmony_civoid HnpInstallerTest::TearDownTestCase()
6969570cc8Sopenharmony_ci{
7069570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_TEST TearDownTestCase";
7169570cc8Sopenharmony_ci}
7269570cc8Sopenharmony_ci
7369570cc8Sopenharmony_civoid HnpInstallerTest::SetUp()
7469570cc8Sopenharmony_ci{
7569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_TEST SetUp";
7669570cc8Sopenharmony_ci}
7769570cc8Sopenharmony_ci
7869570cc8Sopenharmony_civoid HnpInstallerTest::TearDown()
7969570cc8Sopenharmony_ci{
8069570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_TEST TearDown";
8169570cc8Sopenharmony_ci}
8269570cc8Sopenharmony_ci
8369570cc8Sopenharmony_civoid HnpPackWithoutBin(char *name, bool isPublic, bool isFirst)
8469570cc8Sopenharmony_ci{
8569570cc8Sopenharmony_ci    char arg6[MAX_FILE_PATH_LEN];
8669570cc8Sopenharmony_ci
8769570cc8Sopenharmony_ci    if (isPublic) {
8869570cc8Sopenharmony_ci        EXPECT_EQ(strcpy_s(arg6, MAX_FILE_PATH_LEN, "./hnp_out/public"), EOK);
8969570cc8Sopenharmony_ci    } else {
9069570cc8Sopenharmony_ci        EXPECT_EQ(strcpy_s(arg6, MAX_FILE_PATH_LEN, "./hnp_out/private"), EOK);
9169570cc8Sopenharmony_ci    }
9269570cc8Sopenharmony_ci
9369570cc8Sopenharmony_ci    if (isFirst) {
9469570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("./hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
9569570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("./hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
9669570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_out/public", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
9769570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_out/private", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
9869570cc8Sopenharmony_ci    }
9969570cc8Sopenharmony_ci
10069570cc8Sopenharmony_ci    char arg1[] = "hnpcli";
10169570cc8Sopenharmony_ci    char arg2[] = "pack";
10269570cc8Sopenharmony_ci    char arg3[] = "-i";
10369570cc8Sopenharmony_ci    char arg4[] = "./hnp_sample";
10469570cc8Sopenharmony_ci    char arg5[] = "-o";
10569570cc8Sopenharmony_ci    char arg7[] = "-n";
10669570cc8Sopenharmony_ci    char arg9[] = "-v";
10769570cc8Sopenharmony_ci    char arg10[] = "1.1";
10869570cc8Sopenharmony_ci    char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, name, arg9, arg10};
10969570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
11069570cc8Sopenharmony_ci
11169570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdPack(argc, argv), 0);
11269570cc8Sopenharmony_ci}
11369570cc8Sopenharmony_ci
11469570cc8Sopenharmony_civoid HnpPackWithoutBinDelete(void)
11569570cc8Sopenharmony_ci{
11669570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_sample"), 0);
11769570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_out"), 0);
11869570cc8Sopenharmony_ci}
11969570cc8Sopenharmony_ci
12069570cc8Sopenharmony_civoid HnpPackWithBin(char *name, char *version, bool isPublic, bool isFirst, mode_t mode)
12169570cc8Sopenharmony_ci{
12269570cc8Sopenharmony_ci    char arg6[MAX_FILE_PATH_LEN];
12369570cc8Sopenharmony_ci
12469570cc8Sopenharmony_ci    if (strcmp(version, "1.1") == 0) {
12569570cc8Sopenharmony_ci        if (isPublic) {
12669570cc8Sopenharmony_ci            EXPECT_EQ(strcpy_s(arg6, MAX_FILE_PATH_LEN, "./hnp_out/public"), EOK);
12769570cc8Sopenharmony_ci        } else {
12869570cc8Sopenharmony_ci            EXPECT_EQ(strcpy_s(arg6, MAX_FILE_PATH_LEN, "./hnp_out/private"), EOK);
12969570cc8Sopenharmony_ci        }
13069570cc8Sopenharmony_ci    } else {
13169570cc8Sopenharmony_ci        if (isPublic) {
13269570cc8Sopenharmony_ci            EXPECT_GT(sprintf_s(arg6, MAX_FILE_PATH_LEN, "./hnp_out_%s/public", version), 0);
13369570cc8Sopenharmony_ci        } else {
13469570cc8Sopenharmony_ci            EXPECT_GT(sprintf_s(arg6, MAX_FILE_PATH_LEN, "./hnp_out_%s/private", version), 0);
13569570cc8Sopenharmony_ci        }
13669570cc8Sopenharmony_ci    }
13769570cc8Sopenharmony_ci
13869570cc8Sopenharmony_ci    if (isFirst) {
13969570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
14069570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_sample/bin", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
14169570cc8Sopenharmony_ci        FILE *fp = fopen("hnp_sample/bin/out", "wb");
14269570cc8Sopenharmony_ci        EXPECT_NE(fp, nullptr);
14369570cc8Sopenharmony_ci        (void)fclose(fp);
14469570cc8Sopenharmony_ci        EXPECT_EQ(chmod("hnp_sample/bin/out", mode), 0);
14569570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
14669570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_out/public", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
14769570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_out/private", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
14869570cc8Sopenharmony_ci    }
14969570cc8Sopenharmony_ci
15069570cc8Sopenharmony_ci    char arg1[] = "hnpcli";
15169570cc8Sopenharmony_ci    char arg2[] = "pack";
15269570cc8Sopenharmony_ci    char arg3[] = "-i";
15369570cc8Sopenharmony_ci    char arg4[] = "./hnp_sample";
15469570cc8Sopenharmony_ci    char arg5[] = "-o";
15569570cc8Sopenharmony_ci    char arg7[] = "-n";
15669570cc8Sopenharmony_ci    char arg9[] = "-v";
15769570cc8Sopenharmony_ci    char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, name, arg9, version};
15869570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
15969570cc8Sopenharmony_ci
16069570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdPack(argc, argv), 0);
16169570cc8Sopenharmony_ci}
16269570cc8Sopenharmony_ci
16369570cc8Sopenharmony_civoid HnpPackWithBinDelete(void)
16469570cc8Sopenharmony_ci{
16569570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_sample"), 0);
16669570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_out"), 0);
16769570cc8Sopenharmony_ci}
16869570cc8Sopenharmony_ci
16969570cc8Sopenharmony_civoid HnpPackWithCfg(bool isPublic, bool isFirst)
17069570cc8Sopenharmony_ci{
17169570cc8Sopenharmony_ci    FILE *fp;
17269570cc8Sopenharmony_ci    int whitelen;
17369570cc8Sopenharmony_ci    char arg6[MAX_FILE_PATH_LEN];
17469570cc8Sopenharmony_ci
17569570cc8Sopenharmony_ci    if (isPublic) {
17669570cc8Sopenharmony_ci        EXPECT_EQ(strcpy_s(arg6, MAX_FILE_PATH_LEN, "./hnp_out/public"), EOK);
17769570cc8Sopenharmony_ci    } else {
17869570cc8Sopenharmony_ci        EXPECT_EQ(strcpy_s(arg6, MAX_FILE_PATH_LEN, "./hnp_out/private"), EOK);
17969570cc8Sopenharmony_ci    }
18069570cc8Sopenharmony_ci
18169570cc8Sopenharmony_ci    if (isFirst) {
18269570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_sample", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
18369570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_sample/bin", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
18469570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_out", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
18569570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_out/public", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
18669570cc8Sopenharmony_ci        EXPECT_EQ(mkdir("hnp_out/private", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
18769570cc8Sopenharmony_ci        fp = fopen("hnp_sample/bin/out", "wb");
18869570cc8Sopenharmony_ci        EXPECT_NE(fp, NULL);
18969570cc8Sopenharmony_ci        (void)fclose(fp);
19069570cc8Sopenharmony_ci        fp = fopen("hnp_sample/bin/out2", "wb");
19169570cc8Sopenharmony_ci        EXPECT_NE(fp, NULL);
19269570cc8Sopenharmony_ci        (void)fclose(fp);
19369570cc8Sopenharmony_ci        fp = fopen("hnp_sample/hnp.json", "w");
19469570cc8Sopenharmony_ci        EXPECT_NE(fp, nullptr);
19569570cc8Sopenharmony_ci        (void)fclose(fp);
19669570cc8Sopenharmony_ci    }
19769570cc8Sopenharmony_ci
19869570cc8Sopenharmony_ci    char arg1[] = "hnp";
19969570cc8Sopenharmony_ci    char arg2[] = "pack";
20069570cc8Sopenharmony_ci    char arg3[] = "-i";
20169570cc8Sopenharmony_ci    char arg4[] = "./hnp_sample";
20269570cc8Sopenharmony_ci    char arg5[] = "-o";
20369570cc8Sopenharmony_ci    char *argv[] = {arg1, arg2, arg3, arg4, arg5, arg6};
20469570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
20569570cc8Sopenharmony_ci    char cfg[] = "{\"type\":\"hnp-config\",\"name\":\"sample\",\"version\":\"1.1\",\"install\":"
20669570cc8Sopenharmony_ci        "{\"links\":[{\"source\":\"bin/out\",\"target\":\"outt\"},{\"source\":\"bin/out2\","
20769570cc8Sopenharmony_ci        "\"target\":\"out2\"}]}}";
20869570cc8Sopenharmony_ci    fp = fopen("hnp_sample/hnp.json", "w");
20969570cc8Sopenharmony_ci    whitelen = fwrite(cfg, sizeof(char), strlen(cfg) + 1, fp);
21069570cc8Sopenharmony_ci    (void)fclose(fp);
21169570cc8Sopenharmony_ci    EXPECT_EQ(whitelen, strlen(cfg) + 1);
21269570cc8Sopenharmony_ci
21369570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdPack(argc, argv), 0);
21469570cc8Sopenharmony_ci}
21569570cc8Sopenharmony_ci
21669570cc8Sopenharmony_civoid HnpPackWithCfgDelete(void)
21769570cc8Sopenharmony_ci{
21869570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_sample"), 0);
21969570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_out"), 0);
22069570cc8Sopenharmony_ci}
22169570cc8Sopenharmony_ci
22269570cc8Sopenharmony_civoid HnpInstall(char *package)
22369570cc8Sopenharmony_ci{
22469570cc8Sopenharmony_ci    char arg1[] = "hnp";
22569570cc8Sopenharmony_ci    char arg2[] = "install";
22669570cc8Sopenharmony_ci    char arg3[] = "-u";
22769570cc8Sopenharmony_ci    char arg4[] = "10000";
22869570cc8Sopenharmony_ci    char arg5[] = "-p";
22969570cc8Sopenharmony_ci    char arg7[] = "-f";
23069570cc8Sopenharmony_ci    char arg8[] = "-i";
23169570cc8Sopenharmony_ci    char arg9[] = "./hnp_out";
23269570cc8Sopenharmony_ci    char arg10[] = "-s";
23369570cc8Sopenharmony_ci    char arg11[] = "./hnp_out";
23469570cc8Sopenharmony_ci    char arg12[] = "-a";
23569570cc8Sopenharmony_ci    char arg13[] = "system64";
23669570cc8Sopenharmony_ci    char* argv[] = {arg1, arg2, arg3, arg4, arg5, package, arg7, arg8, arg9, arg10, arg11, arg12, arg13};
23769570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
23869570cc8Sopenharmony_ci
23969570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
24069570cc8Sopenharmony_ci}
24169570cc8Sopenharmony_ci
24269570cc8Sopenharmony_civoid HnpUnInstall(char *package)
24369570cc8Sopenharmony_ci{
24469570cc8Sopenharmony_ci    char arg1[] = "hnp";
24569570cc8Sopenharmony_ci    char arg2[] = "uninstall";
24669570cc8Sopenharmony_ci    char arg3[] = "-u";
24769570cc8Sopenharmony_ci    char arg4[] = "10000";
24869570cc8Sopenharmony_ci    char arg5[] = "-p";
24969570cc8Sopenharmony_ci    char* argv[] = {arg1, arg2, arg3, arg4, arg5, package};
25069570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
25169570cc8Sopenharmony_ci
25269570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdUnInstall(argc, argv), 0);
25369570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
25469570cc8Sopenharmony_ci}
25569570cc8Sopenharmony_ci
25669570cc8Sopenharmony_ci/**
25769570cc8Sopenharmony_ci* @tc.name: Hnp_Install_001
25869570cc8Sopenharmony_ci* @tc.desc:  Verify set Arg if HnpCmdInstall succeed.
25969570cc8Sopenharmony_ci* @tc.type: FUNC
26069570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
26169570cc8Sopenharmony_ci* @tc.author:
26269570cc8Sopenharmony_ci*/
26369570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_001, TestSize.Level0)
26469570cc8Sopenharmony_ci{
26569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_001 start";
26669570cc8Sopenharmony_ci
26769570cc8Sopenharmony_ci    // clear resource before test
26869570cc8Sopenharmony_ci    HnpDeleteFolder("hnp_sample");
26969570cc8Sopenharmony_ci    HnpDeleteFolder("hnp_out");
27069570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
27169570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
27269570cc8Sopenharmony_ci
27369570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
27469570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1.1"), true, true,
27569570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
27669570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_private"), const_cast<char *>("1.1"), false, false,
27769570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
27869570cc8Sopenharmony_ci
27969570cc8Sopenharmony_ci    char arg1[] = "hnp";
28069570cc8Sopenharmony_ci    char arg2[] = "install";
28169570cc8Sopenharmony_ci    char arg3[] = "-u";
28269570cc8Sopenharmony_ci
28369570cc8Sopenharmony_ci    { // param num not enough
28469570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2};
28569570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
28669570cc8Sopenharmony_ci
28769570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), HNP_ERRNO_OPERATOR_ARGV_MISS);
28869570cc8Sopenharmony_ci    }
28969570cc8Sopenharmony_ci    { // param uid is invalid
29069570cc8Sopenharmony_ci        char arg4[] = "asd1231";
29169570cc8Sopenharmony_ci        char arg5[] = "-p";
29269570cc8Sopenharmony_ci        char arg6[] = "sample";
29369570cc8Sopenharmony_ci        char arg7[] = "-s";
29469570cc8Sopenharmony_ci        char arg8[] = "./hnp_out";
29569570cc8Sopenharmony_ci        char arg9[] = "-a";
29669570cc8Sopenharmony_ci        char arg10[] = "system64";
29769570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10};
29869570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
29969570cc8Sopenharmony_ci
30069570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), HNP_ERRNO_INSTALLER_ARGV_UID_INVALID);
30169570cc8Sopenharmony_ci    }
30269570cc8Sopenharmony_ci
30369570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
30469570cc8Sopenharmony_ci    HnpPackWithBinDelete();
30569570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
30669570cc8Sopenharmony_ci
30769570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_001 end";
30869570cc8Sopenharmony_ci}
30969570cc8Sopenharmony_ci
31069570cc8Sopenharmony_ci/**
31169570cc8Sopenharmony_ci* @tc.name: Hnp_Install_002
31269570cc8Sopenharmony_ci* @tc.desc:  Verify install path get if HnpCmdInstall succeed.
31369570cc8Sopenharmony_ci* @tc.type: FUNC
31469570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
31569570cc8Sopenharmony_ci* @tc.author:
31669570cc8Sopenharmony_ci*/
31769570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_002, TestSize.Level0)
31869570cc8Sopenharmony_ci{
31969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_002 start";
32069570cc8Sopenharmony_ci
32169570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
32269570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1.1"), true, true,
32369570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
32469570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_private"), const_cast<char *>("1.1"), false, false,
32569570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
32669570cc8Sopenharmony_ci
32769570cc8Sopenharmony_ci    char arg1[] = "hnp";
32869570cc8Sopenharmony_ci    char arg2[] = "install";
32969570cc8Sopenharmony_ci
33069570cc8Sopenharmony_ci    { // dir exist but force is false
33169570cc8Sopenharmony_ci        char arg3[] = "-u";
33269570cc8Sopenharmony_ci        char arg4[] = "10000";
33369570cc8Sopenharmony_ci        char arg5[] = "-p";
33469570cc8Sopenharmony_ci        char arg6[] = "sample";
33569570cc8Sopenharmony_ci        char arg7[] = "-i";
33669570cc8Sopenharmony_ci        char arg8[] = "./hnp_out";
33769570cc8Sopenharmony_ci        char arg9[] = "-s";
33869570cc8Sopenharmony_ci        char arg10[] = "./hnp_out";
33969570cc8Sopenharmony_ci        char arg11[] = "-a";
34069570cc8Sopenharmony_ci        char arg12[] = "system64";
34169570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12};
34269570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
34369570cc8Sopenharmony_ci
34469570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
34569570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), HNP_ERRNO_INSTALLER_PATH_IS_EXIST);
34669570cc8Sopenharmony_ci    }
34769570cc8Sopenharmony_ci    { //ok
34869570cc8Sopenharmony_ci        char arg3[] = "-u";
34969570cc8Sopenharmony_ci        char arg4[] = "10000";
35069570cc8Sopenharmony_ci        char arg5[] = "-p";
35169570cc8Sopenharmony_ci        char arg6[] = "sample";
35269570cc8Sopenharmony_ci        char arg7[] = "-i";
35369570cc8Sopenharmony_ci        char arg8[] = "./hnp_out";
35469570cc8Sopenharmony_ci        char arg9[] = "-f";
35569570cc8Sopenharmony_ci        char arg10[] = "-s";
35669570cc8Sopenharmony_ci        char arg11[] = "./hnp_out";
35769570cc8Sopenharmony_ci        char arg12[] = "-a";
35869570cc8Sopenharmony_ci        char arg13[] = "system64";
35969570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13};
36069570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
36169570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
36269570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out", F_OK), 0);
36369570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnp/sample/bin/out", F_OK), 0);
36469570cc8Sopenharmony_ci    }
36569570cc8Sopenharmony_ci
36669570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
36769570cc8Sopenharmony_ci    HnpPackWithBinDelete();
36869570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
36969570cc8Sopenharmony_ci
37069570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_002 end";
37169570cc8Sopenharmony_ci}
37269570cc8Sopenharmony_ci
37369570cc8Sopenharmony_ci/**
37469570cc8Sopenharmony_ci* @tc.name: Hnp_Install_003
37569570cc8Sopenharmony_ci* @tc.desc:  Verify scr path bin not exist HnpCmdInstall succeed.
37669570cc8Sopenharmony_ci* @tc.type: FUNC
37769570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
37869570cc8Sopenharmony_ci* @tc.author:
37969570cc8Sopenharmony_ci*/
38069570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_003, TestSize.Level0)
38169570cc8Sopenharmony_ci{
38269570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_003 start";
38369570cc8Sopenharmony_ci
38469570cc8Sopenharmony_ci    char arg1[] = "hnp";
38569570cc8Sopenharmony_ci    char arg2[] = "install";
38669570cc8Sopenharmony_ci    char arg3[] = "-u";
38769570cc8Sopenharmony_ci    char arg4[] = "10000";
38869570cc8Sopenharmony_ci    char arg5[] = "-p";
38969570cc8Sopenharmony_ci    char arg6[] = "sample";
39069570cc8Sopenharmony_ci    char arg7[] = "-i";
39169570cc8Sopenharmony_ci    char arg8[] = "./hnp_out";
39269570cc8Sopenharmony_ci    char arg9[] = "-s";
39369570cc8Sopenharmony_ci    char arg10[] = "./hnp_out";
39469570cc8Sopenharmony_ci    char arg11[] = "-a";
39569570cc8Sopenharmony_ci    char arg12[] = "system64";
39669570cc8Sopenharmony_ci    char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12};
39769570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
39869570cc8Sopenharmony_ci
39969570cc8Sopenharmony_ci    { // scr path bin not exist
40069570cc8Sopenharmony_ci        EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
40169570cc8Sopenharmony_ci        HnpPackWithoutBin(const_cast<char *>("sample_public"), true, true);
40269570cc8Sopenharmony_ci        HnpPackWithoutBin(const_cast<char *>("sample_private"), false, false);
40369570cc8Sopenharmony_ci
40469570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
40569570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out", F_OK), -1);
40669570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnp/sample/bin/out", F_OK), -1);
40769570cc8Sopenharmony_ci        HnpPackWithoutBinDelete();
40869570cc8Sopenharmony_ci        HnpDeleteFolder(HNP_BASE_PATH);
40969570cc8Sopenharmony_ci        remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
41069570cc8Sopenharmony_ci    }
41169570cc8Sopenharmony_ci    { //ok
41269570cc8Sopenharmony_ci        EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
41369570cc8Sopenharmony_ci        HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1.1"), true, true,
41469570cc8Sopenharmony_ci            S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
41569570cc8Sopenharmony_ci        HnpPackWithBin(const_cast<char *>("sample_private"), const_cast<char *>("1.1"), false, false,
41669570cc8Sopenharmony_ci            S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
41769570cc8Sopenharmony_ci
41869570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
41969570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out", F_OK), 0);
42069570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnp/sample/bin/out", F_OK), 0);
42169570cc8Sopenharmony_ci        HnpPackWithBinDelete();
42269570cc8Sopenharmony_ci    }
42369570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
42469570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
42569570cc8Sopenharmony_ci
42669570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_003 end";
42769570cc8Sopenharmony_ci}
42869570cc8Sopenharmony_ci
42969570cc8Sopenharmony_ci/**
43069570cc8Sopenharmony_ci* @tc.name: Hnp_Install_004
43169570cc8Sopenharmony_ci* @tc.desc:  Verify src path file is not hnp cli generate if HnpCmdInstall succeed.
43269570cc8Sopenharmony_ci* @tc.type: FUNC
43369570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
43469570cc8Sopenharmony_ci* @tc.author:
43569570cc8Sopenharmony_ci*/
43669570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_004, TestSize.Level0)
43769570cc8Sopenharmony_ci{
43869570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_004 start";
43969570cc8Sopenharmony_ci
44069570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
44169570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1.1"), true, true,
44269570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
44369570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_private"), const_cast<char *>("1.1"), false, false,
44469570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
44569570cc8Sopenharmony_ci
44669570cc8Sopenharmony_ci    char arg1[] = "hnp";
44769570cc8Sopenharmony_ci    char arg2[] = "install";
44869570cc8Sopenharmony_ci    char arg3[] = "-u";
44969570cc8Sopenharmony_ci    char arg4[] = "10000";
45069570cc8Sopenharmony_ci    char arg5[] = "-p";
45169570cc8Sopenharmony_ci    char arg6[] = "sample";
45269570cc8Sopenharmony_ci    char arg7[] = "-i";
45369570cc8Sopenharmony_ci    char arg8[] = "./hnp_out";
45469570cc8Sopenharmony_ci    char arg9[] = "-f";
45569570cc8Sopenharmony_ci    char arg10[] = "-s";
45669570cc8Sopenharmony_ci    char arg11[] = "./hnp_out";
45769570cc8Sopenharmony_ci    char arg12[] = "-a";
45869570cc8Sopenharmony_ci    char arg13[] = "system64";
45969570cc8Sopenharmony_ci
46069570cc8Sopenharmony_ci    char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13};
46169570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
46269570cc8Sopenharmony_ci
46369570cc8Sopenharmony_ci    { //src path file is not hnp
46469570cc8Sopenharmony_ci        FILE *fp = fopen("./hnp_out/public/example.zip", "wb");
46569570cc8Sopenharmony_ci        int data[15] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
46669570cc8Sopenharmony_ci        EXPECT_NE(fp, NULL);
46769570cc8Sopenharmony_ci        fwrite(data, sizeof(int), 15, fp);
46869570cc8Sopenharmony_ci        (void)fclose(fp);
46969570cc8Sopenharmony_ci
47069570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
47169570cc8Sopenharmony_ci        remove("./hnp_out/public/example.zip");
47269570cc8Sopenharmony_ci    }
47369570cc8Sopenharmony_ci    { //ok
47469570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
47569570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out", F_OK), 0);
47669570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnp/sample/bin/out", F_OK), 0);
47769570cc8Sopenharmony_ci    }
47869570cc8Sopenharmony_ci
47969570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
48069570cc8Sopenharmony_ci    HnpPackWithBinDelete();
48169570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
48269570cc8Sopenharmony_ci
48369570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_004 end";
48469570cc8Sopenharmony_ci}
48569570cc8Sopenharmony_ci
48669570cc8Sopenharmony_ci/**
48769570cc8Sopenharmony_ci* @tc.name: Hnp_Install_005
48869570cc8Sopenharmony_ci* @tc.desc:  Verify more than 2 link if HnpCmdInstall succeed.
48969570cc8Sopenharmony_ci* @tc.type: FUNC
49069570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
49169570cc8Sopenharmony_ci* @tc.author:
49269570cc8Sopenharmony_ci*/
49369570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_005, TestSize.Level0)
49469570cc8Sopenharmony_ci{
49569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_005 start";
49669570cc8Sopenharmony_ci
49769570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
49869570cc8Sopenharmony_ci
49969570cc8Sopenharmony_ci    char arg1[] = "hnp";
50069570cc8Sopenharmony_ci    char arg2[] = "install";
50169570cc8Sopenharmony_ci
50269570cc8Sopenharmony_ci    { //public ok
50369570cc8Sopenharmony_ci        HnpPackWithCfg(true, true);
50469570cc8Sopenharmony_ci        char arg3[] = "-u";
50569570cc8Sopenharmony_ci        char arg4[] = "10000";
50669570cc8Sopenharmony_ci        char arg5[] = "-p";
50769570cc8Sopenharmony_ci        char arg6[] = "sample";
50869570cc8Sopenharmony_ci        char arg7[] = "-i";
50969570cc8Sopenharmony_ci        char arg8[] = "./hnp_out";
51069570cc8Sopenharmony_ci        char arg9[] = "-f";
51169570cc8Sopenharmony_ci        char arg10[] = "-s";
51269570cc8Sopenharmony_ci        char arg11[] = "./hnp_out";
51369570cc8Sopenharmony_ci        char arg12[] = "-a";
51469570cc8Sopenharmony_ci        char arg13[] = "system64";
51569570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13};
51669570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
51769570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
51869570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/outt", F_OK), 0);
51969570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out2", F_OK), 0);
52069570cc8Sopenharmony_ci    }
52169570cc8Sopenharmony_ci    { //ok
52269570cc8Sopenharmony_ci        HnpPackWithCfg(false, false);
52369570cc8Sopenharmony_ci        char arg3[] = "-u";
52469570cc8Sopenharmony_ci        char arg4[] = "10000";
52569570cc8Sopenharmony_ci        char arg5[] = "-p";
52669570cc8Sopenharmony_ci        char arg6[] = "sample";
52769570cc8Sopenharmony_ci        char arg7[] = "-i";
52869570cc8Sopenharmony_ci        char arg8[] = "./hnp_out";
52969570cc8Sopenharmony_ci        char arg9[] = "-f";
53069570cc8Sopenharmony_ci        char arg10[] = "-s";
53169570cc8Sopenharmony_ci        char arg11[] = "./hnp_out";
53269570cc8Sopenharmony_ci        char arg12[] = "-a";
53369570cc8Sopenharmony_ci        char arg13[] = "system64";
53469570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13};
53569570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
53669570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
53769570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnp/sample/bin/outt", F_OK), 0);
53869570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnp/sample/bin/out2", F_OK), 0);
53969570cc8Sopenharmony_ci    }
54069570cc8Sopenharmony_ci
54169570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
54269570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
54369570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
54469570cc8Sopenharmony_ci
54569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Installer_005 end";
54669570cc8Sopenharmony_ci}
54769570cc8Sopenharmony_ci
54869570cc8Sopenharmony_ci/**
54969570cc8Sopenharmony_ci* @tc.name: Hnp_Install_006
55069570cc8Sopenharmony_ci* @tc.desc:  Verify private HnpCmdInstall succeed.
55169570cc8Sopenharmony_ci* @tc.type: FUNC
55269570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
55369570cc8Sopenharmony_ci* @tc.author:
55469570cc8Sopenharmony_ci*/
55569570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_006, TestSize.Level0)
55669570cc8Sopenharmony_ci{
55769570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_006 start";
55869570cc8Sopenharmony_ci
55969570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
56069570cc8Sopenharmony_ci
56169570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
56269570cc8Sopenharmony_ci
56369570cc8Sopenharmony_ci    char arg1[] = "hnp";
56469570cc8Sopenharmony_ci    char arg2[] = "install";
56569570cc8Sopenharmony_ci
56669570cc8Sopenharmony_ci    { //ok
56769570cc8Sopenharmony_ci        char arg3[] = "-u";
56869570cc8Sopenharmony_ci        char arg4[] = "10000";
56969570cc8Sopenharmony_ci        char arg5[] = "-p";
57069570cc8Sopenharmony_ci        char arg6[] = "sample";
57169570cc8Sopenharmony_ci        char arg7[] = "-i";
57269570cc8Sopenharmony_ci        char arg8[] = "./hnp_out";
57369570cc8Sopenharmony_ci        char arg9[] = "-f";
57469570cc8Sopenharmony_ci        char arg10[] = "-s";
57569570cc8Sopenharmony_ci        char arg11[] = "./hnp_out";
57669570cc8Sopenharmony_ci        char arg12[] = "-a";
57769570cc8Sopenharmony_ci        char arg13[] = "system64";
57869570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9,  arg10, arg11, arg12, arg13};
57969570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
58069570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
58169570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/outt", F_OK), 0);
58269570cc8Sopenharmony_ci        EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out2", F_OK), 0);
58369570cc8Sopenharmony_ci    }
58469570cc8Sopenharmony_ci
58569570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
58669570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
58769570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
58869570cc8Sopenharmony_ci
58969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_006 end";
59069570cc8Sopenharmony_ci}
59169570cc8Sopenharmony_ci
59269570cc8Sopenharmony_ci/**
59369570cc8Sopenharmony_ci* @tc.name: Hnp_Install_007
59469570cc8Sopenharmony_ci* @tc.desc:  Verify set Arg if HnpCmdInstall succeed.
59569570cc8Sopenharmony_ci* @tc.type: FUNC
59669570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
59769570cc8Sopenharmony_ci* @tc.author:
59869570cc8Sopenharmony_ci*/
59969570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_007, TestSize.Level0)
60069570cc8Sopenharmony_ci{
60169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_007 start";
60269570cc8Sopenharmony_ci
60369570cc8Sopenharmony_ci    // clear resource before test
60469570cc8Sopenharmony_ci    remove("hnp_out/sample.hnp");
60569570cc8Sopenharmony_ci    remove("hnp_sample/bin/out");
60669570cc8Sopenharmony_ci    rmdir("hnp_sample/bin");
60769570cc8Sopenharmony_ci    rmdir("hnp_sample");
60869570cc8Sopenharmony_ci    rmdir("hnp_out");
60969570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
61069570cc8Sopenharmony_ci
61169570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
61269570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1.1"), true, true,
61369570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
61469570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_private"), const_cast<char *>("1.1"), false, false,
61569570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
61669570cc8Sopenharmony_ci
61769570cc8Sopenharmony_ci    char arg1[] = "hnp";
61869570cc8Sopenharmony_ci    char arg2[] = "install";
61969570cc8Sopenharmony_ci
62069570cc8Sopenharmony_ci    { // src dir path is invalid
62169570cc8Sopenharmony_ci        char arg3[] = "-u";
62269570cc8Sopenharmony_ci        char arg4[] = "10000";
62369570cc8Sopenharmony_ci        char arg5[] = "-p";
62469570cc8Sopenharmony_ci        char arg6[] = "sample";
62569570cc8Sopenharmony_ci        char arg7[] = "-i";
62669570cc8Sopenharmony_ci        char arg8[] = "./hnp_in";
62769570cc8Sopenharmony_ci        char arg9[] = "-s";
62869570cc8Sopenharmony_ci        char arg10[] = "./hnp_out";
62969570cc8Sopenharmony_ci        char arg11[] = "-a";
63069570cc8Sopenharmony_ci        char arg12[] = "system64";
63169570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12};
63269570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
63369570cc8Sopenharmony_ci
63469570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), HNP_ERRNO_BASE_DIR_OPEN_FAILED);
63569570cc8Sopenharmony_ci    }
63669570cc8Sopenharmony_ci    { // dst dir path is invalid
63769570cc8Sopenharmony_ci        char arg3[] = "-u";
63869570cc8Sopenharmony_ci        char arg4[] = "10001";
63969570cc8Sopenharmony_ci        char arg5[] = "-p";
64069570cc8Sopenharmony_ci        char arg6[] = "sample";
64169570cc8Sopenharmony_ci        char arg7[] = "-i";
64269570cc8Sopenharmony_ci        char arg8[] = "./hnp_out/sample.hnp";
64369570cc8Sopenharmony_ci        char arg9[] = "-s";
64469570cc8Sopenharmony_ci        char arg10[] = "./hnp_out";
64569570cc8Sopenharmony_ci        char arg11[] = "-a";
64669570cc8Sopenharmony_ci        char arg12[] = "system64";
64769570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12};
64869570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
64969570cc8Sopenharmony_ci
65069570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), HNP_ERRNO_INSTALLER_GET_REALPATH_FAILED);
65169570cc8Sopenharmony_ci    }
65269570cc8Sopenharmony_ci
65369570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
65469570cc8Sopenharmony_ci    HnpPackWithBinDelete();
65569570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
65669570cc8Sopenharmony_ci
65769570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_007 end";
65869570cc8Sopenharmony_ci}
65969570cc8Sopenharmony_ci
66069570cc8Sopenharmony_ci/**
66169570cc8Sopenharmony_ci* @tc.name: Hnp_Install_008
66269570cc8Sopenharmony_ci* @tc.desc:  Verify file permission.
66369570cc8Sopenharmony_ci* @tc.type: FUNC
66469570cc8Sopenharmony_ci* @tc.require:issueI9RYCK
66569570cc8Sopenharmony_ci* @tc.author:
66669570cc8Sopenharmony_ci*/
66769570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_008, TestSize.Level0)
66869570cc8Sopenharmony_ci{
66969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_08 start";
67069570cc8Sopenharmony_ci
67169570cc8Sopenharmony_ci    // clear resource before test
67269570cc8Sopenharmony_ci    remove("hnp_out/sample.hnp");
67369570cc8Sopenharmony_ci    remove("hnp_sample/bin/out");
67469570cc8Sopenharmony_ci    rmdir("hnp_sample/bin");
67569570cc8Sopenharmony_ci    rmdir("hnp_sample");
67669570cc8Sopenharmony_ci    rmdir("hnp_out");
67769570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
67869570cc8Sopenharmony_ci
67969570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
68069570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1.1"), true, true,
68169570cc8Sopenharmony_ci        S_IRWXU | S_IRWXG | S_IROTH | S_IWOTH);
68269570cc8Sopenharmony_ci
68369570cc8Sopenharmony_ci    char arg1[] = "hnp";
68469570cc8Sopenharmony_ci    char arg2[] = "install";
68569570cc8Sopenharmony_ci
68669570cc8Sopenharmony_ci    { //ok
68769570cc8Sopenharmony_ci        struct stat st = {0};
68869570cc8Sopenharmony_ci
68969570cc8Sopenharmony_ci        char arg3[] = "-u";
69069570cc8Sopenharmony_ci        char arg4[] = "10000";
69169570cc8Sopenharmony_ci        char arg5[] = "-p";
69269570cc8Sopenharmony_ci        char arg6[] = "sample";
69369570cc8Sopenharmony_ci        char arg7[] = "-i";
69469570cc8Sopenharmony_ci        char arg8[] = "./hnp_out";
69569570cc8Sopenharmony_ci        char arg9[] = "-f";
69669570cc8Sopenharmony_ci        char arg10[] = "-s";
69769570cc8Sopenharmony_ci        char arg11[] = "./hnp_out";
69869570cc8Sopenharmony_ci        char arg12[] = "-a";
69969570cc8Sopenharmony_ci        char arg13[] = "system64";
70069570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9,  arg10, arg11, arg12, arg13};
70169570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
70269570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
70369570cc8Sopenharmony_ci        EXPECT_EQ(stat(HNP_BASE_PATH"/hnppublic/bin/out", &st), 0);
70469570cc8Sopenharmony_ci        EXPECT_EQ(st.st_mode & 0777, 0744);
70569570cc8Sopenharmony_ci    }
70669570cc8Sopenharmony_ci
70769570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
70869570cc8Sopenharmony_ci    HnpPackWithBinDelete();
70969570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
71069570cc8Sopenharmony_ci
71169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_008 end";
71269570cc8Sopenharmony_ci}
71369570cc8Sopenharmony_ci
71469570cc8Sopenharmony_ci/**
71569570cc8Sopenharmony_ci* @tc.name: Hnp_Install_009
71669570cc8Sopenharmony_ci* @tc.desc:  Verify file permission.
71769570cc8Sopenharmony_ci* @tc.type: FUNC
71869570cc8Sopenharmony_ci* @tc.require:issueI9RYCK
71969570cc8Sopenharmony_ci* @tc.author:
72069570cc8Sopenharmony_ci*/
72169570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_009, TestSize.Level0)
72269570cc8Sopenharmony_ci{
72369570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_009 start";
72469570cc8Sopenharmony_ci
72569570cc8Sopenharmony_ci    // clear resource before test
72669570cc8Sopenharmony_ci    remove("hnp_out/sample.hnp");
72769570cc8Sopenharmony_ci    remove("hnp_sample/bin/out");
72869570cc8Sopenharmony_ci    rmdir("hnp_sample/bin");
72969570cc8Sopenharmony_ci    rmdir("hnp_sample");
73069570cc8Sopenharmony_ci    rmdir("hnp_out");
73169570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
73269570cc8Sopenharmony_ci
73369570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
73469570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1.1"), true, true,
73569570cc8Sopenharmony_ci        S_IXUSR | S_IXGRP | S_IXOTH);
73669570cc8Sopenharmony_ci
73769570cc8Sopenharmony_ci    char arg1[] = "hnp";
73869570cc8Sopenharmony_ci    char arg2[] = "install";
73969570cc8Sopenharmony_ci
74069570cc8Sopenharmony_ci    { //ok
74169570cc8Sopenharmony_ci        struct stat st = {0};
74269570cc8Sopenharmony_ci
74369570cc8Sopenharmony_ci        char arg3[] = "-u";
74469570cc8Sopenharmony_ci        char arg4[] = "10000";
74569570cc8Sopenharmony_ci        char arg5[] = "-p";
74669570cc8Sopenharmony_ci        char arg6[] = "sample";
74769570cc8Sopenharmony_ci        char arg7[] = "-i";
74869570cc8Sopenharmony_ci        char arg8[] = "./hnp_out";
74969570cc8Sopenharmony_ci        char arg9[] = "-f";
75069570cc8Sopenharmony_ci        char arg10[] = "-s";
75169570cc8Sopenharmony_ci        char arg11[] = "./hnp_out";
75269570cc8Sopenharmony_ci        char arg12[] = "-a";
75369570cc8Sopenharmony_ci        char arg13[] = "system64";
75469570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9,  arg10, arg11, arg12, arg13};
75569570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
75669570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
75769570cc8Sopenharmony_ci        EXPECT_EQ(stat(HNP_BASE_PATH"/hnppublic/bin/out", &st), 0);
75869570cc8Sopenharmony_ci        EXPECT_EQ(st.st_mode & 0777, 0755);
75969570cc8Sopenharmony_ci    }
76069570cc8Sopenharmony_ci
76169570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
76269570cc8Sopenharmony_ci    HnpPackWithBinDelete();
76369570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
76469570cc8Sopenharmony_ci
76569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_009 end";
76669570cc8Sopenharmony_ci}
76769570cc8Sopenharmony_ci
76869570cc8Sopenharmony_cistatic void HnpVersionPathCreate(void)
76969570cc8Sopenharmony_ci{
77069570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77169570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_1", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77269570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_1/public", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77369570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_1/private", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77469570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_2", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77569570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_2/public", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77669570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_2/private", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77769570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_3", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77869570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_3/public", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
77969570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_3/private", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
78069570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_4", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
78169570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_4/public", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
78269570cc8Sopenharmony_ci    EXPECT_EQ(mkdir("hnp_out_4/private", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
78369570cc8Sopenharmony_ci
78469570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1"), true, true,
78569570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
78669570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("2"), true, false,
78769570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
78869570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("3"), true, false,
78969570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
79069570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("4"), true, false,
79169570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
79269570cc8Sopenharmony_ci}
79369570cc8Sopenharmony_ci
79469570cc8Sopenharmony_cistatic void HnpVersionPathDelete(void)
79569570cc8Sopenharmony_ci{
79669570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_out_1"), 0);
79769570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_out_2"), 0);
79869570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_out_3"), 0);
79969570cc8Sopenharmony_ci    EXPECT_EQ(HnpDeleteFolder("hnp_out_4"), 0);
80069570cc8Sopenharmony_ci}
80169570cc8Sopenharmony_ci
80269570cc8Sopenharmony_cistatic void HnpVersionV1Install()
80369570cc8Sopenharmony_ci{
80469570cc8Sopenharmony_ci    char arg1[] = "hnp";
80569570cc8Sopenharmony_ci    char arg2[] = "install";
80669570cc8Sopenharmony_ci    char arg3[] = "-u";
80769570cc8Sopenharmony_ci    char arg4[] = "10000";
80869570cc8Sopenharmony_ci    char arg5[] = "-p";
80969570cc8Sopenharmony_ci    char arg7[] = "-i";
81069570cc8Sopenharmony_ci    char arg9[] = "-f";
81169570cc8Sopenharmony_ci    char arg10[] = "-s";
81269570cc8Sopenharmony_ci    char arg11[] = "./hnp_out_1";
81369570cc8Sopenharmony_ci    char arg12[] = "-a";
81469570cc8Sopenharmony_ci    char arg13[] = "system64";
81569570cc8Sopenharmony_ci
81669570cc8Sopenharmony_ci    char arg6[] = "sample1";
81769570cc8Sopenharmony_ci    char arg8[] = "./hnp_out_1";
81869570cc8Sopenharmony_ci    char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9,  arg10, arg11, arg12, arg13};
81969570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
82069570cc8Sopenharmony_ci    // install v1
82169570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
82269570cc8Sopenharmony_ci}
82369570cc8Sopenharmony_ci
82469570cc8Sopenharmony_cistatic void HnpVersionV2Install()
82569570cc8Sopenharmony_ci{
82669570cc8Sopenharmony_ci    char arg1[] = "hnp";
82769570cc8Sopenharmony_ci    char arg2[] = "install";
82869570cc8Sopenharmony_ci    char arg3[] = "-u";
82969570cc8Sopenharmony_ci    char arg4[] = "10000";
83069570cc8Sopenharmony_ci    char arg5[] = "-p";
83169570cc8Sopenharmony_ci    char arg7[] = "-i";
83269570cc8Sopenharmony_ci    char arg9[] = "-f";
83369570cc8Sopenharmony_ci    char arg10[] = "-s";
83469570cc8Sopenharmony_ci    char arg11[] = "./hnp_out_2";
83569570cc8Sopenharmony_ci    char arg12[] = "-a";
83669570cc8Sopenharmony_ci    char arg13[] = "system64";
83769570cc8Sopenharmony_ci
83869570cc8Sopenharmony_ci    char arg6[] = "sample2";
83969570cc8Sopenharmony_ci    char arg8[] = "./hnp_out_2";
84069570cc8Sopenharmony_ci    char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9,  arg10, arg11, arg12, arg13};
84169570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
84269570cc8Sopenharmony_ci    // install v1
84369570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
84469570cc8Sopenharmony_ci}
84569570cc8Sopenharmony_ci
84669570cc8Sopenharmony_cistatic void HnpVersionV3Install()
84769570cc8Sopenharmony_ci{
84869570cc8Sopenharmony_ci    char arg1[] = "hnp";
84969570cc8Sopenharmony_ci    char arg2[] = "install";
85069570cc8Sopenharmony_ci    char arg3[] = "-u";
85169570cc8Sopenharmony_ci    char arg4[] = "10000";
85269570cc8Sopenharmony_ci    char arg5[] = "-p";
85369570cc8Sopenharmony_ci    char arg7[] = "-i";
85469570cc8Sopenharmony_ci    char arg9[] = "-f";
85569570cc8Sopenharmony_ci    char arg10[] = "-s";
85669570cc8Sopenharmony_ci    char arg11[] = "./hnp_out_3";
85769570cc8Sopenharmony_ci    char arg12[] = "-a";
85869570cc8Sopenharmony_ci    char arg13[] = "system64";
85969570cc8Sopenharmony_ci
86069570cc8Sopenharmony_ci    char arg6[] = "sample3";
86169570cc8Sopenharmony_ci    char arg8[] = "./hnp_out_3";
86269570cc8Sopenharmony_ci    char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9,  arg10, arg11, arg12, arg13};
86369570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
86469570cc8Sopenharmony_ci    // install v1
86569570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
86669570cc8Sopenharmony_ci}
86769570cc8Sopenharmony_ci
86869570cc8Sopenharmony_cistatic void HnpVersionV4Install()
86969570cc8Sopenharmony_ci{
87069570cc8Sopenharmony_ci    char arg1[] = "hnp";
87169570cc8Sopenharmony_ci    char arg2[] = "install";
87269570cc8Sopenharmony_ci    char arg3[] = "-u";
87369570cc8Sopenharmony_ci    char arg4[] = "10000";
87469570cc8Sopenharmony_ci    char arg5[] = "-p";
87569570cc8Sopenharmony_ci    char arg7[] = "-i";
87669570cc8Sopenharmony_ci    char arg9[] = "-f";
87769570cc8Sopenharmony_ci    char arg10[] = "-s";
87869570cc8Sopenharmony_ci    char arg11[] = "./hnp_out_4";
87969570cc8Sopenharmony_ci    char arg12[] = "-a";
88069570cc8Sopenharmony_ci    char arg13[] = "system64";
88169570cc8Sopenharmony_ci
88269570cc8Sopenharmony_ci    char arg6[] = "sample4";
88369570cc8Sopenharmony_ci    char arg8[] = "./hnp_out_4";
88469570cc8Sopenharmony_ci    char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9,  arg10, arg11, arg12, arg13};
88569570cc8Sopenharmony_ci    int argc = sizeof(argv) / sizeof(argv[0]);
88669570cc8Sopenharmony_ci    // install v1
88769570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdInstall(argc, argv), 0);
88869570cc8Sopenharmony_ci}
88969570cc8Sopenharmony_ci
89069570cc8Sopenharmony_cistatic void HnpVersionV1Uninstall()
89169570cc8Sopenharmony_ci{
89269570cc8Sopenharmony_ci    char uarg1[] = "hnp";
89369570cc8Sopenharmony_ci    char uarg2[] = "uninstall";
89469570cc8Sopenharmony_ci    char uarg3[] = "-u";
89569570cc8Sopenharmony_ci    char uarg4[] = "10000";
89669570cc8Sopenharmony_ci    char uarg5[] = "-p";
89769570cc8Sopenharmony_ci
89869570cc8Sopenharmony_ci    // uninstall v1
89969570cc8Sopenharmony_ci    char uarg6[] = "sample1";
90069570cc8Sopenharmony_ci    char* uargv[] = {uarg1, uarg2, uarg3, uarg4, uarg5, uarg6};
90169570cc8Sopenharmony_ci    int uargc = sizeof(uargv) / sizeof(uargv[0]);
90269570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdUnInstall(uargc, uargv), 0);
90369570cc8Sopenharmony_ci}
90469570cc8Sopenharmony_ci
90569570cc8Sopenharmony_cistatic void HnpVersionV2Uninstall()
90669570cc8Sopenharmony_ci{
90769570cc8Sopenharmony_ci    char uarg1[] = "hnp";
90869570cc8Sopenharmony_ci    char uarg2[] = "uninstall";
90969570cc8Sopenharmony_ci    char uarg3[] = "-u";
91069570cc8Sopenharmony_ci    char uarg4[] = "10000";
91169570cc8Sopenharmony_ci    char uarg5[] = "-p";
91269570cc8Sopenharmony_ci
91369570cc8Sopenharmony_ci    // uninstall v2
91469570cc8Sopenharmony_ci    char uarg6[] = "sample2";
91569570cc8Sopenharmony_ci    char* uargv[] = {uarg1, uarg2, uarg3, uarg4, uarg5, uarg6};
91669570cc8Sopenharmony_ci    int uargc = sizeof(uargv) / sizeof(uargv[0]);
91769570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdUnInstall(uargc, uargv), 0);
91869570cc8Sopenharmony_ci}
91969570cc8Sopenharmony_ci
92069570cc8Sopenharmony_cistatic void HnpVersionV3Uninstall()
92169570cc8Sopenharmony_ci{
92269570cc8Sopenharmony_ci    char uarg1[] = "hnp";
92369570cc8Sopenharmony_ci    char uarg2[] = "uninstall";
92469570cc8Sopenharmony_ci    char uarg3[] = "-u";
92569570cc8Sopenharmony_ci    char uarg4[] = "10000";
92669570cc8Sopenharmony_ci    char uarg5[] = "-p";
92769570cc8Sopenharmony_ci
92869570cc8Sopenharmony_ci    // uninstall v3
92969570cc8Sopenharmony_ci    char uarg6[] = "sample3";
93069570cc8Sopenharmony_ci    char* uargv[] = {uarg1, uarg2, uarg3, uarg4, uarg5, uarg6};
93169570cc8Sopenharmony_ci    int uargc = sizeof(uargv) / sizeof(uargv[0]);
93269570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdUnInstall(uargc, uargv), 0);
93369570cc8Sopenharmony_ci}
93469570cc8Sopenharmony_ci
93569570cc8Sopenharmony_cistatic void HnpVersionV4Uninstall()
93669570cc8Sopenharmony_ci{
93769570cc8Sopenharmony_ci    char uarg1[] = "hnp";
93869570cc8Sopenharmony_ci    char uarg2[] = "uninstall";
93969570cc8Sopenharmony_ci    char uarg3[] = "-u";
94069570cc8Sopenharmony_ci    char uarg4[] = "10000";
94169570cc8Sopenharmony_ci    char uarg5[] = "-p";
94269570cc8Sopenharmony_ci
94369570cc8Sopenharmony_ci    // uninstall v4
94469570cc8Sopenharmony_ci    char uarg6[] = "sample4";
94569570cc8Sopenharmony_ci    char* uargv[] = {uarg1, uarg2, uarg3, uarg4, uarg5, uarg6};
94669570cc8Sopenharmony_ci    int uargc = sizeof(uargv) / sizeof(uargv[0]);
94769570cc8Sopenharmony_ci    EXPECT_EQ(HnpCmdUnInstall(uargc, uargv), 0);
94869570cc8Sopenharmony_ci}
94969570cc8Sopenharmony_ci
95069570cc8Sopenharmony_cistatic bool HnpSymlinkCheck(const char *sourcePath, const char *targetPath)
95169570cc8Sopenharmony_ci{
95269570cc8Sopenharmony_ci    int ret = false;
95369570cc8Sopenharmony_ci    struct stat stat;
95469570cc8Sopenharmony_ci    char link[MAX_FILE_PATH_LEN];
95569570cc8Sopenharmony_ci
95669570cc8Sopenharmony_ci    if (lstat(sourcePath, &stat) < 0) {
95769570cc8Sopenharmony_ci        return ret;
95869570cc8Sopenharmony_ci    }
95969570cc8Sopenharmony_ci
96069570cc8Sopenharmony_ci    if (!S_ISLNK(stat.st_mode)) {
96169570cc8Sopenharmony_ci        return ret;
96269570cc8Sopenharmony_ci    }
96369570cc8Sopenharmony_ci
96469570cc8Sopenharmony_ci    int len = readlink(sourcePath, link, sizeof(link) - 1);
96569570cc8Sopenharmony_ci    if (len < 0) {
96669570cc8Sopenharmony_ci        return ret;
96769570cc8Sopenharmony_ci    }
96869570cc8Sopenharmony_ci
96969570cc8Sopenharmony_ci    link[len] = '\0';
97069570cc8Sopenharmony_ci
97169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "sourcelink is" << link << ";targetlink is" << targetPath;
97269570cc8Sopenharmony_ci    return strcmp(link, targetPath) == 0 ? true : false;
97369570cc8Sopenharmony_ci}
97469570cc8Sopenharmony_ci
97569570cc8Sopenharmony_ci/**
97669570cc8Sopenharmony_ci* @tc.name: Hnp_Install_010
97769570cc8Sopenharmony_ci* @tc.desc:  Verify version rule HnpCmdInstall succeed.
97869570cc8Sopenharmony_ci* @tc.type: FUNC
97969570cc8Sopenharmony_ci* @tc.require:issueIAGPEW
98069570cc8Sopenharmony_ci* @tc.author:
98169570cc8Sopenharmony_ci*/
98269570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_010, TestSize.Level0)
98369570cc8Sopenharmony_ci{
98469570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_010 start";
98569570cc8Sopenharmony_ci
98669570cc8Sopenharmony_ci    HnpVersionPathCreate();
98769570cc8Sopenharmony_ci
98869570cc8Sopenharmony_ci    // install v1 v2 v3
98969570cc8Sopenharmony_ci    HnpVersionV1Install();
99069570cc8Sopenharmony_ci    HnpVersionV2Install();
99169570cc8Sopenharmony_ci    HnpVersionV3Install();
99269570cc8Sopenharmony_ci    // check v1 v2 v3 exist
99369570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_1", F_OK), 0);
99469570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_2", F_OK), 0);
99569570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_3", F_OK), 0);
99669570cc8Sopenharmony_ci    EXPECT_EQ(HnpSymlinkCheck(HNP_BASE_PATH"/hnppublic/bin/out", "../sample_public.org/sample_public_3/bin/out"), true);
99769570cc8Sopenharmony_ci
99869570cc8Sopenharmony_ci    // uninstall v3
99969570cc8Sopenharmony_ci    HnpVersionV3Uninstall();
100069570cc8Sopenharmony_ci    // check v1 v2 v3 exist
100169570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_1", F_OK), 0);
100269570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_2", F_OK), 0);
100369570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_3", F_OK), 0);
100469570cc8Sopenharmony_ci    EXPECT_EQ(HnpSymlinkCheck(HNP_BASE_PATH"/hnppublic/bin/out", "../sample_public.org/sample_public_3/bin/out"), true);
100569570cc8Sopenharmony_ci
100669570cc8Sopenharmony_ci    HnpVersionV4Install();
100769570cc8Sopenharmony_ci    // check v1 v2 v4 exist v3 is uninstall
100869570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_1", F_OK), 0);
100969570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_2", F_OK), 0);
101069570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_3", F_OK), -1);
101169570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_4", F_OK), 0);
101269570cc8Sopenharmony_ci    EXPECT_EQ(HnpSymlinkCheck(HNP_BASE_PATH"/hnppublic/bin/out", "../sample_public.org/sample_public_4/bin/out"), true);
101369570cc8Sopenharmony_ci
101469570cc8Sopenharmony_ci    // uninstall v1
101569570cc8Sopenharmony_ci    HnpVersionV1Uninstall();
101669570cc8Sopenharmony_ci    // check v2 v4 exist v1 v3 is uninstall
101769570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_1", F_OK), -1);
101869570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_2", F_OK), 0);
101969570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_3", F_OK), -1);
102069570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_4", F_OK), 0);
102169570cc8Sopenharmony_ci    EXPECT_EQ(HnpSymlinkCheck(HNP_BASE_PATH"/hnppublic/bin/out", "../sample_public.org/sample_public_4/bin/out"), true);
102269570cc8Sopenharmony_ci
102369570cc8Sopenharmony_ci    // uninstall v4
102469570cc8Sopenharmony_ci    HnpVersionV4Uninstall();
102569570cc8Sopenharmony_ci    // check v2 v4 exist v1 v3 is uninstall
102669570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_1", F_OK), -1);
102769570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_2", F_OK), 0);
102869570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_3", F_OK), -1);
102969570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_4", F_OK), 0);
103069570cc8Sopenharmony_ci    EXPECT_EQ(HnpSymlinkCheck(HNP_BASE_PATH"/hnppublic/bin/out", "../sample_public.org/sample_public_4/bin/out"), true);
103169570cc8Sopenharmony_ci
103269570cc8Sopenharmony_ci    // uninstall v2
103369570cc8Sopenharmony_ci    HnpVersionV2Uninstall();
103469570cc8Sopenharmony_ci    // all version is uninstall
103569570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_1", F_OK), -1);
103669570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_2", F_OK), -1);
103769570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_3", F_OK), -1);
103869570cc8Sopenharmony_ci    EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/sample_public.org/sample_public_4", F_OK), -1);
103969570cc8Sopenharmony_ci
104069570cc8Sopenharmony_ci    HnpVersionPathDelete();
104169570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
104269570cc8Sopenharmony_ci    HnpPackWithBinDelete();
104369570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
104469570cc8Sopenharmony_ci
104569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_010 end";
104669570cc8Sopenharmony_ci}
104769570cc8Sopenharmony_ci
104869570cc8Sopenharmony_cistatic bool IsHnpInstallEnable()
104969570cc8Sopenharmony_ci{
105069570cc8Sopenharmony_ci    char buffer[PARAM_BUFFER_SIZE] = {0};
105169570cc8Sopenharmony_ci    int ret = GetParameter("const.startup.hnp.install.enable", "false", buffer, PARAM_BUFFER_SIZE);
105269570cc8Sopenharmony_ci    if (ret <= 0) {
105369570cc8Sopenharmony_ci        return false;
105469570cc8Sopenharmony_ci    }
105569570cc8Sopenharmony_ci
105669570cc8Sopenharmony_ci    if (strcmp(buffer, "true") == 0) {
105769570cc8Sopenharmony_ci        return true;
105869570cc8Sopenharmony_ci    }
105969570cc8Sopenharmony_ci
106069570cc8Sopenharmony_ci    return false;
106169570cc8Sopenharmony_ci}
106269570cc8Sopenharmony_ci
106369570cc8Sopenharmony_ci/**
106469570cc8Sopenharmony_ci* @tc.name: Hnp_Install_API_001
106569570cc8Sopenharmony_ci* @tc.desc:  Verify set Arg if NativeInstallHnp succeed.
106669570cc8Sopenharmony_ci* @tc.type: FUNC
106769570cc8Sopenharmony_ci* @tc.require:issueI9DQSE
106869570cc8Sopenharmony_ci* @tc.author:
106969570cc8Sopenharmony_ci*/
107069570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_API_001, TestSize.Level0)
107169570cc8Sopenharmony_ci{
107269570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_API_001 start";
107369570cc8Sopenharmony_ci
107469570cc8Sopenharmony_ci    int ret;
107569570cc8Sopenharmony_ci    bool installEnable = IsHnpInstallEnable();
107669570cc8Sopenharmony_ci
107769570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
107869570cc8Sopenharmony_ci
107969570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
108069570cc8Sopenharmony_ci    struct HapInfo hapInfo;
108169570cc8Sopenharmony_ci    (void)memset_s(&hapInfo, sizeof(HapInfo), 0, sizeof(HapInfo));
108269570cc8Sopenharmony_ci    EXPECT_EQ(sprintf_s(hapInfo.packageName, sizeof(hapInfo.packageName), "%s", "sample") > 0, true);
108369570cc8Sopenharmony_ci    EXPECT_EQ(sprintf_s(hapInfo.abi, sizeof(hapInfo.abi), "%s", "system64") > 0, true);
108469570cc8Sopenharmony_ci    EXPECT_EQ(sprintf_s(hapInfo.hapPath, sizeof(hapInfo.hapPath), "%s", "./hnp_out") > 0, true);
108569570cc8Sopenharmony_ci
108669570cc8Sopenharmony_ci    if (!installEnable) {
108769570cc8Sopenharmony_ci        GTEST_LOG_(INFO) << "hnp install enable false";
108869570cc8Sopenharmony_ci    }
108969570cc8Sopenharmony_ci
109069570cc8Sopenharmony_ci    if (IsDeveloperModeOpen() && installEnable) {
109169570cc8Sopenharmony_ci        { //param is invalid
109269570cc8Sopenharmony_ci            ret = NativeInstallHnp(NULL, "./hnp_out", &hapInfo, 1);
109369570cc8Sopenharmony_ci            EXPECT_EQ(ret, HNP_API_ERRNO_PARAM_INVALID);
109469570cc8Sopenharmony_ci        }
109569570cc8Sopenharmony_ci        { //ok
109669570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.hapPath, sizeof(hapInfo.hapPath), "%s", "test") > 0, true);
109769570cc8Sopenharmony_ci            ret = NativeInstallHnp("10000", "./hnp_out", &hapInfo, 1);
109869570cc8Sopenharmony_ci            EXPECT_EQ(ret, 0);
109969570cc8Sopenharmony_ci            EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/outt", F_OK), 0);
110069570cc8Sopenharmony_ci            EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out2", F_OK), 0);
110169570cc8Sopenharmony_ci        }
110269570cc8Sopenharmony_ci    }
110369570cc8Sopenharmony_ci
110469570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
110569570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
110669570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
110769570cc8Sopenharmony_ci
110869570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_API_001 end";
110969570cc8Sopenharmony_ci}
111069570cc8Sopenharmony_ci
111169570cc8Sopenharmony_ci/**
111269570cc8Sopenharmony_ci* @tc.name: Hnp_Install_API_002
111369570cc8Sopenharmony_ci* @tc.desc:  Verify set Arg if NativeInstallHnp succeed.
111469570cc8Sopenharmony_ci* @tc.type: FUNC
111569570cc8Sopenharmony_ci* @tc.require:issueI9DQSE
111669570cc8Sopenharmony_ci* @tc.author:
111769570cc8Sopenharmony_ci*/
111869570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_API_002, TestSize.Level0)
111969570cc8Sopenharmony_ci{
112069570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_API_002 start";
112169570cc8Sopenharmony_ci
112269570cc8Sopenharmony_ci    int ret;
112369570cc8Sopenharmony_ci    bool installEnable = IsHnpInstallEnable();
112469570cc8Sopenharmony_ci
112569570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
112669570cc8Sopenharmony_ci
112769570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
112869570cc8Sopenharmony_ci
112969570cc8Sopenharmony_ci    if (!installEnable) {
113069570cc8Sopenharmony_ci        GTEST_LOG_(INFO) << "hnp install enable false";
113169570cc8Sopenharmony_ci    }
113269570cc8Sopenharmony_ci
113369570cc8Sopenharmony_ci    if (IsDeveloperModeOpen() && installEnable) {
113469570cc8Sopenharmony_ci        { //st dir path is invalid
113569570cc8Sopenharmony_ci            struct HapInfo hapInfo;
113669570cc8Sopenharmony_ci            (void)memset_s(&hapInfo, sizeof(HapInfo), 0, sizeof(HapInfo));
113769570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.packageName, sizeof(hapInfo.packageName), "%s", "sample") > 0, true);
113869570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.abi, sizeof(hapInfo.abi), "%s", "system64") > 0, true);
113969570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.hapPath, sizeof(hapInfo.hapPath), "%s", "test") > 0, true);
114069570cc8Sopenharmony_ci            ret = NativeInstallHnp("10001", "./hnp_out/", &hapInfo, 1);
114169570cc8Sopenharmony_ci            EXPECT_EQ(ret, HNP_ERRNO_INSTALLER_GET_REALPATH_FAILED);
114269570cc8Sopenharmony_ci        }
114369570cc8Sopenharmony_ci    }
114469570cc8Sopenharmony_ci
114569570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
114669570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
114769570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
114869570cc8Sopenharmony_ci
114969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_API_002 end";
115069570cc8Sopenharmony_ci}
115169570cc8Sopenharmony_ci
115269570cc8Sopenharmony_ci/**
115369570cc8Sopenharmony_ci* @tc.name: Hnp_Install_API_003
115469570cc8Sopenharmony_ci* @tc.desc:  Verify more than 1 hnp package if NativeInstallHnp succeed.
115569570cc8Sopenharmony_ci* @tc.type: FUNC
115669570cc8Sopenharmony_ci* @tc.require:issueI9DQSE
115769570cc8Sopenharmony_ci* @tc.author:
115869570cc8Sopenharmony_ci*/
115969570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_API_003, TestSize.Level0)
116069570cc8Sopenharmony_ci{
116169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_API_003 start";
116269570cc8Sopenharmony_ci
116369570cc8Sopenharmony_ci    int ret;
116469570cc8Sopenharmony_ci    bool installEnable = IsHnpInstallEnable();
116569570cc8Sopenharmony_ci
116669570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
116769570cc8Sopenharmony_ci
116869570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
116969570cc8Sopenharmony_ci
117069570cc8Sopenharmony_ci    if (IsDeveloperModeOpen()) {
117169570cc8Sopenharmony_ci        { //ok
117269570cc8Sopenharmony_ci            struct HapInfo hapInfo;
117369570cc8Sopenharmony_ci            (void)memset_s(&hapInfo, sizeof(HapInfo), 0, sizeof(HapInfo));
117469570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.packageName, sizeof(hapInfo.packageName), "%s", "sample") > 0, true);
117569570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.hapPath, sizeof(hapInfo.hapPath), "%s", "test") > 0, true);
117669570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.abi, sizeof(hapInfo.abi), "%s", "system64") > 0, true);
117769570cc8Sopenharmony_ci            ret = NativeInstallHnp("10000", "./hnp_out/", &hapInfo, 1);
117869570cc8Sopenharmony_ci            if (installEnable) {
117969570cc8Sopenharmony_ci                EXPECT_EQ(ret, 0);
118069570cc8Sopenharmony_ci                EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/outt", F_OK), 0);
118169570cc8Sopenharmony_ci                EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out2", F_OK), 0);
118269570cc8Sopenharmony_ci            } else {
118369570cc8Sopenharmony_ci                GTEST_LOG_(INFO) << "hnp install enable false";
118469570cc8Sopenharmony_ci                EXPECT_EQ(ret, HNP_API_ERRNO_HNP_INSTALL_DISABLED);
118569570cc8Sopenharmony_ci            }
118669570cc8Sopenharmony_ci        }
118769570cc8Sopenharmony_ci    }
118869570cc8Sopenharmony_ci
118969570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
119069570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
119169570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
119269570cc8Sopenharmony_ci
119369570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_API_003 end";
119469570cc8Sopenharmony_ci}
119569570cc8Sopenharmony_ci
119669570cc8Sopenharmony_ci/**
119769570cc8Sopenharmony_ci* @tc.name: Hnp_Install_API_004
119869570cc8Sopenharmony_ci* @tc.desc:  Verify develop mode NativeInstallHnp succeed.
119969570cc8Sopenharmony_ci* @tc.type: FUNC
120069570cc8Sopenharmony_ci* @tc.require:issueI9JCQ1
120169570cc8Sopenharmony_ci* @tc.author:
120269570cc8Sopenharmony_ci*/
120369570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_Install_API_004, TestSize.Level0)
120469570cc8Sopenharmony_ci{
120569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_API_004 start";
120669570cc8Sopenharmony_ci
120769570cc8Sopenharmony_ci    int ret;
120869570cc8Sopenharmony_ci
120969570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
121069570cc8Sopenharmony_ci
121169570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
121269570cc8Sopenharmony_ci
121369570cc8Sopenharmony_ci    if (!IsHnpInstallEnable()) {
121469570cc8Sopenharmony_ci        GTEST_LOG_(INFO) << "hnp install enable false";
121569570cc8Sopenharmony_ci    } else {
121669570cc8Sopenharmony_ci        { //ok
121769570cc8Sopenharmony_ci            struct HapInfo hapInfo;
121869570cc8Sopenharmony_ci            (void)memset_s(&hapInfo, sizeof(HapInfo), 0, sizeof(HapInfo));
121969570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.packageName, sizeof(hapInfo.packageName), "%s", "sample") > 0, true);
122069570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.hapPath, sizeof(hapInfo.hapPath), "%s", "test") > 0, true);
122169570cc8Sopenharmony_ci            EXPECT_EQ(sprintf_s(hapInfo.abi, sizeof(hapInfo.abi), "%s", "system64") > 0, true);
122269570cc8Sopenharmony_ci            ret = NativeInstallHnp("10000", "./hnp_out/", &hapInfo, 1);
122369570cc8Sopenharmony_ci            if (IsDeveloperModeOpen()) {
122469570cc8Sopenharmony_ci                GTEST_LOG_(INFO) << "this is developer mode";
122569570cc8Sopenharmony_ci                EXPECT_EQ(ret, 0);
122669570cc8Sopenharmony_ci                EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/outt", F_OK), 0);
122769570cc8Sopenharmony_ci                EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out2", F_OK), 0);
122869570cc8Sopenharmony_ci            } else {
122969570cc8Sopenharmony_ci                GTEST_LOG_(INFO) << "this is not developer mode";
123069570cc8Sopenharmony_ci                EXPECT_EQ(ret, HNP_API_NOT_IN_DEVELOPER_MODE);
123169570cc8Sopenharmony_ci                EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/outt", F_OK), -1);
123269570cc8Sopenharmony_ci                EXPECT_EQ(access(HNP_BASE_PATH"/hnppublic/bin/out2", F_OK), -1);
123369570cc8Sopenharmony_ci            }
123469570cc8Sopenharmony_ci        }
123569570cc8Sopenharmony_ci    }
123669570cc8Sopenharmony_ci
123769570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
123869570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
123969570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
124069570cc8Sopenharmony_ci
124169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_Install_API_004 end";
124269570cc8Sopenharmony_ci}
124369570cc8Sopenharmony_ci
124469570cc8Sopenharmony_ci/**
124569570cc8Sopenharmony_ci* @tc.name: Hnp_RelPath_API_001
124669570cc8Sopenharmony_ci* @tc.desc:  Verify HnpRelPath succeed.
124769570cc8Sopenharmony_ci* @tc.type: FUNC
124869570cc8Sopenharmony_ci* @tc.require:issueIANH44
124969570cc8Sopenharmony_ci* @tc.author:
125069570cc8Sopenharmony_ci*/
125169570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_RelPath_API_001, TestSize.Level0)
125269570cc8Sopenharmony_ci{
125369570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_RelPath_API_001 start";
125469570cc8Sopenharmony_ci
125569570cc8Sopenharmony_ci    const char *fromPath = "test";
125669570cc8Sopenharmony_ci    const char *toPath = "test2";
125769570cc8Sopenharmony_ci    char relPath[MAX_FILE_PATH_LEN]{};
125869570cc8Sopenharmony_ci
125969570cc8Sopenharmony_ci    HnpRelPath(fromPath, toPath, relPath);
126069570cc8Sopenharmony_ci    EXPECT_EQ(strcmp(relPath, "test2"), 0);
126169570cc8Sopenharmony_ci
126269570cc8Sopenharmony_ci    const char *fromPath2 = "/aaa/bbb/ccc/ddd";
126369570cc8Sopenharmony_ci    const char *toPath2 = "/aaa/bbb/ccc/eeefff";
126469570cc8Sopenharmony_ci    char relPath2[MAX_FILE_PATH_LEN]{};
126569570cc8Sopenharmony_ci
126669570cc8Sopenharmony_ci    HnpRelPath(fromPath2, toPath2, relPath2);
126769570cc8Sopenharmony_ci    EXPECT_EQ(strcmp(relPath2, "eeefff"), 0);
126869570cc8Sopenharmony_ci
126969570cc8Sopenharmony_ci    const char *fromPath3 = "/aaa/bbb/bin/bbb/aaa";
127069570cc8Sopenharmony_ci    const char *toPath3 = "/aaa/bbb/bisheng/aaa";
127169570cc8Sopenharmony_ci    char relPath3[MAX_FILE_PATH_LEN]{};
127269570cc8Sopenharmony_ci
127369570cc8Sopenharmony_ci    HnpRelPath(fromPath3, toPath3, relPath3);
127469570cc8Sopenharmony_ci    EXPECT_EQ(strcmp(relPath3, "../../bisheng/aaa"), 0);
127569570cc8Sopenharmony_ci
127669570cc8Sopenharmony_ci    const char *fromPath4 = "/aaa/bbb/cccddd/aaa/bbb";
127769570cc8Sopenharmony_ci    const char *toPath4 = "/aaa/bbb/ccc/eeefff";
127869570cc8Sopenharmony_ci    char relPath4[MAX_FILE_PATH_LEN]{};
127969570cc8Sopenharmony_ci
128069570cc8Sopenharmony_ci    HnpRelPath(fromPath4, toPath4, relPath4);
128169570cc8Sopenharmony_ci    EXPECT_EQ(strcmp(relPath4, "../../ccc/eeefff"), 0);
128269570cc8Sopenharmony_ci}
128369570cc8Sopenharmony_ci
128469570cc8Sopenharmony_ci/**
128569570cc8Sopenharmony_ci* @tc.name: Hnp_UnInstall_001
128669570cc8Sopenharmony_ci* @tc.desc:  Verify set Arg if HnpCmdUnInstall succeed.
128769570cc8Sopenharmony_ci* @tc.type: FUNC
128869570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
128969570cc8Sopenharmony_ci* @tc.author:
129069570cc8Sopenharmony_ci*/
129169570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_UnInstall_001, TestSize.Level0)
129269570cc8Sopenharmony_ci{
129369570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_001 start";
129469570cc8Sopenharmony_ci
129569570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
129669570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample"), const_cast<char *>("1.1"), true, true,
129769570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
129869570cc8Sopenharmony_ci    HnpInstall(const_cast<char *>("sample"));
129969570cc8Sopenharmony_ci
130069570cc8Sopenharmony_ci    char arg1[] = "hnp";
130169570cc8Sopenharmony_ci    char arg2[] = "uninstall";
130269570cc8Sopenharmony_ci
130369570cc8Sopenharmony_ci    { // param num not enough
130469570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2};
130569570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
130669570cc8Sopenharmony_ci
130769570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdUnInstall(argc, argv), HNP_ERRNO_OPERATOR_ARGV_MISS);
130869570cc8Sopenharmony_ci    }
130969570cc8Sopenharmony_ci    { // param uid is invalid
131069570cc8Sopenharmony_ci        char arg3[] = "-u";
131169570cc8Sopenharmony_ci        char arg4[] = "asd1231";
131269570cc8Sopenharmony_ci        char arg5[] = "-p";
131369570cc8Sopenharmony_ci        char arg6[] = "sample";
131469570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6};
131569570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
131669570cc8Sopenharmony_ci
131769570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdUnInstall(argc, argv), HNP_ERRNO_INSTALLER_ARGV_UID_INVALID);
131869570cc8Sopenharmony_ci    }
131969570cc8Sopenharmony_ci    { // ok
132069570cc8Sopenharmony_ci        char arg3[] = "-u";
132169570cc8Sopenharmony_ci        char arg4[] = "10000";
132269570cc8Sopenharmony_ci        char arg5[] = "-p";
132369570cc8Sopenharmony_ci        char arg6[] = "sample";
132469570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6};
132569570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
132669570cc8Sopenharmony_ci
132769570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdUnInstall(argc, argv), 0);
132869570cc8Sopenharmony_ci    }
132969570cc8Sopenharmony_ci
133069570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
133169570cc8Sopenharmony_ci    HnpPackWithBinDelete();
133269570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
133369570cc8Sopenharmony_ci
133469570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_001 end";
133569570cc8Sopenharmony_ci}
133669570cc8Sopenharmony_ci
133769570cc8Sopenharmony_ci/**
133869570cc8Sopenharmony_ci* @tc.name: Hnp_UnInstall_002
133969570cc8Sopenharmony_ci* @tc.desc:  Verify cfg pack HnpCmdUnInstall succeed.
134069570cc8Sopenharmony_ci* @tc.type: FUNC
134169570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
134269570cc8Sopenharmony_ci* @tc.author:
134369570cc8Sopenharmony_ci*/
134469570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_UnInstall_002, TestSize.Level0)
134569570cc8Sopenharmony_ci{
134669570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_002 start";
134769570cc8Sopenharmony_ci
134869570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
134969570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
135069570cc8Sopenharmony_ci    HnpInstall(const_cast<char *>("sample"));
135169570cc8Sopenharmony_ci
135269570cc8Sopenharmony_ci    char arg1[] = "hnp";
135369570cc8Sopenharmony_ci    char arg2[] = "uninstall";
135469570cc8Sopenharmony_ci    { // param uninstall path is invalid
135569570cc8Sopenharmony_ci        char arg3[] = "-u";
135669570cc8Sopenharmony_ci        char arg4[] = "10000";
135769570cc8Sopenharmony_ci        char arg5[] = "-p";
135869570cc8Sopenharmony_ci        char arg6[] = "wechat";
135969570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6};
136069570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
136169570cc8Sopenharmony_ci
136269570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdUnInstall(argc, argv), 0);
136369570cc8Sopenharmony_ci    }
136469570cc8Sopenharmony_ci    { // ok
136569570cc8Sopenharmony_ci        char arg3[] = "-u";
136669570cc8Sopenharmony_ci        char arg4[] = "10000";
136769570cc8Sopenharmony_ci        char arg5[] = "-p";
136869570cc8Sopenharmony_ci        char arg6[] = "sample";
136969570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6};
137069570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
137169570cc8Sopenharmony_ci
137269570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdUnInstall(argc, argv), 0);
137369570cc8Sopenharmony_ci    }
137469570cc8Sopenharmony_ci
137569570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
137669570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
137769570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
137869570cc8Sopenharmony_ci
137969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_002 end";
138069570cc8Sopenharmony_ci}
138169570cc8Sopenharmony_ci
138269570cc8Sopenharmony_ci/**
138369570cc8Sopenharmony_ci* @tc.name: Hnp_UnInstall_003
138469570cc8Sopenharmony_ci* @tc.desc:  Verify set Arg if HnpCmdUnInstall succeed.
138569570cc8Sopenharmony_ci* @tc.type: FUNC
138669570cc8Sopenharmony_ci* @tc.require:issueI9BU5F
138769570cc8Sopenharmony_ci* @tc.author:
138869570cc8Sopenharmony_ci*/
138969570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_UnInstall_003, TestSize.Level0)
139069570cc8Sopenharmony_ci{
139169570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_003 start";
139269570cc8Sopenharmony_ci
139369570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
139469570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_public"), const_cast<char *>("1.1"), true, true,
139569570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
139669570cc8Sopenharmony_ci    HnpPackWithBin(const_cast<char *>("sample_private"), const_cast<char *>("1.1"), false, false,
139769570cc8Sopenharmony_ci        S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH);
139869570cc8Sopenharmony_ci    HnpInstall(const_cast<char *>("sample"));
139969570cc8Sopenharmony_ci
140069570cc8Sopenharmony_ci    char arg1[] = "hnp";
140169570cc8Sopenharmony_ci    char arg2[] = "uninstall";
140269570cc8Sopenharmony_ci
140369570cc8Sopenharmony_ci    { // param software name is invalid
140469570cc8Sopenharmony_ci        char arg3[] = "-u";
140569570cc8Sopenharmony_ci        char arg4[] = "10000";
140669570cc8Sopenharmony_ci        char arg5[] = "-p";
140769570cc8Sopenharmony_ci        char arg6[] = "wechat";
140869570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6};
140969570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
141069570cc8Sopenharmony_ci
141169570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdUnInstall(argc, argv), 0);
141269570cc8Sopenharmony_ci    }
141369570cc8Sopenharmony_ci    { // ok
141469570cc8Sopenharmony_ci        char arg3[] = "-u";
141569570cc8Sopenharmony_ci        char arg4[] = "10000";
141669570cc8Sopenharmony_ci        char arg5[] = "-p";
141769570cc8Sopenharmony_ci        char arg6[] = "sample";
141869570cc8Sopenharmony_ci        char* argv[] = {arg1, arg2, arg3, arg4, arg5, arg6};
141969570cc8Sopenharmony_ci        int argc = sizeof(argv) / sizeof(argv[0]);
142069570cc8Sopenharmony_ci
142169570cc8Sopenharmony_ci        EXPECT_EQ(HnpCmdUnInstall(argc, argv), 0);
142269570cc8Sopenharmony_ci    }
142369570cc8Sopenharmony_ci
142469570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
142569570cc8Sopenharmony_ci    HnpPackWithBinDelete();
142669570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
142769570cc8Sopenharmony_ci
142869570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_003 end";
142969570cc8Sopenharmony_ci}
143069570cc8Sopenharmony_ci
143169570cc8Sopenharmony_ci/**
143269570cc8Sopenharmony_ci* @tc.name: Hnp_UnInstall_API_001
143369570cc8Sopenharmony_ci* @tc.desc:  Verify param invalid API NativeUnInstallHnp succeed.
143469570cc8Sopenharmony_ci* @tc.type: FUNC
143569570cc8Sopenharmony_ci* @tc.require:issueI9DQSE
143669570cc8Sopenharmony_ci* @tc.author:
143769570cc8Sopenharmony_ci*/
143869570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_UnInstall_API_001, TestSize.Level0)
143969570cc8Sopenharmony_ci{
144069570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_API_001 start";
144169570cc8Sopenharmony_ci
144269570cc8Sopenharmony_ci    int ret;
144369570cc8Sopenharmony_ci
144469570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
144569570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
144669570cc8Sopenharmony_ci    HnpInstall(const_cast<char *>("sample"));
144769570cc8Sopenharmony_ci
144869570cc8Sopenharmony_ci    if (IsDeveloperModeOpen()) {
144969570cc8Sopenharmony_ci        { // param is invalid
145069570cc8Sopenharmony_ci            ret = NativeUnInstallHnp(NULL, "sample");
145169570cc8Sopenharmony_ci            EXPECT_EQ(ret, HNP_API_ERRNO_PARAM_INVALID);
145269570cc8Sopenharmony_ci        }
145369570cc8Sopenharmony_ci        { // ok
145469570cc8Sopenharmony_ci            ret = NativeUnInstallHnp("10000", "sample");
145569570cc8Sopenharmony_ci            EXPECT_EQ(ret, 0);
145669570cc8Sopenharmony_ci        }
145769570cc8Sopenharmony_ci    }
145869570cc8Sopenharmony_ci
145969570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
146069570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
146169570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
146269570cc8Sopenharmony_ci
146369570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_API_001 end";
146469570cc8Sopenharmony_ci}
146569570cc8Sopenharmony_ci
146669570cc8Sopenharmony_ci/**
146769570cc8Sopenharmony_ci* @tc.name: Hnp_UnInstall_API_002
146869570cc8Sopenharmony_ci* @tc.desc:  Verify path invalid API NativeUnInstallHnp succeed.
146969570cc8Sopenharmony_ci* @tc.type: FUNC
147069570cc8Sopenharmony_ci* @tc.require:issueI9DQSE
147169570cc8Sopenharmony_ci* @tc.author:
147269570cc8Sopenharmony_ci*/
147369570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_UnInstall_API_002, TestSize.Level0)
147469570cc8Sopenharmony_ci{
147569570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_API_002 start";
147669570cc8Sopenharmony_ci
147769570cc8Sopenharmony_ci    int ret;
147869570cc8Sopenharmony_ci
147969570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
148069570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
148169570cc8Sopenharmony_ci    HnpInstall(const_cast<char *>("sample"));
148269570cc8Sopenharmony_ci
148369570cc8Sopenharmony_ci    if (IsDeveloperModeOpen()) {
148469570cc8Sopenharmony_ci        { // param uninstall path is invalid
148569570cc8Sopenharmony_ci            ret = NativeUnInstallHnp("10001", "wechat");
148669570cc8Sopenharmony_ci            EXPECT_EQ(ret, HNP_ERRNO_UNINSTALLER_HNP_PATH_NOT_EXIST);
148769570cc8Sopenharmony_ci        }
148869570cc8Sopenharmony_ci    }
148969570cc8Sopenharmony_ci
149069570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
149169570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
149269570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
149369570cc8Sopenharmony_ci
149469570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_API_002 end";
149569570cc8Sopenharmony_ci}
149669570cc8Sopenharmony_ci
149769570cc8Sopenharmony_ci/**
149869570cc8Sopenharmony_ci* @tc.name: Hnp_UnInstall_API_003
149969570cc8Sopenharmony_ci* @tc.desc:  Verify develop mode NativeUnInstallHnp succeed.
150069570cc8Sopenharmony_ci* @tc.type: FUNC
150169570cc8Sopenharmony_ci* @tc.require:issueI9JCQ1
150269570cc8Sopenharmony_ci* @tc.author:
150369570cc8Sopenharmony_ci*/
150469570cc8Sopenharmony_ciHWTEST_F(HnpInstallerTest, Hnp_UnInstall_API_003, TestSize.Level0)
150569570cc8Sopenharmony_ci{
150669570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_API_003 start";
150769570cc8Sopenharmony_ci
150869570cc8Sopenharmony_ci    int ret;
150969570cc8Sopenharmony_ci
151069570cc8Sopenharmony_ci    EXPECT_EQ(mkdir(HNP_BASE_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH), 0);
151169570cc8Sopenharmony_ci    HnpPackWithCfg(true, true);
151269570cc8Sopenharmony_ci    HnpInstall(const_cast<char *>("sample"));
151369570cc8Sopenharmony_ci
151469570cc8Sopenharmony_ci    {
151569570cc8Sopenharmony_ci        ret = NativeUnInstallHnp("10000", "sample");
151669570cc8Sopenharmony_ci        if (IsDeveloperModeOpen()) {
151769570cc8Sopenharmony_ci            GTEST_LOG_(INFO) << "this is developer mode";
151869570cc8Sopenharmony_ci            EXPECT_EQ(ret, 0);
151969570cc8Sopenharmony_ci        } else {
152069570cc8Sopenharmony_ci            GTEST_LOG_(INFO) << "this is not developer mode";
152169570cc8Sopenharmony_ci            EXPECT_EQ(ret, HNP_API_NOT_IN_DEVELOPER_MODE);
152269570cc8Sopenharmony_ci        }
152369570cc8Sopenharmony_ci    }
152469570cc8Sopenharmony_ci
152569570cc8Sopenharmony_ci    HnpDeleteFolder(HNP_BASE_PATH);
152669570cc8Sopenharmony_ci    HnpPackWithCfgDelete();
152769570cc8Sopenharmony_ci    remove(HNP_PACKAGE_INFO_JSON_FILE_PATH);
152869570cc8Sopenharmony_ci
152969570cc8Sopenharmony_ci    GTEST_LOG_(INFO) << "Hnp_UnInstall_API_003 end";
153069570cc8Sopenharmony_ci}
153169570cc8Sopenharmony_ci
153269570cc8Sopenharmony_ci}