0dd919a3554311109635d86857b078cd4842e38b
[policy/engine.git] / ONAP-PAP-REST / src / test / java / org / onap / policy / pap / xacml / rest / components / FirewallConfigPolicyTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-PAP-REST
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 package org.onap.policy.pap.xacml.rest.components;
21
22 import static org.junit.Assert.*;
23 import static org.mockito.Mockito.when;
24
25 import java.lang.reflect.InvocationTargetException;
26 import java.lang.reflect.Method;
27 import java.util.HashMap;
28
29 import java.util.Map;
30 import java.util.UUID;
31
32 import org.junit.After;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.mockito.Mockito;
36 import org.onap.policy.common.logging.flexlogger.FlexLogger;
37 import org.onap.policy.common.logging.flexlogger.Logger;
38 import org.onap.policy.pap.test.XACMLPAPTest;
39 import org.onap.policy.rest.adapter.PolicyRestAdapter;
40
41 import com.att.research.xacml.util.XACMLProperties;
42
43
44 public class FirewallConfigPolicyTest {
45         
46         private static Logger logger = FlexLogger.getLogger(FirewallConfigPolicyTest.class);
47         PolicyRestAdapter policyAdapter = new PolicyRestAdapter();
48         Map<String, String> attributeMap = new HashMap<>();
49         FirewallConfigPolicy component = null;
50     FirewallConfigPolicy mockFWConfig = null;
51     private XACMLPAPTest papTest;
52
53         /**
54          * @throws java.lang.Exception
55          */
56         @Before
57         public void setUp() throws Exception {
58                 logger.info("setup: enter");
59                 System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,"src/test/resources/xacml.pap.properties");
60
61                 policyAdapter.setPolicyName("FWjunitTest");
62                 policyAdapter.setPolicyDescription("test");
63                 policyAdapter.setRuleCombiningAlgId("urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides");
64                 policyAdapter.setPolicyType("Config");
65                 policyAdapter.setConfigPolicyType("Firewall Config");
66                 policyAdapter.setEditPolicy(false);
67                 policyAdapter.setDomainDir("Test");
68                 policyAdapter.setNewFileName("Test.Config_FW_junitTest.1.xml");
69                 policyAdapter.setHighestVersion(1);
70                 policyAdapter.setVersion(String.valueOf(1));
71                 policyAdapter.setPolicyID("urn:xacml:policy:id:"+UUID.randomUUID());
72                 policyAdapter.setRuleID("");
73                 policyAdapter.setConfigName("testname");
74                 policyAdapter.setGuard("True");
75                 policyAdapter.setRiskLevel("3");
76                 policyAdapter.setRiskType("RiskTest");
77                 policyAdapter.setSecurityZone("CraigSecurityZone");
78                 policyAdapter.setUserId("API");
79                 
80                 attributeMap.put("testJunits", "test");
81                 policyAdapter.setDynamicFieldConfigAttributes(attributeMap);
82
83                 component = new FirewallConfigPolicy(policyAdapter);
84                 mockFWConfig = Mockito.mock(FirewallConfigPolicy.class);
85                 papTest = new XACMLPAPTest();
86                 papTest.setDBDao();
87         logger.info("setUp: exit");
88                 
89         }
90
91         /**
92          * @throws java.lang.Exception
93          */
94         @After
95         public void tearDown() throws Exception {
96         }
97
98         /**
99          * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.FirewallConfigPolicy#savePolicies()}.
100          */
101         @Test
102         public void testSavePolicies() {
103         Map<String, String> successMap = new HashMap<>();
104         successMap.put("success", "success");
105                 try {
106                 when(mockFWConfig.savePolicies()).thenReturn(successMap);
107                 successMap = mockFWConfig.savePolicies();
108                 } catch (Exception e) {
109                         logger.error("Exception Occured"+e);
110                 }
111         }
112
113         /**
114          * Test method for {@link org.openecomp.policy.pap.xacml.rest.components.FirewallConfigPolicy#prepareToSave()}.
115          */
116         @Test
117         public void testPrepareToSave() {
118                 logger.debug("test prepareToSave Policy: enter");
119
120                 boolean response = false;
121                 try {
122                 when(mockFWConfig.prepareToSave()).thenReturn(true);
123                         response = mockFWConfig.prepareToSave();
124                 } catch (Exception e) {
125                         logger.error("Exception Occured"+e);
126                 }
127                 assertTrue(response);           
128                 
129         }
130         
131         @Test
132         public void testUpdateJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
133             FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy();
134             Method method = firewallConfigPolicy.getClass().getDeclaredMethod("updateFirewallDictionaryData", String.class , String.class);
135             method.setAccessible(true);
136             String jsonBody= "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}";
137             String prevJsonBody = "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicy1Config\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev\",\"vendorServiceId\":\"test\",\"vendorSpecificData\":{\"idMap\":[{\"Id\":\"cloudsite:dev1a\",\"vendorId\":\"deviceGroup:dev\"}]},\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Ssh service entry in service list\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"Test\",\"description\":\"Destination Test\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"Source TestServers for first testing\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerTot\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FW rule for HOHO source to CiscoVCE destination\",\"enabled\":true,\"log\":true}]}";
138         assertTrue((Boolean) method.invoke(firewallConfigPolicy, jsonBody, prevJsonBody));
139         }
140         
141         @Test
142     public void testInsertJson() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
143         FirewallConfigPolicy firewallConfigPolicy = new FirewallConfigPolicy();
144         Method method = firewallConfigPolicy.getClass().getDeclaredMethod("insertFirewallDicionaryData", String.class);
145         method.setAccessible(true);
146         String jsonBody= "{\"serviceTypeId\":\"/v0/firewall/pan\",\"configName\":\"TestFwPolicyConfig\",\"deploymentOption\":{\"deployNow\":false},\"securityZoneId\":\"cloudsite:dev1a\",\"serviceGroups\":[{\"name\":\"SSH\",\"description\":\"Sshservice entry in servicelist\",\"type\":\"SERVICE\",\"transportProtocol\":\"tcp\",\"appProtocol\":null,\"ports\":\"22\"}],\"addressGroups\":[{\"name\":\"test\",\"description\":\"Destination\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/12\"}]},{\"name\":\"TestServers\",\"description\":\"SourceTestServers for firsttesting\",\"members\":[{\"type\":\"SUBNET\",\"value\":\"127.0.0.1/23\"}]}],\"firewallRuleList\":[{\"position\":\"1\",\"ruleName\":\"FWRuleTestServerToTest\",\"fromZones\":[\"UntrustedZoneTestName\"],\"toZones\":[\"TrustedZoneTestName\"],\"negateSource\":false,\"negateDestination\":false,\"sourceList\":[{\"type\":\"REFERENCE\",\"name\":\"TestServers\"}],\"destinationList\":[{\"type\":\"REFERENCE\",\"name\":\"Test\"}],\"sourceServices\":[],\"destServices\":[{\"type\":\"REFERENCE\",\"name\":\"SSH\"}],\"action\":\"accept\",\"description\":\"FWrule for Test source to Test destination\",\"enabled\":true,\"log\":true}]}";
147         assertTrue((Boolean) method.invoke(firewallConfigPolicy, jsonBody));
148     }
149
150 }