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