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(aaiVpnBinding);
103 public void testAaiAggregateRouteValidation() throws VrfBondingServiceException {
104 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
105 aaiLocalNetwork.setAggregateRoutes(new AggregateRoutes());
106 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
107 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(0).setIpVersion("4");
108 ExpectedException.none();
109 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
111 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
112 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
113 ExpectedException.none();
114 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
116 aaiLocalNetwork.setAggregateRoutes(null);
117 ExpectedException.none();
118 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
122 public void testAaiSubnetValidation() throws VrfBondingServiceException {
123 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
124 aaiLocalNetwork.setNetworkId("myNetworkID");
125 aaiLocalNetwork.setSubnets(new Subnets());
126 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
127 aaiLocalNetwork.getSubnets().getSubnet().get(0).setIpVersion("4");
128 ExpectedException.none();
129 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
131 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
132 aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
133 ExpectedException.none();
134 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
136 aaiLocalNetwork.setSubnets(null);
137 exceptionRule.expect(VrfBondingServiceException.class);
138 exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
139 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
143 public void testIpVersionValidation() {
144 String ipVersion1 = "4";
145 String ipVersion2 = "6";
146 boolean validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
147 assertEquals("Validation is correct", true, validation);
150 validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
151 assertEquals("Validation is correct", true, validation);
154 validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
155 assertEquals("Validation is correct", false, validation);
159 public void testAaiRouteTargetValidation()
160 throws VrfBondingServiceException, JsonParseException, JsonMappingException, IOException {
161 L3Network l3Network = mapper.readValue(
162 new File("src/test/resources/__files/BuildingBlocks/aaiNetworkWrapper.json"), L3Network.class);
163 AAIResultWrapper networkWrapper = new AAIResultWrapper(l3Network);
164 if (networkWrapper.getRelationships().isPresent()) {
165 List<AAIResourceUri> vpnBindingUris =
166 networkWrapper.getRelationships().get().getRelatedUris(AAIObjectType.VPN_BINDING);
167 VpnBinding vpnBinding = new VpnBinding();
168 vpnBinding.setRouteTargets(new RouteTargets());
169 vpnBinding.getRouteTargets().getRouteTarget().add(new RouteTarget());
170 AAIResultWrapper wrapper = Mockito.mock(AAIResultWrapper.class);
171 doReturn(wrapper).when(bbSetupUtils).getAAIResourceDepthOne(vpnBindingUris.get(0));
172 doReturn(Optional.of(vpnBinding)).when(wrapper).asBean(VpnBinding.class);
173 ExpectedException.none();
174 vrfValidation.aaiRouteTargetValidation(l3Network);