2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2019 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.so.bpmn.infrastructure.workflow.tasks;
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.Mockito.doReturn;
26 import java.io.IOException;
27 import java.util.ArrayList;
28 import java.util.List;
29 import java.util.Optional;
30 import org.junit.Before;
31 import org.junit.Rule;
32 import org.junit.Test;
33 import org.junit.rules.ExpectedException;
34 import org.mockito.InjectMocks;
35 import org.mockito.Mockito;
36 import org.onap.aai.domain.yang.AggregateRoute;
37 import org.onap.aai.domain.yang.AggregateRoutes;
38 import org.onap.aai.domain.yang.L3Network;
39 import org.onap.aai.domain.yang.RouteTarget;
40 import org.onap.aai.domain.yang.RouteTargets;
41 import org.onap.aai.domain.yang.Subnet;
42 import org.onap.aai.domain.yang.Subnets;
43 import org.onap.aai.domain.yang.VpnBinding;
44 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
45 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
46 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
47 import org.onap.so.bpmn.BaseTaskTest;
48 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
49 import org.onap.so.db.catalog.beans.Service;
50 import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization;
51 import com.fasterxml.jackson.core.JsonParseException;
52 import com.fasterxml.jackson.databind.JsonMappingException;
53 import com.fasterxml.jackson.databind.ObjectMapper;
55 public class VrfValidationTest extends BaseTaskTest {
57 protected ObjectMapper mapper = new ObjectMapper();
60 protected VrfValidation vrfValidation;
63 public ExpectedException exceptionRule = ExpectedException.none();
66 public void before() throws Exception {
67 vrfValidation.setBbInputSetupUtils(bbSetupUtils);
71 public void testVrfServiceValidation() throws VrfBondingServiceException {
72 Service service = new Service();
73 service.setModelName("modelName");
74 service.setServiceType("BONDING");
75 service.setServiceRole("VPN");
76 exceptionRule.expect(VrfBondingServiceException.class);
77 exceptionRule.expectMessage(
78 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
79 vrfValidation.vrfServiceValidation(service);
81 service.setServiceType("BOND");
82 service.setServiceRole("INFRASTRUCTURE-VPN");
83 exceptionRule.expect(VrfBondingServiceException.class);
84 exceptionRule.expectMessage(
85 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
86 vrfValidation.vrfServiceValidation(service);
88 service.setServiceType("BONDING");
89 service.setServiceRole("INFRASTRUCTURE-VPN");
90 ExpectedException.none();
91 vrfValidation.vrfServiceValidation(service);
95 public void testVrfCatalogDbChecks() throws VrfBondingServiceException {
96 Service service = new Service();
97 service.setModelName("modelName");
98 ConfigurationResourceCustomization configuration = new ConfigurationResourceCustomization();
99 service.setConfigurationCustomizations(new ArrayList<>());
100 service.getConfigurationCustomizations().add(configuration);
101 ServiceProxyResourceCustomization serviceProxy = new ServiceProxyResourceCustomization();
102 configuration.setServiceProxyResourceCustomization(serviceProxy);
103 service.setServiceProxyCustomizations(new ArrayList<>());
104 service.getServiceProxyCustomizations().add(serviceProxy);
105 Service sourceService = new Service();
106 sourceService.setServiceType("TRANSPORT");
107 serviceProxy.setSourceService(sourceService);
108 configuration.setType("VRF-ENTRY");
109 configuration.setRole("INFRASTRUCTURE-CLOUD-VPN");
110 ExpectedException.none();
111 vrfValidation.vrfCatalogDbChecks(service);
115 public void testAaiVpnBindingValidation() throws VrfBondingServiceException {
116 org.onap.aai.domain.yang.VpnBinding aaiVpnBinding = new org.onap.aai.domain.yang.VpnBinding();
117 aaiVpnBinding.setVpnType("SERVICE-INFRASTRUCTURE");
118 ExpectedException.none();
119 vrfValidation.aaiVpnBindingValidation("test-vpn", aaiVpnBinding);
123 public void testAaiVpnBindingValidationVpnBindingIsNull() throws VrfBondingServiceException {
124 exceptionRule.expect(VrfBondingServiceException.class);
125 exceptionRule.expectMessage("The infrastructure vpn test-vpn does not exist in A&AI.");
126 vrfValidation.aaiVpnBindingValidation("test-vpn", null);
130 public void testAaiNetworkValidation() throws VrfBondingServiceException {
131 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
132 aaiLocalNetwork.setNetworkId("test-network");
133 ExpectedException.none();
134 vrfValidation.aaiNetworkValidation("test-network", aaiLocalNetwork);
138 public void testAaiNetworkValidationNetworkIsNull() throws VrfBondingServiceException {
139 exceptionRule.expect(VrfBondingServiceException.class);
140 exceptionRule.expectMessage("The local network test-network does not exist in A&AI.");
141 vrfValidation.aaiNetworkValidation("test-network", null);
145 public void testAaiAggregateRouteValidation() throws VrfBondingServiceException {
146 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
147 aaiLocalNetwork.setAggregateRoutes(new AggregateRoutes());
148 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
149 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(0).setIpVersion("4");
150 ExpectedException.none();
151 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
153 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
154 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
155 ExpectedException.none();
156 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
158 aaiLocalNetwork.setAggregateRoutes(null);
159 ExpectedException.none();
160 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
164 public void testAaiSubnetValidation() throws VrfBondingServiceException {
165 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
166 aaiLocalNetwork.setNetworkId("myNetworkID");
167 aaiLocalNetwork.setSubnets(new Subnets());
168 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
169 aaiLocalNetwork.getSubnets().getSubnet().get(0).setIpVersion("4");
170 ExpectedException.none();
171 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
173 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
174 aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
175 ExpectedException.none();
176 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
178 aaiLocalNetwork.setSubnets(null);
179 exceptionRule.expect(VrfBondingServiceException.class);
180 exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
181 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
185 public void testIpVersionValidation() {
186 String ipVersion1 = "4";
187 String ipVersion2 = "6";
188 boolean validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
189 assertEquals("Validation is correct", true, validation);
192 validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
193 assertEquals("Validation is correct", true, validation);
196 validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
197 assertEquals("Validation is correct", false, validation);
201 public void testAaiRouteTargetValidation()
202 throws VrfBondingServiceException, JsonParseException, JsonMappingException, IOException {
203 L3Network l3Network = mapper.readValue(
204 new File("src/test/resources/__files/BuildingBlocks/aaiNetworkWrapper.json"), L3Network.class);
205 AAIResultWrapper networkWrapper = new AAIResultWrapper(l3Network);
206 if (networkWrapper.getRelationships().isPresent()) {
207 List<AAIResourceUri> vpnBindingUris =
208 networkWrapper.getRelationships().get().getRelatedUris(Types.VPN_BINDING);
209 VpnBinding vpnBinding = new VpnBinding();
210 vpnBinding.setRouteTargets(new RouteTargets());
211 vpnBinding.getRouteTargets().getRouteTarget().add(new RouteTarget());
212 AAIResultWrapper wrapper = Mockito.mock(AAIResultWrapper.class);
213 doReturn(wrapper).when(bbSetupUtils).getAAIResourceDepthOne(vpnBindingUris.get(0));
214 doReturn(Optional.of(vpnBinding)).when(wrapper).asBean(VpnBinding.class);
215 ExpectedException.none();
216 vrfValidation.aaiRouteTargetValidation(l3Network);