526ebe85813702c353e940a53fb5743e59eb2f98
[so.git] /
1 package org.onap.so.bpmn.infrastructure.workflow.tasks;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Mockito.doReturn;
5 import java.io.File;
6 import java.io.IOException;
7 import java.util.ArrayList;
8 import java.util.List;
9 import java.util.Optional;
10 import org.junit.Before;
11 import org.junit.Rule;
12 import org.junit.Test;
13 import org.junit.rules.ExpectedException;
14 import org.mockito.InjectMocks;
15 import org.mockito.Mockito;
16 import org.onap.aai.domain.yang.AggregateRoute;
17 import org.onap.aai.domain.yang.AggregateRoutes;
18 import org.onap.aai.domain.yang.L3Network;
19 import org.onap.aai.domain.yang.RouteTarget;
20 import org.onap.aai.domain.yang.RouteTargets;
21 import org.onap.aai.domain.yang.Subnet;
22 import org.onap.aai.domain.yang.Subnets;
23 import org.onap.aai.domain.yang.VpnBinding;
24 import org.onap.so.bpmn.BaseTaskTest;
25 import org.onap.so.client.aai.AAIObjectType;
26 import org.onap.so.client.aai.entities.AAIResultWrapper;
27 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
28 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
29 import org.onap.so.db.catalog.beans.Service;
30 import org.onap.so.db.catalog.beans.ServiceProxyResourceCustomization;
31 import com.fasterxml.jackson.core.JsonParseException;
32 import com.fasterxml.jackson.databind.JsonMappingException;
33 import com.fasterxml.jackson.databind.ObjectMapper;
34
35 public class VrfValidationTest extends BaseTaskTest {
36
37     protected ObjectMapper mapper = new ObjectMapper();
38
39     @InjectMocks
40     protected VrfValidation vrfValidation;
41
42     @Rule
43     public ExpectedException exceptionRule = ExpectedException.none();
44
45     @Before
46     public void before() throws Exception {
47         vrfValidation.setBbInputSetupUtils(bbSetupUtils);
48     }
49
50     @Test
51     public void testVrfServiceValidation() throws VrfBondingServiceException {
52         Service service = new Service();
53         service.setModelName("modelName");
54         service.setServiceType("BONDING");
55         service.setServiceRole("VPN");
56         exceptionRule.expect(VrfBondingServiceException.class);
57         exceptionRule.expectMessage(
58                 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
59         vrfValidation.vrfServiceValidation(service);
60
61         service.setServiceType("BOND");
62         service.setServiceRole("INFRASTRUCTURE-VPN");
63         exceptionRule.expect(VrfBondingServiceException.class);
64         exceptionRule.expectMessage(
65                 "Service: modelName does not have service type of BONDING and does not have service role of INFRASTRUCTURE-VPN");
66         vrfValidation.vrfServiceValidation(service);
67
68         service.setServiceType("BONDING");
69         service.setServiceRole("INFRASTRUCTURE-VPN");
70         ExpectedException.none();
71         vrfValidation.vrfServiceValidation(service);
72     }
73
74     @Test
75     public void testVrfCatalogDbChecks() throws VrfBondingServiceException {
76         Service service = new Service();
77         service.setModelName("modelName");
78         ConfigurationResourceCustomization configuration = new ConfigurationResourceCustomization();
79         service.setConfigurationCustomizations(new ArrayList<>());
80         service.getConfigurationCustomizations().add(configuration);
81         ServiceProxyResourceCustomization serviceProxy = new ServiceProxyResourceCustomization();
82         configuration.setServiceProxyResourceCustomization(serviceProxy);
83         service.setServiceProxyCustomizations(new ArrayList<>());
84         service.getServiceProxyCustomizations().add(serviceProxy);
85         Service sourceService = new Service();
86         sourceService.setServiceType("TRANSPORT");
87         serviceProxy.setSourceService(sourceService);
88         configuration.setType("VRF-ENTRY");
89         configuration.setRole("INFRASTRUCTURE-CLOUD-VPN");
90         ExpectedException.none();
91         vrfValidation.vrfCatalogDbChecks(service);
92     }
93
94     @Test
95     public void testAaiVpnBindingValidation() throws VrfBondingServiceException {
96         org.onap.aai.domain.yang.VpnBinding aaiVpnBinding = new org.onap.aai.domain.yang.VpnBinding();
97         aaiVpnBinding.setVpnType("SERVICE-INFRASTRUCTURE");
98         ExpectedException.none();
99         vrfValidation.aaiVpnBindingValidation(aaiVpnBinding);
100     }
101
102     @Test
103     public void testAaiAggregateRouteValidation() throws VrfBondingServiceException {
104         org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
105         aaiLocalNetwork.setAggregateRoutes(new AggregateRoutes());
106         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
107         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(0).setIpVersion("4");
108         ExpectedException.none();
109         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
110
111         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().add(new AggregateRoute());
112         aaiLocalNetwork.getAggregateRoutes().getAggregateRoute().get(1).setIpVersion("6");
113         ExpectedException.none();
114         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
115
116         aaiLocalNetwork.setAggregateRoutes(null);
117         ExpectedException.none();
118         vrfValidation.aaiAggregateRouteValidation(aaiLocalNetwork);
119     }
120
121     @Test
122     public void testAaiSubnetValidation() throws VrfBondingServiceException {
123         org.onap.aai.domain.yang.L3Network aaiLocalNetwork = new org.onap.aai.domain.yang.L3Network();
124         aaiLocalNetwork.setNetworkId("myNetworkID");
125         aaiLocalNetwork.setSubnets(new Subnets());
126         aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
127         aaiLocalNetwork.getSubnets().getSubnet().get(0).setIpVersion("4");
128         ExpectedException.none();
129         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
130
131         aaiLocalNetwork.getSubnets().getSubnet().add(new Subnet());
132         aaiLocalNetwork.getSubnets().getSubnet().get(1).setIpVersion("6");
133         ExpectedException.none();
134         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
135
136         aaiLocalNetwork.setSubnets(null);
137         exceptionRule.expect(VrfBondingServiceException.class);
138         exceptionRule.expectMessage("LocalNetwork: myNetworkID has no subnets");
139         vrfValidation.aaiSubnetValidation(aaiLocalNetwork);
140     }
141
142     @Test
143     public void testIpVersionValidation() {
144         String ipVersion1 = "4";
145         String ipVersion2 = "6";
146         boolean validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
147         assertEquals("Validation is correct", true, validation);
148
149
150         validation = vrfValidation.ipVersionValidation(ipVersion2, ipVersion1);
151         assertEquals("Validation is correct", true, validation);
152
153         ipVersion1 = "6";
154         validation = vrfValidation.ipVersionValidation(ipVersion1, ipVersion2);
155         assertEquals("Validation is correct", false, validation);
156     }
157
158     @Test
159     public void testAaiRouteTargetValidation()
160             throws VrfBondingServiceException, JsonParseException, JsonMappingException, IOException {
161         L3Network l3Network = mapper.readValue(
162                 new File("src/test/resources/__files/BuildingBlocks/aaiNetworkWrapper.json"), L3Network.class);
163         AAIResultWrapper networkWrapper = new AAIResultWrapper(l3Network);
164         if (networkWrapper.getRelationships().isPresent()) {
165             List<AAIResourceUri> vpnBindingUris =
166                     networkWrapper.getRelationships().get().getRelatedUris(AAIObjectType.VPN_BINDING);
167             VpnBinding vpnBinding = new VpnBinding();
168             vpnBinding.setRouteTargets(new RouteTargets());
169             vpnBinding.getRouteTargets().getRouteTarget().add(new RouteTarget());
170             AAIResultWrapper wrapper = Mockito.mock(AAIResultWrapper.class);
171             doReturn(wrapper).when(bbSetupUtils).getAAIResourceDepthOne(vpnBindingUris.get(0));
172             doReturn(Optional.of(vpnBinding)).when(wrapper).asBean(VpnBinding.class);
173             ExpectedException.none();
174             vrfValidation.aaiRouteTargetValidation(l3Network);
175         }
176     }
177 }