1 /* 2 * Copyright (c) 2022-2023 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 <gtest/gtest.h> 17 #include <string> 18 #include <vector> 19 #define private public 20 #define protected public 21 #include "iplugin.h" 22 #undef protected 23 #undef private 24 #include "func_code.h" 25 #include "iplugin_mock.h" 26 27 using namespace testing::ext; 28 using namespace testing; 29 30 namespace OHOS { 31 namespace EDM { 32 namespace TEST { 33 class IPluginTest : public testing::Test { 34 protected: SetUp()35 void SetUp() override {} 36 TearDown()37 void TearDown() override {} 38 }; 39 40 /** 41 * @tc.name: TestIsGlobalPolicy 42 * @tc.desc: Test IsGlobalPolicy func. 43 * @tc.type: FUNC 44 */ 45 HWTEST_F(IPluginTest, TestIsGlobalPolicy, TestSize.Level1) 46 { 47 IPluginMock iplugin1; 48 EXPECT_TRUE(iplugin1.IsGlobalPolicy()); 49 iplugin1.MockSetPolicyName("test"); 50 std::string mergeJsonData; 51 ErrCode err = iplugin1.MergePolicyData("com.edm.test.demo", mergeJsonData); 52 EXPECT_TRUE(err == ERR_OK); 53 MessageParcel reply; 54 err = iplugin1.WritePolicyToParcel("name:test", reply); 55 EXPECT_TRUE(err == ERR_OK); 56 } 57 58 /** 59 * @tc.name: TestPolicyPermissionConfig 60 * @tc.desc: Test PolicyPermissionConfig struct. 61 * @tc.type: FUNC 62 */ 63 HWTEST_F(IPluginTest, TestPolicyPermissionConfig, TestSize.Level1) 64 { 65 IPlugin::PolicyPermissionConfig config1 = IPlugin::PolicyPermissionConfig(); 66 EXPECT_TRUE(config1.permissionType == IPlugin::PermissionType::UNKNOWN); 67 EXPECT_TRUE(config1.apiType == IPlugin::ApiType::UNKNOWN); 68 69 IPlugin::PolicyPermissionConfig config2 = IPlugin::PolicyPermissionConfig("test_permission", 70 IPlugin::PermissionType::SUPER_DEVICE_ADMIN, IPlugin::ApiType::PUBLIC); 71 EXPECT_TRUE(config2.permission == "test_permission"); 72 EXPECT_TRUE(config2.permissionType == IPlugin::PermissionType::SUPER_DEVICE_ADMIN); 73 EXPECT_TRUE(config2.apiType == IPlugin::ApiType::PUBLIC); 74 75 std::map<std::string, std::string> perms; 76 perms.insert(std::make_pair("tag1", "permission1")); 77 perms.insert(std::make_pair("tag2", "permission2")); 78 IPlugin::PolicyPermissionConfig config3 = IPlugin::PolicyPermissionConfig(perms, 79 IPlugin::PermissionType::NORMAL_DEVICE_ADMIN, IPlugin::ApiType::SYSTEM); 80 EXPECT_TRUE(config3.tagPermissions.size() == 2); 81 EXPECT_TRUE(config3.permissionType == IPlugin::PermissionType::NORMAL_DEVICE_ADMIN); 82 EXPECT_TRUE(config3.apiType == IPlugin::ApiType::SYSTEM); 83 } 84 85 /** 86 * @tc.name: TestGetApiType 87 * @tc.desc: Test GetApiType func. 88 * @tc.type: FUNC 89 */ 90 HWTEST_F(IPluginTest, TestGetApiType, TestSize.Level1) 91 { 92 FuncOperateType operaType = FuncOperateType::GET; 93 IPluginMock::ApiType ret; 94 95 std::map<FuncOperateType, IPluginMock::PolicyPermissionConfig> permissionMap1; 96 IPluginMock::PolicyPermissionConfig permissionConfig1; 97 std::unique_ptr<IPlugin> iplugin1 = std::make_unique<IPluginMock>(); 98 permissionMap1[operaType] = permissionConfig1; 99 iplugin1->permissionMap_ = permissionMap1; 100 iplugin1->permissionConfig_ = permissionConfig1; 101 ret = iplugin1->GetApiType(operaType); 102 EXPECT_TRUE(ret == IPluginMock::ApiType::UNKNOWN); 103 104 std::map<FuncOperateType, IPluginMock::PolicyPermissionConfig> permissionMap2; 105 IPluginMock::PolicyPermissionConfig permissionConfig2; 106 std::unique_ptr<IPlugin> iplugin2 = std::make_unique<IPluginMock>(); 107 iplugin2->permissionMap_ = permissionMap2; 108 permissionConfig2.apiType = IPluginMock::ApiType::PUBLIC; 109 iplugin2->permissionConfig_ = permissionConfig2; 110 ret = iplugin2->GetApiType(operaType); 111 EXPECT_TRUE(ret == IPluginMock::ApiType::PUBLIC); 112 113 std::map<FuncOperateType, IPluginMock::PolicyPermissionConfig> permissionMap3; 114 IPluginMock::PolicyPermissionConfig permissionConfig3; 115 std::unique_ptr<IPlugin> iplugin3 = std::make_unique<IPluginMock>(); 116 permissionConfig3.apiType = IPluginMock::ApiType::PUBLIC; 117 permissionMap3[operaType] = permissionConfig3; 118 iplugin3->permissionMap_ = permissionMap3; 119 ret = iplugin3->GetApiType(operaType); 120 EXPECT_TRUE(ret == IPluginMock::ApiType::PUBLIC); 121 122 std::map<FuncOperateType, IPluginMock::PolicyPermissionConfig> permissionMap4; 123 IPluginMock::PolicyPermissionConfig permissionConfig4; 124 std::unique_ptr<IPlugin> iplugin4 = std::make_unique<IPluginMock>(); 125 permissionConfig4.apiType = IPluginMock::ApiType::UNKNOWN; 126 permissionMap4[operaType] = permissionConfig4; 127 iplugin4->permissionConfig_ = permissionConfig4; 128 ret = iplugin4->GetApiType(operaType); 129 EXPECT_TRUE(ret == IPluginMock::ApiType::UNKNOWN); 130 } 131 132 /** 133 * @tc.name: TestGetPermissionWhenIfEstablished 134 * @tc.desc: Test GetPermission func when The If Condition is Met. 135 * @tc.type: FUNC 136 */ 137 HWTEST_F(IPluginTest, TestGetPermissionWhenIfEstablished, TestSize.Level1) 138 { 139 FuncOperateType operaType = FuncOperateType::GET; 140 std::string permissionTag = "permissionTag"; 141 std::map<FuncOperateType, IPluginMock::PolicyPermissionConfig> permissionMap; 142 IPluginMock::PolicyPermissionConfig permissionConfig; 143 std::unique_ptr<IPlugin> iplugin = std::make_unique<IPluginMock>(); 144 145 permissionMap[operaType] = permissionConfig; 146 iplugin->permissionMap_ = permissionMap; 147 iplugin->permissionConfig_ = permissionConfig; 148 std::string ret = iplugin->GetPermission(operaType, permissionTag); 149 std::string checkRet = NONE_PERMISSION_MATCH; 150 EXPECT_TRUE(ret == checkRet); 151 } 152 153 /** 154 * @tc.name: TestSetExtensionPlugin 155 * @tc.desc: Test SetExtensionPlugin func. 156 * @tc.type: FUNC 157 */ 158 HWTEST_F(IPluginTest, TestSetExtensionPlugin, TestSize.Level1) 159 { 160 std::shared_ptr<IPlugin> extensionPlugin = std::make_shared<IPluginMock>(); 161 std::unique_ptr<IPlugin> iplugin = std::make_unique<IPluginMock>(); 162 iplugin->SetExtensionPlugin(extensionPlugin); 163 EXPECT_TRUE(extensionPlugin == iplugin->GetExtensionPlugin()); 164 } 165 166 /** 167 * @tc.name: TestSetExecuteStrategy 168 * @tc.desc: Test SetExecuteStrategy func. 169 * @tc.type: FUNC 170 */ 171 HWTEST_F(IPluginTest, TestSetExecuteStrategy, TestSize.Level1) 172 { 173 std::shared_ptr<IPluginExecuteStrategy> strategy = std::make_shared<IPluginExecuteStrategy>(); 174 std::unique_ptr<IPlugin> iplugin = std::make_unique<IPluginMock>(); 175 iplugin->SetExecuteStrategy(strategy); 176 EXPECT_TRUE(strategy == iplugin->GetExecuteStrategy()); 177 } 178 179 /** 180 * @tc.name: TestSetPluginType 181 * @tc.desc: Test SetPluginType func. 182 * @tc.type: FUNC 183 */ 184 HWTEST_F(IPluginTest, TestSetPluginType, TestSize.Level1) 185 { 186 IPluginMock::PluginType type = IPluginMock::PluginType::BASIC; 187 std::unique_ptr<IPlugin> iplugin = std::make_unique<IPluginMock>(); 188 iplugin->SetPluginType(type); 189 EXPECT_TRUE(type == iplugin->GetPluginType()); 190 } 191 } // namespace TEST 192 } // namespace EDM 193 } // namespace OHOS