Removing jackson to mitigate cve-2017-4995
[vfc/nfvo/driver/vnfm/svnfm.git] / nokiav2 / driver / src / test / java / org / onap / vfc / nfvo / driver / vnfm / svnfm / nokia / onap / direct / notification / TestVserverManager.java
1 /*
2  * Copyright 2016-2017, Nokia Corporation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification;
17
18 import com.google.gson.JsonArray;
19 import com.google.gson.JsonObject;
20 import com.nokia.cbam.lcm.v32.model.AffectedVirtualStorage;
21 import com.nokia.cbam.lcm.v32.model.AffectedVnfc;
22 import com.nokia.cbam.lcm.v32.model.ResourceHandle;
23 import java.util.ArrayList;
24 import java.util.List;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.mockito.ArgumentCaptor;
28 import org.mockito.Mock;
29 import org.onap.aai.api.CloudInfrastructureApi;
30 import org.onap.aai.model.Relationship;
31 import org.onap.aai.model.Vserver;
32 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.AAIRestApiProvider;
33 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
34
35 import static junit.framework.TestCase.assertEquals;
36 import static org.mockito.Matchers.eq;
37 import static org.mockito.Mockito.verify;
38 import static org.mockito.Mockito.when;
39 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.AbstractManager.buildRelationshipData;
40 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.TestGenericVnfManager.assertRelation;
41 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getCloudOwner;
42 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.getRegionName;
43 import static org.springframework.test.util.ReflectionTestUtils.setField;
44
45 public class TestVserverManager extends TestBase {
46     private ArgumentCaptor<Vserver> payload = ArgumentCaptor.forClass(Vserver.class);
47
48     @Mock
49     private AAIRestApiProvider aaiRestApiProvider;
50     private VserverManager vserverManager;
51     @Mock
52     private CloudInfrastructureApi cloudInfrastructureApi;
53
54     @Before
55     public void init() {
56         vserverManager = new VserverManager(aaiRestApiProvider, cbamRestApiProvider, driverProperties);
57         setField(VserverManager.class, "logger", logger);
58         when(aaiRestApiProvider.getCloudInfrastructureApi()).thenReturn(cloudInfrastructureApi);
59     }
60
61     /**
62      * test update
63      */
64     @Test
65     public void testUpdate() throws Exception {
66         AffectedVnfc affectedVnfc = new AffectedVnfc();
67         affectedVnfc.setComputeResource(new ResourceHandle());
68         affectedVnfc.getComputeResource().setResourceId("serverProviderId");
69         JsonObject additionalData = new JsonObject();
70         additionalData.addProperty("name", "serverName");
71         additionalData.addProperty("tenantId", "myTenantId");
72         JsonArray links = new JsonArray();
73         links.add(new JsonObject());
74         JsonObject nonRelSelfink = new JsonObject();
75         nonRelSelfink.addProperty("rel", "self2");
76         nonRelSelfink.addProperty("href", "url");
77         links.add(nonRelSelfink);
78
79         JsonObject link = new JsonObject();
80         link.addProperty("rel", "self");
81         link.addProperty("href", "url");
82         links.add(link);
83         additionalData.add("links", links);
84         affectedVnfc.getComputeResource().setAdditionalData(additionalData);
85         affectedVnfc.setId("vnfcId");
86         List<AffectedVirtualStorage> affectedStorages = new ArrayList<>();
87         affectedStorages.add(new AffectedVirtualStorage());
88         affectedStorages.get(0).setId("sId");
89         affectedStorages.get(0).setResource(new ResourceHandle());
90         affectedStorages.get(0).getResource().setResourceId("storageProviderId");
91         affectedVnfc.setStorageResourceIds(new ArrayList<>());
92         affectedVnfc.getStorageResourceIds().add("sId");
93
94         String url = "/cloud-regions/cloud-region///tenants/tenant//vservers/vserver/";
95
96         Vserver existingVserver = new Vserver();
97         existingVserver.setVolumes(new ArrayList<>());
98         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
99         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
100         //when
101         vserverManager.update(VIM_ID, VNF_ID, affectedVnfc, affectedStorages, true);
102         //verify
103         Vserver vserver = payload.getValue();
104         assertEquals("serverProviderId", vserver.getVserverId());
105         assertEquals("active", vserver.getProvStatus());
106         assertEquals("serverName", vserver.getVserverName());
107         assertEquals("url", vserver.getVserverSelflink());
108         assertEquals(1, vserver.getVolumes().size());
109         assertEquals("storageProviderId", vserver.getVolumes().get(0).getVolumeId());
110     }
111
112     /**
113      * test missing links
114      */
115     @Test
116     public void testUpdateEmptyLinks() throws Exception {
117         AffectedVnfc affectedVnfc = new AffectedVnfc();
118         affectedVnfc.setComputeResource(new ResourceHandle());
119         affectedVnfc.getComputeResource().setResourceId("serverProviderId");
120         JsonObject additionalData = new JsonObject();
121         additionalData.addProperty("name", "serverName");
122         additionalData.addProperty("tenantId", "myTenantId");
123         JsonArray links = new JsonArray();
124         additionalData.add("links", links);
125         affectedVnfc.getComputeResource().setAdditionalData(additionalData);
126         affectedVnfc.setId("vnfcId");
127         List<AffectedVirtualStorage> affectedStorages = new ArrayList<>();
128         affectedStorages.add(new AffectedVirtualStorage());
129         affectedStorages.get(0).setId("sId");
130         affectedStorages.get(0).setResource(new ResourceHandle());
131         affectedStorages.get(0).getResource().setResourceId("storageProviderId");
132         affectedVnfc.setStorageResourceIds(new ArrayList<>());
133         affectedVnfc.getStorageResourceIds().add("sId");
134
135         Vserver existingVserver = new Vserver();
136         existingVserver.setVolumes(new ArrayList<>());
137         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
138         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
139         //when
140         vserverManager.update(VIM_ID, VNF_ID, affectedVnfc, affectedStorages, true);
141         //verify
142         Vserver vserver = payload.getValue();
143         assertEquals("serverProviderId", vserver.getVserverId());
144         assertEquals("active", vserver.getProvStatus());
145         assertEquals("serverName", vserver.getVserverName());
146         assertEquals("unknown", vserver.getVserverSelflink());
147         assertEquals(1, vserver.getVolumes().size());
148         assertEquals("storageProviderId", vserver.getVolumes().get(0).getVolumeId());
149     }
150
151     /**
152      * test update when links is not present on vServer
153      */
154     @Test
155     public void testUpdateWithNoLinks() throws Exception {
156         AffectedVnfc affectedVnfc = new AffectedVnfc();
157         affectedVnfc.setComputeResource(new ResourceHandle());
158         affectedVnfc.getComputeResource().setResourceId("serverProviderId");
159         JsonObject additionalData = new JsonObject();
160         additionalData.addProperty("name", "serverName");
161         additionalData.addProperty("tenantId", "myTenantId");
162         affectedVnfc.getComputeResource().setAdditionalData(additionalData);
163         affectedVnfc.setId("vnfcId");
164         List<AffectedVirtualStorage> affectedStorages = new ArrayList<>();
165         affectedStorages.add(new AffectedVirtualStorage());
166         affectedStorages.get(0).setId("sId");
167         affectedStorages.get(0).setResource(new ResourceHandle());
168         affectedStorages.get(0).getResource().setResourceId("storageProviderId");
169         affectedVnfc.setStorageResourceIds(new ArrayList<>());
170         affectedVnfc.getStorageResourceIds().add("sId");
171
172         Vserver existingVserver = new Vserver();
173         existingVserver.setVolumes(new ArrayList<>());
174         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
175         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
176         //when
177         vserverManager.update(VIM_ID, VNF_ID, affectedVnfc, affectedStorages, true);
178         //verify
179         Vserver vserver = payload.getValue();
180         assertEquals("serverProviderId", vserver.getVserverId());
181         assertEquals("active", vserver.getProvStatus());
182         assertEquals("serverName", vserver.getVserverName());
183         assertEquals("unknown", vserver.getVserverSelflink());
184         assertEquals(1, vserver.getVolumes().size());
185         assertEquals("storageProviderId", vserver.getVolumes().get(0).getVolumeId());
186     }
187
188     /**
189      * test update when removing volumes
190      */
191     @Test
192     public void testUpdateWithRemovingVolumes() throws Exception {
193         AffectedVnfc affectedVnfc = new AffectedVnfc();
194         affectedVnfc.setComputeResource(new ResourceHandle());
195         affectedVnfc.getComputeResource().setResourceId("serverProviderId");
196         JsonObject additionalData = new JsonObject();
197         additionalData.addProperty("name", "serverName");
198         additionalData.addProperty("tenantId", "myTenantId");
199         affectedVnfc.getComputeResource().setAdditionalData(additionalData);
200         affectedVnfc.setId("vnfcId");
201         List<AffectedVirtualStorage> affectedStorages = new ArrayList<>();
202         Vserver existingVserver = new Vserver();
203         existingVserver.setVolumes(new ArrayList<>());
204         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
205         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
206         //when
207         vserverManager.update(VIM_ID, VNF_ID, affectedVnfc, affectedStorages, true);
208         //verify
209         Vserver vserver = payload.getValue();
210         assertEquals("serverProviderId", vserver.getVserverId());
211         assertEquals("active", vserver.getProvStatus());
212         assertEquals("serverName", vserver.getVserverName());
213         assertEquals("unknown", vserver.getVserverSelflink());
214         assertEquals(0, vserver.getVolumes().size());
215     }
216
217     /**
218      * test delete
219      */
220     @Test
221     public void testDelete() throws Exception {
222         AffectedVnfc affectedVnfc = new AffectedVnfc();
223         affectedVnfc.setComputeResource(new ResourceHandle());
224         affectedVnfc.getComputeResource().setResourceId("serverProviderId");
225         JsonObject additionalData = new JsonObject();
226         additionalData.addProperty("name", "serverName");
227         additionalData.addProperty("tenantId", "myTenantId");
228         affectedVnfc.getComputeResource().setAdditionalData(additionalData);
229         affectedVnfc.setId("vnfcId");
230         Vserver existingVserver = new Vserver();
231         existingVserver.setResourceVersion("v3");
232         existingVserver.setVserverId("serverProviderId");
233         when(cloudInfrastructureApi.getCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", null, null, null, null, null, null, null, null, null)).thenReturn(buildObservable(existingVserver));
234         when(cloudInfrastructureApi.createOrUpdateCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver(eq("myCloudOwnerId"), eq("myRegionName"), eq("myTenantId"), eq("serverProviderId"), payload.capture())).thenReturn(null);
235
236         //when
237         vserverManager.delete(VIM_ID, affectedVnfc);
238         //verify
239         verify(cloudInfrastructureApi).deleteCloudInfrastructureCloudRegionsCloudRegionTenantsTenantVserversVserver("myCloudOwnerId", "myRegionName", "myTenantId", "serverProviderId", "v3");
240     }
241
242     @Test
243     public void testLinks() {
244         Relationship relationship = VserverManager.linkTo(VIM_ID, "myTenantPrivderId", "serverProviderId");
245         List<Relationship> relationships = new ArrayList<>();
246         relationships.add(relationship);
247         assertRelation(relationships, "vserver",
248                 buildRelationshipData("cloud-region.cloud-owner", getCloudOwner(VIM_ID)),
249                 buildRelationshipData("cloud-region.cloud-region-id", getRegionName(VIM_ID)),
250                 buildRelationshipData("tenant.tenant-id", "myTenantPrivderId"),
251                 buildRelationshipData("vserver.vserver-id", "serverProviderId"));
252     }
253
254     /**
255      * test inheritence
256      */
257     @Test
258     public void testInheritence() {
259         assertEquals(logger, vserverManager.getLogger());
260     }
261
262
263 }