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=========================================================
20 package org.onap.aai.rest.db;
22 import com.google.gson.JsonObject;
23 import com.google.gson.JsonParser;
24 import org.javatuples.Pair;
25 import org.junit.Before;
26 import org.junit.FixMethodOrder;
27 import org.junit.Test;
28 import org.junit.runner.RunWith;
29 import org.junit.runners.MethodSorters;
30 import org.junit.runners.Parameterized;
31 import org.mockito.Mockito;
32 import org.onap.aai.AAISetup;
33 import org.onap.aai.db.props.AAIProperties;
34 import org.onap.aai.dbmap.DBConnectionType;
35 import org.onap.aai.exceptions.AAIException;
36 import org.onap.aai.introspection.Introspector;
37 import org.onap.aai.introspection.Loader;
38 import org.onap.aai.introspection.LoaderFactory;
39 import org.onap.aai.introspection.ModelType;
40 import org.onap.aai.parsers.query.QueryParser;
41 import org.onap.aai.rest.ueb.UEBNotification;
42 import org.onap.aai.restcore.HttpMethod;
43 import org.onap.aai.serialization.engines.QueryStyle;
44 import org.onap.aai.serialization.engines.TransactionalGraphEngine;
45 import org.onap.aai.util.AAIConfig;
47 import javax.ws.rs.core.*;
48 import java.io.UnsupportedEncodingException;
52 import static org.hamcrest.Matchers.containsString;
53 import static org.hamcrest.Matchers.not;
54 import static org.junit.Assert.assertEquals;
55 import static org.junit.Assert.assertThat;
56 import static org.mockito.Matchers.anyObject;
57 import static org.mockito.Mockito.doNothing;
58 import static org.mockito.Mockito.when;
61 @RunWith(value = Parameterized.class)
62 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
63 public class HttpEntryTest extends AAISetup {
65 protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
67 private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();
70 VALID_HTTP_STATUS_CODES.add(200);
71 VALID_HTTP_STATUS_CODES.add(201);
72 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[][]{
85 {QueryStyle.TRAVERSAL},
86 {QueryStyle.TRAVERSAL_URI}
90 private HttpHeaders httpHeaders;
92 private UriInfo uriInfo;
94 private MultivaluedMap<String, String> headersMultiMap;
95 private MultivaluedMap<String, String> queryParameters;
97 private List<String> aaiRequestContextList;
99 private List<MediaType> outputMediaTypes;
104 httpHeaders = Mockito.mock(HttpHeaders.class);
105 uriInfo = Mockito.mock(UriInfo.class);
107 headersMultiMap = new MultivaluedHashMap<>();
108 queryParameters = Mockito.spy(new MultivaluedHashMap<>());
110 headersMultiMap.add("X-FromAppId", "JUNIT");
111 headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());
112 headersMultiMap.add("Real-Time", "true");
113 headersMultiMap.add("Accept", "application/json");
114 headersMultiMap.add("aai-request-context", "");
116 outputMediaTypes = new ArrayList<>();
117 outputMediaTypes.add(APPLICATION_JSON);
119 aaiRequestContextList = new ArrayList<>();
120 aaiRequestContextList.add("");
122 when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
123 when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);
125 when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);
128 when(uriInfo.getQueryParameters()).thenReturn(queryParameters);
129 when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);
131 // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable
132 Mockito.doReturn(null).when(queryParameters).remove(anyObject());
134 when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);
137 private Response doRequest(HttpEntry httpEntry, Loader loader, TransactionalGraphEngine dbEngine, HttpMethod method, String uri, String content) throws UnsupportedEncodingException, AAIException {
138 URI uriObject = UriBuilder.fromPath(uri).build();
139 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
140 String objType = uriQuery.getResultType();
141 if (uri.endsWith("relationship")) {
142 objType = "relationship";
144 Introspector obj = null;
145 if (method.equals(HttpMethod.GET)) {
146 obj = loader.introspectorFromName(objType);
148 obj = loader.unmarshal(objType, content, org.onap.aai.restcore.MediaType.getEnum("application/json"));
151 DBRequest dbRequest =
152 new DBRequest.Builder(method, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION")
153 .rawRequestContent(content).build();
155 List<DBRequest> dbRequestList = new ArrayList<>();
156 dbRequestList.add(dbRequest);
158 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = httpEntry.process(dbRequestList, "JUNIT");
159 return responsesTuple.getValue1().get(0).getValue1();
164 public void test1PutOnPserver() throws UnsupportedEncodingException, AAIException {
167 * TODO do the same with uri
169 DBConnectionType type = DBConnectionType.REALTIME;
170 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
171 Loader loader = traversalHttpEntry.getLoader();
172 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
175 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
176 String content = "{\"hostname\":\"junit-test1\"}";
177 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
179 assertEquals("Expected the pserver to be created", 201, response.getStatus());
183 public void test2PutOnPserverNoPInterface() throws UnsupportedEncodingException, AAIException {
185 DBConnectionType type = DBConnectionType.REALTIME;
186 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
187 Loader loader = traversalHttpEntry.getLoader();
188 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
190 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
191 String content = "{\"hostname\":\"junit-test2\"}";
192 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
194 assertEquals("Expected the pserver to be created", 201, response.getStatus());
198 public void test3PutOnPInterface() {
200 DBConnectionType type = DBConnectionType.REALTIME;
201 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
202 Loader loader = traversalHttpEntry.getLoader();
203 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
205 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1/p-interfaces/p-interface/p1";
206 String content = "{\"interface-name\":\"p1\"}";
207 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
209 assertEquals("Expected the p-interface to be created", 201, response.getStatus());
210 } catch (UnsupportedEncodingException | AAIException e) {
211 // TODO Auto-generated catch block
219 public void test4GetOnPserver() throws UnsupportedEncodingException, AAIException {
221 DBConnectionType type = DBConnectionType.REALTIME;
222 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
225 Loader loader = traversalHttpEntry.getLoader();
226 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
228 URI uriObject = UriBuilder.fromPath("/cloud-infrastructure/pservers/pserver/junit-test1").build();
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 DBConnectionType type = DBConnectionType.REALTIME;
241 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
243 Loader loader = traversalHttpEntry.getLoader();
244 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
246 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
247 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
248 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.MERGE_PATCH, uri, content);
250 assertEquals("Expected the pserver to be updated", 200, response.getStatus());
253 private int doDelete(String resourceVersion, String uri, String nodeType) throws UnsupportedEncodingException, AAIException {
254 queryParameters.add("resource-version", resourceVersion);
255 DBConnectionType type = DBConnectionType.REALTIME;
256 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
257 Loader loader = traversalHttpEntry.getLoader();
258 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
260 URI uriObject = UriBuilder.fromPath(uri).build();
262 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
266 Introspector obj = loader.introspectorFromName(nodeType);
268 DBRequest dbRequest =
269 new DBRequest.Builder(HttpMethod.DELETE, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION")
270 .rawRequestContent(content).build();
272 List<DBRequest> dbRequestList = new ArrayList<>();
273 dbRequestList.add(dbRequest);
275 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = traversalHttpEntry.process(dbRequestList, "JUNIT");
276 Response response = responsesTuple.getValue1().get(0).getValue1();
278 return response.getStatus();
282 public void test6DeleteOnPserver() throws UnsupportedEncodingException, AAIException {
285 DBConnectionType type = DBConnectionType.REALTIME;
286 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
287 Loader loader = traversalHttpEntry.getLoader();
288 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
290 URI uriObject = UriBuilder.fromPath("/cloud-infrastructure/pservers/pserver/junit-test1").build();
291 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
293 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
295 String msg = response.getEntity().toString();
296 JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
297 String resourceVersion = "";
298 if ( jsonObj.isJsonObject()) {
299 resourceVersion = jsonObj.get("resource-version").getAsString();
301 assertEquals("Expected the pserver to be deleted", 204, doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test1", "pserver"));
305 public void test7DeleteOnPserverNoPinterface() throws UnsupportedEncodingException, AAIException {
308 DBConnectionType type = DBConnectionType.REALTIME;
309 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
310 //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
311 Loader loader = traversalHttpEntry.getLoader();
312 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
314 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
316 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
318 String msg = response.getEntity().toString();
319 JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
320 String resourceVersion = "";
321 if ( jsonObj.isJsonObject()) {
322 resourceVersion = jsonObj.get("resource-version").getAsString();
324 assertEquals("Expected the pserver to be deleted", 204, doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test2", "pserver"));
329 public void test8FailedGetOnPserver() throws UnsupportedEncodingException, AAIException {
331 DBConnectionType type = DBConnectionType.REALTIME;
332 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
333 //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
334 Loader loader = traversalHttpEntry.getLoader();
335 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
337 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
339 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
342 assertEquals("Expected the pserver to be deleted", 404, response.getStatus());
346 public void putEdgeTest() throws UnsupportedEncodingException, AAIException {
348 DBConnectionType type = DBConnectionType.REALTIME;
349 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
350 //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
351 Loader loader = traversalHttpEntry.getLoader();
352 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
355 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
356 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
357 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
359 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
360 content = "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
361 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
364 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
365 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString() + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
366 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
369 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
374 public void notificationOnRelatedToTest() throws UnsupportedEncodingException, AAIException {
376 Loader ld = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
377 UEBNotification uebNotification = Mockito.spy(new UEBNotification(ld, loaderFactory, schemaVersions));
378 DBConnectionType type = DBConnectionType.REALTIME;
379 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type , uebNotification);
381 Loader loader = traversalHttpEntry.getLoader();
382 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
384 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
385 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
386 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
388 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
389 content = "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
390 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
393 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
394 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString() + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
396 doNothing().when(uebNotification).triggerEvents();
397 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
398 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.DELETE_EDGE, uri, content);
401 assertEquals("Expected the pserver relationship to be deleted", 204, response.getStatus());
402 assertEquals("Two notifications", 2, uebNotification.getEvents().size());
404 assertEquals("Notification generated for PUT edge", "UPDATE",
405 uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
406 assertThat("Event body for the edge create has the related to",
407 uebNotification.getEvents().get(0).getObj().marshal(false),
408 containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver"));
410 assertEquals("Notification generated for DELETE edge", "UPDATE",
411 uebNotification.getEvents().get(1).getEventHeader().getValue("action").toString());
412 assertThat("Event body for the edge delete does not have the related to",
413 uebNotification.getEvents().get(1).getObj().marshal(false),
414 not(containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver")));
421 public void putEdgeWrongLabelTest() throws UnsupportedEncodingException, AAIException {
423 DBConnectionType type = DBConnectionType.REALTIME;
424 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
425 //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
426 Loader loader = traversalHttpEntry.getLoader();
427 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
430 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
431 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
432 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
434 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
435 content = "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
436 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
439 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
440 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString() + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"junk\"}";
441 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
444 String msg = response.getEntity().toString();
445 assertEquals("Expected the pserver to be created", 400, response.getStatus());
446 assertThat(msg, containsString("ERR.5.4.6107"));
447 assertThat(msg, containsString("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"));
452 public void pathedFormatOnGetTest() throws UnsupportedEncodingException, AAIException {
454 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
456 DBConnectionType type = DBConnectionType.REALTIME;
457 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
458 //HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
459 Loader loader = traversalHttpEntry.getLoader();
460 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
463 String pserverKey = "pserver-" + testName;
464 String pserverUri = "/cloud-infrastructure/pservers/pserver/" + pserverKey;
465 String content = "{\"hostname\":\"" + pserverKey + "\"}";
466 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserverUri, content);
469 String complexKey = "complex-" + testName;
470 String complexUri = "/cloud-infrastructure/complexes/complex/" + complexKey;
471 content = "{\"physical-location-id\":\"" + complexKey + "\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
472 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, complexUri, content);
475 String relationshipUri = "/cloud-infrastructure/complexes/complex/" + complexKey + "/relationship-list/relationship";
476 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString() + "/cloud-infrastructure/pservers/pserver/" + pserverKey + "\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
477 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, relationshipUri, content);
479 //Get pserver with pathed
480 queryParameters.add("format","pathed");
482 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, pserverUri, content);
483 queryParameters.remove("format");
485 String msg = response.getEntity().toString();
486 assertEquals("Expected get to succeed", 200, response.getStatus());
487 assertThat(msg, containsString(pserverUri));
494 public void getAllPserversTest() throws UnsupportedEncodingException, AAIException {
496 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
498 DBConnectionType type = DBConnectionType.REALTIME;
499 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
500 //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
501 Loader loader = traversalHttpEntry.getLoader();
502 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
505 String pserver1Key = "pserver-1-" + testName;
506 String pserver1Uri = "/cloud-infrastructure/pservers/pserver/" + pserver1Key;
507 String content = "{\"hostname\":\"" + pserver1Key + "\"}";
508 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver1Uri, content);
511 String pserver2Key = "pserver-2-" + testName;
512 String pserver2Uri = "/cloud-infrastructure/pservers/pserver/" + pserver2Key;
513 content = "{\"hostname\":\"" + pserver2Key + "\"}";
514 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver2Uri, content);
516 //Get pserver with pathed
517 queryParameters.add("format","pathed");
519 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, "/cloud-infrastructure/pservers", content);
520 queryParameters.remove("format");
522 String msg = response.getEntity().toString();
523 assertEquals("Expected get to succeed", 200, response.getStatus());
524 assertThat(msg, containsString(pserver1Uri));
525 assertThat(msg, containsString(pserver2Uri));
532 public void testSetGetPaginationMethods(){
533 DBConnectionType type = DBConnectionType.REALTIME;
534 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
535 //HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
536 traversalHttpEntry.setPaginationBucket(10);
537 traversalHttpEntry.setPaginationIndex(1);
538 traversalHttpEntry.setTotalsForPaging(101, traversalHttpEntry.getPaginationBucket());
539 assertEquals("Expected the pagination bucket size to be 10", 10, traversalHttpEntry.getPaginationBucket());
540 assertEquals("Expected the total number of pagination buckets to be 11", 11, traversalHttpEntry.getTotalPaginationBuckets());
541 assertEquals("Expected the pagination index to be 1",1, traversalHttpEntry.getPaginationIndex());
542 assertEquals("Expected the total amount of vertices to be 101",101, traversalHttpEntry.getTotalVertices());
546 public void relatedToTest() throws UnsupportedEncodingException, AAIException {
548 DBConnectionType type = DBConnectionType.REALTIME;
549 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
550 //HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, queryStyle, type);
551 Loader loader = traversalHttpEntry.getLoader();
552 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
555 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
556 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
557 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
559 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
560 content = "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
561 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
564 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
565 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString() + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
566 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
569 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/related-to/pservers";
571 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
572 String respBody = response.getEntity().toString();
575 assertEquals("Expected the pserver to be created", 200, response.getStatus());
576 assertThat("Related to pserver is returned.", respBody, containsString("\"hostname\":\"junit-edge-test-pserver\""));
581 public void setDepthTest() throws UnsupportedEncodingException, AAIException {
582 System.setProperty("AJSC_HOME", ".");
583 System.setProperty("BUNDLECONFIG_DIR", "src/main/test/resources");
585 String depthParam = AAIConfig.get("aai.rest.getall.depthparam");
586 DBConnectionType type = DBConnectionType.REALTIME;
587 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
588 //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
589 int depth = traversalHttpEntry.setDepth(null, depthParam);
590 assertEquals(AAIProperties.MAXIMUM_DEPTH.intValue(), depth);
595 public void getAbstractTest() throws UnsupportedEncodingException, AAIException {
597 DBConnectionType type = DBConnectionType.REALTIME;
598 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
599 //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
600 Loader loader = traversalHttpEntry.getLoader();
601 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
604 String uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf";
605 String content = "{\"vnf-id\":\"junit-abstract-test-generic-vnf\",\"vnf-name\":\"junit-generic-vnf-name\"}";
606 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
609 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver";
610 content = "{\"hostname\":\"junit-abstract-test-pserver\"}";
611 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
614 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver/relationship-list/relationship";
615 content = "{\"related-to\":\"vnf\",\"relationship-data\":[{\"relationship-key\":\"vnf.vnf-id\",\"relationship-value\":\"junit-abstract-test-generic-vnf\"}]}";
616 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
619 uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf/related-to/pservers";
621 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
622 String respBody = response.getEntity().toString();
625 assertThat("Related to pserver is returned.", respBody, containsString("\"hostname\":\"junit-abstract-test-pserver\""));