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 #include "iplugin_template_test.h" 17 18 using namespace testing::ext; 19 20 namespace OHOS { 21 namespace EDM { 22 namespace TEST { 23 /** 24 * @tc.name: TestTemplate 25 * @tc.desc: Test PluginTemplate init. 26 * @tc.type: FUNC 27 */ 28 HWTEST_F(PluginTemplateTest, TestTemplate, TestSize.Level1) 29 { 30 PluginManager::GetInstance()->AddPlugin(PLUGIN::ArrayTestPlugin::GetPlugin()); 31 PluginManager::GetInstance()->AddPlugin(PLUGIN::BoolTestPlugin::GetPlugin()); 32 PluginManager::GetInstance()->AddPlugin(PLUGIN::MapTestPlugin::GetPlugin()); 33 PluginManager::GetInstance()->AddPlugin(PLUGIN::ArrayMapTestPlugin::GetPlugin()); 34 PluginManager::GetInstance()->AddPlugin(PLUGIN::JsonTestPlugin::GetPlugin()); 35 PluginManager::GetInstance()->AddPlugin(PLUGIN::StringTestPlugin::GetPlugin()); 36 37 std::vector<std::uint32_t> policyCodes = { 10, 11, 12, 13, 14, 15 }; 38 for (auto policyCode : policyCodes) { 39 uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode); 40 std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 41 ASSERT_TRUE(plugin != nullptr); 42 ASSERT_TRUE(plugin->GetCode() == policyCode); 43 } 44 } 45 46 /** 47 * @tc.name: TestInitAttribute 48 * @tc.desc: Test PluginTemplate InitAttribute func. 49 * @tc.type: FUNC 50 */ 51 HWTEST_F(PluginTemplateTest, TestInitAttribute, TestSize.Level1) 52 { 53 int policyCode = 20; 54 PluginManager::GetInstance()->AddPlugin(PLUGIN::InitAttributePlg::GetPlugin()); 55 uint32_t funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode); 56 std::shared_ptr<IPlugin> plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 57 ASSERT_TRUE(plugin != nullptr); 58 ASSERT_TRUE(plugin->GetPermission() == "ohos.permission.EDM_TEST_PERMISSION"); 59 ASSERT_TRUE(plugin->GetPolicyName() == "InitAttributePlg"); 60 ASSERT_TRUE(plugin->GetCode() == 20); 61 } 62 63 /** 64 * @tc.name: TestHandlePolicySupplier 65 * @tc.desc: Test PluginTemplate HandlePolicySupplier func. 66 * @tc.type: FUNC 67 */ 68 HWTEST_F(PluginTemplateTest, TestHandlePolicySupplier, TestSize.Level1) 69 { 70 int policyCode = 21; 71 ErrCode res; 72 MessageParcel data; 73 uint32_t funcCode; 74 std::shared_ptr<IPlugin> plugin; 75 std::string setPolicyValue; 76 std::string policyValue; 77 bool isChange; 78 PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicySupplierPlg::GetPlugin()); 79 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode); 80 plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 81 ASSERT_TRUE(plugin != nullptr); 82 83 setPolicyValue = R"({"k1":"v1","k2":"v2","k3":3})"; 84 policyValue = ""; 85 isChange = false; 86 data.WriteString16(Str8ToStr16(setPolicyValue)); 87 g_visit = false; 88 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 89 ASSERT_TRUE(res != ERR_OK); 90 ASSERT_TRUE(policyValue.empty()); 91 ASSERT_TRUE(g_visit); 92 93 setPolicyValue = R"({"k1":"v1","k2":"v2","k3":3})"; 94 policyValue = ""; 95 isChange = false; 96 data.WriteString16(Str8ToStr16(setPolicyValue)); 97 g_visit = false; 98 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode); 99 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 100 ASSERT_TRUE(res != ERR_OK); 101 ASSERT_TRUE(policyValue.empty()); 102 ASSERT_TRUE(g_visit); 103 } 104 105 /** 106 * @tc.name: TestHandlePolicyFunction 107 * @tc.desc: Test PluginTemplate HandlePolicyFunction func. 108 * @tc.type: FUNC 109 */ 110 HWTEST_F(PluginTemplateTest, TestHandlePolicyFunction, TestSize.Level1) 111 { 112 int policyCode = 22; 113 ErrCode res; 114 MessageParcel data; 115 uint32_t funcCode; 116 std::shared_ptr<IPlugin> plugin; 117 std::string setPolicyValue; 118 std::string policyValue; 119 bool isChange; 120 PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyFunctionPlg::GetPlugin()); 121 122 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode); 123 plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 124 ASSERT_TRUE(plugin != nullptr); 125 setPolicyValue = "testValue"; 126 policyValue = ""; 127 isChange = false; 128 data.WriteString16(Str8ToStr16(setPolicyValue)); 129 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 130 ASSERT_TRUE(res == ERR_OK); 131 ASSERT_TRUE(policyValue == "newTestValue"); 132 ASSERT_TRUE(isChange); 133 134 setPolicyValue = ""; 135 policyValue = ""; 136 isChange = false; 137 data.WriteString16(Str8ToStr16(setPolicyValue)); 138 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 139 ASSERT_TRUE(res == ERR_OK); 140 ASSERT_TRUE(policyValue == "testValue"); 141 ASSERT_TRUE(isChange); 142 143 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode); 144 plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 145 ASSERT_TRUE(plugin != nullptr); 146 setPolicyValue = ""; 147 policyValue = "testValue"; 148 isChange = false; 149 data.WriteString16(Str8ToStr16(setPolicyValue)); 150 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 151 ASSERT_TRUE(res == ERR_OK); 152 ASSERT_TRUE(policyValue.empty()); 153 ASSERT_TRUE(isChange); 154 } 155 156 /** 157 * @tc.name: TestHandlePolicyBiFunction 158 * @tc.desc: Test PluginTemplate HandlePolicyBiFunction func. 159 * @tc.type: FUNC 160 */ 161 HWTEST_F(PluginTemplateTest, TestHandlePolicyBiFunction, TestSize.Level1) 162 { 163 int policyCode = 23; 164 ErrCode res; 165 MessageParcel data; 166 uint32_t funcCode; 167 std::shared_ptr<IPlugin> plugin; 168 std::string setPolicyValue; 169 std::string policyValue; 170 bool isChange; 171 PluginManager::GetInstance()->AddPlugin(PLUGIN::HandlePolicyBiFunctionPlg::GetPlugin()); 172 173 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode); 174 plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 175 ASSERT_TRUE(plugin != nullptr); 176 setPolicyValue = "testValue"; 177 policyValue = ""; 178 isChange = false; 179 data.WriteString16(Str8ToStr16(setPolicyValue)); 180 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 181 ASSERT_TRUE(res == ERR_OK); 182 ASSERT_TRUE(policyValue == "testValue"); 183 ASSERT_TRUE(isChange); 184 185 setPolicyValue = "testValue"; 186 policyValue = "testValue"; 187 isChange = false; 188 data.WriteString16(Str8ToStr16(setPolicyValue)); 189 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 190 ASSERT_TRUE(res == ERR_OK); 191 ASSERT_TRUE(policyValue == "testValue"); 192 ASSERT_TRUE(!isChange); 193 194 setPolicyValue = ""; 195 policyValue = "testValue"; 196 isChange = false; 197 data.WriteString16(Str8ToStr16(setPolicyValue)); 198 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 199 ASSERT_TRUE(res == ERR_OK); 200 ASSERT_TRUE(policyValue.empty()); 201 ASSERT_TRUE(isChange); 202 203 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode); 204 plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 205 ASSERT_TRUE(plugin != nullptr); 206 setPolicyValue = ""; 207 policyValue = "testValue"; 208 isChange = false; 209 data.WriteString16(Str8ToStr16(setPolicyValue)); 210 res = plugin->OnHandlePolicy(funcCode, data, policyValue, isChange); 211 ASSERT_TRUE(res == ERR_OK); 212 ASSERT_TRUE(policyValue.empty()); 213 ASSERT_TRUE(isChange); 214 } 215 216 /** 217 * @tc.name: TestHandlePolicyDone 218 * @tc.desc: Test PluginTemplate HandlePolicyDone func. 219 * @tc.type: FUNC 220 */ 221 HWTEST_F(PluginTemplateTest, TestHandlePolicyDone, TestSize.Level1) 222 { 223 std::vector<int> policyCodes = { 24, 25 }; 224 MessageParcel data; 225 uint32_t funcCode; 226 std::shared_ptr<IPlugin> plugin; 227 std::string adminName; 228 PluginManager::GetInstance()->AddPlugin(PLUGIN::HandleDoneBoolConsumerPlg::GetPlugin()); 229 PluginManager::GetInstance()->AddPlugin(PLUGIN::HandleDoneBiBoolConsumerPlg::GetPlugin()); 230 231 for (int policyCode : policyCodes) { 232 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode); 233 plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 234 ASSERT_TRUE(plugin != nullptr); 235 adminName = "com.edm.test.demo"; 236 g_visit = false; 237 plugin->OnHandlePolicyDone(funcCode, adminName, true); 238 ASSERT_TRUE(g_visit); 239 240 g_visit = false; 241 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::REMOVE, policyCode); 242 plugin->OnHandlePolicyDone(funcCode, adminName, false); 243 ASSERT_TRUE(g_visit); 244 } 245 } 246 247 /** 248 * @tc.name: TestAdminRemove 249 * @tc.desc: Test PluginTemplate AdminRemove func. 250 * @tc.type: FUNC 251 */ 252 HWTEST_F(PluginTemplateTest, TestAdminRemove, TestSize.Level1) 253 { 254 std::vector<int> policyCodes = { 26, 27 }; 255 MessageParcel data; 256 uint32_t funcCode; 257 std::shared_ptr<IPlugin> plugin; 258 std::string adminName; 259 std::string policyValue; 260 PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveSupplierPlg::GetPlugin()); 261 PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveBiFunctionPlg::GetPlugin()); 262 263 for (int policyCode : policyCodes) { 264 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode); 265 plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 266 267 adminName = "com.edm.test.demo"; 268 policyValue = "testValue"; 269 g_visit = false; 270 plugin->OnAdminRemove(adminName, policyValue); 271 ASSERT_TRUE(g_visit); 272 } 273 } 274 275 /** 276 * @tc.name: TestAdminRemove 277 * @tc.desc: Test PluginTemplate AdminRemoveDone func. 278 * @tc.type: FUNC 279 */ 280 HWTEST_F(PluginTemplateTest, TestAdminRemoveDone, TestSize.Level1) 281 { 282 std::vector<int> policyCodes = { 28, 29 }; 283 MessageParcel data; 284 uint32_t funcCode; 285 std::shared_ptr<IPlugin> plugin; 286 std::string adminName; 287 std::string policyValue; 288 PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveDoneRunnerPlg::GetPlugin()); 289 PluginManager::GetInstance()->AddPlugin(PLUGIN::AdminRemoveDoneBiBiConsumerPlg::GetPlugin()); 290 291 for (int policyCode : policyCodes) { 292 funcCode = POLICY_FUNC_CODE((uint32_t)FuncOperateType::SET, policyCode); 293 plugin = PluginManager::GetInstance()->GetPluginByFuncCode(funcCode); 294 295 adminName = "com.edm.test.demo"; 296 policyValue = "testValue"; 297 g_visit = false; 298 plugin->OnAdminRemoveDone(adminName, policyValue); 299 ASSERT_TRUE(g_visit); 300 } 301 } 302 } // namespace TEST 303 } // namespace EDM 304 } // namespace OHOS