3a8c318cc2f56e5c150b14462ff87ac13c6fc605
[so.git] /
1 package org.onap.so.bpmn.infrastructure.workflow.tasks;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Mockito.doReturn;
5 import java.io.File;
6 import java.io.IOException;
7 import java.util.ArrayList;
8 import java.util.List;
9 import java.util.Optional;
10 import org.junit.Before;
11 import org.junit.Rule;
12 import org.junit.Test;
13 import org.junit.rules.ExpectedException;
14 import org.mockito.InjectMocks;
15 import org.mockito.Mockito;
16 import org.onap.aai.domain.yang.AggregateRoute;
17 import org.onap.aai.domain.yang.AggregateRoutes;
18 import org.onap.aai.domain.yang.L3Network;
19 import org.onap.aai.domain.yang.RouteTarget;
20 import org.onap.aai.domain.yang.RouteTargets;
21 import org.onap.aai.domain.yang.Subnet;
22 import org.onap.aai.domain.yang.Subnets;
23 import org.onap.aai.domain.yang.VpnBinding;
24 import org.onap.so.bpmn.BaseTaskTest;
25 import org.onap.so.client.aai.AAIObjectType;
26 import org.onap.so.client.aai.entities.AAIResultWrapper;
27 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
28 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
29 import org.onap.so.db.catalog.beans.Service;
30 import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization;
31 import com.fasterxml.jackson.core.JsonParseException;
32 import com.fasterxml.jackson.databind.JsonMappingException;
33 import com.fasterxml.jackson.databind.ObjectMapper;
34
35 public class VrfValidationTest extends BaseTaskTest {
36
37     protected ObjectMapper mapper = new ObjectMapper();
38
39     @InjectMocks
40     protected VrfValidation vrfValidation;
41
42     @Rule
43     public ExpectedException exceptionRule = ExpectedException.none();
44
45     @Before
46     public void before() throws Exception {
47         vrfValidation.setBbInputSetupUtils(bbSetupUtils);
48     }
49
50     @Test
51     public void testVrfServiceValidation() throws VrfBondingServiceException {
52         Service service = new Service();
53         service.setModelName("modelName");
54         service.setServiceType("BONDING");
55         service.setServiceRole("VPN");
56         exceptionRule.expect(VrfBondingServiceException.class);
57         exceptionRule.expectMessage(
58                 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
59         vrfValidation.vrfServiceValidation(service);
60
61         service.setServiceType("BOND");
62         service.setServiceRole("INFRASTRUCTURE-VPN");
63         exceptionRule.expect(VrfBondingServiceException.class);
64         exceptionRule.expectMessage(
65                 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
66         vrfValidation.vrfServiceValidation(service);
67
68         service.setServiceType("BONDING");
69         service.setServiceRole("INFRASTRUCTURE-VPN");
70         ExpectedException.none();
71         vrfValidation.vrfServiceValidation(service);
72     }
73
74     @Test
75     public void testVrfCatalogDbChecks() throws VrfBondingServiceException {
76         Service service = new Service();
77         service.setModelName("modelName");
78         ConfigurationResourceCustomization configuration = new ConfigurationResourceCustomization();
79         service.setConfigurationCustomizations(new ArrayList<>());
80         service.getConfigurationCustomizations().add(configuration);
81         ServiceProxyResourceCustomization serviceProxy = new ServiceProxyResourceCustomization();
82         configuration.setServiceProxyResourceCustomization(serviceProxy);
83         service.setServiceProxyCustomizations(new ArrayList<>());
84         service.getServiceProxyCustomizations().add(serviceProxy);
85         Service sourceService = new Service();
86         sourceService.setServiceType("TRANSPORT");
87         serviceProxy.setSourceService(sourceService);
88         configuration.setType("VRF-ENTRY");
89         configuration.setRole("INFRASTRUCTURE-CLOUD-VPN");
90         ExpectedException.none();
91         vrfValidation.vrfCatalogDbChecks(service);
92     }
93
94     @Test
95     public void testAaiVpnBindingValidation() throws VrfBondingServiceException {
96         org.onap.aai.domain.yang.VpnBinding aaiVpnBinding = new org.onap.aai.domain.yang.VpnBinding();
97         aaiVpnBinding.setVpnType("SERVICE-INFRASTRUCTURE");
98         ExpectedException.none();
99         vrfValidation.aaiVpnBindingValidation("test-vpn", aaiVpnBinding);
100     }
101
102     @Test
103     public void testAaiVpnBindingValidationVpnBindingIsNull() throws VrfBondingServiceException {
104         exceptionRule.expect(VrfBondingServiceException.class);
105         exceptionRule.expectMessage("The infrastructure vpn test-vpn does not exist in A&AI.");
106         vrfValidation.aaiVpnBindingValidation("test-vpn", null);
107     }
108
109     @Test
110     public void testAaiNetworkValidation() throws VrfBondingServiceException {
111         org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
112         aaiLocalNetwork.setNetworkId("test-network");
113         ExpectedException.none();
114         vrfValidation.aaiNetworkValidation("test-network", aaiLocalNetwork);
115     }
116
117     @Test
118     public void testAaiNetworkValidationNetworkIsNull() throws VrfBondingServiceException {
119         exceptionRule.expect(VrfBondingServiceException.class);
120         exceptionRule.expectMessage("The local network test-network does not exist in A&AI.");
121         vrfValidation.aaiNetworkValidation("test-network", null);
122     }
123
124     @Test
125     public void testAaiAggregateRouteValidation() throws VrfBondingServiceException {
126         org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
127         aaiLocalNetwork.setAggregateRoutes(new AggregateRoutes());
128         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
129         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(0).setIpVersion("4");
130         ExpectedException.none();
131         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
132
133         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
134         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
135         ExpectedException.none();
136         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
137
138         aaiLocalNetwork.setAggregateRoutes(null);
139         ExpectedException.none();
140         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
141     }
142
143     @Test
144     public void testAaiSubnetValidation() throws VrfBondingServiceException {
145         org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
146         aaiLocalNetwork.setNetworkId("myNetworkID");
147         aaiLocalNetwork.setSubnets(new Subnets());
148         aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
149         aaiLocalNetwork.getSubnets().getSubnet().get(0).setIpVersion("4");
150         ExpectedException.none();
151         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
152
153         aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
154         aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
155         ExpectedException.none();
156         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
157
158         aaiLocalNetwork.setSubnets(null);
159         exceptionRule.expect(VrfBondingServiceException.class);
160         exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
161         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
162     }
163
164     @Test
165     public void testIpVersionValidation() {
166         String ipVersion1 = "4";
167         String ipVersion2 = "6";
168         boolean validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
169         assertEquals("Validation is correct", true, validation);
170
171
172         validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
173         assertEquals("Validation is correct", true, validation);
174
175         ipVersion1 = "6";
176         validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
177         assertEquals("Validation is correct", false, validation);
178     }
179
180     @Test
181     public void testAaiRouteTargetValidation()
182             throws VrfBondingServiceException, JsonParseException, JsonMappingException, IOException {
183         L3Network l3Network = mapper.readValue(
184                 new File("src/test/resources/__files/BuildingBlocks/aaiNetworkWrapper.json"), L3Network.class);
185         AAIResultWrapper networkWrapper = new AAIResultWrapper(l3Network);
186         if (networkWrapper.getRelationships().isPresent()) {
187             List<AAIResourceUri> vpnBindingUris =
188                     networkWrapper.getRelationships().get().getRelatedUris(AAIObjectType.VPN_BINDING);
189             VpnBinding vpnBinding = new VpnBinding();
190             vpnBinding.setRouteTargets(new RouteTargets());
191             vpnBinding.getRouteTargets().getRouteTarget().add(new RouteTarget());
192             AAIResultWrapper wrapper = Mockito.mock(AAIResultWrapper.class);
193             doReturn(wrapper).when(bbSetupUtils).getAAIResourceDepthOne(vpnBindingUris.get(0));
194             doReturn(Optional.of(vpnBinding)).when(wrapper).asBean(VpnBinding.class);
195             ExpectedException.none();
196             vrfValidation.aaiRouteTargetValidation(l3Network);
197         }
198     }
199 }