dcccb74f58c9a1b0aaf472fc48b0db6e07a2f09d
[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.core.JsonParseException;
53 import com.fasterxml.jackson.databind.JsonMappingException;
54 import com.fasterxml.jackson.databind.ObjectMapper;
55
56 public class VrfValidationTest extends BaseTaskTest {
57
58     protected ObjectMapper mapper = new ObjectMapper();
59
60     @InjectMocks
61     protected VrfValidation vrfValidation;
62
63     @Rule
64     public ExpectedException exceptionRule = ExpectedException.none();
65
66     @Before
67     public void before() throws Exception {
68         vrfValidation.setBbInputSetupUtils(bbSetupUtils);
69     }
70
71     @Test
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);
81
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);
88
89         service.setServiceType("BONDING");
90         service.setServiceRole("INFRASTRUCTURE-VPN");
91         ExpectedException.none();
92         vrfValidation.vrfServiceValidation(service);
93     }
94
95     @Test
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);
113     }
114
115     @Test
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);
121     }
122
123     @Test
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);
128     }
129
130     @Test
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);
136     }
137
138     @Test
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);
143     }
144
145     @Test
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);
153
154         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
155         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
156         ExpectedException.none();
157         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
158
159         aaiLocalNetwork.setAggregateRoutes(null);
160         ExpectedException.none();
161         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
162     }
163
164     @Test
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);
173
174         aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
175         aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
176         ExpectedException.none();
177         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
178
179         aaiLocalNetwork.setSubnets(null);
180         exceptionRule.expect(VrfBondingServiceException.class);
181         exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
182         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
183     }
184
185     @Test
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);
191
192
193         validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
194         assertEquals("Validation is correct", true, validation);
195
196         ipVersion1 = "6";
197         validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
198         assertEquals("Validation is correct", false, validation);
199     }
200
201     @Test
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);
218         }
219     }
220 }