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.databind.ObjectMapper;
54 public class VrfValidationTest extends BaseTaskTest {
56 protected ObjectMapper mapper = new ObjectMapper();
59 protected VrfValidation vrfValidation;
62 public ExpectedException exceptionRule = ExpectedException.none();
65 public void before() {
66 vrfValidation.setBbInputSetupUtils(bbSetupUtils);
70 public void testVrfServiceValidation() throws VrfBondingServiceException {
71 Service service = new Service();
72 service.setModelName("modelName");
73 service.setServiceType("BONDING");
74 service.setServiceRole("VPN");
75 exceptionRule.expect(VrfBondingServiceException.class);
76 exceptionRule.expectMessage(
77 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
78 vrfValidation.vrfServiceValidation(service);
80 service.setServiceType("BOND");
81 service.setServiceRole("INFRASTRUCTURE-VPN");
82 exceptionRule.expect(VrfBondingServiceException.class);
83 exceptionRule.expectMessage(
84 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
85 vrfValidation.vrfServiceValidation(service);
87 service.setServiceType("BONDING");
88 service.setServiceRole("INFRASTRUCTURE-VPN");
89 ExpectedException.none();
90 vrfValidation.vrfServiceValidation(service);
94 public void testVrfCatalogDbChecks() throws VrfBondingServiceException {
95 Service service = new Service();
96 service.setModelName("modelName");
97 ConfigurationResourceCustomization configuration = new ConfigurationResourceCustomization();
98 service.setConfigurationCustomizations(new ArrayList<>());
99 service.getConfigurationCustomizations().add(configuration);
100 ServiceProxyResourceCustomization serviceProxy = new ServiceProxyResourceCustomization();
101 configuration.setServiceProxyResourceCustomization(serviceProxy);
102 service.setServiceProxyCustomizations(new ArrayList<>());
103 service.getServiceProxyCustomizations().add(serviceProxy);
104 Service sourceService = new Service();
105 sourceService.setServiceType("TRANSPORT");
106 serviceProxy.setSourceService(sourceService);
107 configuration.setType("VRF-ENTRY");
108 configuration.setRole("INFRASTRUCTURE-CLOUD-VPN");
109 ExpectedException.none();
110 vrfValidation.vrfCatalogDbChecks(service);
114 public void testAaiVpnBindingValidation() throws VrfBondingServiceException {
115 org.onap.aai.domain.yang.VpnBinding aaiVpnBinding = new org.onap.aai.domain.yang.VpnBinding();
116 aaiVpnBinding.setVpnType("SERVICE-INFRASTRUCTURE");
117 ExpectedException.none();
118 vrfValidation.aaiVpnBindingValidation("test-vpn", aaiVpnBinding);
122 public void testAaiVpnBindingValidationVpnBindingIsNull() throws VrfBondingServiceException {
123 exceptionRule.expect(VrfBondingServiceException.class);
124 exceptionRule.expectMessage("The infrastructure vpn test-vpn does not exist in A&AI.");
125 vrfValidation.aaiVpnBindingValidation("test-vpn", null);
129 public void testAaiNetworkValidation() throws VrfBondingServiceException {
130 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
131 aaiLocalNetwork.setNetworkId("test-network");
132 ExpectedException.none();
133 vrfValidation.aaiNetworkValidation("test-network", aaiLocalNetwork);
137 public void testAaiNetworkValidationNetworkIsNull() throws VrfBondingServiceException {
138 exceptionRule.expect(VrfBondingServiceException.class);
139 exceptionRule.expectMessage("The local network test-network does not exist in A&AI.");
140 vrfValidation.aaiNetworkValidation("test-network", null);
144 public void testAaiAggregateRouteValidation() throws VrfBondingServiceException {
145 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
146 aaiLocalNetwork.setAggregateRoutes(new AggregateRoutes());
147 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
148 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(0).setIpVersion("4");
149 ExpectedException.none();
150 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
152 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
153 aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
154 ExpectedException.none();
155 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
157 aaiLocalNetwork.setAggregateRoutes(null);
158 ExpectedException.none();
159 vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
163 public void testAaiSubnetValidation() throws VrfBondingServiceException {
164 org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
165 aaiLocalNetwork.setNetworkId("myNetworkID");
166 aaiLocalNetwork.setSubnets(new Subnets());
167 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
168 aaiLocalNetwork.getSubnets().getSubnet().get(0).setIpVersion("4");
169 ExpectedException.none();
170 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
172 aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
173 aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
174 ExpectedException.none();
175 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
177 aaiLocalNetwork.setSubnets(null);
178 exceptionRule.expect(VrfBondingServiceException.class);
179 exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
180 vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
184 public void testIpVersionValidation() {
185 String ipVersion1 = "4";
186 String ipVersion2 = "6";
187 boolean validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
188 assertEquals("Validation is correct", true, validation);
191 validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
192 assertEquals("Validation is correct", true, validation);
195 validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
196 assertEquals("Validation is correct", false, validation);
200 public void testAaiRouteTargetValidation() throws VrfBondingServiceException, IOException {
201 L3Network l3Network = mapper.readValue(
202 new File("src/test/resources/__files/BuildingBlocks/aaiNetworkWrapper.json"), L3Network.class);
203 AAIResultWrapper networkWrapper = new AAIResultWrapper(l3Network);
204 if (networkWrapper.getRelationships().isPresent()) {
205 List<AAIResourceUri> vpnBindingUris =
206 networkWrapper.getRelationships().get().getRelatedUris(Types.VPN_BINDING);
207 VpnBinding vpnBinding = new VpnBinding();
208 vpnBinding.setRouteTargets(new RouteTargets());
209 vpnBinding.getRouteTargets().getRouteTarget().add(new RouteTarget());
210 AAIResultWrapper wrapper = Mockito.mock(AAIResultWrapper.class);
211 doReturn(wrapper).when(bbSetupUtils).getAAIResourceDepthOne(vpnBindingUris.get(0));
212 doReturn(Optional.of(vpnBinding)).when(wrapper).asBean(VpnBinding.class);
213 ExpectedException.none();
214 vrfValidation.aaiRouteTargetValidation(l3Network);