1 /* 2 * Copyright (c) 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 <gtest/gtest.h> 17 18 #ifdef GTEST_API_ 19 #define private public 20 #define protected public 21 #endif 22 23 #include "netfirewall_default_rule_parser.h" 24 25 namespace OHOS { 26 namespace NetManagerStandard { 27 namespace { 28 using namespace testing::ext; 29 } 30 31 class NetFirewallDefaultRuleParserTest : public testing::Test { 32 public: SetUpTestCase()33 static void SetUpTestCase(){}; TearDownTestCase()34 static void TearDownTestCase(){}; SetUp()35 void SetUp(){}; TearDown()36 void TearDown(){}; 37 }; 38 39 HWTEST_F(NetFirewallDefaultRuleParserTest, ReadJsonFile001, TestSize.Level0) 40 { 41 std::string ret = NetFirewallDefaultRuleParser::ReadJsonFile("/system/etc/communication/netmanager_ext/1111.json"); 42 EXPECT_TRUE(ret.empty()); 43 } 44 45 HWTEST_F(NetFirewallDefaultRuleParserTest, ConvertFirewallRuleToConfig001, TestSize.Level0) 46 { 47 cJSON *json = cJSON_CreateObject(); 48 const std::string desc = "descriptionTest"; 49 cJSON_AddStringToObject(json, "description", desc.c_str()); 50 sptr<NetFirewallRule> rule = new (std::nothrow) NetFirewallRule(); 51 NetFirewallDefaultRuleParser::ConvertFirewallRuleToConfig(rule, json); 52 EXPECT_EQ(rule->ruleDescription, desc); 53 } 54 55 HWTEST_F(NetFirewallDefaultRuleParserTest, ParseIpList001, TestSize.Level0) 56 { 57 cJSON *root = cJSON_CreateObject(); 58 cJSON *localIps = cJSON_CreateArray(); 59 cJSON *ip = cJSON_CreateObject(); 60 cJSON_AddStringToObject(ip, NET_FIREWALL_IP_FAMILY.c_str(), "1"); 61 cJSON_AddStringToObject(ip, NET_FIREWALL_IP_TYPE.c_str(), "1"); 62 cJSON_AddStringToObject(ip, NET_FIREWALL_IP_MASK.c_str(), "32"); 63 cJSON_AddStringToObject(ip, NET_FIREWALL_IP_ADDRESS.c_str(), "192.168.4.123"); 64 cJSON_AddItemToArray(localIps, ip); 65 cJSON_AddItemToObject(root, NET_FIREWALL_LOCAL_IP.c_str(), localIps); 66 std::cout << "ParseIpList001 root=" << cJSON_Print(root) << std::endl; 67 std::vector<NetFirewallIpParam> list; 68 NetFirewallDefaultRuleParser::ParseIpList(list, root, NET_FIREWALL_LOCAL_IP); 69 EXPECT_FALSE(list.empty()); 70 } 71 72 HWTEST_F(NetFirewallDefaultRuleParserTest, ParseDomainList001, TestSize.Level0) 73 { 74 cJSON *root = cJSON_CreateObject(); 75 cJSON *array = cJSON_CreateArray(); 76 cJSON *param = cJSON_CreateObject(); 77 cJSON_AddBoolToObject(param, NET_FIREWALL_DOMAIN_IS_WILDCARD.c_str(), false); 78 cJSON_AddStringToObject(param, NET_FIREWALL_DOMAIN.c_str(), "www.openharmony.cn"); 79 cJSON_AddItemToArray(array, param); 80 cJSON_AddItemToObject(root, NET_FIREWALL_RULE_DOMAIN.c_str(), array); 81 std::vector<NetFirewallDomainParam> list; 82 NetFirewallDefaultRuleParser::ParseDomainList(list, root, NET_FIREWALL_RULE_DOMAIN); 83 EXPECT_FALSE(list.empty()); 84 } 85 86 HWTEST_F(NetFirewallDefaultRuleParserTest, ParseDnsObject001, TestSize.Level0) 87 { 88 cJSON *root = cJSON_CreateObject(); 89 cJSON *param = cJSON_CreateObject(); 90 cJSON_AddStringToObject(param, NET_FIREWALL_DNS_PRIMARY.c_str(), "192.168.1.1"); 91 cJSON_AddStringToObject(param, NET_FIREWALL_DNS_STANDY.c_str(), "192.168.2.1"); 92 cJSON_AddItemToObject(root, NET_FIREWALL_DNS.c_str(), param); 93 NetFirewallDnsParam rule; 94 NetFirewallDefaultRuleParser::ParseDnsObject(rule, root, NET_FIREWALL_DNS); 95 EXPECT_EQ(rule.primaryDns, "192.168.1.1"); 96 } 97 98 HWTEST_F(NetFirewallDefaultRuleParserTest, ConvertIpParamToConfig001, TestSize.Level0) 99 { 100 cJSON *root = cJSON_CreateObject(); 101 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_FAMILY.c_str(), FAMILY_IPV6); 102 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_TYPE.c_str(), SINGLE_IP); 103 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_MASK.c_str(), 64); 104 cJSON_AddStringToObject(root, NET_FIREWALL_IP_ADDRESS.c_str(), "AA22:BB11:1122:CDEF:1111:AA99::8888"); 105 NetFirewallIpParam rule; 106 NetFirewallDefaultRuleParser::ConvertIpParamToConfig(rule, root); 107 EXPECT_EQ(rule.type, SINGLE_IP); 108 } 109 110 HWTEST_F(NetFirewallDefaultRuleParserTest, ConvertIpParamToConfig002, TestSize.Level0) 111 { 112 cJSON *root = cJSON_CreateObject(); 113 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_FAMILY.c_str(), FAMILY_IPV4); 114 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_TYPE.c_str(), SINGLE_IP); 115 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_MASK.c_str(), 32); 116 cJSON_AddStringToObject(root, NET_FIREWALL_IP_ADDRESS.c_str(), "192.168.5.4"); 117 NetFirewallIpParam rule; 118 NetFirewallDefaultRuleParser::ConvertIpParamToConfig(rule, root); 119 EXPECT_EQ(rule.type, SINGLE_IP); 120 } 121 122 HWTEST_F(NetFirewallDefaultRuleParserTest, ConvertIpParamToConfig003, TestSize.Level0) 123 { 124 cJSON *root = cJSON_CreateObject(); 125 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_FAMILY.c_str(), FAMILY_IPV4); 126 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_TYPE.c_str(), MULTIPLE_IP); 127 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_MASK.c_str(), 0); 128 cJSON_AddStringToObject(root, NET_FIREWALL_IP_START.c_str(), "192.168.1.1"); 129 cJSON_AddStringToObject(root, NET_FIREWALL_IP_END.c_str(), "192.168.1.5"); 130 NetFirewallIpParam rule; 131 NetFirewallDefaultRuleParser::ConvertIpParamToConfig(rule, root); 132 EXPECT_EQ(rule.family, FAMILY_IPV4); 133 } 134 135 HWTEST_F(NetFirewallDefaultRuleParserTest, ConvertIpParamToConfig004, TestSize.Level0) 136 { 137 cJSON *root = cJSON_CreateObject(); 138 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_FAMILY.c_str(), FAMILY_IPV6); 139 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_TYPE.c_str(), MULTIPLE_IP); 140 cJSON_AddNumberToObject(root, NET_FIREWALL_IP_MASK.c_str(), 1); 141 cJSON_AddStringToObject(root, NET_FIREWALL_IP_START.c_str(), "AA22:BB11:1122:CDEF:1111:AA99::8888"); 142 cJSON_AddStringToObject(root, NET_FIREWALL_IP_END.c_str(), "AA22:BB11:1122:CDEF:1111:AA99::9999"); 143 NetFirewallIpParam rule; 144 NetFirewallDefaultRuleParser::ConvertIpParamToConfig(rule, root); 145 EXPECT_EQ(rule.family, FAMILY_IPV6); 146 } 147 } 148 }