f80fd82bd62a5ca3ee12d9b3c7eed0c57c59cb0f
[policy/models.git] / models-interactions / model-impl / aai / src / test / java / org / onap / policy / aai / AaiNqResponseWrapperTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * aai
4  * ================================================================================
5  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (C) 2019 Nordix Foundation.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20 */
21
22 package org.onap.policy.aai;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27
28 import java.io.IOException;
29 import java.nio.charset.StandardCharsets;
30 import java.util.LinkedList;
31 import java.util.List;
32 import java.util.UUID;
33 import org.apache.commons.io.IOUtils;
34 import org.junit.Test;
35 import org.onap.policy.aai.util.Serialization;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38
39 public class AaiNqResponseWrapperTest {
40     private static final String WIDGET = "widget";
41     private static final String MODEL_VERSION_KEY = "model.model-version";
42     private static final String MODEL_TYPE_KEY = "model.model-type";
43     private static final String MODEL_NAME_KEY = "model.model-name";
44     private static final String MODEL_ID_KEY = "model.model-id";
45     private static final String VERSION_JSON = "AaiNqResponseWrapper-Vserver.json";
46     private static final String NO_NAMES_JSON = "AaiNqResponseWrapper-NoNames.json";
47     private static final Logger logger = LoggerFactory.getLogger(AaiNqResponseWrapperTest.class);
48
49     @Test
50     public void test() {
51         AaiNqInventoryResponseItem serviceItem = new AaiNqInventoryResponseItem();
52         serviceItem.setModelName("service-instance");
53         serviceItem.setServiceInstance(new AaiNqServiceInstance());
54         serviceItem.getServiceInstance().setServiceInstanceId("dhv-test-vhnfportal-service-instance-id");
55         serviceItem.getServiceInstance().setServiceInstanceName("dhv-test-service-instance-name1");
56         serviceItem.getServiceInstance().setPersonaModelId("82194af1-3c2c-485a-8f44-420e22a9eaa4");
57         serviceItem.getServiceInstance().setPersonaModelVersion("1.0");
58         serviceItem.getServiceInstance().setServiceInstanceLocationId("dhv-test-service-instance-location-id1");
59         serviceItem.getServiceInstance().setResourceVersion("1485366092");
60         serviceItem.setExtraProperties(new AaiNqExtraProperties());
61         serviceItem.getExtraProperties().getExtraProperty()
62                 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "service-instance"));
63         serviceItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty(MODEL_TYPE_KEY, WIDGET));
64         serviceItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty(MODEL_VERSION_KEY, "1.0"));
65         serviceItem.getExtraProperties().getExtraProperty()
66                 .add(new AaiNqExtraProperty(MODEL_ID_KEY, "82194af1-3c2c-485a-8f44-420e22a9eaa4"));
67         serviceItem.getExtraProperties().getExtraProperty()
68                 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "46b92144-923a-4d20-b85a-3cbd847668a9"));
69
70         AaiNqInventoryResponseItem vfModuleItem = new AaiNqInventoryResponseItem();
71         vfModuleItem.setModelName("vf-module");
72         vfModuleItem.setVfModule(new AaiNqVfModule());
73         vfModuleItem.getVfModule().setVfModuleId("example-vf-module-id-val-49261");
74         vfModuleItem.getVfModule().setVfModuleName("example-vf-module-name-val-73074");
75         vfModuleItem.getVfModule().setHeatStackId("example-heat-stack-id-val-86300");
76         vfModuleItem.getVfModule().setOrchestrationStatus("example-orchestration-status-val-56523");
77         vfModuleItem.getVfModule().setIsBaseVfModule(true);
78         vfModuleItem.getVfModule().setResourceVersion("1485366450");
79         vfModuleItem.getVfModule().setPersonaModelId("ef86f9c5-2165-44f3-8fc3-96018b609ea5");
80         vfModuleItem.getVfModule().setPersonaModelVersion("1.0");
81         vfModuleItem.getVfModule().setWidgetModelId("example-widget-model-id-val-92571");
82         vfModuleItem.getVfModule().setWidgetModelVersion("example-widget-model-version-val-83317");
83         vfModuleItem.getVfModule().setContrailServiceInstanceFqdn("example-contrail-service-instance-fqdn-val-86796");
84         vfModuleItem.setExtraProperties(new AaiNqExtraProperties());
85         vfModuleItem.getExtraProperties().getExtraProperty()
86                 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "vf-module"));
87         vfModuleItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty(MODEL_TYPE_KEY, WIDGET));
88         vfModuleItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty(MODEL_VERSION_KEY, "1.0"));
89         vfModuleItem.getExtraProperties().getExtraProperty()
90                 .add(new AaiNqExtraProperty(MODEL_ID_KEY, "ef86f9c5-2165-44f3-8fc3-96018b609ea5"));
91         vfModuleItem.getExtraProperties().getExtraProperty()
92                 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "c00563ae-812b-4e62-8330-7c4d0f47088a"));
93
94         AaiNqInventoryResponseItem genericVnfItem = new AaiNqInventoryResponseItem();
95         genericVnfItem.setModelName("generic-vnf");
96         genericVnfItem.setGenericVnf(new AaiNqGenericVnf());
97         genericVnfItem.getGenericVnf().setVnfId("dhv-test-gvnf");
98         genericVnfItem.getGenericVnf().setVnfName("dhv-test-gvnf-name");
99         genericVnfItem.getGenericVnf().setVnfName2("dhv-test-gvnf-name2");
100         genericVnfItem.getGenericVnf().setVnfType("SW");
101         genericVnfItem.getGenericVnf().setServiceId("d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4");
102         genericVnfItem.getGenericVnf().setProvStatus("PREPROV");
103         genericVnfItem.getGenericVnf().setOperationalState("dhv-test-operational-state");
104         genericVnfItem.getGenericVnf().setIpv4OamAddress("dhv-test-gvnf-ipv4-oam-address");
105         genericVnfItem.getGenericVnf().setIpv4Loopback0Address("dhv-test-gvnfipv4-loopback0-address");
106         genericVnfItem.getGenericVnf().setInMaint(false);
107         genericVnfItem.getGenericVnf().setIsClosedLoopDisabled(false);
108         genericVnfItem.getGenericVnf().setResourceVersion("1485366450");
109         genericVnfItem.getGenericVnf().setEncrypedAccessFlag(true);
110         genericVnfItem.getGenericVnf().setPersonaModelId("acc6edd8-a8d4-4b93-afaa-0994068be14c");
111         genericVnfItem.getGenericVnf().setPersonaModelVersion("1.0");
112         genericVnfItem.setExtraProperties(new AaiNqExtraProperties());
113         genericVnfItem.getExtraProperties().setExtraProperty(new LinkedList<>());
114         genericVnfItem.getExtraProperties().getExtraProperty()
115                 .add(new AaiNqExtraProperty(MODEL_NAME_KEY, "generic-vnf"));
116         genericVnfItem.getExtraProperties().getExtraProperty()
117                 .add(new AaiNqExtraProperty(MODEL_TYPE_KEY, WIDGET));
118         genericVnfItem.getExtraProperties().getExtraProperty()
119                 .add(new AaiNqExtraProperty(MODEL_VERSION_KEY, "1.0"));
120         genericVnfItem.getExtraProperties().getExtraProperty()
121                 .add(new AaiNqExtraProperty(MODEL_ID_KEY, "acc6edd8-a8d4-4b93-afaa-0994068be14c"));
122         genericVnfItem.getExtraProperties().getExtraProperty()
123                 .add(new AaiNqExtraProperty("model.model-name-version-id", "93a6166f-b3d5-4f06-b4ba-aed48d009ad9"));
124         genericVnfItem.setItems(new AaiNqInventoryResponseItems());
125         genericVnfItem.getItems().setInventoryResponseItems(new LinkedList<>());
126         genericVnfItem.getItems().getInventoryResponseItems().add(serviceItem);
127         genericVnfItem.getItems().getInventoryResponseItems().add(vfModuleItem);
128
129         AaiNqInventoryResponseItem cloudItem = new AaiNqInventoryResponseItem();
130         cloudItem.setCloudRegion(new AaiNqCloudRegion());
131         cloudItem.getCloudRegion().setCloudOwner("OWNER");
132         cloudItem.getCloudRegion().setCloudRegionId("REGIONID");
133         cloudItem.getCloudRegion().setCloudRegionVersion("2.5");
134         cloudItem.getCloudRegion().setComplexName("COMPLEXNAME");
135         cloudItem.getCloudRegion().setResourceVersion("1485365988");
136
137         AaiNqInventoryResponseItem tenantItem = new AaiNqInventoryResponseItem();
138         tenantItem.setTenant(new AaiNqTenant());
139         tenantItem.getTenant().setTenantId("dhv-test-tenant");
140         tenantItem.getTenant().setTenantName("dhv-test-tenant-name");
141         tenantItem.getTenant().setResourceVersion("1485366334");
142         tenantItem.setItems(new AaiNqInventoryResponseItems());
143         tenantItem.getItems().setInventoryResponseItems(new LinkedList<>());
144         tenantItem.getItems().getInventoryResponseItems().add(cloudItem);
145
146         AaiNqInventoryResponseItem vserverItem = new AaiNqInventoryResponseItem();
147         vserverItem.setVserver(new AaiNqVServer());
148         vserverItem.getVserver().setVserverId("dhv-test-vserver");
149         vserverItem.getVserver().setVserverName("dhv-test-vserver-name");
150         vserverItem.getVserver().setVserverName2("dhv-test-vserver-name2");
151         vserverItem.getVserver().setProvStatus("PREPROV");
152         vserverItem.getVserver().setVserverSelflink("dhv-test-vserver-selflink");
153         vserverItem.getVserver().setInMaint(false);
154         vserverItem.getVserver().setIsClosedLoopDisabled(false);
155         vserverItem.getVserver().setResourceVersion("1485366417");
156         vserverItem.setItems(new AaiNqInventoryResponseItems());
157         vserverItem.getItems().setInventoryResponseItems(new LinkedList<>());
158         vserverItem.getItems().getInventoryResponseItems().add(genericVnfItem);
159         vserverItem.getItems().getInventoryResponseItems().add(tenantItem);
160
161         AaiNqResponse aaiResponse = new AaiNqResponse();
162         aaiResponse.getInventoryResponseItems().add(vserverItem);
163         AaiNqResponseWrapper aaiNqResponseWarapper = new AaiNqResponseWrapper();
164         aaiNqResponseWarapper.setAaiNqResponse(aaiResponse);
165         aaiNqResponseWarapper.setRequestId(UUID.randomUUID());
166         assertNotNull(aaiNqResponseWarapper);
167         logger.info(Serialization.gsonPretty.toJson(aaiNqResponseWarapper));
168
169         AaiNqResponse aaiResponse2 = new AaiNqResponse();
170         aaiResponse2.getInventoryResponseItems().add(vserverItem);
171         AaiNqResponseWrapper aaiNqResponseWarapper2 = new AaiNqResponseWrapper(UUID.randomUUID(), aaiResponse);
172         assertNotNull(aaiNqResponseWarapper2);
173         assertNotNull(aaiNqResponseWarapper2.getRequestId());
174         assertNotNull(aaiNqResponseWarapper2.getAaiNqResponse());
175         logger.info(Serialization.gsonPretty.toJson(aaiNqResponseWarapper2));
176     }
177
178     @Test
179     public void testCountVfModules() throws Exception {
180         AaiNqResponseWrapper resp;
181
182         // null item
183         resp = new AaiNqResponseWrapper();
184         assertEquals(0, resp.countVfModules());
185
186         // no names
187         resp.setAaiNqResponse(load(NO_NAMES_JSON));
188         assertEquals(0, resp.countVfModules());
189
190         // has VF modules
191         resp.setAaiNqResponse(load(VERSION_JSON));
192         assertEquals(3, resp.countVfModules());
193     }
194
195     @Test
196     public void testGenVfModuleName() throws Exception {
197         AaiNqResponseWrapper resp;
198
199         // null item
200         resp = new AaiNqResponseWrapper();
201         assertEquals(null, resp.genVfModuleName());
202
203         // no names
204         resp.setAaiNqResponse(load(NO_NAMES_JSON));
205         assertEquals(null, resp.genVfModuleName());
206
207         // has VF modules
208         resp.setAaiNqResponse(load(VERSION_JSON));
209         assertEquals("my-module-abc_124", resp.genVfModuleName());
210     }
211
212     @Test
213     public void testGetVfModules() throws Exception {
214         AaiNqResponseWrapper resp;
215
216         // null item
217         resp = new AaiNqResponseWrapper();
218         assertTrue(resp.getVfModuleItems(true).isEmpty());
219
220         // missing item
221         resp = new AaiNqResponseWrapper();
222         resp.setAaiNqResponse(new AaiNqResponse());
223         assertTrue(resp.getVfModuleItems(false).isEmpty());
224
225         // null item list
226         resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoItems.json"));
227         resp.getAaiNqResponse().getInventoryResponseItems().get(0).getItems().getInventoryResponseItems().get(0)
228                         .getItems().setInventoryResponseItems(null);
229         assertTrue(resp.getVfModuleItems(false).isEmpty());
230
231         // no modules
232         resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoModules.json"));
233         assertTrue(resp.getVfModuleItems(false).isEmpty());
234
235         // no names
236         resp.setAaiNqResponse(load(NO_NAMES_JSON));
237         List<AaiNqInventoryResponseItem> lst;
238         lst = resp.getVfModuleItems(false);
239         assertEquals(0, lst.size());
240
241         // base VF modules
242         resp.setAaiNqResponse(load(VERSION_JSON));
243         lst = resp.getVfModuleItems(true);
244         assertEquals(1, lst.size());
245         assertEquals("Vfmodule_vLBMS-0809-1", lst.get(0).getVfModule().getVfModuleName());
246
247         // non base VF modules
248         resp.setAaiNqResponse(load(VERSION_JSON));
249         lst = resp.getVfModuleItems(false);
250         assertEquals(3, lst.size());
251         int index;
252         index = 0;
253         assertEquals("my-module-abc_1", lst.get(index++).getVfModule().getVfModuleName());
254         assertEquals("my-module-abc_123", lst.get(index++).getVfModule().getVfModuleName());
255         assertEquals("my-module-abc_34", lst.get(index++).getVfModule().getVfModuleName());
256     }
257
258     /**
259      * Loads a response from a JSON file.
260      *
261      * @param fileName name of the file containing the JSON response
262      * @return the response
263      * @throws IOException if the file cannot be read
264      */
265     private AaiNqResponse load(String fileName) throws IOException {
266         String json = IOUtils.toString(getClass().getResource(fileName), StandardCharsets.UTF_8);
267         return Serialization.gsonPretty.fromJson(json, AaiNqResponse.class);
268     }
269 }