• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022-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 #define protected public
17 #include "iplugin_template_test.h"
18 #undef protected
19 
20 #include "policy_manager.h"
21 using namespace testing::ext;
22 
23 namespace OHOS {
24 namespace EDM {
25 namespace TEST {
26 /**
27  * @tc.name: TestTemplate
28  * @tc.desc: Test PluginTemplate init.
29  * @tc.type: FUNC
30  */
31 HWTEST_F(PluginTemplateTest, TestTemplate, TestSize.Level1)
32 {
33     PluginManager::GetInstance()->AddPlugin(PLUGIN::ArrayTestPlugin::GetPlugin());
34     PluginManager::GetInstance()->AddPlugin(PLUGIN::BoolTestPlugin::GetPlugin());
35     PluginManager::GetInstance()->AddPlugin(PLUGIN::MapTestPlugin::GetPlugin());
36     PluginManager::GetInstance()->AddPlugin(PLUGIN::ArrayMapTestPlugin::GetPlugin());
37     PluginManager::GetInstance()->AddPlugin(PLUGIN::JsonTestPlugin::GetPlugin());
38     PluginManager::GetInstance()->AddPlugin(PLUGIN::StringTestPlugin::GetPlugin());
39 
40     std::vector<std::uint32_t> policyCodes = {10, 11, 12, 13, 14, 15};
41     for (auto policyCode : policyCodes) {
42         uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
43         std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
44         ASSERT_TRUE(plugin != nullptr);
45         ASSERT_TRUE(plugin->GetCode() == policyCode);
46     }
47 }
48 
49 /**
50  * @tc.name: TestInitAttribute
51  * @tc.desc: Test PluginTemplate InitAttribute func.
52  * @tc.type: FUNC
53  */
54 HWTEST_F(PluginTemplateTest, TestInitAttribute, TestSize.Level1)
55 {
56     int policyCode = 20;
57     PluginManager::GetInstance()->AddPlugin(PLUGIN::InitAttributePlg::GetPlugin());
58     uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
59     std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
60     ASSERT_TRUE(plugin != nullptr);
61     ASSERT_TRUE(plugin->GetPermission(FuncOperateType::GET) == "ohos.permission.EDM_TEST_PERMISSION");
62     ASSERT_TRUE(plugin->GetPolicyName() == "InitAttributePlg");
63     ASSERT_TRUE(plugin->GetCode() == 20);
64 }
65 
66 /**
67  * @tc.name: TestHandlePolicySupplier
68  * @tc.desc: Test PluginTemplate HandlePolicySupplier func.
69  * @tc.type: FUNC
70  */
71 HWTEST_F(PluginTemplateTest, TestHandlePolicySupplier, TestSize.Level1)
72 {
73     int policyCode = 21;
74     ErrCode res;
75     MessageParcel data;
76     MessageParcel reply;
77     uint32_t funcCode;
78     std::shared_ptr<IPlugin> plugin;
79     std::string setPolicyValue;
80     std::string policyValue;
81     bool isChange;
82     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicySupplierPlg::GetPlugin());
83     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
84     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
85     ASSERT_TRUE(plugin != nullptr);
86 
87     setPolicyValue = R"({"k1":"v1","k2":"v2","k3":3})";
88     policyValue = "";
89     isChange = false;
90     data.WriteString(setPolicyValue);
91     g_visit = false;
92     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
93     ASSERT_TRUE(res != ERR_OK);
94     ASSERT_TRUE(policyValue.empty());
95     ASSERT_TRUE(g_visit);
96 
97     setPolicyValue = R"({"k1":"v1","k2":"v2","k3":3})";
98     policyValue = "";
99     isChange = false;
100     data.WriteString(setPolicyValue);
101     g_visit = false;
102     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode);
103     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
104     ASSERT_TRUE(res != ERR_OK);
105     ASSERT_TRUE(policyValue.empty());
106     ASSERT_TRUE(g_visit);
107 }
108 
109 /**
110  * @tc.name: TestHandlePolicyFunction
111  * @tc.desc: Test PluginTemplate HandlePolicyFunction func.
112  * @tc.type: FUNC
113  */
114 HWTEST_F(PluginTemplateTest, TestHandlePolicyFunction, TestSize.Level1)
115 {
116     int policyCode = 22;
117     ErrCode res;
118     MessageParcel data;
119     MessageParcel reply;
120     uint32_t funcCode;
121     std::shared_ptr<IPlugin> plugin;
122     std::string setPolicyValue;
123     std::string policyValue;
124     bool isChange;
125     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyFunctionPlg::GetPlugin());
126 
127     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
128     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
129     ASSERT_TRUE(plugin != nullptr);
130     setPolicyValue = "testValue";
131     policyValue = "";
132     isChange = false;
133     data.WriteString(setPolicyValue);
134     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
135     ASSERT_TRUE(res == ERR_OK);
136     ASSERT_TRUE(policyValue == "newTestValue");
137     ASSERT_TRUE(isChange);
138 
139     setPolicyValue = "";
140     policyValue = "";
141     isChange = false;
142     data.WriteString(setPolicyValue);
143     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
144     ASSERT_TRUE(res == ERR_OK);
145     ASSERT_TRUE(policyValue == "testValue");
146     ASSERT_TRUE(isChange);
147 
148     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode);
149     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
150     ASSERT_TRUE(plugin != nullptr);
151     setPolicyValue = "";
152     policyValue = "testValue";
153     isChange = false;
154     data.WriteString(setPolicyValue);
155     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
156     ASSERT_TRUE(res == ERR_OK);
157     ASSERT_TRUE(policyValue.empty());
158     ASSERT_TRUE(isChange);
159 }
160 
161 /**
162  * @tc.name: TestHandlePolicyBiFunction
163  * @tc.desc: Test PluginTemplate HandlePolicyBiFunction func.
164  * @tc.type: FUNC
165  */
166 HWTEST_F(PluginTemplateTest, TestHandlePolicyBiFunction, TestSize.Level1)
167 {
168     int policyCode = 23;
169     ErrCode res;
170     MessageParcel data;
171     MessageParcel reply;
172     uint32_t funcCode;
173     std::shared_ptr<IPlugin> plugin;
174     std::string setPolicyValue;
175     std::string policyValue;
176     bool isChange;
177     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyBiFunctionPlg::GetPlugin());
178 
179     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
180     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
181     ASSERT_TRUE(plugin != nullptr);
182     setPolicyValue = "testValue";
183     policyValue = "";
184     isChange = false;
185     data.WriteString(setPolicyValue);
186     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
187     ASSERT_TRUE(res == ERR_OK);
188     ASSERT_TRUE(policyValue == "testValue");
189     ASSERT_TRUE(isChange);
190 
191     setPolicyValue = "testValue";
192     policyValue = "testValue";
193     isChange = false;
194     data.WriteString(setPolicyValue);
195     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
196     ASSERT_TRUE(res == ERR_OK);
197     ASSERT_TRUE(policyValue == "testValue");
198     ASSERT_TRUE(!isChange);
199 
200     setPolicyValue = "";
201     policyValue = "testValue";
202     isChange = false;
203     data.WriteString(setPolicyValue);
204     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
205     ASSERT_TRUE(res == ERR_OK);
206     ASSERT_TRUE(policyValue.empty());
207     ASSERT_TRUE(isChange);
208 
209     funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode);
210     plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
211     ASSERT_TRUE(plugin != nullptr);
212     setPolicyValue = "";
213     policyValue = "testValue";
214     isChange = false;
215     data.WriteString(setPolicyValue);
216     res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
217     ASSERT_TRUE(res == ERR_OK);
218     ASSERT_TRUE(policyValue.empty());
219     ASSERT_TRUE(isChange);
220 }
221 
222 /**
223  * @tc.name: TestHandlePolicyDone
224  * @tc.desc: Test PluginTemplate HandlePolicyDone func.
225  * @tc.type: FUNC
226  */
227 HWTEST_F(PluginTemplateTest, TestHandlePolicyDone, TestSize.Level1)
228 {
229     std::vector<int> policyCodes = {24, 25};
230     MessageParcel data;
231     uint32_t funcCode;
232     std::shared_ptr<IPlugin> plugin;
233     std::string adminName;
234     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandleDoneBoolConsumerPlg::GetPlugin());
235     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandleDoneBiBoolConsumerPlg::GetPlugin());
236 
237     for (int policyCode : policyCodes) {
238         funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
239         plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
240         ASSERT_TRUE(plugin != nullptr);
241         adminName = "com.edm.test.demo";
242         g_visit = false;
243         plugin->OnHandlePolicyDone(funcCode, adminName, true, DEFAULT_USER_ID);
244         ASSERT_TRUE(g_visit);
245 
246         g_visit = false;
247         funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode);
248         plugin->OnHandlePolicyDone(funcCode, adminName, false, DEFAULT_USER_ID);
249         ASSERT_TRUE(g_visit);
250     }
251 }
252 
253 /**
254  * @tc.name: TestAdminRemove
255  * @tc.desc: Test PluginTemplate AdminRemove func.
256  * @tc.type: FUNC
257  */
258 HWTEST_F(PluginTemplateTest, TestAdminRemove, TestSize.Level1)
259 {
260     std::vector<int> policyCodes = {26, 27};
261     MessageParcel data;
262     uint32_t funcCode;
263     std::shared_ptr<IPlugin> plugin;
264     std::string adminName;
265     std::string policyValue;
266     PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveSupplierPlg::GetPlugin());
267     PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveBiFunctionPlg::GetPlugin());
268 
269     for (int policyCode : policyCodes) {
270         funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
271         plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
272 
273         adminName = "com.edm.test.demo";
274         policyValue = "testValue";
275         g_visit = false;
276         plugin->OnAdminRemove(adminName, policyValue, DEFAULT_USER_ID);
277         ASSERT_TRUE(g_visit);
278     }
279 }
280 
281 /**
282  * @tc.name: TestAdminRemove
283  * @tc.desc: Test PluginTemplate AdminRemoveDone func.
284  * @tc.type: FUNC
285  */
286 HWTEST_F(PluginTemplateTest, TestAdminRemoveDone, TestSize.Level1)
287 {
288     std::vector<int> policyCodes = {28, 29};
289     MessageParcel data;
290     uint32_t funcCode;
291     std::shared_ptr<IPlugin> plugin;
292     std::string adminName;
293     std::string policyValue;
294     PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveDoneRunnerPlg::GetPlugin());
295     PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveDoneBiBiConsumerPlg::GetPlugin());
296 
297     for (int policyCode : policyCodes) {
298         funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
299         plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
300 
301         adminName = "com.edm.test.demo";
302         policyValue = "testValue";
303         g_visit = false;
304         plugin->OnAdminRemoveDone(adminName, policyValue, DEFAULT_USER_ID);
305         ASSERT_TRUE(g_visit);
306     }
307 }
308 
309 /**
310  * @tc.name: TestOnGetPolicy
311  * @tc.desc: Test PluginTemplate OnGetPolicy func.
312  * @tc.type: FUNC
313  */
314 HWTEST_F(PluginTemplateTest, TestOnGetPolicy, TestSize.Level1)
315 {
316     int policyCode = 30;
317     MessageParcel reply;
318     MessageParcel data;
319     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyJsonBiFunctionPlg::GetPlugin());
320     uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::GET, policyCode);
321     std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
322     std::string policyData{"TestData"};
323     ErrCode ret = plugin->OnGetPolicy(policyData, data, reply, DEFAULT_USER_ID);
324     ASSERT_TRUE(ret == ERR_OK);
325 }
326 
327 /**
328  * @tc.name: TestWritePolicyToParcel
329  * @tc.desc: Test PluginTemplate WritePolicyToParcel func.
330  * @tc.type: FUNC
331  */
332 HWTEST_F(PluginTemplateTest, TestWritePolicyToParcel, TestSize.Level1)
333 {
334     int policyCode = 22;
335     MessageParcel reply;
336     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyFunctionPlg::GetPlugin());
337     uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::GET, policyCode);
338     std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
339     std::string policyData = "testValue";
340     ErrCode ret = plugin->WritePolicyToParcel(policyData, reply);
341     ASSERT_TRUE(ret == ERR_OK);
342     std::string temp;
343     reply.ReadString(temp);
344     ASSERT_TRUE(temp == policyData);
345 }
346 
347 /**
348  * @tc.name: TestHandlePolicyReplyFunctionPlg
349  * @tc.desc: Test PluginTemplate TestHandlePolicyReplyFunctionPlg func.
350  * @tc.type: FUNC
351  */
352 HWTEST_F(PluginTemplateTest, TestHandlePolicyReplyFunctionPlg, TestSize.Level1)
353 {
354     int policyCode = 32;
355     PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyReplyFunctionPlg::GetPlugin());
356     uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode);
357     std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode);
358     ASSERT_TRUE(plugin != nullptr);
359     std::string setPolicyValue = "testValue";
360     std::string policyValue;
361     bool isChange = false;
362     MessageParcel data;
363     data.WriteString(setPolicyValue);
364     MessageParcel reply;
365     ErrCode res = plugin->OnHandlePolicy(funcCode, data, reply, policyValue, isChange, DEFAULT_USER_ID);
366     ASSERT_TRUE(res == ERR_OK);
367     ASSERT_TRUE(policyValue == "testValue");
368     ASSERT_TRUE(isChange);
369 }
370 
371 /**
372  * @tc.name: TestDestroyPlugin
373  * @tc.desc: Test PluginTemplate DestroyPlugin func.
374  * @tc.type: FUNC
375  */
376 HWTEST_F(PluginTemplateTest, TestDestroyPlugin, TestSize.Level1)
377 {
378     MessageParcel reply;
379     PLUGIN::HandlePolicyJsonBiFunctionPlg::GetPlugin();
380     ASSERT_TRUE(PLUGIN::HandlePolicyJsonBiFunctionPlg::pluginInstance_ != nullptr);
381     PLUGIN::HandlePolicyJsonBiFunctionPlg::DestroyPlugin();
382     ASSERT_TRUE(PLUGIN::HandlePolicyJsonBiFunctionPlg::pluginInstance_ == nullptr);
383 }
384 
SetUp()385 void PluginTemplateTest::SetUp()
386 {
387     IPolicyManager::policyManagerInstance_ = new (std::nothrow) PolicyManager(DEFAULT_USER_ID);
388 }
389 
TearDown()390 void PluginTemplateTest::TearDown()
391 {
392     PluginManager::GetInstance().reset();
393 }
394 } // namespace TEST
395 } // namespace EDM
396 } // namespace OHOS