cdf6324c676818353ca050e577beab31ab5561af
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.Mockito.doReturn;
25 import java.io.File;
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;
53
54 public class VrfValidationTest extends BaseTaskTest {
55
56     protected ObjectMapper mapper = new ObjectMapper();
57
58     @InjectMocks
59     protected VrfValidation vrfValidation;
60
61     @Rule
62     public ExpectedException exceptionRule = ExpectedException.none();
63
64     @Before
65     public void before() {
66         vrfValidation.setBbInputSetupUtils(bbSetupUtils);
67     }
68
69     @Test
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);
79
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);
86
87         service.setServiceType("BONDING");
88         service.setServiceRole("INFRASTRUCTURE-VPN");
89         ExpectedException.none();
90         vrfValidation.vrfServiceValidation(service);
91     }
92
93     @Test
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);
111     }
112
113     @Test
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);
119     }
120
121     @Test
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);
126     }
127
128     @Test
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);
134     }
135
136     @Test
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);
141     }
142
143     @Test
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);
151
152         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
153         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
154         ExpectedException.none();
155         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
156
157         aaiLocalNetwork.setAggregateRoutes(null);
158         ExpectedException.none();
159         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
160     }
161
162     @Test
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);
171
172         aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
173         aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
174         ExpectedException.none();
175         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
176
177         aaiLocalNetwork.setSubnets(null);
178         exceptionRule.expect(VrfBondingServiceException.class);
179         exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
180         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
181     }
182
183     @Test
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);
189
190
191         validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
192         assertEquals("Validation is correct", true, validation);
193
194         ipVersion1 = "6";
195         validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
196         assertEquals("Validation is correct", false, validation);
197     }
198
199     @Test
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);
215         }
216     }
217 }