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.db;
23 import com.google.gson.JsonObject;
24 import com.google.gson.JsonParser;
25 import org.javatuples.Pair;
26 import org.json.JSONArray;
27 import org.json.JSONObject;
28 import org.junit.Assert;
29 import org.junit.Before;
30 import org.junit.FixMethodOrder;
31 import org.junit.Test;
32 import org.junit.runner.RunWith;
33 import org.junit.runners.MethodSorters;
34 import org.junit.runners.Parameterized;
35 import org.mockito.Mockito;
36 import org.onap.aai.AAISetup;
37 import org.onap.aai.db.props.AAIProperties;
38 import org.onap.aai.exceptions.AAIException;
39 import org.onap.aai.introspection.Introspector;
40 import org.onap.aai.introspection.Loader;
41 import org.onap.aai.introspection.ModelType;
42 import org.onap.aai.parsers.query.QueryParser;
43 import org.onap.aai.rest.ueb.UEBNotification;
44 import org.onap.aai.restcore.HttpMethod;
45 import org.onap.aai.serialization.engines.QueryStyle;
46 import org.onap.aai.serialization.engines.TransactionalGraphEngine;
47 import org.onap.aai.util.AAIConfig;
49 import javax.ws.rs.core.*;
50 import java.io.UnsupportedEncodingException;
54 import static org.hamcrest.Matchers.containsString;
55 import static org.hamcrest.Matchers.not;
56 import static org.junit.Assert.assertEquals;
57 import static org.junit.Assert.assertThat;
58 import static org.mockito.Matchers.anyObject;
59 import static org.mockito.Mockito.doNothing;
60 import static org.mockito.Mockito.when;
62 @RunWith(value = Parameterized.class)
63 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
64 public class HttpEntryTest extends AAISetup {
66 protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
68 private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();
71 VALID_HTTP_STATUS_CODES.add(200);
72 VALID_HTTP_STATUS_CODES.add(201);
73 VALID_HTTP_STATUS_CODES.add(204);
76 @Parameterized.Parameter(value = 0)
77 public QueryStyle queryStyle;
80 * TODO Change the HttpEntry instances accoringly
82 @Parameterized.Parameters(name = "QueryStyle.{0}")
83 public static Collection<Object[]> data() {
84 return Arrays.asList(new Object[][] {{QueryStyle.TRAVERSAL}, {QueryStyle.TRAVERSAL_URI}});
87 private HttpHeaders httpHeaders;
89 private UriInfo uriInfo;
91 private MultivaluedMap<String, String> headersMultiMap;
92 private MultivaluedMap<String, String> queryParameters;
94 private List<String> aaiRequestContextList;
96 private List<MediaType> outputMediaTypes;
101 httpHeaders = Mockito.mock(HttpHeaders.class);
102 uriInfo = Mockito.mock(UriInfo.class);
104 headersMultiMap = new MultivaluedHashMap<>();
105 queryParameters = Mockito.spy(new MultivaluedHashMap<>());
107 headersMultiMap.add("X-FromAppId", "JUNIT");
108 headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());
109 headersMultiMap.add("Real-Time", "true");
110 headersMultiMap.add("Accept", "application/json");
111 headersMultiMap.add("aai-request-context", "");
113 outputMediaTypes = new ArrayList<>();
114 outputMediaTypes.add(APPLICATION_JSON);
116 aaiRequestContextList = new ArrayList<>();
117 aaiRequestContextList.add("");
119 when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
120 when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);
122 when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);
124 when(uriInfo.getQueryParameters()).thenReturn(queryParameters);
125 when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);
127 // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable
128 Mockito.doReturn(null).when(queryParameters).remove(anyObject());
130 when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);
133 private Response doRequest(HttpEntry httpEntry, Loader loader, TransactionalGraphEngine dbEngine, HttpMethod method,
134 String uri, String content) throws UnsupportedEncodingException, AAIException {
135 URI uriObject = UriBuilder.fromPath(uri).build();
136 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
137 String objType = uriQuery.getResultType();
138 if (uri.endsWith("relationship")) {
139 objType = "relationship";
142 if (method.equals(HttpMethod.GET) || method.equals(HttpMethod.GET_RELATIONSHIP)) {
143 obj = loader.introspectorFromName(objType);
145 obj = loader.unmarshal(objType, content, org.onap.aai.restcore.MediaType.getEnum("application/json"));
148 DBRequest dbRequest =
149 new DBRequest.Builder(method, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION")
150 .rawRequestContent(content).build();
152 List<DBRequest> dbRequestList = new ArrayList<>();
153 dbRequestList.add(dbRequest);
155 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = httpEntry.process(dbRequestList, "JUNIT");
156 return responsesTuple.getValue1().get(0).getValue1();
160 public void test1PutOnPserver() throws UnsupportedEncodingException, AAIException {
163 * TODO do the same with uri
165 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
166 Loader loader = traversalHttpEntry.getLoader();
167 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
169 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
170 String content = "{\"hostname\":\"junit-test1\"}";
171 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
173 assertEquals("Expected the pserver to be created", 201, response.getStatus());
177 public void test2PutOnPserverNoPInterface() throws UnsupportedEncodingException, AAIException {
179 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
180 Loader loader = traversalHttpEntry.getLoader();
181 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
183 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
184 String content = "{\"hostname\":\"junit-test2\"}";
185 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
187 assertEquals("Expected the pserver to be created", 201, response.getStatus());
191 public void test3PutOnPInterface() {
193 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
194 Loader loader = traversalHttpEntry.getLoader();
195 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
197 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1/p-interfaces/p-interface/p1";
198 String content = "{\"interface-name\":\"p1\"}";
199 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
201 assertEquals("Expected the p-interface to be created", 201, response.getStatus());
202 } catch (UnsupportedEncodingException | AAIException e) {
203 // TODO Auto-generated catch block
209 public void test4GetOnPserver() throws UnsupportedEncodingException, AAIException {
211 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
213 Loader loader = traversalHttpEntry.getLoader();
214 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
216 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
217 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
218 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
220 assertEquals("Expected the pserver to be returned", 200, response.getStatus());
224 public void test5MergePatchOnPserver() throws UnsupportedEncodingException, AAIException {
226 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
228 Loader loader = traversalHttpEntry.getLoader();
229 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
231 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
232 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
233 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.MERGE_PATCH, uri, content);
235 assertEquals("Expected the pserver to be updated", 200, response.getStatus());
238 private int doDelete(String resourceVersion, String uri, String nodeType)
239 throws UnsupportedEncodingException, AAIException {
240 queryParameters.add("resource-version", resourceVersion);
241 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
242 Loader loader = traversalHttpEntry.getLoader();
243 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
245 URI uriObject = UriBuilder.fromPath(uri).build();
247 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
251 Introspector obj = loader.introspectorFromName(nodeType);
253 DBRequest dbRequest = new DBRequest.Builder(HttpMethod.DELETE, uriObject, uriQuery, obj, httpHeaders, uriInfo,
254 "JUNIT-TRANSACTION").rawRequestContent(content).build();
256 List<DBRequest> dbRequestList = new ArrayList<>();
257 dbRequestList.add(dbRequest);
259 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = traversalHttpEntry.process(dbRequestList, "JUNIT");
260 Response response = responsesTuple.getValue1().get(0).getValue1();
262 return response.getStatus();
266 public void test6DeleteOnPserver() throws UnsupportedEncodingException, AAIException {
268 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
269 Loader loader = traversalHttpEntry.getLoader();
270 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
272 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
274 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
276 String msg = response.getEntity().toString();
277 JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
278 String resourceVersion = "";
279 if (jsonObj.isJsonObject()) {
280 resourceVersion = jsonObj.get("resource-version").getAsString();
282 assertEquals("Expected the pserver to be deleted", 204,
283 doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test1", "pserver"));
287 public void test7DeleteOnPserverNoPinterface() throws UnsupportedEncodingException, AAIException {
289 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
290 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
291 Loader loader = traversalHttpEntry.getLoader();
292 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
294 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
296 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
298 String msg = response.getEntity().toString();
299 JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
300 String resourceVersion = "";
301 if (jsonObj.isJsonObject()) {
302 resourceVersion = jsonObj.get("resource-version").getAsString();
304 assertEquals("Expected the pserver to be deleted", 204,
305 doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test2", "pserver"));
309 public void test8FailedGetOnPserver() throws UnsupportedEncodingException, AAIException {
311 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
312 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
313 Loader loader = traversalHttpEntry.getLoader();
314 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
316 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
318 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
321 assertEquals("Expected the pserver to be deleted", 404, response.getStatus());
325 public void putEdgeTest() throws UnsupportedEncodingException, AAIException {
327 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
328 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
329 Loader loader = traversalHttpEntry.getLoader();
330 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
333 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
334 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
335 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
337 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
339 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
340 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
343 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
344 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
345 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
346 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
349 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
353 public void notificationOnRelatedToTest() throws UnsupportedEncodingException, AAIException {
355 Loader ld = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
356 UEBNotification uebNotification = Mockito.spy(new UEBNotification(ld, loaderFactory, schemaVersions));
357 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), uebNotification);
359 Loader loader = traversalHttpEntry.getLoader();
360 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
362 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
363 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
364 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
366 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
368 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
369 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
372 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
373 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
374 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
376 doNothing().when(uebNotification).triggerEvents();
377 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
380 assertEquals("Expected the pserver relationship to be deleted", 200, response.getStatus());
381 assertEquals("Two notifications", 2, uebNotification.getEvents().size());
382 assertEquals("Notification generated for PUT edge", "UPDATE",
383 uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
384 assertThat("Event body for the edge create has the related to",
385 uebNotification.getEvents().get(0).getObj().marshal(false),
386 containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver"));
388 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.DELETE_EDGE, uri, content);
389 assertEquals("Expected the pserver relationship to be deleted", 204, response.getStatus());
390 assertEquals("Two notifications", 2, uebNotification.getEvents().size());
391 assertEquals("Notification generated for DELETE edge", "UPDATE",
392 uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
393 assertThat("Event body for the edge delete does not have the related to",
394 uebNotification.getEvents().get(0).getObj().marshal(false),
395 not(containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver")));
401 public void putEdgeWrongLabelTest() throws UnsupportedEncodingException, AAIException {
403 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
404 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
405 Loader loader = traversalHttpEntry.getLoader();
406 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
409 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
410 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
411 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
413 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
415 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
416 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
419 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
420 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
421 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"junk\"}";
422 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
425 String msg = response.getEntity().toString();
426 assertEquals("Expected the pserver to be created", 400, response.getStatus());
427 assertThat(msg, containsString("ERR.5.4.6107"));
428 assertThat(msg, containsString(
429 "Required Edge-property not found in input data:org.onap.aai.edges.exceptions.EdgeRuleNotFoundException: No rule found for EdgeRuleQuery with filter params node type: complex, node type: pserver, label: junk, type: COUSIN, isPrivate: false"));
434 public void pathedFormatOnGetTest() throws UnsupportedEncodingException, AAIException {
436 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
438 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
439 // HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL,
441 Loader loader = traversalHttpEntry.getLoader();
442 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
445 String pserverKey = "pserver-" + testName;
446 String pserverUri = "/cloud-infrastructure/pservers/pserver/" + pserverKey;
447 String content = "{\"hostname\":\"" + pserverKey + "\"}";
448 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserverUri, content);
451 String complexKey = "complex-" + testName;
452 String complexUri = "/cloud-infrastructure/complexes/complex/" + complexKey;
453 content = "{\"physical-location-id\":\"" + complexKey
454 + "\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
455 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, complexUri, content);
458 String relationshipUri =
459 "/cloud-infrastructure/complexes/complex/" + complexKey + "/relationship-list/relationship";
460 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
461 + "/cloud-infrastructure/pservers/pserver/" + pserverKey
462 + "\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
463 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, relationshipUri, content);
465 // Get pserver with pathed
466 queryParameters.add("format", "pathed");
468 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, pserverUri, content);
469 queryParameters.remove("format");
471 String msg = response.getEntity().toString();
472 assertEquals("Expected get to succeed", 200, response.getStatus());
473 assertThat(msg, containsString(pserverUri));
480 public void getAllPserversTest() throws UnsupportedEncodingException, AAIException {
482 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
484 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
485 Loader loader = traversalHttpEntry.getLoader();
486 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
489 String pserver1Key = "pserver-1-" + testName;
490 String pserver1Uri = "/cloud-infrastructure/pservers/pserver/" + pserver1Key;
491 String content = "{\"hostname\":\"" + pserver1Key + "\"}";
492 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver1Uri, content);
495 String pserver2Key = "pserver-2-" + testName;
496 String pserver2Uri = "/cloud-infrastructure/pservers/pserver/" + pserver2Key;
497 content = "{\"hostname\":\"" + pserver2Key + "\"}";
498 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver2Uri, content);
500 // Get pserver with pathed
501 queryParameters.add("format", "pathed");
503 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET,
504 "/cloud-infrastructure/pservers", content);
505 queryParameters.remove("format");
507 String msg = response.getEntity().toString();
508 assertEquals("Expected get to succeed", 200, response.getStatus());
509 assertThat(msg, containsString(pserver1Uri));
510 assertThat(msg, containsString(pserver2Uri));
517 public void testSetGetPaginationMethods() {
518 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
519 traversalHttpEntry.setPaginationBucket(10);
520 traversalHttpEntry.setPaginationIndex(1);
521 traversalHttpEntry.setTotalsForPaging(101, traversalHttpEntry.getPaginationBucket());
522 assertEquals("Expected the pagination bucket size to be 10", 10, traversalHttpEntry.getPaginationBucket());
523 assertEquals("Expected the total number of pagination buckets to be 11", 11,
524 traversalHttpEntry.getTotalPaginationBuckets());
525 assertEquals("Expected the pagination index to be 1", 1, traversalHttpEntry.getPaginationIndex());
526 assertEquals("Expected the total amount of vertices to be 101", 101, traversalHttpEntry.getTotalVertices());
530 public void relatedToTest() throws UnsupportedEncodingException, AAIException {
532 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
533 Loader loader = traversalHttpEntry.getLoader();
534 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
537 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
538 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
539 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
541 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
543 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
544 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
547 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
548 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
549 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
550 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
553 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/related-to/pservers";
555 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
556 String respBody = response.getEntity().toString();
559 assertEquals("Expected the pserver to be created", 200, response.getStatus());
560 assertThat("Related to pserver is returned.", respBody,
561 containsString("\"hostname\":\"junit-edge-test-pserver\""));
566 public void setDepthTest() throws AAIException {
567 System.setProperty("AJSC_HOME", ".");
568 System.setProperty("BUNDLECONFIG_DIR", "src/main/test/resources");
570 String depthParam = AAIConfig.get("aai.rest.getall.depthparam");
571 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
572 int depth = traversalHttpEntry.setDepth(null, depthParam);
573 assertEquals(AAIProperties.MAXIMUM_DEPTH.intValue(), depth);
577 public void getAbstractTest() throws UnsupportedEncodingException, AAIException {
579 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
580 Loader loader = traversalHttpEntry.getLoader();
581 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
584 String uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf";
585 String content = "{\"vnf-id\":\"junit-abstract-test-generic-vnf\",\"vnf-name\":\"junit-generic-vnf-name\"}";
586 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
589 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver";
590 content = "{\"hostname\":\"junit-abstract-test-pserver\"}";
591 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
594 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver/relationship-list/relationship";
596 "{\"related-to\":\"vnf\",\"relationship-data\":[{\"relationship-key\":\"vnf.vnf-id\",\"relationship-value\":\"junit-abstract-test-generic-vnf\"}]}";
597 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
600 uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf/related-to/pservers";
602 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
603 String respBody = response.getEntity().toString();
606 assertThat("Related to pserver is returned.", respBody,
607 containsString("\"hostname\":\"junit-abstract-test-pserver\""));
611 public void getRelationshipListTest() throws UnsupportedEncodingException, AAIException {
612 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
613 Loader loader = traversalHttpEntry.getLoader();
614 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
617 String uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
618 String content = "{\"hostname\":\"httpEntryTest-pserver-01\"}";
619 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
621 uri = "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01";
623 "{\"physical-location-id\":\"httpEntryTest-complex-01\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
624 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
627 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01/relationship-list/relationship";
628 content = "{\"related-to\":\"complex\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
629 + "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}" +
630 "\"relationship-daasSta\":[{" +
631 "\"relationship-key\":\"complex.physical-location-id\"," +
632 "\"relationship-value\":\"httpEntryTest-complex-01\"" +
634 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
635 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
638 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
640 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET_RELATIONSHIP, uri, content);
641 String expected = "{\"relationship\":[{\"related-to\":\"complex\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\",\"related-link\":\"/aai/v14/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-data\":[{\"relationship-key\":\"complex.physical-location-id\",\"relationship-value\":\"httpEntryTest-complex-01\"}]}]}";
642 Assert.assertEquals(expected, response.getEntity().toString());
648 public void getRelationshipListTestWithFormatSimple() throws UnsupportedEncodingException, AAIException {
649 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
650 Loader loader = traversalHttpEntry.getLoader();
651 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
654 String uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
655 String content = "{\"hostname\":\"httpEntryTest-pserver-01\"}";
656 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
658 uri = "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01";
660 "{\"physical-location-id\":\"httpEntryTest-complex-01\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
661 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
664 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01/relationship-list/relationship";
665 content = "{\"related-to\":\"complex\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
666 + "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}" +
667 "\"relationship-daasSta\":[{" +
668 "\"relationship-key\":\"complex.physical-location-id\"," +
669 "\"relationship-value\":\"httpEntryTest-complex-01\"" +
671 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
672 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
675 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
677 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
680 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
681 queryParameters.add("format", "resource");
683 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET_RELATIONSHIP, uri, content);
684 String responsePayload = response.getEntity().toString();
685 JSONObject responseJsonObject = new JSONObject(responsePayload);
686 JSONArray responseResultsArray = responseJsonObject.getJSONArray("results");
687 String responseResults = responseResultsArray.get(0).toString();
688 JSONObject pserverResponseObject = new JSONObject(responseResults);
689 String pserverResponse = pserverResponseObject.get("pserver").toString();
690 JSONObject pserverResponseFields = new JSONObject(pserverResponse);
691 String pserverResponseRelationshipList = pserverResponseFields.get("relationship-list").toString();
693 String expected = "{\"relationship\":[{\"related-to\":\"complex\",\"relationship-data\":[{\"relationship-value\":\"httpEntryTest-complex-01\",\"relationship-key\":\"complex.physical-location-id\"}],\"related-link\":\"/aai/v14/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}]}";
694 assertEquals(expected, pserverResponseRelationshipList);
695 // Assert.assertEquals(expected, response.getEntity().toString());
696 queryParameters.remove("format");