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 ¤tData) 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 ¤tData) 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 ¤tData) 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 ¤tData) 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 ¤tData) 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 ¤tData) 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