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