move actors code in drools-applications to policy/models
[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 Logger logger = LoggerFactory.getLogger(AaiNqResponseWrapperTest.class);
41
42     @Test
43     public void test() {
44         AaiNqInventoryResponseItem serviceItem = new AaiNqInventoryResponseItem();
45         serviceItem.setModelName("service-instance");
46         serviceItem.setServiceInstance(new AaiNqServiceInstance());
47         serviceItem.getServiceInstance().setServiceInstanceId("dhv-test-vhnfportal-service-instance-id");
48         serviceItem.getServiceInstance().setServiceInstanceName("dhv-test-service-instance-name1");
49         serviceItem.getServiceInstance().setPersonaModelId("82194af1-3c2c-485a-8f44-420e22a9eaa4");
50         serviceItem.getServiceInstance().setPersonaModelVersion("1.0");
51         serviceItem.getServiceInstance().setServiceInstanceLocationId("dhv-test-service-instance-location-id1");
52         serviceItem.getServiceInstance().setResourceVersion("1485366092");
53         serviceItem.setExtraProperties(new AaiNqExtraProperties());
54         serviceItem.getExtraProperties().getExtraProperty()
55                 .add(new AaiNqExtraProperty("model.model-name", "service-instance"));
56         serviceItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty("model.model-type", "widget"));
57         serviceItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty("model.model-version", "1.0"));
58         serviceItem.getExtraProperties().getExtraProperty()
59                 .add(new AaiNqExtraProperty("model.model-id", "82194af1-3c2c-485a-8f44-420e22a9eaa4"));
60         serviceItem.getExtraProperties().getExtraProperty()
61                 .add(new AaiNqExtraProperty("model.model-name", "46b92144-923a-4d20-b85a-3cbd847668a9"));
62
63         AaiNqInventoryResponseItem vfModuleItem = new AaiNqInventoryResponseItem();
64         vfModuleItem.setModelName("vf-module");
65         vfModuleItem.setVfModule(new AaiNqVfModule());
66         vfModuleItem.getVfModule().setVfModuleId("example-vf-module-id-val-49261");
67         vfModuleItem.getVfModule().setVfModuleName("example-vf-module-name-val-73074");
68         vfModuleItem.getVfModule().setHeatStackId("example-heat-stack-id-val-86300");
69         vfModuleItem.getVfModule().setOrchestrationStatus("example-orchestration-status-val-56523");
70         vfModuleItem.getVfModule().setIsBaseVfModule(true);
71         vfModuleItem.getVfModule().setResourceVersion("1485366450");
72         vfModuleItem.getVfModule().setPersonaModelId("ef86f9c5-2165-44f3-8fc3-96018b609ea5");
73         vfModuleItem.getVfModule().setPersonaModelVersion("1.0");
74         vfModuleItem.getVfModule().setWidgetModelId("example-widget-model-id-val-92571");
75         vfModuleItem.getVfModule().setWidgetModelVersion("example-widget-model-version-val-83317");
76         vfModuleItem.getVfModule().setContrailServiceInstanceFqdn("example-contrail-service-instance-fqdn-val-86796");
77         vfModuleItem.setExtraProperties(new AaiNqExtraProperties());
78         vfModuleItem.getExtraProperties().getExtraProperty()
79                 .add(new AaiNqExtraProperty("model.model-name", "vf-module"));
80         vfModuleItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty("model.model-type", "widget"));
81         vfModuleItem.getExtraProperties().getExtraProperty().add(new AaiNqExtraProperty("model.model-version", "1.0"));
82         vfModuleItem.getExtraProperties().getExtraProperty()
83                 .add(new AaiNqExtraProperty("model.model-id", "ef86f9c5-2165-44f3-8fc3-96018b609ea5"));
84         vfModuleItem.getExtraProperties().getExtraProperty()
85                 .add(new AaiNqExtraProperty("model.model-name", "c00563ae-812b-4e62-8330-7c4d0f47088a"));
86
87         AaiNqInventoryResponseItem genericVnfItem = new AaiNqInventoryResponseItem();
88         genericVnfItem.setModelName("generic-vnf");
89         genericVnfItem.setGenericVnf(new AaiNqGenericVnf());
90         genericVnfItem.getGenericVnf().setVnfId("dhv-test-gvnf");
91         genericVnfItem.getGenericVnf().setVnfName("dhv-test-gvnf-name");
92         genericVnfItem.getGenericVnf().setVnfName2("dhv-test-gvnf-name2");
93         genericVnfItem.getGenericVnf().setVnfType("SW");
94         genericVnfItem.getGenericVnf().setServiceId("d7bb0a21-66f2-4e6d-87d9-9ef3ced63ae4");
95         genericVnfItem.getGenericVnf().setProvStatus("PREPROV");
96         genericVnfItem.getGenericVnf().setOperationalState("dhv-test-operational-state");
97         genericVnfItem.getGenericVnf().setIpv4OamAddress("dhv-test-gvnf-ipv4-oam-address");
98         genericVnfItem.getGenericVnf().setIpv4Loopback0Address("dhv-test-gvnfipv4-loopback0-address");
99         genericVnfItem.getGenericVnf().setInMaint(false);
100         genericVnfItem.getGenericVnf().setIsClosedLoopDisabled(false);
101         genericVnfItem.getGenericVnf().setResourceVersion("1485366450");
102         genericVnfItem.getGenericVnf().setEncrypedAccessFlag(true);
103         genericVnfItem.getGenericVnf().setPersonaModelId("acc6edd8-a8d4-4b93-afaa-0994068be14c");
104         genericVnfItem.getGenericVnf().setPersonaModelVersion("1.0");
105         genericVnfItem.setExtraProperties(new AaiNqExtraProperties());
106         genericVnfItem.getExtraProperties().setExtraProperty(new LinkedList<>());
107         genericVnfItem.getExtraProperties().getExtraProperty()
108                 .add(new AaiNqExtraProperty("model.model-name", "generic-vnf"));
109         genericVnfItem.getExtraProperties().getExtraProperty()
110                 .add(new AaiNqExtraProperty("model.model-type", "widget"));
111         genericVnfItem.getExtraProperties().getExtraProperty()
112                 .add(new AaiNqExtraProperty("model.model-version", "1.0"));
113         genericVnfItem.getExtraProperties().getExtraProperty()
114                 .add(new AaiNqExtraProperty("model.model-id", "acc6edd8-a8d4-4b93-afaa-0994068be14c"));
115         genericVnfItem.getExtraProperties().getExtraProperty()
116                 .add(new AaiNqExtraProperty("model.model-name-version-id", "93a6166f-b3d5-4f06-b4ba-aed48d009ad9"));
117         genericVnfItem.setItems(new AaiNqInventoryResponseItems());
118         genericVnfItem.getItems().setInventoryResponseItems(new LinkedList<>());
119         genericVnfItem.getItems().getInventoryResponseItems().add(serviceItem);
120         genericVnfItem.getItems().getInventoryResponseItems().add(vfModuleItem);
121
122         AaiNqInventoryResponseItem cloudItem = new AaiNqInventoryResponseItem();
123         cloudItem.setCloudRegion(new AaiNqCloudRegion());
124         cloudItem.getCloudRegion().setCloudOwner("OWNER");
125         cloudItem.getCloudRegion().setCloudRegionId("REGIONID");
126         cloudItem.getCloudRegion().setCloudRegionVersion("2.5");
127         cloudItem.getCloudRegion().setComplexName("COMPLEXNAME");
128         cloudItem.getCloudRegion().setResourceVersion("1485365988");
129
130         AaiNqInventoryResponseItem tenantItem = new AaiNqInventoryResponseItem();
131         tenantItem.setTenant(new AaiNqTenant());
132         tenantItem.getTenant().setTenantId("dhv-test-tenant");
133         tenantItem.getTenant().setTenantName("dhv-test-tenant-name");
134         tenantItem.getTenant().setResourceVersion("1485366334");
135         tenantItem.setItems(new AaiNqInventoryResponseItems());
136         tenantItem.getItems().setInventoryResponseItems(new LinkedList<>());
137         tenantItem.getItems().getInventoryResponseItems().add(cloudItem);
138
139         AaiNqInventoryResponseItem vserverItem = new AaiNqInventoryResponseItem();
140         vserverItem.setVserver(new AaiNqVServer());
141         vserverItem.getVserver().setVserverId("dhv-test-vserver");
142         vserverItem.getVserver().setVserverName("dhv-test-vserver-name");
143         vserverItem.getVserver().setVserverName2("dhv-test-vserver-name2");
144         vserverItem.getVserver().setProvStatus("PREPROV");
145         vserverItem.getVserver().setVserverSelflink("dhv-test-vserver-selflink");
146         vserverItem.getVserver().setInMaint(false);
147         vserverItem.getVserver().setIsClosedLoopDisabled(false);
148         vserverItem.getVserver().setResourceVersion("1485366417");
149         vserverItem.setItems(new AaiNqInventoryResponseItems());
150         vserverItem.getItems().setInventoryResponseItems(new LinkedList<>());
151         vserverItem.getItems().getInventoryResponseItems().add(genericVnfItem);
152         vserverItem.getItems().getInventoryResponseItems().add(tenantItem);
153
154         AaiNqResponse aaiResponse = new AaiNqResponse();
155         aaiResponse.getInventoryResponseItems().add(vserverItem);
156         AaiNqResponseWrapper aaiNqResponseWarapper = new AaiNqResponseWrapper();
157         aaiNqResponseWarapper.setAaiNqResponse(aaiResponse);
158         aaiNqResponseWarapper.setRequestId(UUID.randomUUID());
159         assertNotNull(aaiNqResponseWarapper);
160         logger.info(Serialization.gsonPretty.toJson(aaiNqResponseWarapper));
161
162         AaiNqResponse aaiResponse2 = new AaiNqResponse();
163         aaiResponse2.getInventoryResponseItems().add(vserverItem);
164         AaiNqResponseWrapper aaiNqResponseWarapper2 = new AaiNqResponseWrapper(UUID.randomUUID(), aaiResponse);
165         assertNotNull(aaiNqResponseWarapper2);
166         assertNotNull(aaiNqResponseWarapper2.getRequestId());
167         assertNotNull(aaiNqResponseWarapper2.getAaiNqResponse());
168         logger.info(Serialization.gsonPretty.toJson(aaiNqResponseWarapper2));
169     }
170
171     @Test
172     public void testCountVfModules() throws Exception {
173         AaiNqResponseWrapper resp;
174
175         // null item
176         resp = new AaiNqResponseWrapper();
177         assertEquals(0, resp.countVfModules());
178         
179         // no names
180         resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoNames.json"));
181         assertEquals(0, resp.countVfModules());
182
183         // has VF modules
184         resp.setAaiNqResponse(load("AaiNqResponseWrapper-Vserver.json"));
185         assertEquals(3, resp.countVfModules());
186     }
187
188     @Test
189     public void testGenVfModuleName() throws Exception {
190         AaiNqResponseWrapper resp;
191
192         // null item
193         resp = new AaiNqResponseWrapper();
194         assertEquals(null, resp.genVfModuleName());
195         
196         // no names
197         resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoNames.json"));
198         assertEquals(null, resp.genVfModuleName());
199
200         // has VF modules
201         resp.setAaiNqResponse(load("AaiNqResponseWrapper-Vserver.json"));
202         assertEquals("my-module-abc_124", resp.genVfModuleName());
203     }
204
205     @Test
206     public void testGetVfModules() throws Exception {
207         AaiNqResponseWrapper resp;
208
209         // null item
210         resp = new AaiNqResponseWrapper();
211         assertTrue(resp.getVfModuleItems(true).isEmpty());
212
213         // missing item
214         resp = new AaiNqResponseWrapper();
215         resp.setAaiNqResponse(new AaiNqResponse());
216         assertTrue(resp.getVfModuleItems(false).isEmpty());
217
218         // null item list
219         resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoItems.json"));
220         resp.getAaiNqResponse().getInventoryResponseItems().get(0).getItems().getInventoryResponseItems().get(0)
221                         .getItems().setInventoryResponseItems(null);
222         assertTrue(resp.getVfModuleItems(false).isEmpty());
223         
224         // no modules
225         resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoModules.json"));
226         assertTrue(resp.getVfModuleItems(false).isEmpty());
227         
228         // no names
229         resp.setAaiNqResponse(load("AaiNqResponseWrapper-NoNames.json"));
230         List<AaiNqInventoryResponseItem> lst;
231         lst = resp.getVfModuleItems(false);
232         assertEquals(0, lst.size());
233
234         // base VF modules
235         resp.setAaiNqResponse(load("AaiNqResponseWrapper-Vserver.json"));
236         lst = resp.getVfModuleItems(true);
237         assertEquals(1, lst.size());
238         assertEquals("Vfmodule_vLBMS-0809-1", lst.get(0).getVfModule().getVfModuleName());
239         
240         // non base VF modules
241         resp.setAaiNqResponse(load("AaiNqResponseWrapper-Vserver.json"));
242         lst = resp.getVfModuleItems(false);
243         assertEquals(3, lst.size());
244         int index;
245         index = 0;
246         assertEquals("my-module-abc_1", lst.get(index++).getVfModule().getVfModuleName());
247         assertEquals("my-module-abc_123", lst.get(index++).getVfModule().getVfModuleName());
248         assertEquals("my-module-abc_34", lst.get(index++).getVfModule().getVfModuleName());
249     }
250
251     /**
252      * Loads a response from a JSON file.
253      *
254      * @param fileName name of the file containing the JSON response
255      * @return the response
256      * @throws IOException if the file cannot be read
257      */
258     private AaiNqResponse load(String fileName) throws IOException {
259         String json = IOUtils.toString(getClass().getResource(fileName), StandardCharsets.UTF_8);
260         return Serialization.gsonPretty.fromJson(json, AaiNqResponse.class);
261     }
262 }