1/* 2 * Copyright (c) 2021-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#include "config_policy_utils_test.h" 17 18#include <gtest/gtest.h> 19 20#include "config_policy_utils.h" 21#include "config_policy_impl.h" 22#ifndef __LITEOS__ 23#include "init_param.h" 24 25constexpr const char *CUST_OPKEY0 = "telephony.sim.opkey0"; 26constexpr const char *CUST_OPKEY1 = "telephony.sim.opkey1"; 27#endif 28 29using namespace testing::ext; 30 31namespace OHOS { 32class ConfigPolicyUtilsTest : public testing::Test { 33 public: 34 static void SetUpTestCase(void); 35}; 36 37#ifndef __LITEOS__ 38void ConfigPolicyUtilsTest::SetUpTestCase(void) 39{ 40 SystemSetParameter(CUST_OPKEY0, "46060"); 41 SystemSetParameter(CUST_OPKEY1, "46061"); 42} 43#endif 44 45bool TestGetCfgFile(const char *testPathSuffix, int type, const char *extra) 46{ 47 CfgFiles *cfgFiles = GetCfgFilesEx(testPathSuffix, type, extra); 48 EXPECT_TRUE(cfgFiles != NULL); 49 bool flag = false; 50 char *filePath = nullptr; 51 for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { 52 filePath = cfgFiles->paths[i]; 53 if (filePath && *filePath != '\0') { 54 std::cout << "type: " << type << ", filePath: " << filePath << std::endl; 55 flag = true; 56 } 57 } 58 FreeCfgFiles(cfgFiles); 59 char buf[MAX_PATH_LEN] = {0}; 60 filePath = GetOneCfgFileEx(testPathSuffix, buf, MAX_PATH_LEN, type, extra); 61 if (filePath && *filePath != '\0') { 62 std::cout << "type: " << type << ", one filePath: " << filePath << std::endl; 63 flag = flag && true; 64 } 65 return flag; 66} 67 68/** 69 * @tc.name: CfgPolicyUtilsFuncTest001 70 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, none file case. 71 * @tc.type: FUNC 72 * @tc.require: issueI5NYDH 73 */ 74HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest001, TestSize.Level1) 75{ 76 const char *testPathSuffix = "etc/custxmltest/none.xml"; 77 EXPECT_FALSE(TestGetCfgFile(testPathSuffix, FOLLOWX_MODE_NO_RULE_FOLLOWED, NULL)); 78} 79 80/** 81 * @tc.name: CfgPolicyUtilsFuncTest002 82 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, system file case. 83 * @tc.type: FUNC 84 * @tc.require: issueI5NYDH 85 */ 86HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest002, TestSize.Level1) 87{ 88 const char *testPathSuffix = "etc/custxmltest/system.xml"; 89 EXPECT_TRUE(TestGetCfgFile(testPathSuffix, FOLLOWX_MODE_NO_RULE_FOLLOWED, NULL)); 90} 91 92/** 93 * @tc.name: CfgPolicyUtilsFuncTest003 94 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, user file case. 95 * @tc.type: FUNC 96 * @tc.require: issueI5NYDH 97 */ 98HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest003, TestSize.Level1) 99{ 100 const char *testPathSuffix = "etc/custxmltest/user.xml"; 101 EXPECT_TRUE(TestGetCfgFile(testPathSuffix, FOLLOWX_MODE_NO_RULE_FOLLOWED, NULL)); 102} 103 104/** 105 * @tc.name: CfgPolicyUtilsFuncTest004 106 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, both files case. 107 * @tc.type: FUNC 108 * @tc.require: issueI5NYDH 109 */ 110HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest004, TestSize.Level1) 111{ 112 const char *testPathSuffix = "etc/custxmltest/both.xml"; 113 EXPECT_TRUE(TestGetCfgFile(testPathSuffix, FOLLOWX_MODE_NO_RULE_FOLLOWED, NULL)); 114} 115 116/** 117 * @tc.name: CfgPolicyUtilsFuncTest005 118 * @tc.desc: Test struct CfgDir *GetCfgDirList(void) function. 119 * @tc.type: FUNC 120 * @tc.require: issueI5NYDH 121 */ 122HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest005, TestSize.Level1) 123{ 124 CfgDir *cfgDir = GetCfgDirList(); 125 EXPECT_TRUE(cfgDir != NULL); 126 bool flag = false; 127 for (size_t i = 0; i < MAX_CFG_POLICY_DIRS_CNT; i++) { 128 char *filePath = cfgDir->paths[i]; 129 if (filePath && *filePath != '\0') { 130 std::cout << "filePath: " << filePath << std::endl; 131 flag = true; 132 } 133 } 134 FreeCfgDirList(cfgDir); 135 EXPECT_TRUE(flag); 136} 137 138#ifndef __LITEOS__ 139/** 140 * @tc.name: CfgPolicyUtilsFuncTest006 141 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, follow default sim rule. 142 * @tc.type: FUNC 143 * @tc.require: issueI5NYDH 144 */ 145HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest006, TestSize.Level1) 146{ 147 SystemSetParameter(CUST_OPKEY0, "-1"); 148 const char *testPathSuffix = "etc/custxmltest/user.xml"; 149 EXPECT_TRUE(TestGetCfgFile(testPathSuffix, FOLLOWX_MODE_SIM_DEFAULT, NULL)); 150} 151 152/** 153 * @tc.name: CfgPolicyUtilsFuncTest007 154 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, follow sim1 rule. 155 * @tc.type: FUNC 156 * @tc.require: issueI5NYDH 157 */ 158HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest007, TestSize.Level1) 159{ 160 const char *testPathSuffix = "etc/custxmltest/user.xml"; 161 EXPECT_TRUE(TestGetCfgFile(testPathSuffix, FOLLOWX_MODE_SIM_1, NULL)); 162} 163 164/** 165 * @tc.name: CfgPolicyUtilsFuncTest008 166 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, follow sim1 rule. 167 * @tc.type: FUNC 168 * @tc.require: issueI5NYDH 169 */ 170HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest008, TestSize.Level1) 171{ 172 const char *testPathSuffix = "etc/custxmltest/user.xml"; 173 EXPECT_TRUE(TestGetCfgFile(testPathSuffix, FOLLOWX_MODE_SIM_2, NULL)); 174} 175 176/** 177 * @tc.name: CfgPolicyUtilsFuncTest009 178 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, follow default x rule rule. 179 * @tc.type: FUNC 180 * @tc.require: issueI5NYDH 181 */ 182HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest009, TestSize.Level1) 183{ 184 int ret = SystemSetParameter(CUST_FOLLOW_X_RULES, 185 ":etc/custxmltest/user.xml,10:etc/custxmltest/both.xml,100,etc/carrier/${test:-46061}"); 186 if (ret == 0) { 187 std::cout << "set " << CUST_FOLLOW_X_RULES << " success." << std::endl; 188 EXPECT_TRUE(TestGetCfgFile("etc/custxmltest/user.xml", FOLLOWX_MODE_DEFAULT, NULL)); 189 EXPECT_TRUE(TestGetCfgFile("etc/custxmltest/both.xml", FOLLOWX_MODE_DEFAULT, NULL)); 190 } else { 191 std::cout << "set " << CUST_FOLLOW_X_RULES << " failed, use OpkeyInfo.json for test." << std::endl; 192 EXPECT_TRUE(TestGetCfgFile("etc/telephony/OpkeyInfo.json", FOLLOWX_MODE_DEFAULT, NULL)); 193 } 194} 195 196/** 197 * @tc.name: CfgPolicyUtilsFuncTest010 198 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, follow default x rule rule. 199 * @tc.type: FUNC 200 * @tc.require: issueI5NYDH 201 */ 202HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest010, TestSize.Level1) 203{ 204 std::string extraString; 205 extraString.append("etc/carrier/${").append(CUST_OPKEY1).append(":-46060},etc/carrier/${") 206 .append(CUST_OPKEY0).append("}/etc/${testkey:-custxmltest}"); 207 std::cout << "extra: " << extraString << std::endl; 208 EXPECT_TRUE(TestGetCfgFile("etc/custxmltest/user.xml", FOLLOWX_MODE_USER_DEFINED, extraString.c_str())); 209 EXPECT_TRUE(TestGetCfgFile("etc/custxmltest/both.xml", FOLLOWX_MODE_USER_DEFINED, extraString.c_str())); 210} 211 212/** 213 * @tc.name: CfgPolicyUtilsFuncTest011 214 * @tc.desc: Test GetOneCfgFile & GetCfgFiles function, with nullptr input 215 * @tc.type: FUNC 216 * @tc.require: issueI5NYDH 217 */ 218HWTEST_F(ConfigPolicyUtilsTest, CfgPolicyUtilsFuncTest011, TestSize.Level1) 219{ 220 char buf[MAX_PATH_LEN] = {0}; 221 char *filePath = nullptr; 222 filePath = GetOneCfgFileEx(nullptr, buf, MAX_PATH_LEN, FOLLOWX_MODE_DEFAULT, nullptr); 223 EXPECT_TRUE(filePath == nullptr); 224 filePath = GetOneCfgFileEx("etc/custxmltest/user.xml", nullptr, MAX_PATH_LEN, FOLLOWX_MODE_DEFAULT, nullptr); 225 EXPECT_TRUE(filePath == nullptr); 226 filePath = GetOneCfgFileEx("etc/custxmltest/user.xml", buf, MAX_PATH_LEN - 1, FOLLOWX_MODE_DEFAULT, nullptr); 227 EXPECT_TRUE(filePath == nullptr); 228 CfgFiles *cfgFiles = GetCfgFilesEx(nullptr, FOLLOWX_MODE_DEFAULT, nullptr); 229 EXPECT_TRUE(cfgFiles == nullptr); 230 FreeCfgFiles(cfgFiles); 231 EXPECT_TRUE(cfgFiles == nullptr); 232 CfgDir *res = nullptr; 233 FreeCfgDirList(res); 234 EXPECT_TRUE(res == nullptr); 235} 236#endif // __LITEOS__ 237} // namespace OHOS 238