1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "install_plugin_test.h"
17 
18 #include "parameters.h"
19 
20 #include "uninstall_plugin.h"
21 #include "utils.h"
22 
23 using namespace testing::ext;
24 
25 namespace OHOS {
26 namespace EDM {
27 namespace TEST {
28 const std::string HAP_FILE_PATH = "/data/test/resource/enterprise_device_management/hap/right.hap";
29 const std::string INVALID_HAP_FILE_PATH = "/data/test/resource/enterprise_device_management/hap/../right.hap";
30 const std::string BOOT_OEM_MODE = "const.boot.oemmode";
31 const std::string DEVELOP_PARAM = "rd";
32 const std::string USER_MODE = "user";
SetUpTestSuite(void)33 void InstallPluginTest::SetUpTestSuite(void)
34 {
35     Utils::SetEdmInitialEnv();
36 }
37 
TearDownTestSuite(void)38 void InstallPluginTest::TearDownTestSuite(void)
39 {
40     Utils::ResetTokenTypeAndUid();
41     ASSERT_TRUE(Utils::IsOriginalUTEnv());
42     std::cout << "now ut process is orignal ut env : " << Utils::IsOriginalUTEnv() << std::endl;
43 }
44 
45 /**
46  * @tc.name: TestOnSetPolicySuc
47  * @tc.desc: Test InstallPlugin::OnSetPolicy when data is empty.
48  * @tc.type: FUNC
49  */
50 HWTEST_F(InstallPluginTest, TestOnSetPolicySuc, TestSize.Level1)
51 {
52     std::string developDeviceParam = system::GetParameter(BOOT_OEM_MODE, USER_MODE);
53     if (developDeviceParam == DEVELOP_PARAM) {
54         InstallPlugin plugin;
55         InstallParam param = {{HAP_FILE_PATH}, DEFAULT_USER_ID, 0};
56         MessageParcel reply;
57         ErrCode ret = plugin.OnSetPolicy(param, reply);
58         ASSERT_TRUE(ret == ERR_OK);
59         UninstallPlugin uninstallPlugin;
60         UninstallParam uninstallParam = {"com.example.l3jsdemo", DEFAULT_USER_ID, false};
61         MessageParcel uninstallReply;
62         ret = uninstallPlugin.OnSetPolicy(uninstallParam, uninstallReply);
63         ASSERT_TRUE(ret == ERR_OK);
64     }
65 }
66 
67 /**
68  * @tc.name: TestOnSetPolicyFailWithInvalidFilePath
69  * @tc.desc: Test InstallPlugin::OnSetPolicy when data is empty.
70  * @tc.type: FUNC
71  */
72 HWTEST_F(InstallPluginTest, TestOnSetPolicyFailWithInvalidFilePath, TestSize.Level1)
73 {
74     InstallPlugin plugin;
75     InstallParam param = {{INVALID_HAP_FILE_PATH}, DEFAULT_USER_ID, 0};
76     MessageParcel reply;
77     ErrCode ret = plugin.OnSetPolicy(param, reply);
78     ASSERT_TRUE(ret == EdmReturnErrCode::APPLICATION_INSTALL_FAILED);
79 }
80 
81 /**
82  * @tc.name: TestOnGetPolicyFailWithLongName
83  * @tc.desc: Test InstallPlugin::OnGetPolicy when data is long.
84  * @tc.type: FUNC
85  */
86 HWTEST_F(InstallPluginTest, TestOnGetPolicyFailWithLongName, TestSize.Level1)
87 {
88     InstallPlugin plugin;
89     std::string policyData;
90     MessageParcel reply;
91     MessageParcel data;
92     int32_t userId = DEFAULT_USER_ID;
93     std::string strFileName(5000, 'a');
94     data.WriteString(strFileName);
95     ErrCode ret = plugin.OnGetPolicy(policyData, data, reply, userId);
96     ASSERT_TRUE(ret == EdmReturnErrCode::APPLICATION_INSTALL_FAILED);
97     ASSERT_TRUE(reply.ReadInt32() == EdmReturnErrCode::APPLICATION_INSTALL_FAILED);
98     ASSERT_TRUE(reply.ReadString() == "invalid hapFilePath");
99 }
100 
101 /**
102  * @tc.name: TestOnGetPolicyFailWithInvalidFile01
103  * @tc.desc: Test InstallPlugin::OnGetPolicy when data is invalid.
104  * @tc.type: FUNC
105  */
106 HWTEST_F(InstallPluginTest, TestOnGetPolicyFailWithInvalidFile01, TestSize.Level1)
107 {
108     InstallPlugin plugin;
109     std::string policyData;
110     MessageParcel reply;
111     MessageParcel data;
112     int32_t userId = DEFAULT_USER_ID;
113     std::string strFileName = "../aaa.hap";
114     data.WriteString(strFileName);
115     ErrCode ret = plugin.OnGetPolicy(policyData, data, reply, userId);
116     ASSERT_TRUE(ret == EdmReturnErrCode::APPLICATION_INSTALL_FAILED);
117 }
118 
119 /**
120  * @tc.name: TestOnGetPolicyFailWithInvalidFile02
121  * @tc.desc: Test InstallPlugin::OnGetPolicy when data is invalid.
122  * @tc.type: FUNC
123  */
124 HWTEST_F(InstallPluginTest, TestOnGetPolicyFailWithInvalidFile02, TestSize.Level1)
125 {
126     InstallPlugin plugin;
127     std::string policyData;
128     MessageParcel reply;
129     MessageParcel data;
130     int32_t userId = DEFAULT_USER_ID;
131     std::string strFileName = "./aaa.hap";
132     data.WriteString(strFileName);
133     ErrCode ret = plugin.OnGetPolicy(policyData, data, reply, userId);
134     ASSERT_TRUE(ret == EdmReturnErrCode::APPLICATION_INSTALL_FAILED);
135 }
136 
137 /**
138  * @tc.name: TestOnGetPolicyFailWithInvalidFile03
139  * @tc.desc: Test InstallPlugin::OnGetPolicy when data is invalid.
140  * @tc.type: FUNC
141  */
142 HWTEST_F(InstallPluginTest, TestOnGetPolicyFailWithInvalidFile03, TestSize.Level1)
143 {
144     InstallPlugin plugin;
145     std::string policyData;
146     MessageParcel reply;
147     MessageParcel data;
148     int32_t userId = DEFAULT_USER_ID;
149     std::string strFileName = "/aaa.hap";
150     data.WriteString(strFileName);
151     ErrCode ret = plugin.OnGetPolicy(policyData, data, reply, userId);
152     ASSERT_TRUE(ret == EdmReturnErrCode::APPLICATION_INSTALL_FAILED);
153 }
154 
155 /**
156  * @tc.name: TestOnGetPolicyFailWithInvalidFile04
157  * @tc.desc: Test InstallPlugin::OnGetPolicy when data is invalid.
158  * @tc.type: FUNC
159  */
160 HWTEST_F(InstallPluginTest, TestOnGetPolicyFailWithInvalidFile04, TestSize.Level1)
161 {
162     InstallPlugin plugin;
163     std::string policyData;
164     MessageParcel reply;
165     MessageParcel data;
166     int32_t userId = DEFAULT_USER_ID;
167     std::string strFileName = "aaa.hap";
168     data.WriteString(strFileName);
169     ErrCode ret = plugin.OnGetPolicy(policyData, data, reply, userId);
170     ASSERT_TRUE(ret == ERR_OK);
171 }
172 } // namespace TEST
173 } // namespace EDM
174 } // namespace OHOS
175