2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.aai.rest;
23 import static junit.framework.TestCase.fail;
25 import static org.hamcrest.CoreMatchers.containsString;
26 import static org.hamcrest.CoreMatchers.not;
27 import static org.hamcrest.MatcherAssert.assertThat;
28 import static org.hamcrest.core.Is.is;
29 import static org.junit.Assert.assertEquals;
30 import static org.junit.Assert.assertNotEquals;
31 import static org.junit.Assert.assertNotNull;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35 import com.jayway.jsonpath.JsonPath;
39 import javax.ws.rs.core.Response;
41 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
42 import org.apache.tinkerpop.gremlin.structure.Edge;
43 import org.janusgraph.core.JanusGraphTransaction;
44 import org.junit.After;
45 import org.junit.Before;
46 import org.junit.Test;
47 import org.junit.runner.RunWith;
48 import org.junit.runners.Parameterized;
49 import org.onap.aai.AAISetup;
50 import org.onap.aai.HttpTestUtil;
51 import org.onap.aai.PayloadUtil;
52 import org.onap.aai.dbmap.AAIGraph;
53 import org.onap.aai.serialization.engines.QueryStyle;
54 import org.onap.aai.setup.SchemaVersion;
55 import org.springframework.test.annotation.DirtiesContext;
57 @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
58 @RunWith(value = Parameterized.class)
59 public class PrivateEdgeIntegrationTest extends AAISetup {
61 private static Logger logger = LoggerFactory.getLogger(PserverTest.class);
62 private HttpTestUtil httpTestUtil;
63 private Map<String, String> relationshipMap;
65 private String modelId;
66 private String modelVerId;
68 @Parameterized.Parameter(value = 0)
69 public QueryStyle queryStyle;
71 @Parameterized.Parameter(value = 1)
72 public SchemaVersion version;
74 @Parameterized.Parameters(name = "QueryStyle.{0} Version.{1}")
75 public static Collection<Object[]> data() {
76 return Arrays.asList(new Object[][] {{QueryStyle.TRAVERSAL, new SchemaVersion("v10")},
77 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v10")}, {QueryStyle.TRAVERSAL, new SchemaVersion("v11")},
78 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v11")}, {QueryStyle.TRAVERSAL, new SchemaVersion("v12")},
79 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v12")}, {QueryStyle.TRAVERSAL, new SchemaVersion("v13")},
80 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v13")}, {QueryStyle.TRAVERSAL, new SchemaVersion("v14")},
81 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v14")}});
85 public void setUpModelData() throws Exception {
86 httpTestUtil = new HttpTestUtil(QueryStyle.TRAVERSAL);
87 relationshipMap = new HashMap<>();
89 modelId = "test-model-" + UUID.randomUUID().toString();
90 modelVerId = "test-model-ver-" + UUID.randomUUID().toString();
92 createModel(modelId, modelVerId);
95 private void createModel(String modelId, String modelVerId) throws Exception {
96 Map<String, String> modelTemplateValues = new HashMap<>();
97 modelTemplateValues.put("model-invariant-id", modelId);
99 String modelPayload = PayloadUtil.getTemplatePayload("model.json", modelTemplateValues);
101 Response response = httpTestUtil.doPut(
102 "/aai/" + version.toString() + "/service-design-and-creation/models/model/" + modelId, modelPayload);
104 assertNotNull(response);
105 assertThat("Model was not successfully created", response.getStatus(), is(201));
107 Map<String, String> modelVersionTemplateValues = new HashMap<>();
108 modelVersionTemplateValues.put("model-version-id", modelVerId);
109 modelVersionTemplateValues.put("model-name", "some-model");
110 modelVersionTemplateValues.put("model-version", "testValue");
112 String modelVersionPayload = PayloadUtil.getTemplatePayload("model-ver.json", modelVersionTemplateValues);
114 response = httpTestUtil.doPut("/aai/" + version.toString() + "/service-design-and-creation/models/model/"
115 + modelId + "/model-vers/model-ver/" + modelVerId, modelVersionPayload);
116 assertNotNull(response);
117 assertThat("Model was not successfully created", response.getStatus(), is(201));
121 public void testPutGenericVnfWithModelInfoToMatchExistingModelAndCheckIfPrivateEdgeCreated() throws Exception {
123 Map<String, String> genericVnfHashMap = new HashMap<>();
124 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
126 genericVnfHashMap.put("vnf-id", genericVnf);
127 genericVnfHashMap.put("model-invariant-id", modelId);
128 genericVnfHashMap.put("model-version-id", modelVerId);
129 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
131 Response response = httpTestUtil.doPut(
132 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
133 assertNotNull("Response returned null", response);
134 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
137 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
138 assertNotNull("List of edges should not be null", edges);
139 assertThat(edges.size(), is(1));
140 Edge oldEdge = edges.get(0);
141 assertNotNull(oldEdge);
143 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
144 assertNotNull("Response returned null", response);
145 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
146 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
148 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
149 response = httpTestUtil.doDelete(
150 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, resourceVersion);
151 assertNotNull("Response returned null", response);
152 assertThat("Check the generic vnf is deleted", response.getStatus(), is(204));
154 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
155 assertNotNull("List of edges should not be null", edges);
156 assertThat(edges.size(), is(0));
160 public void testPutGenericVnfWithModelInfoToMatchExistingModelAndDoAnotherPutAndDontIncludeModelInfoAndPrivateEdgeShouldBeDeleted()
163 Map<String, String> genericVnfHashMap = new HashMap<>();
164 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
166 genericVnfHashMap.put("vnf-id", genericVnf);
167 genericVnfHashMap.put("model-invariant-id", modelId);
168 genericVnfHashMap.put("model-version-id", modelVerId);
169 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
171 Response response = httpTestUtil.doPut(
172 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
173 assertNotNull("Response returned null", response);
174 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
176 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
177 assertNotNull("Response returned null", response);
178 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
179 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
182 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
183 assertNotNull("List of edges should not be null", edges);
184 assertThat(edges.size(), is(1));
185 Edge oldEdge = edges.get(0);
186 assertNotNull(oldEdge);
188 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
189 String newGenericVnfPayload = "{\n" + " \"vnf-id\": \"" + genericVnf + "\",\n"
190 + " \"vnf-type\": \"someval\",\n" + " \"vnf-name\": \"someval\"\n," + " \"resource-version\": \""
191 + resourceVersion + "\"" + "}";
193 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
194 newGenericVnfPayload);
195 assertNotNull("Response returned from second put is null", response);
196 assertThat("Check the generic vnf is updated", response.getStatus(), is(200));
198 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
199 assertNotNull("Response returned from second put is null", response);
200 assertThat("Check the generic vnf is updated", response.getStatus(), is(200));
202 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
203 assertNotNull("List of edges should not be null", edges);
204 assertThat("Expected the edges to be zero since updated with no model info", edges.size(), is(0));
206 resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
207 response = httpTestUtil.doDelete(
208 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, resourceVersion);
209 assertNotNull("Response returned null", response);
210 assertThat("Check the generic vnf is deleted", response.getStatus(), is(204));
212 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
213 assertNotNull("List of edges should not be null", edges);
214 assertThat(edges.size(), is(0));
218 public void testPutGenericVnfWithModelInfoToMatchExistingModelAndCheckIfPrivateEdgeCreatedAndAlsoDoAnotherPutSameDataAndMakeSureEdgeIsStillThere()
220 Map<String, String> genericVnfHashMap = new HashMap<>();
221 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
223 genericVnfHashMap.put("vnf-id", genericVnf);
224 genericVnfHashMap.put("model-invariant-id", modelId);
225 genericVnfHashMap.put("model-version-id", modelVerId);
226 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
228 Response response = httpTestUtil.doPut(
229 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
230 assertNotNull("Response returned null", response);
231 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
233 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
234 assertNotNull("Response returned null", response);
235 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
236 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
239 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
240 assertNotNull("List of edges should not be null", edges);
241 assertThat(edges.size(), is(1));
242 Edge oldEdge = edges.get(0);
243 assertNotNull(oldEdge);
245 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
246 genericVnfHashMap.put("resource-version", resourceVersion);
247 String genericVnfPayloadWithResource =
248 PayloadUtil.getTemplatePayload("generic-vnf-resource.json", genericVnfHashMap);
250 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
251 genericVnfPayloadWithResource);
252 assertNotNull("Response returned null", response);
253 assertThat("Check the generic vnf is updated", response.getStatus(), is(200));
255 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
256 assertNotNull("Response returned null", response);
257 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
258 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
260 resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
261 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
262 assertNotNull("List of edges should not be null", edges);
263 assertThat(edges.size(), is(1));
264 Edge newEdge = edges.get(0);
265 assertNotNull(newEdge);
266 assertEquals(oldEdge, newEdge);
268 response = httpTestUtil.doDelete(
269 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, resourceVersion);
270 assertNotNull("Response returned null", response);
271 assertThat("Check the generic vnf is deleted", response.getStatus(), is(204));
273 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
274 assertNotNull("List of edges should not be null", edges);
275 assertThat(edges.size(), is(0));
279 public void testPutGenericVnfWithModelThatDoesntExistAndCheckIfItReturnsNotFound() throws Exception {
280 Map<String, String> genericVnfHashMap = new HashMap<>();
281 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
283 genericVnfHashMap.put("vnf-id", genericVnf);
284 genericVnfHashMap.put("model-invariant-id", "random-wrong-model");
285 genericVnfHashMap.put("model-version-id", "random-wrong-model-ver");
286 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
288 Response response = httpTestUtil.doPut(
289 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
290 assertNotNull("Response returned null", response);
292 String body = response.getEntity().toString();
294 logger.info("Response from the PUT request: " + body);
295 assertThat("Check the generic vnf is created", response.getStatus(), is(404));
296 assertThat(body, containsString("Node Not Found"));
300 public void testPutGenericVnfWithModelMissingPartOfKeyReturnsBadRequest() throws Exception {
302 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
303 String genericVnfPayload = "{\n" + " \"vnf-id\": \"" + genericVnf + "\",\n" + " \"vnf-type\": \"someval\",\n"
304 + " \"vnf-name\": \"someval\",\n" + " \"model-invariant-id\": \"some-model\"\n" + "}";
306 Response response = httpTestUtil.doPut(
307 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
308 assertNotNull("Response returned null", response);
310 String body = response.getEntity().toString();
311 logger.info("Response from the PUT request: " + body);
312 assertThat("Check the generic vnf is created", response.getStatus(), is(400));
313 assertThat(body, containsString("model-invariant-id requires model-version-id"));
317 public void testPutGenericVnfWithModelInfoToMatchExistingModelAndDeleteModelVerAndCheckIfPreventDeleteFailsWithBadRequest()
320 Map<String, String> genericVnfHashMap = new HashMap<>();
321 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
323 genericVnfHashMap.put("vnf-id", genericVnf);
324 genericVnfHashMap.put("model-invariant-id", modelId);
325 genericVnfHashMap.put("model-version-id", modelVerId);
326 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
328 Response response = httpTestUtil.doPut(
329 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
330 assertNotNull("Response returned null", response);
331 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
334 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
335 assertNotNull("List of edges should not be null", edges);
336 assertThat(edges.size(), is(1));
337 Edge oldEdge = edges.get(0);
338 assertNotNull(oldEdge);
340 response = httpTestUtil.doGet("/aai/" + version.toString() + "/service-design-and-creation/models/model/"
341 + modelId + "/model-vers/model-ver/" + modelVerId);
342 assertNotNull(response);
343 assertThat(response.getStatus(), is(200));
344 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
345 response = httpTestUtil.doDelete("/aai/" + version.toString() + "/service-design-and-creation/models/model/"
346 + modelId + "/model-vers/model-ver/" + modelVerId, resourceVersion);
347 assertNotNull("Response returned null", response);
348 assertThat("Check the generic vnf is deleted", response.getStatus(), is(400));
349 assertThat(response.getEntity().toString(),
350 containsString(" Please clean up references from the following types [generic-vnf]"));
354 public void testPutWithGenericVnfToExistingModelAndUpdateWithNewModelInfoAndEdgeToOldModelShouldBeDeletedAndNewEdgeToNewModelShouldBeCreated()
357 Map<String, String> genericVnfHashMap = new HashMap<>();
358 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
360 genericVnfHashMap.put("vnf-id", genericVnf);
361 genericVnfHashMap.put("model-invariant-id", modelId);
362 genericVnfHashMap.put("model-version-id", modelVerId);
363 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
365 Response response = httpTestUtil.doPut(
366 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
367 assertNotNull("Response returned null", response);
368 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
371 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
372 assertNotNull("List of edges should not be null", edges);
373 assertThat(edges.size(), is(1));
374 Edge oldEdge = edges.get(0);
375 assertNotNull(oldEdge);
377 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
378 assertNotNull("Response returned null", response);
379 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
380 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
382 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
384 String newModelId = "test-model-" + UUID.randomUUID().toString();
385 String newModelVerId = "test-model-ver-" + UUID.randomUUID().toString();
387 createModel(newModelId, newModelVerId);
389 genericVnfHashMap.put("resource-version", resourceVersion);
390 genericVnfHashMap.put("model-invariant-id", newModelId);
391 genericVnfHashMap.put("model-version-id", newModelVerId);
393 String genericVnfPayloadWithResource =
394 PayloadUtil.getTemplatePayload("generic-vnf-resource.json", genericVnfHashMap);
396 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
397 genericVnfPayloadWithResource);
398 assertNotNull("Response returned null", response);
399 assertThat("Check the generic vnf is successfully updated based on new model", response.getStatus(), is(200));
401 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
402 assertNotNull("List of edges should not be null", edges);
403 assertThat(edges.size(), is(1));
404 Edge newEdge = edges.get(0);
405 assertNotNull(newEdge);
406 assertNotEquals(oldEdge, newEdge);
408 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
409 assertNotNull("Response returned null", response);
410 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
411 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
412 resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
414 response = httpTestUtil.doDelete(
415 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, resourceVersion);
416 assertNotNull("Response returned null", response);
417 assertThat("Check the generic vnf is deleted", response.getStatus(), is(204));
419 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
420 assertNotNull("List of edges should not be null", edges);
421 assertThat(edges.size(), is(0));
425 public void testPutWithGenericVnfToExistingModelAndUpdateWithNewModelInfoThatDoesntExistAndCheckIfReturnsNotFoundAndOldEdgeShouldNotBeDeleted()
428 Map<String, String> genericVnfHashMap = new HashMap<>();
429 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
431 genericVnfHashMap.put("vnf-id", genericVnf);
432 genericVnfHashMap.put("model-invariant-id", modelId);
433 genericVnfHashMap.put("model-version-id", modelVerId);
434 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
436 Response response = httpTestUtil.doPut(
437 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
438 assertNotNull("Response returned null", response);
439 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
442 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
443 assertNotNull("List of edges should not be null", edges);
444 assertThat(edges.size(), is(1));
445 Edge oldEdge = edges.get(0);
446 assertNotNull(oldEdge);
448 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
449 assertNotNull("Response returned null", response);
450 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
451 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
453 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
455 String newModelId = "test-model-" + UUID.randomUUID().toString();
456 String newModelVerId = "test-model-ver-" + UUID.randomUUID().toString();
458 genericVnfHashMap.put("resource-version", resourceVersion);
459 genericVnfHashMap.put("model-invariant-id", newModelId);
460 genericVnfHashMap.put("model-version-id", newModelVerId);
462 String genericVnfPayloadWithResource =
463 PayloadUtil.getTemplatePayload("generic-vnf-resource.json", genericVnfHashMap);
465 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
466 genericVnfPayloadWithResource);
467 assertNotNull("Response returned null", response);
468 assertThat("Check the generic vnf is failed due to missing model ver", response.getStatus(), is(404));
470 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
471 assertNotNull("List of edges should not be null", edges);
472 assertThat(edges.size(), is(1));
473 Edge newEdge = edges.get(0);
474 assertNotNull(newEdge);
475 assertEquals(oldEdge, newEdge);
479 public void testPutWithGenericVnfToExistingModelAndUpdateVnfWithModelMissingPartOfKeyAndUpdateShouldFailAndOldEdgeShouldStillExist()
482 Map<String, String> genericVnfHashMap = new HashMap<>();
483 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
485 genericVnfHashMap.put("vnf-id", genericVnf);
486 genericVnfHashMap.put("model-invariant-id", modelId);
487 genericVnfHashMap.put("model-version-id", modelVerId);
488 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
490 Response response = httpTestUtil.doPut(
491 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
492 assertNotNull("Response returned null", response);
493 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
496 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
497 assertNotNull("List of edges should not be null", edges);
498 assertThat(edges.size(), is(1));
499 Edge oldEdge = edges.get(0);
500 assertNotNull(oldEdge);
502 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
503 assertNotNull("Response returned null", response);
504 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
505 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
507 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
509 String newModelId = "test-model-" + UUID.randomUUID().toString();
510 String newModelVerId = "test-model-ver-" + UUID.randomUUID().toString();
512 createModel(newModelId, newModelVerId);
514 genericVnfHashMap.put("resource-version", resourceVersion);
515 genericVnfHashMap.put("model-invariant-id", newModelId);
516 genericVnfHashMap.put("model-version-id", newModelVerId);
518 String genericVnfPayloadWithResource = "{\n" + " \"vnf-id\": \"" + genericVnf + "\",\n"
519 + " \"vnf-type\": \"someval\",\n" + " \"vnf-name\": \"someval\",\n" + " \"model-invariant-id\": \""
520 + newModelId + "\",\n" + " \"resource-version\": \"${resource-version}\"\n" + "}";
522 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
523 genericVnfPayloadWithResource);
524 assertNotNull("Response returned null", response);
525 assertThat("Check the generic vnf is failed due to missing model ver", response.getStatus(), is(400));
526 assertThat(response.getEntity().toString(), containsString("model-invariant-id requires model-version-id"));
528 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
529 assertNotNull("List of edges should not be null", edges);
530 assertThat(edges.size(), is(1));
531 Edge newEdge = edges.get(0);
532 assertNotNull(newEdge);
533 assertEquals(oldEdge, newEdge);
537 public void testPutCustomerWithServiceInstanceThatHasModelVerThatExistsInDbAndDoGetOnCustomerAndCheckIfRelationshipIsNotThere()
540 Map<String, String> customerHashMap = new HashMap<>();
542 customerHashMap.put("global-customer-id", "test-customer-" + UUID.randomUUID().toString());
543 customerHashMap.put("subscription-type", "test-subtype-" + UUID.randomUUID().toString());
544 customerHashMap.put("service-instance-id", "test-tenant-" + UUID.randomUUID().toString());
545 customerHashMap.put("model-invariant-id", modelId);
546 customerHashMap.put("model-version-id", modelVerId);
548 String customer = PayloadUtil.getTemplatePayload("customer.json", customerHashMap);
549 Response response = httpTestUtil.doPut("/aai/" + version.toString() + "/business/customers/customer/"
550 + customerHashMap.get("global-customer-id"), customer);
551 assertNotNull("Response returned null", response);
552 assertThat("Check the cloud region is created with link to generic vnf", response.getStatus(), is(201));
555 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
556 assertNotNull("List of edges should not be null", edges);
557 assertThat(edges.size(), is(1));
558 Edge oldEdge = edges.get(0);
559 assertNotNull(oldEdge);
561 response = httpTestUtil.doGet("/aai/" + version.toString() + "/business/customers/customer/"
562 + customerHashMap.get("global-customer-id"));
563 assertNotNull("Response returned null", response);
564 assertThat("Check the customer is returned", response.getStatus(), is(200));
565 assertThat(response.getEntity().toString(), not(containsString("\"related-to\":\"model-ver\"")));
567 String url = "/aai/" + version + "/business/customers/customer/" + customerHashMap.get("global-customer-id")
568 + "/service-subscriptions/service-subscription/" + customerHashMap.get("subscription-type")
569 + "/service-instances/service-instance/" + customerHashMap.get("service-instance-id");
571 String genericVnf = "vnf-" + UUID.randomUUID().toString();
572 String genericVnfPayload = "{\n" + " \"vnf-id\": \"" + genericVnf + "\",\n" + " \"vnf-type\": \"someval\",\n"
573 + " \"vnf-name\": \"someval\",\n" + " \"relationship-list\": {\n" + " \"relationship\": [\n"
574 + " {\n" + " \"related-to\": \"service-instance\",\n" + " \"related-link\": \"" + url
575 + "\"\n" + " }\n" + " ]\n" + " }\n" + "}\n";
577 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
579 assertNotNull("Response returned null", response);
580 assertThat("Check the customer is returned", response.getStatus(), is(201));
582 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
583 assertNotNull("Response returned null", response);
584 assertThat("Check the customer is returned", response.getStatus(), is(200));
585 assertThat(response.getEntity().toString(), containsString("\"related-to\":\"service-instance\""));
587 response = httpTestUtil.doGet("/aai/" + version.toString() + "/business/customers/customer/"
588 + customerHashMap.get("global-customer-id"));
589 assertNotNull("Response returned null", response);
590 assertThat("Check the customer is returned", response.getStatus(), is(200));
591 assertThat(response.getEntity().toString(), not(containsString("\"related-to\":\"model-ver\"")));
592 assertThat(response.getEntity().toString(), containsString("\"related-to\":\"generic-vnf\""));
597 public void tearDown() {
599 JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction();
600 boolean success = true;
604 GraphTraversalSource g = transaction.traversal();
606 g.V().has("source-of-truth", "JUNIT").toList().forEach(v -> v.remove());
608 } catch (Exception ex) {
610 logger.error("Unable to remove the vertexes", ex);
613 transaction.commit();
615 transaction.rollback();
616 fail("Unable to teardown the graph");