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;
24 import static org.hamcrest.CoreMatchers.containsString;
25 import static org.hamcrest.CoreMatchers.not;
26 import static org.hamcrest.MatcherAssert.assertThat;
27 import static org.hamcrest.core.Is.is;
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertNotEquals;
30 import static org.junit.Assert.assertNotNull;
32 import com.jayway.jsonpath.JsonPath;
36 import javax.ws.rs.core.Response;
38 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
39 import org.apache.tinkerpop.gremlin.structure.Edge;
40 import org.janusgraph.core.JanusGraphTransaction;
41 import org.junit.After;
42 import org.junit.Before;
43 import org.junit.Test;
44 import org.junit.runner.RunWith;
45 import org.junit.runners.Parameterized;
46 import org.onap.aai.AAISetup;
47 import org.onap.aai.HttpTestUtil;
48 import org.onap.aai.PayloadUtil;
49 import org.onap.aai.dbmap.AAIGraph;
50 import org.onap.aai.serialization.engines.QueryStyle;
51 import org.onap.aai.setup.SchemaVersion;
52 import org.slf4j.Logger;
53 import org.slf4j.LoggerFactory;
54 import org.springframework.test.annotation.DirtiesContext;
56 @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
57 @RunWith(value = Parameterized.class)
58 public class PrivateEdgeIntegrationTest extends AAISetup {
60 private static Logger logger = LoggerFactory.getLogger(PserverTest.class);
61 private HttpTestUtil httpTestUtil;
62 private Map<String, String> relationshipMap;
64 private String modelId;
65 private String modelVerId;
67 @Parameterized.Parameter(value = 0)
68 public QueryStyle queryStyle;
70 @Parameterized.Parameter(value = 1)
71 public SchemaVersion version;
73 @Parameterized.Parameters(name = "QueryStyle.{0} Version.{1}")
74 public static Collection<Object[]> data() {
75 return Arrays.asList(new Object[][] {{QueryStyle.TRAVERSAL, new SchemaVersion("v10")},
76 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v10")}, {QueryStyle.TRAVERSAL, new SchemaVersion("v11")},
77 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v11")}, {QueryStyle.TRAVERSAL, new SchemaVersion("v12")},
78 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v12")}, {QueryStyle.TRAVERSAL, new SchemaVersion("v13")},
79 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v13")}, {QueryStyle.TRAVERSAL, new SchemaVersion("v14")},
80 {QueryStyle.TRAVERSAL_URI, new SchemaVersion("v14")}});
84 public void setUpModelData() throws Exception {
85 httpTestUtil = new HttpTestUtil(QueryStyle.TRAVERSAL);
86 relationshipMap = new HashMap<>();
88 modelId = "test-model-" + UUID.randomUUID().toString();
89 modelVerId = "test-model-ver-" + UUID.randomUUID().toString();
91 createModel(modelId, modelVerId);
94 private void createModel(String modelId, String modelVerId) throws Exception {
95 Map<String, String> modelTemplateValues = new HashMap<>();
96 modelTemplateValues.put("model-invariant-id", modelId);
98 String modelPayload = PayloadUtil.getTemplatePayload("model.json", modelTemplateValues);
100 Response response = httpTestUtil.doPut(
101 "/aai/" + version.toString() + "/service-design-and-creation/models/model/" + modelId, modelPayload);
103 assertNotNull(response);
104 assertThat("Model was not successfully created", response.getStatus(), is(201));
106 Map<String, String> modelVersionTemplateValues = new HashMap<>();
107 modelVersionTemplateValues.put("model-version-id", modelVerId);
108 modelVersionTemplateValues.put("model-name", "some-model");
109 modelVersionTemplateValues.put("model-version", "testValue");
111 String modelVersionPayload = PayloadUtil.getTemplatePayload("model-ver.json", modelVersionTemplateValues);
113 response = httpTestUtil.doPut("/aai/" + version.toString() + "/service-design-and-creation/models/model/"
114 + modelId + "/model-vers/model-ver/" + modelVerId, modelVersionPayload);
115 assertNotNull(response);
116 assertThat("Model was not successfully created", response.getStatus(), is(201));
120 public void testPutGenericVnfWithModelInfoToMatchExistingModelAndCheckIfPrivateEdgeCreated() throws Exception {
122 Map<String, String> genericVnfHashMap = new HashMap<>();
123 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
125 genericVnfHashMap.put("vnf-id", genericVnf);
126 genericVnfHashMap.put("model-invariant-id", modelId);
127 genericVnfHashMap.put("model-version-id", modelVerId);
128 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
130 Response response = httpTestUtil.doPut(
131 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
132 assertNotNull("Response returned null", response);
133 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
136 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
137 assertNotNull("List of edges should not be null", edges);
138 assertThat(edges.size(), is(1));
139 Edge oldEdge = edges.get(0);
140 assertNotNull(oldEdge);
142 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
143 assertNotNull("Response returned null", response);
144 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
145 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
147 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
148 response = httpTestUtil.doDelete(
149 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, resourceVersion);
150 assertNotNull("Response returned null", response);
151 assertThat("Check the generic vnf is deleted", response.getStatus(), is(204));
153 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
154 assertNotNull("List of edges should not be null", edges);
155 assertThat(edges.size(), is(0));
159 public void testPutGenericVnfWithModelInfoToMatchExistingModelAndDoAnotherPutAndDontIncludeModelInfoAndPrivateEdgeShouldBeDeleted()
162 Map<String, String> genericVnfHashMap = new HashMap<>();
163 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
165 genericVnfHashMap.put("vnf-id", genericVnf);
166 genericVnfHashMap.put("model-invariant-id", modelId);
167 genericVnfHashMap.put("model-version-id", modelVerId);
168 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
170 Response response = httpTestUtil.doPut(
171 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
172 assertNotNull("Response returned null", response);
173 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
175 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
176 assertNotNull("Response returned null", response);
177 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
178 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
181 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
182 assertNotNull("List of edges should not be null", edges);
183 assertThat(edges.size(), is(1));
184 Edge oldEdge = edges.get(0);
185 assertNotNull(oldEdge);
187 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
188 String newGenericVnfPayload = "{\n" + " \"vnf-id\": \"" + genericVnf + "\",\n"
189 + " \"vnf-type\": \"someval\",\n" + " \"vnf-name\": \"someval\"\n," + " \"resource-version\": \""
190 + resourceVersion + "\"" + "}";
192 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
193 newGenericVnfPayload);
194 assertNotNull("Response returned from second put is null", response);
195 assertThat("Check the generic vnf is updated", response.getStatus(), is(200));
197 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
198 assertNotNull("Response returned from second put is null", response);
199 assertThat("Check the generic vnf is updated", response.getStatus(), is(200));
201 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
202 assertNotNull("List of edges should not be null", edges);
203 assertThat("Expected the edges to be zero since updated with no model info", edges.size(), is(0));
205 resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
206 response = httpTestUtil.doDelete(
207 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, resourceVersion);
208 assertNotNull("Response returned null", response);
209 assertThat("Check the generic vnf is deleted", response.getStatus(), is(204));
211 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
212 assertNotNull("List of edges should not be null", edges);
213 assertThat(edges.size(), is(0));
217 public void testPutGenericVnfWithModelInfoToMatchExistingModelAndCheckIfPrivateEdgeCreatedAndAlsoDoAnotherPutSameDataAndMakeSureEdgeIsStillThere()
219 Map<String, String> genericVnfHashMap = new HashMap<>();
220 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
222 genericVnfHashMap.put("vnf-id", genericVnf);
223 genericVnfHashMap.put("model-invariant-id", modelId);
224 genericVnfHashMap.put("model-version-id", modelVerId);
225 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
227 Response response = httpTestUtil.doPut(
228 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
229 assertNotNull("Response returned null", response);
230 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
232 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
233 assertNotNull("Response returned null", response);
234 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
235 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
238 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
239 assertNotNull("List of edges should not be null", edges);
240 assertThat(edges.size(), is(1));
241 Edge oldEdge = edges.get(0);
242 assertNotNull(oldEdge);
244 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
245 genericVnfHashMap.put("resource-version", resourceVersion);
246 String genericVnfPayloadWithResource =
247 PayloadUtil.getTemplatePayload("generic-vnf-resource.json", genericVnfHashMap);
249 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
250 genericVnfPayloadWithResource);
251 assertNotNull("Response returned null", response);
252 assertThat("Check the generic vnf is updated", response.getStatus(), is(200));
254 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
255 assertNotNull("Response returned null", response);
256 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
257 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
259 resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
260 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
261 assertNotNull("List of edges should not be null", edges);
262 assertThat(edges.size(), is(1));
263 Edge newEdge = edges.get(0);
264 assertNotNull(newEdge);
265 assertEquals(oldEdge, newEdge);
267 response = httpTestUtil.doDelete(
268 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, resourceVersion);
269 assertNotNull("Response returned null", response);
270 assertThat("Check the generic vnf is deleted", response.getStatus(), is(204));
272 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
273 assertNotNull("List of edges should not be null", edges);
274 assertThat(edges.size(), is(0));
278 public void testPutGenericVnfWithModelThatDoesntExistAndCheckIfItReturnsNotFound() throws Exception {
279 Map<String, String> genericVnfHashMap = new HashMap<>();
280 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
282 genericVnfHashMap.put("vnf-id", genericVnf);
283 genericVnfHashMap.put("model-invariant-id", "random-wrong-model");
284 genericVnfHashMap.put("model-version-id", "random-wrong-model-ver");
285 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
287 Response response = httpTestUtil.doPut(
288 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
289 assertNotNull("Response returned null", response);
291 String body = response.getEntity().toString();
293 logger.info("Response from the PUT request: " + body);
294 assertThat("Check the generic vnf is created", response.getStatus(), is(404));
295 assertThat(body, containsString("Node Not Found"));
299 public void testPutGenericVnfWithModelMissingPartOfKeyReturnsBadRequest() throws Exception {
301 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
302 String genericVnfPayload = "{\n" + " \"vnf-id\": \"" + genericVnf + "\",\n" + " \"vnf-type\": \"someval\",\n"
303 + " \"vnf-name\": \"someval\",\n" + " \"model-invariant-id\": \"some-model\"\n" + "}";
305 Response response = httpTestUtil.doPut(
306 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
307 assertNotNull("Response returned null", response);
309 String body = response.getEntity().toString();
310 logger.info("Response from the PUT request: " + body);
311 assertThat("Check the generic vnf is created", response.getStatus(), is(400));
312 assertThat(body, containsString("model-invariant-id requires model-version-id"));
316 public void testPutGenericVnfWithModelInfoToMatchExistingModelAndDeleteModelVerAndCheckIfPreventDeleteFailsWithBadRequest()
319 Map<String, String> genericVnfHashMap = new HashMap<>();
320 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
322 genericVnfHashMap.put("vnf-id", genericVnf);
323 genericVnfHashMap.put("model-invariant-id", modelId);
324 genericVnfHashMap.put("model-version-id", modelVerId);
325 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
327 Response response = httpTestUtil.doPut(
328 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
329 assertNotNull("Response returned null", response);
330 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
333 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
334 assertNotNull("List of edges should not be null", edges);
335 assertThat(edges.size(), is(1));
336 Edge oldEdge = edges.get(0);
337 assertNotNull(oldEdge);
339 response = httpTestUtil.doGet("/aai/" + version.toString() + "/service-design-and-creation/models/model/"
340 + modelId + "/model-vers/model-ver/" + modelVerId);
341 assertNotNull(response);
342 assertThat(response.getStatus(), is(200));
343 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
344 response = httpTestUtil.doDelete("/aai/" + version.toString() + "/service-design-and-creation/models/model/"
345 + modelId + "/model-vers/model-ver/" + modelVerId, resourceVersion);
346 assertNotNull("Response returned null", response);
347 assertThat("Check the generic vnf is deleted", response.getStatus(), is(400));
348 assertThat(response.getEntity().toString(),
349 containsString(" Please clean up references from the following types [generic-vnf]"));
353 public void testPutWithGenericVnfToExistingModelAndUpdateWithNewModelInfoAndEdgeToOldModelShouldBeDeletedAndNewEdgeToNewModelShouldBeCreated()
356 Map<String, String> genericVnfHashMap = new HashMap<>();
357 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
359 genericVnfHashMap.put("vnf-id", genericVnf);
360 genericVnfHashMap.put("model-invariant-id", modelId);
361 genericVnfHashMap.put("model-version-id", modelVerId);
362 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
364 Response response = httpTestUtil.doPut(
365 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
366 assertNotNull("Response returned null", response);
367 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
370 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
371 assertNotNull("List of edges should not be null", edges);
372 assertThat(edges.size(), is(1));
373 Edge oldEdge = edges.get(0);
374 assertNotNull(oldEdge);
376 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
377 assertNotNull("Response returned null", response);
378 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
379 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
381 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
383 String newModelId = "test-model-" + UUID.randomUUID().toString();
384 String newModelVerId = "test-model-ver-" + UUID.randomUUID().toString();
386 createModel(newModelId, newModelVerId);
388 genericVnfHashMap.put("resource-version", resourceVersion);
389 genericVnfHashMap.put("model-invariant-id", newModelId);
390 genericVnfHashMap.put("model-version-id", newModelVerId);
392 String genericVnfPayloadWithResource =
393 PayloadUtil.getTemplatePayload("generic-vnf-resource.json", genericVnfHashMap);
395 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
396 genericVnfPayloadWithResource);
397 assertNotNull("Response returned null", response);
398 assertThat("Check the generic vnf is successfully updated based on new model", response.getStatus(), is(200));
400 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
401 assertNotNull("List of edges should not be null", edges);
402 assertThat(edges.size(), is(1));
403 Edge newEdge = edges.get(0);
404 assertNotNull(newEdge);
405 assertNotEquals(oldEdge, newEdge);
407 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
408 assertNotNull("Response returned null", response);
409 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
410 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
411 resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
413 response = httpTestUtil.doDelete(
414 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, resourceVersion);
415 assertNotNull("Response returned null", response);
416 assertThat("Check the generic vnf is deleted", response.getStatus(), is(204));
418 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
419 assertNotNull("List of edges should not be null", edges);
420 assertThat(edges.size(), is(0));
424 public void testPutWithGenericVnfToExistingModelAndUpdateWithNewModelInfoThatDoesntExistAndCheckIfReturnsNotFoundAndOldEdgeShouldNotBeDeleted()
427 Map<String, String> genericVnfHashMap = new HashMap<>();
428 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
430 genericVnfHashMap.put("vnf-id", genericVnf);
431 genericVnfHashMap.put("model-invariant-id", modelId);
432 genericVnfHashMap.put("model-version-id", modelVerId);
433 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
435 Response response = httpTestUtil.doPut(
436 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
437 assertNotNull("Response returned null", response);
438 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
441 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
442 assertNotNull("List of edges should not be null", edges);
443 assertThat(edges.size(), is(1));
444 Edge oldEdge = edges.get(0);
445 assertNotNull(oldEdge);
447 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
448 assertNotNull("Response returned null", response);
449 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
450 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
452 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
454 String newModelId = "test-model-" + UUID.randomUUID().toString();
455 String newModelVerId = "test-model-ver-" + UUID.randomUUID().toString();
457 genericVnfHashMap.put("resource-version", resourceVersion);
458 genericVnfHashMap.put("model-invariant-id", newModelId);
459 genericVnfHashMap.put("model-version-id", newModelVerId);
461 String genericVnfPayloadWithResource =
462 PayloadUtil.getTemplatePayload("generic-vnf-resource.json", genericVnfHashMap);
464 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
465 genericVnfPayloadWithResource);
466 assertNotNull("Response returned null", response);
467 assertThat("Check the generic vnf is failed due to missing model ver", response.getStatus(), is(404));
469 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
470 assertNotNull("List of edges should not be null", edges);
471 assertThat(edges.size(), is(1));
472 Edge newEdge = edges.get(0);
473 assertNotNull(newEdge);
474 assertEquals(oldEdge, newEdge);
478 public void testPutWithGenericVnfToExistingModelAndUpdateVnfWithModelMissingPartOfKeyAndUpdateShouldFailAndOldEdgeShouldStillExist()
481 Map<String, String> genericVnfHashMap = new HashMap<>();
482 String genericVnf = "test-generic-" + UUID.randomUUID().toString();
484 genericVnfHashMap.put("vnf-id", genericVnf);
485 genericVnfHashMap.put("model-invariant-id", modelId);
486 genericVnfHashMap.put("model-version-id", modelVerId);
487 String genericVnfPayload = PayloadUtil.getTemplatePayload("generic-vnf.json", genericVnfHashMap);
489 Response response = httpTestUtil.doPut(
490 "/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf, genericVnfPayload);
491 assertNotNull("Response returned null", response);
492 assertThat("Check the generic vnf is created", response.getStatus(), is(201));
495 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
496 assertNotNull("List of edges should not be null", edges);
497 assertThat(edges.size(), is(1));
498 Edge oldEdge = edges.get(0);
499 assertNotNull(oldEdge);
501 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
502 assertNotNull("Response returned null", response);
503 assertThat("Check the generic vnf is created", response.getStatus(), is(200));
504 assertThat(response.getEntity().toString(), not(containsString("relationship-list")));
506 String resourceVersion = JsonPath.read(response.getEntity().toString(), "$.resource-version");
508 String newModelId = "test-model-" + UUID.randomUUID().toString();
509 String newModelVerId = "test-model-ver-" + UUID.randomUUID().toString();
511 createModel(newModelId, newModelVerId);
513 genericVnfHashMap.put("resource-version", resourceVersion);
514 genericVnfHashMap.put("model-invariant-id", newModelId);
515 genericVnfHashMap.put("model-version-id", newModelVerId);
517 String genericVnfPayloadWithResource = "{\n" + " \"vnf-id\": \"" + genericVnf + "\",\n"
518 + " \"vnf-type\": \"someval\",\n" + " \"vnf-name\": \"someval\",\n" + " \"model-invariant-id\": \""
519 + newModelId + "\",\n" + " \"resource-version\": \"${resource-version}\"\n" + "}";
521 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
522 genericVnfPayloadWithResource);
523 assertNotNull("Response returned null", response);
524 assertThat("Check the generic vnf is failed due to missing model ver", response.getStatus(), is(400));
525 assertThat(response.getEntity().toString(), containsString("model-invariant-id requires model-version-id"));
527 edges = AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
528 assertNotNull("List of edges should not be null", edges);
529 assertThat(edges.size(), is(1));
530 Edge newEdge = edges.get(0);
531 assertNotNull(newEdge);
532 assertEquals(oldEdge, newEdge);
536 public void testPutCustomerWithServiceInstanceThatHasModelVerThatExistsInDbAndDoGetOnCustomerAndCheckIfRelationshipIsNotThere()
539 Map<String, String> customerHashMap = new HashMap<>();
541 customerHashMap.put("global-customer-id", "test-customer-" + UUID.randomUUID().toString());
542 customerHashMap.put("subscription-type", "test-subtype-" + UUID.randomUUID().toString());
543 customerHashMap.put("service-instance-id", "test-tenant-" + UUID.randomUUID().toString());
544 customerHashMap.put("model-invariant-id", modelId);
545 customerHashMap.put("model-version-id", modelVerId);
547 String customer = PayloadUtil.getTemplatePayload("customer.json", customerHashMap);
548 Response response = httpTestUtil.doPut("/aai/" + version.toString() + "/business/customers/customer/"
549 + customerHashMap.get("global-customer-id"), customer);
550 assertNotNull("Response returned null", response);
551 assertThat("Check the cloud region is created with link to generic vnf", response.getStatus(), is(201));
554 AAIGraph.getInstance().getGraph().newTransaction().traversal().E().has("private", true).toList();
555 assertNotNull("List of edges should not be null", edges);
556 assertThat(edges.size(), is(1));
557 Edge oldEdge = edges.get(0);
558 assertNotNull(oldEdge);
560 response = httpTestUtil.doGet("/aai/" + version.toString() + "/business/customers/customer/"
561 + customerHashMap.get("global-customer-id"));
562 assertNotNull("Response returned null", response);
563 assertThat("Check the customer is returned", response.getStatus(), is(200));
564 assertThat(response.getEntity().toString(), not(containsString("\"related-to\":\"model-ver\"")));
566 String url = "/aai/" + version + "/business/customers/customer/" + customerHashMap.get("global-customer-id")
567 + "/service-subscriptions/service-subscription/" + customerHashMap.get("subscription-type")
568 + "/service-instances/service-instance/" + customerHashMap.get("service-instance-id");
570 String genericVnf = "vnf-" + UUID.randomUUID().toString();
571 String genericVnfPayload = "{\n" + " \"vnf-id\": \"" + genericVnf + "\",\n" + " \"vnf-type\": \"someval\",\n"
572 + " \"vnf-name\": \"someval\",\n" + " \"relationship-list\": {\n" + " \"relationship\": [\n"
573 + " {\n" + " \"related-to\": \"service-instance\",\n" + " \"related-link\": \"" + url
574 + "\"\n" + " }\n" + " ]\n" + " }\n" + "}\n";
576 response = httpTestUtil.doPut("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf,
578 assertNotNull("Response returned null", response);
579 assertThat("Check the customer is returned", response.getStatus(), is(201));
581 response = httpTestUtil.doGet("/aai/" + version.toString() + "/network/generic-vnfs/generic-vnf/" + genericVnf);
582 assertNotNull("Response returned null", response);
583 assertThat("Check the customer is returned", response.getStatus(), is(200));
584 assertThat(response.getEntity().toString(), containsString("\"related-to\":\"service-instance\""));
586 response = httpTestUtil.doGet("/aai/" + version.toString() + "/business/customers/customer/"
587 + customerHashMap.get("global-customer-id"));
588 assertNotNull("Response returned null", response);
589 assertThat("Check the customer is returned", response.getStatus(), is(200));
590 assertThat(response.getEntity().toString(), not(containsString("\"related-to\":\"model-ver\"")));
591 assertThat(response.getEntity().toString(), containsString("\"related-to\":\"generic-vnf\""));
596 public void tearDown() {
598 JanusGraphTransaction transaction = AAIGraph.getInstance().getGraph().newTransaction();
599 boolean success = true;
603 GraphTraversalSource g = transaction.traversal();
605 g.V().has("source-of-truth", "JUNIT").toList().forEach(v -> v.remove());
607 } catch (Exception ex) {
609 logger.error("Unable to remove the vertexes", ex);
612 transaction.commit();
614 transaction.rollback();
615 fail("Unable to teardown the graph");