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 static org.hamcrest.Matchers.containsString;
24 import static org.hamcrest.Matchers.not;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertThat;
27 import static org.mockito.ArgumentMatchers.any;
28 import static org.mockito.Mockito.doNothing;
29 import static org.mockito.Mockito.when;
31 import com.google.gson.JsonObject;
32 import com.google.gson.JsonParser;
34 import java.io.UnsupportedEncodingException;
36 import java.util.ArrayList;
37 import java.util.Arrays;
38 import java.util.Collection;
39 import java.util.HashSet;
40 import java.util.List;
42 import java.util.UUID;
44 import javax.ws.rs.core.HttpHeaders;
45 import javax.ws.rs.core.MediaType;
46 import javax.ws.rs.core.MultivaluedHashMap;
47 import javax.ws.rs.core.MultivaluedMap;
48 import javax.ws.rs.core.Response;
49 import javax.ws.rs.core.UriBuilder;
50 import javax.ws.rs.core.UriInfo;
52 import org.javatuples.Pair;
53 import org.json.JSONArray;
54 import org.json.JSONObject;
55 import org.junit.Assert;
56 import org.junit.Before;
57 import org.junit.FixMethodOrder;
58 import org.junit.Test;
59 import org.junit.runner.RunWith;
60 import org.junit.runners.MethodSorters;
61 import org.junit.runners.Parameterized;
62 import org.mockito.Mockito;
63 import org.onap.aai.AAISetup;
64 import org.onap.aai.db.props.AAIProperties;
65 import org.onap.aai.exceptions.AAIException;
66 import org.onap.aai.introspection.Introspector;
67 import org.onap.aai.introspection.Loader;
68 import org.onap.aai.introspection.ModelType;
69 import org.onap.aai.parsers.query.QueryParser;
70 import org.onap.aai.rest.ueb.UEBNotification;
71 import org.onap.aai.restcore.HttpMethod;
72 import org.onap.aai.serialization.engines.QueryStyle;
73 import org.onap.aai.serialization.engines.TransactionalGraphEngine;
74 import org.onap.aai.util.AAIConfig;
76 @RunWith(value = Parameterized.class)
77 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
78 public class HttpEntryTest extends AAISetup {
80 protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
82 private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();
85 VALID_HTTP_STATUS_CODES.add(200);
86 VALID_HTTP_STATUS_CODES.add(201);
87 VALID_HTTP_STATUS_CODES.add(204);
90 @Parameterized.Parameter(value = 0)
91 public QueryStyle queryStyle;
94 * TODO Change the HttpEntry instances accoringly
96 @Parameterized.Parameters(name = "QueryStyle.{0}")
97 public static Collection<Object[]> data() {
98 return Arrays.asList(new Object[][] {{QueryStyle.TRAVERSAL}, {QueryStyle.TRAVERSAL_URI}});
101 private HttpHeaders httpHeaders;
103 private UriInfo uriInfo;
105 private MultivaluedMap<String, String> headersMultiMap;
106 private MultivaluedMap<String, String> queryParameters;
108 private List<String> aaiRequestContextList;
110 private List<MediaType> outputMediaTypes;
113 public void setup() {
115 httpHeaders = Mockito.mock(HttpHeaders.class);
116 uriInfo = Mockito.mock(UriInfo.class);
118 headersMultiMap = new MultivaluedHashMap<>();
119 queryParameters = Mockito.spy(new MultivaluedHashMap<>());
121 headersMultiMap.add("X-FromAppId", "JUNIT");
122 headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());
123 headersMultiMap.add("Real-Time", "true");
124 headersMultiMap.add("Accept", "application/json");
125 headersMultiMap.add("aai-request-context", "");
127 outputMediaTypes = new ArrayList<>();
128 outputMediaTypes.add(APPLICATION_JSON);
130 aaiRequestContextList = new ArrayList<>();
131 aaiRequestContextList.add("");
133 when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
134 when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);
136 when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);
138 when(uriInfo.getQueryParameters()).thenReturn(queryParameters);
139 when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);
141 // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable
142 Mockito.doReturn(null).when(queryParameters).remove(any());
144 when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);
147 private Response doRequest(HttpEntry httpEntry, Loader loader, TransactionalGraphEngine dbEngine, HttpMethod method,
148 String uri, String content) throws UnsupportedEncodingException, AAIException {
149 URI uriObject = UriBuilder.fromPath(uri).build();
150 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
151 String objType = uriQuery.getResultType();
152 if (uri.endsWith("relationship")) {
153 objType = "relationship";
156 if (method.equals(HttpMethod.GET) || method.equals(HttpMethod.GET_RELATIONSHIP)) {
157 obj = loader.introspectorFromName(objType);
159 obj = loader.unmarshal(objType, content, org.onap.aai.restcore.MediaType.getEnum("application/json"));
162 DBRequest dbRequest =
163 new DBRequest.Builder(method, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION")
164 .rawRequestContent(content).build();
166 List<DBRequest> dbRequestList = new ArrayList<>();
167 dbRequestList.add(dbRequest);
169 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = httpEntry.process(dbRequestList, "JUNIT");
170 return responsesTuple.getValue1().get(0).getValue1();
174 public void test1PutOnPserver() throws UnsupportedEncodingException, AAIException {
177 * TODO do the same with uri
179 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
180 Loader loader = traversalHttpEntry.getLoader();
181 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
183 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
184 String content = "{\"hostname\":\"junit-test1\"}";
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 test2PutOnPserverNoPInterface() throws UnsupportedEncodingException, AAIException {
193 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
194 Loader loader = traversalHttpEntry.getLoader();
195 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
197 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
198 String content = "{\"hostname\":\"junit-test2\"}";
199 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
201 assertEquals("Expected the pserver to be created", 201, response.getStatus());
205 public void test3PutOnPInterface() {
207 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
208 Loader loader = traversalHttpEntry.getLoader();
209 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
211 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1/p-interfaces/p-interface/p1";
212 String content = "{\"interface-name\":\"p1\"}";
213 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
215 assertEquals("Expected the p-interface to be created", 201, response.getStatus());
216 } catch (UnsupportedEncodingException | AAIException e) {
217 // TODO Auto-generated catch block
223 public void test4GetOnPserver() throws UnsupportedEncodingException, AAIException {
225 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
227 Loader loader = traversalHttpEntry.getLoader();
228 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
230 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
231 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
232 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
234 assertEquals("Expected the pserver to be returned", 200, response.getStatus());
238 public void test5MergePatchOnPserver() throws UnsupportedEncodingException, AAIException {
240 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
242 Loader loader = traversalHttpEntry.getLoader();
243 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
245 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
246 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
247 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.MERGE_PATCH, uri, content);
249 assertEquals("Expected the pserver to be updated", 200, response.getStatus());
252 private int doDelete(String resourceVersion, String uri, String nodeType)
253 throws UnsupportedEncodingException, AAIException {
254 queryParameters.add("resource-version", resourceVersion);
255 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
256 Loader loader = traversalHttpEntry.getLoader();
257 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
259 URI uriObject = UriBuilder.fromPath(uri).build();
261 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
265 Introspector obj = loader.introspectorFromName(nodeType);
267 DBRequest dbRequest = new DBRequest.Builder(HttpMethod.DELETE, uriObject, uriQuery, obj, httpHeaders, uriInfo,
268 "JUNIT-TRANSACTION").rawRequestContent(content).build();
270 List<DBRequest> dbRequestList = new ArrayList<>();
271 dbRequestList.add(dbRequest);
273 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = traversalHttpEntry.process(dbRequestList, "JUNIT");
274 Response response = responsesTuple.getValue1().get(0).getValue1();
276 return response.getStatus();
280 public void test6DeleteOnPserver() throws UnsupportedEncodingException, AAIException {
282 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
283 Loader loader = traversalHttpEntry.getLoader();
284 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
286 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
288 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
290 String msg = response.getEntity().toString();
291 JsonObject jsonObj = JsonParser.parseString(msg).getAsJsonObject();
292 String resourceVersion = "";
293 if (jsonObj.isJsonObject()) {
294 resourceVersion = jsonObj.get("resource-version").getAsString();
296 assertEquals("Expected the pserver to be deleted", 204,
297 doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test1", "pserver"));
301 public void test7DeleteOnPserverNoPinterface() throws UnsupportedEncodingException, AAIException {
303 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
304 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
305 Loader loader = traversalHttpEntry.getLoader();
306 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
308 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
310 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
312 String msg = response.getEntity().toString();
313 JsonObject jsonObj = JsonParser.parseString(msg).getAsJsonObject();
314 String resourceVersion = "";
315 if (jsonObj.isJsonObject()) {
316 resourceVersion = jsonObj.get("resource-version").getAsString();
318 assertEquals("Expected the pserver to be deleted", 204,
319 doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test2", "pserver"));
323 public void test8FailedGetOnPserver() throws UnsupportedEncodingException, AAIException {
325 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
326 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
327 Loader loader = traversalHttpEntry.getLoader();
328 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
330 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
332 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
335 assertEquals("Expected the pserver to be deleted", 404, response.getStatus());
339 public void putEdgeTest() throws UnsupportedEncodingException, AAIException {
341 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
342 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
343 Loader loader = traversalHttpEntry.getLoader();
344 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
347 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
348 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
349 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
351 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
353 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
354 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
357 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
358 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
359 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
360 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
363 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
367 public void notificationOnRelatedToTest() throws UnsupportedEncodingException, AAIException {
369 Loader ld = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
370 UEBNotification uebNotification = Mockito.spy(new UEBNotification(ld, loaderFactory, schemaVersions));
371 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), uebNotification);
373 Loader loader = traversalHttpEntry.getLoader();
374 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
376 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
377 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
378 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
380 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
382 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
383 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
386 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
387 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
388 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
390 doNothing().when(uebNotification).triggerEvents();
391 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
393 assertEquals("Expected the pserver relationship to be deleted", 200, response.getStatus());
394 assertEquals("Two notifications", 2, uebNotification.getEvents().size());
395 assertEquals("Notification generated for PUT edge", "UPDATE",
396 uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
397 assertThat("Event body for the edge create has the related to",
398 uebNotification.getEvents().get(0).getObj().marshal(false),
399 containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver"));
401 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.DELETE_EDGE, uri, content);
402 assertEquals("Expected the pserver relationship to be deleted", 204, response.getStatus());
403 assertEquals("Two notifications", 2, uebNotification.getEvents().size());
404 assertEquals("Notification generated for DELETE edge", "UPDATE",
405 uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
406 assertThat("Event body for the edge delete does not have the related to",
407 uebNotification.getEvents().get(0).getObj().marshal(false),
408 not(containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver")));
414 public void putEdgeWrongLabelTest() throws UnsupportedEncodingException, AAIException {
416 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
417 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
418 Loader loader = traversalHttpEntry.getLoader();
419 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
422 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
423 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
424 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
426 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
428 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
429 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
432 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
433 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
434 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"junk\"}";
435 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
438 String msg = response.getEntity().toString();
439 assertEquals("Expected the pserver to be created", 400, response.getStatus());
440 assertThat(msg, containsString("ERR.5.4.6107"));
441 assertThat(msg, containsString(
442 "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"));
447 public void pathedFormatOnGetTest() throws UnsupportedEncodingException, AAIException {
449 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
451 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
452 // HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL,
454 Loader loader = traversalHttpEntry.getLoader();
455 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
458 String pserverKey = "pserver-" + testName;
459 String pserverUri = "/cloud-infrastructure/pservers/pserver/" + pserverKey;
460 String content = "{\"hostname\":\"" + pserverKey + "\"}";
461 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserverUri, content);
464 String complexKey = "complex-" + testName;
465 String complexUri = "/cloud-infrastructure/complexes/complex/" + complexKey;
466 content = "{\"physical-location-id\":\"" + complexKey
467 + "\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
468 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, complexUri, content);
471 String relationshipUri =
472 "/cloud-infrastructure/complexes/complex/" + complexKey + "/relationship-list/relationship";
473 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
474 + "/cloud-infrastructure/pservers/pserver/" + pserverKey
475 + "\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
476 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, relationshipUri, content);
478 // Get pserver with pathed
479 queryParameters.add("format", "pathed");
481 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, pserverUri, content);
482 queryParameters.remove("format");
484 String msg = response.getEntity().toString();
485 assertEquals("Expected get to succeed", 200, response.getStatus());
486 assertThat(msg, containsString(pserverUri));
493 public void getAllPserversTest() throws UnsupportedEncodingException, AAIException {
495 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
497 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
498 Loader loader = traversalHttpEntry.getLoader();
499 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
502 String pserver1Key = "pserver-1-" + testName;
503 String pserver1Uri = "/cloud-infrastructure/pservers/pserver/" + pserver1Key;
504 String content = "{\"hostname\":\"" + pserver1Key + "\"}";
505 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver1Uri, content);
508 String pserver2Key = "pserver-2-" + testName;
509 String pserver2Uri = "/cloud-infrastructure/pservers/pserver/" + pserver2Key;
510 content = "{\"hostname\":\"" + pserver2Key + "\"}";
511 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver2Uri, content);
513 // Get pserver with pathed
514 queryParameters.add("format", "pathed");
516 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET,
517 "/cloud-infrastructure/pservers", content);
518 queryParameters.remove("format");
520 String msg = response.getEntity().toString();
521 assertEquals("Expected get to succeed", 200, response.getStatus());
522 assertThat(msg, containsString(pserver1Uri));
523 assertThat(msg, containsString(pserver2Uri));
530 public void testSetGetPaginationMethods() {
531 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
532 traversalHttpEntry.setPaginationBucket(10);
533 traversalHttpEntry.setPaginationIndex(1);
534 traversalHttpEntry.setTotalsForPaging(101, traversalHttpEntry.getPaginationBucket());
535 assertEquals("Expected the pagination bucket size to be 10", 10, traversalHttpEntry.getPaginationBucket());
536 assertEquals("Expected the total number of pagination buckets to be 11", 11,
537 traversalHttpEntry.getTotalPaginationBuckets());
538 assertEquals("Expected the pagination index to be 1", 1, traversalHttpEntry.getPaginationIndex());
539 assertEquals("Expected the total amount of vertices to be 101", 101, traversalHttpEntry.getTotalVertices());
543 public void relatedToTest() throws UnsupportedEncodingException, AAIException {
545 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
546 Loader loader = traversalHttpEntry.getLoader();
547 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
550 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
551 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
552 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
554 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
556 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
557 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
560 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
561 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
562 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
563 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
566 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/related-to/pservers";
568 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
569 String respBody = response.getEntity().toString();
572 assertEquals("Expected the pserver to be created", 200, response.getStatus());
573 assertThat("Related to pserver is returned.", respBody,
574 containsString("\"hostname\":\"junit-edge-test-pserver\""));
579 public void setDepthTest() throws AAIException {
580 System.setProperty("AJSC_HOME", ".");
581 System.setProperty("BUNDLECONFIG_DIR", "src/main/test/resources");
583 String depthParam = AAIConfig.get("aai.rest.getall.depthparam");
584 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
585 int depth = traversalHttpEntry.setDepth(null, depthParam);
586 assertEquals(AAIProperties.MAXIMUM_DEPTH.intValue(), depth);
590 public void getAbstractTest() throws UnsupportedEncodingException, AAIException {
592 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
593 Loader loader = traversalHttpEntry.getLoader();
594 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
597 String uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf";
598 String content = "{\"vnf-id\":\"junit-abstract-test-generic-vnf\",\"vnf-name\":\"junit-generic-vnf-name\"}";
599 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
602 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver";
603 content = "{\"hostname\":\"junit-abstract-test-pserver\"}";
604 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
607 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver/relationship-list/relationship";
609 "{\"related-to\":\"vnf\",\"relationship-data\":[{\"relationship-key\":\"vnf.vnf-id\",\"relationship-value\":\"junit-abstract-test-generic-vnf\"}]}";
610 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
613 uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf/related-to/pservers";
615 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
616 String respBody = response.getEntity().toString();
619 assertThat("Related to pserver is returned.", respBody,
620 containsString("\"hostname\":\"junit-abstract-test-pserver\""));
624 public void getRelationshipListTest() throws UnsupportedEncodingException, AAIException {
625 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
626 Loader loader = traversalHttpEntry.getLoader();
627 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
630 String uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
631 String content = "{\"hostname\":\"httpEntryTest-pserver-01\"}";
632 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
634 uri = "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01";
636 "{\"physical-location-id\":\"httpEntryTest-complex-01\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
637 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
640 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01/relationship-list/relationship";
641 content = "{\"related-to\":\"complex\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
642 + "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}"
643 + "\"relationship-daasSta\":[{" + "\"relationship-key\":\"complex.physical-location-id\","
644 + "\"relationship-value\":\"httpEntryTest-complex-01\"" + "}]";
645 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
646 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
649 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
651 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET_RELATIONSHIP, uri, content);
653 "{\"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\"}]}]}";
654 Assert.assertEquals(expected, response.getEntity().toString());
660 public void getRelationshipListTestWithFormatSimple() throws UnsupportedEncodingException, AAIException {
661 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
662 Loader loader = traversalHttpEntry.getLoader();
663 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
666 String uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
667 String content = "{\"hostname\":\"httpEntryTest-pserver-01\"}";
668 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
670 uri = "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01";
672 "{\"physical-location-id\":\"httpEntryTest-complex-01\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
673 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
676 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01/relationship-list/relationship";
677 content = "{\"related-to\":\"complex\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
678 + "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}"
679 + "\"relationship-daasSta\":[{" + "\"relationship-key\":\"complex.physical-location-id\","
680 + "\"relationship-value\":\"httpEntryTest-complex-01\"" + "}]";
681 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
682 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
685 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
687 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
690 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
691 queryParameters.add("format", "resource");
693 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET_RELATIONSHIP, uri, content);
694 String responsePayload = response.getEntity().toString();
695 JSONObject responseJsonObject = new JSONObject(responsePayload);
696 JSONArray responseResultsArray = responseJsonObject.getJSONArray("results");
697 String responseResults = responseResultsArray.get(0).toString();
698 JSONObject pserverResponseObject = new JSONObject(responseResults);
699 String pserverResponse = pserverResponseObject.get("pserver").toString();
700 JSONObject pserverResponseFields = new JSONObject(pserverResponse);
701 String pserverResponseRelationshipList = pserverResponseFields.get("relationship-list").toString();
704 "{\"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\"}]}";
705 assertEquals(expected, pserverResponseRelationshipList);
706 // Assert.assertEquals(expected, response.getEntity().toString());
707 queryParameters.remove("format");