• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "iplugin_template_test.h"
17 
18 using namespace testing::ext;
19 
20 namespace OHOS {
21 namespace EDM {
22 namespace TEST {
23 /**
24  * @tc.name: TestTemplate
25  * @tc.desc: Test PluginTemplate init.
26  * @tc.type: FUNC
27  */
28 HWTEST_F(PluginTemplateTest, TestTemplate, TestSize.Level1)
29 {
30     PluginManager::GetInstance()->AddPlugin(PLUGIN::ArrayTestPlugin::GetPlugin());
31     PluginManager::GetInstance()->AddPlugin(PLUGIN::BoolTestPlugin::GetPlugin());
32     PluginManager::GetInstance()->AddPlugin(PLUGIN::MapTestPlugin::GetPlugin());
33     PluginManager::GetInstance()->AddPlugin(PLUGIN::ArrayMapTestPlugin::GetPlugin());
34     PluginManager::GetInstance()->AddPlugin(PLUGIN::JsonTestPlugin::GetPlugin());
35     PluginManager::GetInstance()->AddPlugin(PLUGIN::StringTestPlugin::GetPlugin());
36 
37     std::vector<std::uint32_t> policyCodes = { 10, 11, 12, 13, 14, 15 };
38     for (auto policyCode : policyCodes) {
39         uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
40         std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
41         ASSERT_TRUE(plugin != nullptr);
42         ASSERT_TRUE(plugin->GetCode() == policyCode);
43     }
44 }
45 
46 /**
47  * @tc.name: TestInitAttribute
48  * @tc.desc: Test PluginTemplate InitAttribute func.
49  * @tc.type: FUNC
50  */
51 HWTEST_F(PluginTemplateTest, TestInitAttribute, TestSize.Level1)
52 {
53     int policyCode = 20;
54     PluginManager::GetInstance()->AddPlugin(PLUGIN::InitAttributePlg::GetPlugin());
55     uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
56     std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
57     ASSERT_TRUE(plugin != nullptr);
58     ASSERT_TRUE(plugin->GetPermission() == "ohos.permission.EDM_TEST_PERMISSION");
59     ASSERT_TRUE(plugin->GetPolicyName() == "InitAttributePlg");
60     ASSERT_TRUE(plugin->GetCode() == 20);
61 }
62 
63 /**
64  * @tc.name: TestHandlePolicySupplier
65  * @tc.desc: Test PluginTemplate HandlePolicySupplier func.
66  * @tc.type: FUNC
67  */
68 HWTEST_F(PluginTemplateTest, TestHandlePolicySupplier, TestSize.Level1)
69 {
70     int policyCode = 21;
71     ErrCode res;
72     MessageParcel data;
73     uint32_t funcCode;
74     std::shared_ptr<IPlugin> plugin;
75     std::string setPolicyValue;
76     std::string policyValue;
77     bool isChange;
78     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicySupplierPlg::GetPlugin());
79     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
80     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
81     ASSERT_TRUE(plugin != nullptr);
82 
83     setPolicyValue = R"({"k1":"v1","k2":"v2","k3":3})";
84     policyValue = "";
85     isChange = false;
86     data.WriteString16(Str8ToStr16(setPolicyValue));
87     g_visit = false;
88     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
89     ASSERT_TRUE(res != ERR_OK);
90     ASSERT_TRUE(policyValue.empty());
91     ASSERT_TRUE(g_visit);
92 
93     setPolicyValue = R"({"k1":"v1","k2":"v2","k3":3})";
94     policyValue = "";
95     isChange = false;
96     data.WriteString16(Str8ToStr16(setPolicyValue));
97     g_visit = false;
98     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode);
99     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
100     ASSERT_TRUE(res != ERR_OK);
101     ASSERT_TRUE(policyValue.empty());
102     ASSERT_TRUE(g_visit);
103 }
104 
105 /**
106  * @tc.name: TestHandlePolicyFunction
107  * @tc.desc: Test PluginTemplate HandlePolicyFunction func.
108  * @tc.type: FUNC
109  */
110 HWTEST_F(PluginTemplateTest, TestHandlePolicyFunction, TestSize.Level1)
111 {
112     int policyCode = 22;
113     ErrCode res;
114     MessageParcel data;
115     uint32_t funcCode;
116     std::shared_ptr<IPlugin> plugin;
117     std::string setPolicyValue;
118     std::string policyValue;
119     bool isChange;
120     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyFunctionPlg::GetPlugin());
121 
122     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
123     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
124     ASSERT_TRUE(plugin != nullptr);
125     setPolicyValue = "testValue";
126     policyValue = "";
127     isChange = false;
128     data.WriteString16(Str8ToStr16(setPolicyValue));
129     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
130     ASSERT_TRUE(res == ERR_OK);
131     ASSERT_TRUE(policyValue == "newTestValue");
132     ASSERT_TRUE(isChange);
133 
134     setPolicyValue = "";
135     policyValue = "";
136     isChange = false;
137     data.WriteString16(Str8ToStr16(setPolicyValue));
138     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
139     ASSERT_TRUE(res == ERR_OK);
140     ASSERT_TRUE(policyValue == "testValue");
141     ASSERT_TRUE(isChange);
142 
143     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode);
144     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
145     ASSERT_TRUE(plugin != nullptr);
146     setPolicyValue = "";
147     policyValue = "testValue";
148     isChange = false;
149     data.WriteString16(Str8ToStr16(setPolicyValue));
150     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
151     ASSERT_TRUE(res == ERR_OK);
152     ASSERT_TRUE(policyValue.empty());
153     ASSERT_TRUE(isChange);
154 }
155 
156 /**
157  * @tc.name: TestHandlePolicyBiFunction
158  * @tc.desc: Test PluginTemplate HandlePolicyBiFunction func.
159  * @tc.type: FUNC
160  */
161 HWTEST_F(PluginTemplateTest, TestHandlePolicyBiFunction, TestSize.Level1)
162 {
163     int policyCode = 23;
164     ErrCode res;
165     MessageParcel data;
166     uint32_t funcCode;
167     std::shared_ptr<IPlugin> plugin;
168     std::string setPolicyValue;
169     std::string policyValue;
170     bool isChange;
171     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyBiFunctionPlg::GetPlugin());
172 
173     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
174     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
175     ASSERT_TRUE(plugin != nullptr);
176     setPolicyValue = "testValue";
177     policyValue = "";
178     isChange = false;
179     data.WriteString16(Str8ToStr16(setPolicyValue));
180     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
181     ASSERT_TRUE(res == ERR_OK);
182     ASSERT_TRUE(policyValue == "testValue");
183     ASSERT_TRUE(isChange);
184 
185     setPolicyValue = "testValue";
186     policyValue = "testValue";
187     isChange = false;
188     data.WriteString16(Str8ToStr16(setPolicyValue));
189     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
190     ASSERT_TRUE(res == ERR_OK);
191     ASSERT_TRUE(policyValue == "testValue");
192     ASSERT_TRUE(!isChange);
193 
194     setPolicyValue = "";
195     policyValue = "testValue";
196     isChange = false;
197     data.WriteString16(Str8ToStr16(setPolicyValue));
198     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
199     ASSERT_TRUE(res == ERR_OK);
200     ASSERT_TRUE(policyValue.empty());
201     ASSERT_TRUE(isChange);
202 
203     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode);
204     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
205     ASSERT_TRUE(plugin != nullptr);
206     setPolicyValue = "";
207     policyValue = "testValue";
208     isChange = false;
209     data.WriteString16(Str8ToStr16(setPolicyValue));
210     res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange);
211     ASSERT_TRUE(res == ERR_OK);
212     ASSERT_TRUE(policyValue.empty());
213     ASSERT_TRUE(isChange);
214 }
215 
216 /**
217  * @tc.name: TestHandlePolicyDone
218  * @tc.desc: Test PluginTemplate HandlePolicyDone func.
219  * @tc.type: FUNC
220  */
221 HWTEST_F(PluginTemplateTest, TestHandlePolicyDone, TestSize.Level1)
222 {
223     std::vector<int> policyCodes = { 24, 25 };
224     MessageParcel data;
225     uint32_t funcCode;
226     std::shared_ptr<IPlugin> plugin;
227     std::string adminName;
228     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandleDoneBoolConsumerPlg::GetPlugin());
229     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandleDoneBiBoolConsumerPlg::GetPlugin());
230 
231     for (int policyCode : policyCodes) {
232         funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
233         plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
234         ASSERT_TRUE(plugin != nullptr);
235         adminName = "com.edm.test.demo";
236         g_visit = false;
237         plugin->OnHandlePolicyDone(funcCode, adminName, true);
238         ASSERT_TRUE(g_visit);
239 
240         g_visit = false;
241         funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode);
242         plugin->OnHandlePolicyDone(funcCode, adminName, false);
243         ASSERT_TRUE(g_visit);
244     }
245 }
246 
247 /**
248  * @tc.name: TestAdminRemove
249  * @tc.desc: Test PluginTemplate AdminRemove func.
250  * @tc.type: FUNC
251  */
252 HWTEST_F(PluginTemplateTest, TestAdminRemove, TestSize.Level1)
253 {
254     std::vector<int> policyCodes = { 26, 27 };
255     MessageParcel data;
256     uint32_t funcCode;
257     std::shared_ptr<IPlugin> plugin;
258     std::string adminName;
259     std::string policyValue;
260     PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveSupplierPlg::GetPlugin());
261     PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveBiFunctionPlg::GetPlugin());
262 
263     for (int policyCode : policyCodes) {
264         funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
265         plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
266 
267         adminName = "com.edm.test.demo";
268         policyValue = "testValue";
269         g_visit = false;
270         plugin->OnAdminRemove(adminName, policyValue);
271         ASSERT_TRUE(g_visit);
272     }
273 }
274 
275 /**
276  * @tc.name: TestAdminRemove
277  * @tc.desc: Test PluginTemplate AdminRemoveDone func.
278  * @tc.type: FUNC
279  */
280 HWTEST_F(PluginTemplateTest, TestAdminRemoveDone, TestSize.Level1)
281 {
282     std::vector<int> policyCodes = { 28, 29 };
283     MessageParcel data;
284     uint32_t funcCode;
285     std::shared_ptr<IPlugin> plugin;
286     std::string adminName;
287     std::string policyValue;
288     PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveDoneRunnerPlg::GetPlugin());
289     PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveDoneBiBiConsumerPlg::GetPlugin());
290 
291     for (int policyCode : policyCodes) {
292         funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
293         plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
294 
295         adminName = "com.edm.test.demo";
296         policyValue = "testValue";
297         g_visit = false;
298         plugin->OnAdminRemoveDone(adminName, policyValue);
299         ASSERT_TRUE(g_visit);
300     }
301 }
302 } // namespace TEST
303 } // namespace EDM
304 } // namespace OHOS