1 /*
2  * Copyright (c) 2022-2024 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 #ifndef EDM_UNIT_TEST_IPLUGIN_TEMPLATE_TEST_H
17 #define EDM_UNIT_TEST_IPLUGIN_TEMPLATE_TEST_H
18 
19 #include <gtest/gtest.h>
20 
21 #include <map>
22 #include <string>
23 #include <vector>
24 
25 #include "array_map_serializer.h"
26 #include "array_string_serializer.h"
27 #include "bool_serializer.h"
28 #include "func_code_utils.h"
29 #include "iplugin.h"
30 #include "json_serializer.h"
31 #include "map_string_serializer.h"
32 #include "plugin_manager.h"
33 #include "plugin_singleton.h"
34 #include "string_serializer.h"
35 
36 namespace OHOS {
37 namespace EDM {
38 namespace TEST {
39 static bool g_visit = false;
40 namespace PLUGIN {
41 #ifndef ARRAY_TEST_PLUGIN
42 #define ARRAY_TEST_PLUGIN
43 
44 class ArrayTestPlugin : public PluginSingleton<ArrayTestPlugin, std::vector<std::string>> {
45 public:
InitPlugin(std::shared_ptr<IPluginTemplate<ArrayTestPlugin,std::vector<std::string>>> ptr)46     void InitPlugin(std::shared_ptr<IPluginTemplate<ArrayTestPlugin, std::vector<std::string>>> ptr) override
47     {
48         int policyCode = 10;
49         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
50             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
51         ptr->InitAttribute(policyCode, "ArrayTestPlugin", config);
52         ptr->SetSerializer(ArrayStringSerializer::GetInstance());
53     }
54 };
55 
56 #endif // ARRAY_TEST_PLUGIN
57 
58 #ifndef BOOL_TEST_PLUGIN
59 #define BOOL_TEST_PLUGIN
60 
61 class BoolTestPlugin : public PluginSingleton<BoolTestPlugin, bool> {
62 public:
InitPlugin(std::shared_ptr<IPluginTemplate<BoolTestPlugin,bool>> ptr)63     void InitPlugin(std::shared_ptr<IPluginTemplate<BoolTestPlugin, bool>> ptr) override
64     {
65         int policyCode = 11;
66         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
67             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
68         ptr->InitAttribute(policyCode, "BoolTestPlugin", config);
69         ptr->SetSerializer(BoolSerializer::GetInstance());
70     }
71 };
72 
73 #endif // BOOL_TEST_PLUGIN
74 
75 #ifndef MAP_TEST_PLUGIN
76 #define MAP_TEST_PLUGIN
77 
78 class MapTestPlugin : public PluginSingleton<MapTestPlugin, std::map<std::string, std::string>> {
79 public:
InitPlugin(std::shared_ptr<IPluginTemplate<MapTestPlugin,std::map<std::string,std::string>>> ptr)80     void InitPlugin(std::shared_ptr<IPluginTemplate<MapTestPlugin, std::map<std::string, std::string>>> ptr) override
81     {
82         int policyCode = 12;
83         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
84             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
85         ptr->InitAttribute(policyCode, "MapTestPlugin", config);
86         ptr->SetSerializer(MapStringSerializer::GetInstance());
87     }
88 };
89 
90 #endif // MAP_TEST_PLUGIN
91 
92 #ifndef ARRAY_MAP_TEST_PLUGIN
93 #define ARRAY_MAP_TEST_PLUGIN
94 
95 class ArrayMapTestPlugin : public PluginSingleton<ArrayMapTestPlugin, std::vector<std::map<std::string, std::string>>> {
96 public:
InitPlugin(std::shared_ptr<IPluginTemplate<ArrayMapTestPlugin,std::vector<std::map<std::string,std::string>>>> ptr)97     void InitPlugin(std::shared_ptr<IPluginTemplate<ArrayMapTestPlugin,
98         std::vector<std::map<std::string, std::string>>>> ptr) override
99     {
100         int policyCode = 13;
101         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
102             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
103         ptr->InitAttribute(policyCode, "ArrayMapTestPlugin", config);
104         ptr->SetSerializer(ArrayMapSerializer::GetInstance());
105     }
106 };
107 
108 #endif // ARRAY_MAP_TEST_PLUGIN
109 
110 #ifndef JSON_TEST_PLUGIN
111 #define JSON_TEST_PLUGIN
112 
113 class JsonTestPlugin : public PluginSingleton<JsonTestPlugin, Json::Value> {
114 public:
InitPlugin(std::shared_ptr<IPluginTemplate<JsonTestPlugin,Json::Value>> ptr)115     void InitPlugin(std::shared_ptr<IPluginTemplate<JsonTestPlugin, Json::Value>> ptr) override
116     {
117         int policyCode = 14;
118         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
119             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
120         ptr->InitAttribute(policyCode, "JsonTestPlugin", config);
121         ptr->SetSerializer(JsonSerializer::GetInstance());
122     }
123 };
124 
125 #endif // JSON_TEST_PLUGIN
126 
127 #ifndef STRING_TEST_PLUGIN
128 #define STRING_TEST_PLUGIN
129 
130 class StringTestPlugin : public PluginSingleton<StringTestPlugin, std::string> {
131 public:
InitPlugin(std::shared_ptr<IPluginTemplate<StringTestPlugin,std::string>> ptr)132     void InitPlugin(std::shared_ptr<IPluginTemplate<StringTestPlugin, std::string>> ptr) override
133     {
134         int policyCode = 15;
135         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
136             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
137         ptr->InitAttribute(policyCode, "StringTestPlugin", config);
138         ptr->SetSerializer(StringSerializer::GetInstance());
139     }
140 };
141 
142 #endif // STRING_TEST_PLUGIN
143 
144 class InitAttributePlg : public PluginSingleton<InitAttributePlg, Json::Value> {
145 public:
InitPlugin(std::shared_ptr<IPluginTemplate<InitAttributePlg,Json::Value>> ptr)146     void InitPlugin(std::shared_ptr<IPluginTemplate<InitAttributePlg, Json::Value>> ptr) override
147     {
148         int policyCode = 20;
149         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
150             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
151         ptr->InitAttribute(policyCode, "InitAttributePlg", config);
152     }
153 };
154 
155 class HandlePolicySupplierPlg : public PluginSingleton<HandlePolicySupplierPlg, Json::Value> {
156 public:
SetSupplier()157     ErrCode SetSupplier()
158     {
159         g_visit = true;
160         return ERR_EDM_PARAM_ERROR;
161     }
162 
RemoveSupplier()163     ErrCode RemoveSupplier()
164     {
165         g_visit = true;
166         return ERR_EDM_PARAM_ERROR;
167     }
168 
InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicySupplierPlg,Json::Value>> ptr)169     void InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicySupplierPlg, Json::Value>> ptr) override
170     {
171         int policyCode = 21;
172         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
173             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
174         ptr->InitAttribute(policyCode, "HandlePolicySupplierPlg", config);
175         ptr->SetSerializer(JsonSerializer::GetInstance());
176         ptr->SetOnHandlePolicyListener(&HandlePolicySupplierPlg::SetSupplier, FuncOperateType::SET);
177         ptr->SetOnHandlePolicyListener(&HandlePolicySupplierPlg::RemoveSupplier, FuncOperateType::REMOVE);
178     }
179 };
180 
181 class HandlePolicyFunctionPlg : public PluginSingleton<HandlePolicyFunctionPlg, std::string> {
182 public:
SetFunction(std::string & policyValue)183     ErrCode SetFunction(std::string &policyValue)
184     {
185         if (policyValue.empty()) {
186             policyValue = "testValue";
187         } else {
188             policyValue = "newTestValue";
189         }
190         return ERR_OK;
191     }
192 
RemoveFunction(std::string & policyValue)193     ErrCode RemoveFunction(std::string &policyValue)
194     {
195         policyValue = "";
196         return ERR_OK;
197     }
198 
InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyFunctionPlg,std::string>> ptr)199     void InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyFunctionPlg, std::string>> ptr) override
200     {
201         int policyCode = 22;
202         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
203             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
204         ptr->InitAttribute(policyCode, "HandlePolicyFunctionPlg", config);
205         ptr->SetSerializer(StringSerializer::GetInstance());
206         ptr->SetOnHandlePolicyListener(&HandlePolicyFunctionPlg::SetFunction, FuncOperateType::SET);
207         ptr->SetOnHandlePolicyListener(&HandlePolicyFunctionPlg::RemoveFunction, FuncOperateType::REMOVE);
208     }
209 };
210 
211 class HandlePolicyBiFunctionPlg : public PluginSingleton<HandlePolicyBiFunctionPlg, std::string> {
212 public:
SetFunction(std::string & data,std::string & currentData,int32_t userId)213     ErrCode SetFunction(std::string &data, std::string &currentData, int32_t userId)
214     {
215         std::string errStr{"ErrorData"};
216         if (data == errStr) {
217             return ERR_EDM_OPERATE_JSON;
218         }
219         currentData = data;
220         return ERR_OK;
221     }
222 
RemoveFunction(std::string & data,std::string & currentData,int32_t userId)223     ErrCode RemoveFunction(std::string &data, std::string &currentData, int32_t userId)
224     {
225         currentData = "";
226         return ERR_OK;
227     }
228 
InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyBiFunctionPlg,std::string>> ptr)229     void InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyBiFunctionPlg, std::string>> ptr) override
230     {
231         int policyCode = 23;
232         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
233             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
234         ptr->InitAttribute(policyCode, "HandlePolicyBiFunctionPlg", config);
235         ptr->SetSerializer(StringSerializer::GetInstance());
236         ptr->SetOnHandlePolicyListener(&HandlePolicyBiFunctionPlg::SetFunction, FuncOperateType::SET);
237         ptr->SetOnHandlePolicyListener(&HandlePolicyBiFunctionPlg::RemoveFunction, FuncOperateType::REMOVE);
238     }
239 };
240 
241 class HandleDoneBoolConsumerPlg : public PluginSingleton<HandleDoneBoolConsumerPlg, std::string> {
242 public:
SetDone(bool isGlobalChanged)243     void SetDone(bool isGlobalChanged) { g_visit = true; }
244 
RemoveDone(bool isGlobalChanged)245     void RemoveDone(bool isGlobalChanged) { g_visit = true; }
246 
InitPlugin(std::shared_ptr<IPluginTemplate<HandleDoneBoolConsumerPlg,std::string>> ptr)247     void InitPlugin(std::shared_ptr<IPluginTemplate<HandleDoneBoolConsumerPlg, std::string>> ptr) override
248     {
249         int policyCode = 24;
250         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
251             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
252         ptr->InitAttribute(policyCode, "HandleDoneBoolConsumerPlg", config);
253         ptr->SetSerializer(StringSerializer::GetInstance());
254         ptr->SetOnHandlePolicyDoneListener(&HandleDoneBoolConsumerPlg::SetDone, FuncOperateType::SET);
255         ptr->SetOnHandlePolicyDoneListener(&HandleDoneBoolConsumerPlg::RemoveDone, FuncOperateType::REMOVE);
256     }
257 };
258 
259 class HandleDoneBiBoolConsumerPlg : public PluginSingleton<HandleDoneBiBoolConsumerPlg, std::string> {
260 public:
SetDone(std::string & data,bool isGlobalChanged,int32_t userId)261     void SetDone(std::string &data, bool isGlobalChanged, int32_t userId) { g_visit = true; }
262 
RemoveDone(std::string & data,bool isGlobalChanged,int32_t userId)263     void RemoveDone(std::string &data, bool isGlobalChanged, int32_t userId) { g_visit = true; }
264 
InitPlugin(std::shared_ptr<IPluginTemplate<HandleDoneBiBoolConsumerPlg,std::string>> ptr)265     void InitPlugin(std::shared_ptr<IPluginTemplate<HandleDoneBiBoolConsumerPlg, std::string>> ptr) override
266     {
267         int policyCode = 25;
268         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
269             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
270         ptr->InitAttribute(policyCode, "HandleDoneBiBoolConsumerPlg", config);
271         ptr->SetSerializer(StringSerializer::GetInstance());
272         ptr->SetOnHandlePolicyDoneListener(&HandleDoneBiBoolConsumerPlg::SetDone, FuncOperateType::SET);
273         ptr->SetOnHandlePolicyDoneListener(&HandleDoneBiBoolConsumerPlg::RemoveDone, FuncOperateType::REMOVE);
274     }
275 };
276 
277 class AdminRemoveSupplierPlg : public PluginSingleton<AdminRemoveSupplierPlg, std::string> {
278 public:
RemoveAdmin()279     ErrCode RemoveAdmin()
280     {
281         g_visit = true;
282         return ERR_OK;
283     }
284 
InitPlugin(std::shared_ptr<IPluginTemplate<AdminRemoveSupplierPlg,std::string>> ptr)285     void InitPlugin(std::shared_ptr<IPluginTemplate<AdminRemoveSupplierPlg, std::string>> ptr) override
286     {
287         int policyCode = 26;
288         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
289             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
290         ptr->InitAttribute(policyCode, "AdminRemoveSupplierPlg", config);
291         ptr->SetSerializer(StringSerializer::GetInstance());
292         ptr->SetOnAdminRemoveListener(&AdminRemoveSupplierPlg::RemoveAdmin);
293     }
294 };
295 
296 class AdminRemoveBiFunctionPlg : public PluginSingleton<AdminRemoveBiFunctionPlg, std::string> {
297 public:
RemoveAdmin(const std::string & adminName,std::string & data,int32_t userId)298     ErrCode RemoveAdmin(const std::string &adminName, std::string &data, int32_t userId)
299     {
300         g_visit = true;
301         return ERR_OK;
302     }
303 
InitPlugin(std::shared_ptr<IPluginTemplate<AdminRemoveBiFunctionPlg,std::string>> ptr)304     void InitPlugin(std::shared_ptr<IPluginTemplate<AdminRemoveBiFunctionPlg, std::string>> ptr) override
305     {
306         int policyCode = 27;
307         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
308             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
309         ptr->InitAttribute(policyCode, "AdminRemoveBiFunctionPlg", config);
310         ptr->SetSerializer(StringSerializer::GetInstance());
311         ptr->SetOnAdminRemoveListener(&AdminRemoveBiFunctionPlg::RemoveAdmin);
312     }
313 };
314 
315 class AdminRemoveDoneRunnerPlg : public PluginSingleton<AdminRemoveDoneRunnerPlg, std::string> {
316 public:
RemoveAdminDone()317     void RemoveAdminDone() { g_visit = true; }
318 
InitPlugin(std::shared_ptr<IPluginTemplate<AdminRemoveDoneRunnerPlg,std::string>> ptr)319     void InitPlugin(std::shared_ptr<IPluginTemplate<AdminRemoveDoneRunnerPlg, std::string>> ptr) override
320     {
321         int policyCode = 28;
322         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
323             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
324         ptr->InitAttribute(policyCode, "AdminRemoveDoneRunnerPlg", config);
325         ptr->SetSerializer(StringSerializer::GetInstance());
326         ptr->SetOnAdminRemoveDoneListener(&AdminRemoveDoneRunnerPlg::RemoveAdminDone);
327     }
328 };
329 
330 class AdminRemoveDoneBiBiConsumerPlg : public PluginSingleton<AdminRemoveDoneBiBiConsumerPlg, std::string> {
331 public:
RemoveAdminDone(const std::string & adminName,std::string & data,int32_t userId)332     void RemoveAdminDone(const std::string &adminName, std::string &data, int32_t userId) { g_visit = true; }
333 
InitPlugin(std::shared_ptr<IPluginTemplate<AdminRemoveDoneBiBiConsumerPlg,std::string>> ptr)334     void InitPlugin(std::shared_ptr<IPluginTemplate<AdminRemoveDoneBiBiConsumerPlg, std::string>> ptr) override
335     {
336         int policyCode = 29;
337         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
338             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
339         ptr->InitAttribute(policyCode, "AdminRemoveDoneBiBiConsumerPlg", config);
340         ptr->SetSerializer(StringSerializer::GetInstance());
341         ptr->SetOnAdminRemoveDoneListener(&AdminRemoveDoneBiBiConsumerPlg::RemoveAdminDone);
342     }
343 };
344 
345 class HandlePolicyJsonBiFunctionPlg : public PluginSingleton<HandlePolicyJsonBiFunctionPlg, Json::Value> {
346 public:
SetFunction(Json::Value & data,Json::Value & currentData,int32_t userId)347     ErrCode SetFunction(Json::Value &data, Json::Value &currentData, int32_t userId)
348     {
349         currentData = data;
350         return ERR_OK;
351     }
352 
RemoveFunction(Json::Value & data,Json::Value & currentData,int32_t userId)353     ErrCode RemoveFunction(Json::Value &data, Json::Value &currentData, int32_t userId)
354     {
355         currentData = Json::nullValue;
356         return ERR_OK;
357     }
358 
InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyJsonBiFunctionPlg,Json::Value>> ptr)359     void InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyJsonBiFunctionPlg, Json::Value>> ptr) override
360     {
361         int policyCode = 30;
362         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
363             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
364         ptr->InitAttribute(policyCode, "HandlePolicyJsonBiFunctionPlg", config);
365         ptr->SetSerializer(JsonSerializer::GetInstance());
366         ptr->SetOnHandlePolicyListener(&HandlePolicyJsonBiFunctionPlg::SetFunction, FuncOperateType::SET);
367         ptr->SetOnHandlePolicyListener(&HandlePolicyJsonBiFunctionPlg::RemoveFunction, FuncOperateType::REMOVE);
368     }
369 };
370 
371 class HandlePolicyBiFunctionUnsavePlg : public PluginSingleton<HandlePolicyBiFunctionUnsavePlg, Json::Value> {
372 public:
SetFunction(Json::Value & data,Json::Value & currentData,int32_t userId)373     ErrCode SetFunction(Json::Value &data, Json::Value &currentData, int32_t userId)
374     {
375         currentData = data;
376         return ERR_OK;
377     }
378 
RemoveFunction(Json::Value & data,Json::Value & currentData,int32_t userId)379     ErrCode RemoveFunction(Json::Value &data, Json::Value &currentData, int32_t userId)
380     {
381         currentData = Json::nullValue;
382         return ERR_OK;
383     }
384 
InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyBiFunctionUnsavePlg,Json::Value>> ptr)385     void InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyBiFunctionUnsavePlg, Json::Value>> ptr) override
386     {
387         int policyCode = 31;
388         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
389             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
390         ptr->InitAttribute(policyCode, "HandlePolicyBiFunctionUnsavePlg", config, false, true);
391         ptr->SetSerializer(JsonSerializer::GetInstance());
392         ptr->SetOnHandlePolicyListener(&HandlePolicyBiFunctionUnsavePlg::SetFunction, FuncOperateType::SET);
393         ptr->SetOnHandlePolicyListener(&HandlePolicyBiFunctionUnsavePlg::RemoveFunction, FuncOperateType::REMOVE);
394     }
395 };
396 
397 class HandlePolicyReplyFunctionPlg : public PluginSingleton<HandlePolicyReplyFunctionPlg, std::string> {
398 public:
SetFunction(std::string & data,MessageParcel & reply)399     ErrCode SetFunction(std::string &data, MessageParcel &reply)
400     {
401         g_visit = true;
402         return ERR_OK;
403     }
404 
RemoveFunction(std::string & data,MessageParcel & reply)405     ErrCode RemoveFunction(std::string &data, MessageParcel &reply)
406     {
407         g_visit = true;
408         return ERR_OK;
409     }
410 
InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyReplyFunctionPlg,std::string>> ptr)411     void InitPlugin(std::shared_ptr<IPluginTemplate<HandlePolicyReplyFunctionPlg, std::string>> ptr) override
412     {
413         int policyCode = 32;
414         IPlugin::PolicyPermissionConfig config = IPlugin::PolicyPermissionConfig("ohos.permission.EDM_TEST_PERMISSION",
415             IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC);
416         ptr->InitAttribute(policyCode, "HandlePolicyReplyFunctionPlg", config, false, true);
417         ptr->SetSerializer(StringSerializer::GetInstance());
418         ptr->SetOnHandlePolicyListener(&HandlePolicyReplyFunctionPlg::SetFunction, FuncOperateType::SET);
419         ptr->SetOnHandlePolicyListener(&HandlePolicyReplyFunctionPlg::RemoveFunction, FuncOperateType::REMOVE);
420     }
421 };
422 } // namespace PLUGIN
423 
424 class PluginTemplateTest : public testing::Test {
425 protected:
426     void SetUp() override;
427     void TearDown() override;
428 
429 private:
430     std::shared_ptr<IPolicyManager> policyManager_;
431 };
432 } // namespace TEST
433 } // namespace EDM
434 } // namespace OHOS
435 #endif // EDM_UNIT_TEST_IPLUGIN_TEMPLATE_TEST_H
436