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.ebb.loader;
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.bpmn.infrastructure.workflow.tasks.VrfBondingServiceException;
49 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
50 import org.onap.so.db.catalog.beans.Service;
51 import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization;
52 import com.fasterxml.jackson.core.JsonParseException;
53 import com.fasterxml.jackson.databind.JsonMappingException;
54 import com.fasterxml.jackson.databind.ObjectMapper;
56 public class VrfValidationTest extends BaseTaskTest {
58 protected ObjectMapper mapper = new ObjectMapper();
61 protected VrfValidation vrfValidation;
64 public ExpectedException exceptionRule = ExpectedException.none();
67 public void before() throws Exception {
68 vrfValidation.setBbInputSetupUtils(bbSetupUtils);
72 public void testVrfServiceValidation() throws VrfBondingServiceException {
73 Service service = new Service();
74 service.setModelName("modelName");
75 service.setServiceType("BONDING");
76 service.setServiceRole("VPN");
77 exceptionRule.expect(VrfBondingServiceException.class);
78 exceptionRule.expectMessage(
79 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
80 vrfValidation.vrfServiceValidation(service);
82 service.setServiceType("BOND");
83 service.setServiceRole("INFRASTRUCTURE-VPN");
84 exceptionRule.expect(VrfBondingServiceException.class);
85 exceptionRule.expectMessage(
86 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
87 vrfValidation.vrfServiceValidation(service);
89 service.setServiceType("BONDING");
90 service.setServiceRole("INFRASTRUCTURE-VPN");
91 ExpectedException.none();
92 vrfValidation.vrfServiceValidation(service);
96 public void testVrfCatalogDbChecks() throws VrfBondingServiceException {
97 Service service = new Service();
98 service.setModelName("modelName");
99 ConfigurationResourceCustomization configuration = new ConfigurationResourceCustomization();
100 service.setConfigurationCustomizations(new ArrayList<>());
101 service.getConfigurationCustomizations().add(configuration);
102 ServiceProxyResourceCustomization serviceProxy = new ServiceProxyResourceCustomization();
103 configuration.setServiceProxyResourceCustomization(serviceProxy);
104 service.setServiceProxyCustomizations(new ArrayList<>());
105 service.getServiceProxyCustomizations().add(serviceProxy);
106 Service sourceService = new Service();
107 sourceService.setServiceType("TRANSPORT");
108 serviceProxy.setSourceService(sourceService);
109 configuration.setType("VRF-ENTRY");
110 configuration.setRole("INFRASTRUCTURE-CLOUD-VPN");
111 ExpectedException.none();
112 vrfValidation.vrfCatalogDbChecks(service);
116 public void testAaiVpnBindingValidation() throws VrfBondingServiceException {
117 org.onap.aai.domain.yang.VpnBinding aaiVpnBinding = new org.onap.aai.domain.yang.VpnBinding();
118 aaiVpnBinding.setVpnType("SERVICE-INFRASTRUCTURE");
119 ExpectedException.none();
120 vrfValidation.aaiVpnBindingValidation("test-vpn", aaiVpnBinding);
124 public void testAaiVpnBindingValidationVpnBindingIsNull() throws VrfBondingServiceException {
125 exceptionRule.expect(VrfBondingServiceException.class);
126 exceptionRule.expectMessage("The infrastructure vpn test-vpn does not exist in A&AI.");
127 vrfValidation.aaiVpnBindingValidation("test-vpn", null);
131 public void testAaiNetworkValidation() throws VrfBondingServiceException {
132 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
133 aaiLocalNetwork.setNetworkId("test-network");
134 ExpectedException.none();
135 vrfValidation.aaiNetworkValidation("test-network", aaiLocalNetwork);
139 public void testAaiNetworkValidationNetworkIsNull() throws VrfBondingServiceException {
140 exceptionRule.expect(VrfBondingServiceException.class);
141 exceptionRule.expectMessage("The local network test-network does not exist in A&AI.");
142 vrfValidation.aaiNetworkValidation("test-network", null);
146 public void testAaiAggregateRouteValidation() throws VrfBondingServiceException {
147 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
148 aaiLocalNetwork.setAggregateRoutes(new AggregateRoutes());
149 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
150 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(0).setIpVersion("4");
151 ExpectedException.none();
152 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
154 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
155 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
156 ExpectedException.none();
157 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
159 aaiLocalNetwork.setAggregateRoutes(null);
160 ExpectedException.none();
161 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
165 public void testAaiSubnetValidation() throws VrfBondingServiceException {
166 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
167 aaiLocalNetwork.setNetworkId("myNetworkID");
168 aaiLocalNetwork.setSubnets(new Subnets());
169 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
170 aaiLocalNetwork.getSubnets().getSubnet().get(0).setIpVersion("4");
171 ExpectedException.none();
172 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
174 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
175 aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
176 ExpectedException.none();
177 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
179 aaiLocalNetwork.setSubnets(null);
180 exceptionRule.expect(VrfBondingServiceException.class);
181 exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
182 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
186 public void testIpVersionValidation() {
187 String ipVersion1 = "4";
188 String ipVersion2 = "6";
189 boolean validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
190 assertEquals("Validation is correct", true, validation);
193 validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
194 assertEquals("Validation is correct", true, validation);
197 validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
198 assertEquals("Validation is correct", false, validation);
202 public void testAaiRouteTargetValidation()
203 throws VrfBondingServiceException, JsonParseException, JsonMappingException, IOException {
204 L3Network l3Network = mapper.readValue(
205 new File("src/test/resources/__files/BuildingBlocks/aaiNetworkWrapper.json"), L3Network.class);
206 AAIResultWrapper networkWrapper = new AAIResultWrapper(l3Network);
207 if (networkWrapper.getRelationships().isPresent()) {
208 List<AAIResourceUri> vpnBindingUris =
209 networkWrapper.getRelationships().get().getRelatedUris(Types.VPN_BINDING);
210 VpnBinding vpnBinding = new VpnBinding();
211 vpnBinding.setRouteTargets(new RouteTargets());
212 vpnBinding.getRouteTargets().getRouteTarget().add(new RouteTarget());
213 AAIResultWrapper wrapper = Mockito.mock(AAIResultWrapper.class);
214 doReturn(wrapper).when(bbSetupUtils).getAAIResourceDepthOne(vpnBindingUris.get(0));
215 doReturn(Optional.of(vpnBinding)).when(wrapper).asBean(VpnBinding.class);
216 ExpectedException.none();
217 vrfValidation.aaiRouteTargetValidation(l3Network);