1 package org.onap.so.bpmn.infrastructure.workflow.tasks;
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Mockito.doReturn;
6 import java.io.IOException;
7 import java.util.ArrayList;
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;
35 public class VrfValidationTest extends BaseTaskTest {
37 protected ObjectMapper mapper = new ObjectMapper();
40 protected VrfValidation vrfValidation;
43 public ExpectedException exceptionRule = ExpectedException.none();
46 public void before() throws Exception {
47 vrfValidation.setBbInputSetupUtils(bbSetupUtils);
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);
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);
68 service.setServiceType("BONDING");
69 service.setServiceRole("INFRASTRUCTURE-VPN");
70 ExpectedException.none();
71 vrfValidation.vrfServiceValidation(service);
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);
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);
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);
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);
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);
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);
133 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
134 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
135 ExpectedException.none();
136 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
138 aaiLocalNetwork.setAggregateRoutes(null);
139 ExpectedException.none();
140 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
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);
153 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
154 aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
155 ExpectedException.none();
156 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
158 aaiLocalNetwork.setSubnets(null);
159 exceptionRule.expect(VrfBondingServiceException.class);
160 exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
161 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
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);
172 validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
173 assertEquals("Validation is correct", true, validation);
176 validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
177 assertEquals("Validation is correct", false, validation);
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);