Integrate aai-schema-ingest library into aai-core
[aai/aai-common.git] / aai-core / src / test / java / org / onap / aai / rest / db / HttpEntryTest.java
index 0d4f4f1..80b4d51 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * org.onap.aai
  * ================================================================================
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  */
 package org.onap.aai.rest.db;
 
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import org.javatuples.Pair;
 import org.junit.Before;
 import org.junit.FixMethodOrder;
-import org.junit.runners.MethodSorters;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.junit.runners.Parameterized;
 import org.mockito.Mockito;
 import org.onap.aai.AAISetup;
+import org.onap.aai.db.props.AAIProperties;
 import org.onap.aai.dbmap.DBConnectionType;
-import org.onap.aai.domain.yang.Pserver;
-import org.onap.aai.domain.yang.Pservers;
 import org.onap.aai.exceptions.AAIException;
-import org.onap.aai.introspection.*;
+import org.onap.aai.introspection.Introspector;
+import org.onap.aai.introspection.Loader;
+import org.onap.aai.introspection.LoaderFactory;
+import org.onap.aai.introspection.ModelType;
 import org.onap.aai.parsers.query.QueryParser;
+import org.onap.aai.rest.ueb.UEBNotification;
 import org.onap.aai.restcore.HttpMethod;
 import org.onap.aai.serialization.engines.QueryStyle;
 import org.onap.aai.serialization.engines.TransactionalGraphEngine;
+import org.onap.aai.util.AAIConfig;
 
 import javax.ws.rs.core.*;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.util.*;
-import java.util.stream.Collectors;
-
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
 
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.Matchers.not;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertThat;
 import static org.mockito.Matchers.anyObject;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.when;
 
+
+@RunWith(value = Parameterized.class)
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 public class HttpEntryTest extends AAISetup {
 
@@ -68,6 +71,21 @@ public class HttpEntryTest extends AAISetup {
         VALID_HTTP_STATUS_CODES.add(201);
         VALID_HTTP_STATUS_CODES.add(204);
     }
+    
+
+    @Parameterized.Parameter(value = 0)
+    public QueryStyle queryStyle;
+
+    /*
+     * TODO Change the HttpEntry instances accoringly
+     */
+    @Parameterized.Parameters(name = "QueryStyle.{0}")
+    public static Collection<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                {QueryStyle.TRAVERSAL},
+                {QueryStyle.TRAVERSAL_URI}
+        });
+    }
 
     private HttpHeaders httpHeaders;
 
@@ -116,7 +134,7 @@ public class HttpEntryTest extends AAISetup {
         when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);
     }
 
-    private Response getResponse(HttpEntry httpEntry, Loader loader, TransactionalGraphEngine dbEngine, HttpMethod method, String uri, String content) throws UnsupportedEncodingException, AAIException {
+    private Response doRequest(HttpEntry httpEntry, Loader loader, TransactionalGraphEngine dbEngine, HttpMethod method, String uri, String content) throws UnsupportedEncodingException, AAIException {
         URI uriObject = UriBuilder.fromPath(uri).build();
         QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
         String objType = uriQuery.getResultType();
@@ -145,14 +163,18 @@ public class HttpEntryTest extends AAISetup {
     @Test
     public void test1PutOnPserver() throws UnsupportedEncodingException, AAIException {
 
+       /*
+        * TODO do the same with uri
+        */
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
+       
         String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
         String content = "{\"hostname\":\"junit-test1\"}";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
         dbEngine.commit();
         assertEquals("Expected the pserver to be created", 201, response.getStatus());
     }
@@ -161,13 +183,13 @@ public class HttpEntryTest extends AAISetup {
     public void test2PutOnPserverNoPInterface() throws UnsupportedEncodingException, AAIException {
 
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
         String content = "{\"hostname\":\"junit-test2\"}";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
         dbEngine.commit();
         assertEquals("Expected the pserver to be created", 201, response.getStatus());
     }
@@ -176,13 +198,13 @@ public class HttpEntryTest extends AAISetup {
     public void test3PutOnPInterface()  {
        try {
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         String uri = "/cloud-infrastructure/pservers/pserver/junit-test1/p-interfaces/p-interface/p1";
         String content = "{\"interface-name\":\"p1\"}";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
         dbEngine.commit();
         assertEquals("Expected the p-interface to be created", 201, response.getStatus());
        } catch (UnsupportedEncodingException | AAIException e) {
@@ -197,15 +219,17 @@ public class HttpEntryTest extends AAISetup {
     public void test4GetOnPserver() throws UnsupportedEncodingException, AAIException {
 
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        
+        
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         URI uriObject = UriBuilder.fromPath("/cloud-infrastructure/pservers/pserver/junit-test1").build();
 
         String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
         String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
         dbEngine.commit();
         assertEquals("Expected the pserver to be returned", 200, response.getStatus());
     }
@@ -214,13 +238,14 @@ public class HttpEntryTest extends AAISetup {
     public void test5MergePatchOnPserver() throws UnsupportedEncodingException, AAIException {
 
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
         String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.MERGE_PATCH, uri, content);
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.MERGE_PATCH, uri, content);
         dbEngine.commit();
         assertEquals("Expected the pserver to be updated", 200, response.getStatus());
     }
@@ -228,9 +253,9 @@ public class HttpEntryTest extends AAISetup {
     private int doDelete(String resourceVersion, String uri, String nodeType) throws UnsupportedEncodingException, AAIException {
        queryParameters.add("resource-version", resourceVersion);
        DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+       traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         URI uriObject = UriBuilder.fromPath(uri).build();
 
@@ -247,7 +272,7 @@ public class HttpEntryTest extends AAISetup {
         List<DBRequest> dbRequestList = new ArrayList<>();
         dbRequestList.add(dbRequest);
 
-        Pair<Boolean, List<Pair<URI, Response>>> responsesTuple  = httpEntry.process(dbRequestList, "JUNIT");
+        Pair<Boolean, List<Pair<URI, Response>>> responsesTuple  = traversalHttpEntry.process(dbRequestList, "JUNIT");
         Response response = responsesTuple.getValue1().get(0).getValue1();
         dbEngine.commit();
         return response.getStatus();
@@ -258,14 +283,14 @@ public class HttpEntryTest extends AAISetup {
 
 
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         URI uriObject = UriBuilder.fromPath("/cloud-infrastructure/pservers/pserver/junit-test1").build();
         String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
         String content = "";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
         dbEngine.commit();
         String msg = response.getEntity().toString();
         JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
@@ -281,13 +306,14 @@ public class HttpEntryTest extends AAISetup {
 
        
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
         String content = "";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
         dbEngine.commit();
         String msg = response.getEntity().toString();
         JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
@@ -303,13 +329,14 @@ public class HttpEntryTest extends AAISetup {
     public void test8FailedGetOnPserver() throws UnsupportedEncodingException, AAIException {
 
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
         String content = "";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
         dbEngine.commit();
 
         assertEquals("Expected the pserver to be deleted", 404, response.getStatus());
@@ -319,55 +346,282 @@ public class HttpEntryTest extends AAISetup {
     public void putEdgeTest() throws UnsupportedEncodingException, AAIException {
 
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+       //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         //Put pserver
         String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
         String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
-        getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
         //Put complex
         uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
         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\"}";
-        getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
 
         //PutEdge
         uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
-        content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + Version.getLatest().toString() + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
+        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\"}";
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
 
         dbEngine.rollback();
-        //System.out.println(response.getEntity().toString());
-        assertEquals("Expected the pserver to be created", 200, response.getStatus());
+         assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
+    }
+
+
+    @Test
+    public void notificationOnRelatedToTest() throws UnsupportedEncodingException, AAIException {
+
+        Loader ld = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
+       UEBNotification uebNotification = Mockito.spy(new UEBNotification(ld, loaderFactory, schemaVersions));
+        DBConnectionType type = DBConnectionType.REALTIME;
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type , uebNotification);
+        
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
+        //Put pserver
+        String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
+        String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        //Put complex
+        uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
+        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\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+
+        //PutEdge
+        uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
+        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\"}";
+
+        doNothing().when(uebNotification).triggerEvents();
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
+        response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.DELETE_EDGE, uri, content);
+
+        dbEngine.rollback();
+        assertEquals("Expected the pserver relationship to be deleted", 204, response.getStatus());
+        assertEquals("Two notifications", 2, uebNotification.getEvents().size());
+
+        assertEquals("Notification generated for PUT edge", "UPDATE",
+                uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
+        assertThat("Event body for the edge create has the related to",
+                uebNotification.getEvents().get(0).getObj().marshal(false),
+                containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver"));
+
+        assertEquals("Notification generated for DELETE edge", "UPDATE",
+                uebNotification.getEvents().get(1).getEventHeader().getValue("action").toString());
+        assertThat("Event body for the edge delete does not have the related to",
+                uebNotification.getEvents().get(1).getObj().marshal(false),
+                not(containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver")));
+
+
+
     }
 
     @Test
     public void putEdgeWrongLabelTest() throws UnsupportedEncodingException, AAIException {
 
         DBConnectionType type = DBConnectionType.REALTIME;
-        HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
-        Loader loader = httpEntry.getLoader();
-        TransactionalGraphEngine dbEngine = httpEntry.getDbEngine();
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
 
         //Put pserver
         String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
         String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
-        getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
         //Put complex
         uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
         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\"}";
-        getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
 
         //PutEdge
         uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
-        content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + Version.getLatest().toString() + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"junk\"}";
-        Response response = getResponse(httpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
+        content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString() + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"junk\"}";
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
 
         dbEngine.rollback();
         String msg = response.getEntity().toString();
         assertEquals("Expected the pserver to be created", 400, response.getStatus());
-        assertTrue(msg.contains("ERR.5.4.6107"));
-        assertTrue(msg.contains("Required Edge-property not found in input data:no COUSIN edge rule between complex and pserver with label junk"));
+        assertThat(msg, containsString("ERR.5.4.6107"));
+        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"));
+
+    }
+
+    @Test
+    public void pathedFormatOnGetTest() throws UnsupportedEncodingException, AAIException {
+
+        final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
+
+        DBConnectionType type = DBConnectionType.REALTIME;
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
+
+        //Put pserver
+        String pserverKey = "pserver-" + testName;
+        String pserverUri = "/cloud-infrastructure/pservers/pserver/" + pserverKey;
+        String content = "{\"hostname\":\"" + pserverKey + "\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserverUri, content);
+
+        //Put complex
+        String complexKey = "complex-" + testName;
+        String complexUri = "/cloud-infrastructure/complexes/complex/" + complexKey;
+        content = "{\"physical-location-id\":\"" + complexKey + "\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, complexUri, content);
+
+        //PutEdge
+        String relationshipUri = "/cloud-infrastructure/complexes/complex/" + complexKey + "/relationship-list/relationship";
+        content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString() + "/cloud-infrastructure/pservers/pserver/"  + pserverKey +  "\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, relationshipUri, content);
+
+        //Get pserver with pathed
+        queryParameters.add("format","pathed");
+        content = "";
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, pserverUri, content);
+        queryParameters.remove("format");
+
+        String msg = response.getEntity().toString();
+        assertEquals("Expected get to succeed", 200, response.getStatus());
+        assertThat(msg, containsString(pserverUri));
+
+        dbEngine.rollback();
+
+    }
+
+    @Test
+    public void getAllPserversTest() throws UnsupportedEncodingException, AAIException {
+
+        final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
+
+        DBConnectionType type = DBConnectionType.REALTIME;
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
+
+        //Put pserver
+        String pserver1Key = "pserver-1-" + testName;
+        String pserver1Uri = "/cloud-infrastructure/pservers/pserver/" + pserver1Key;
+        String content = "{\"hostname\":\"" + pserver1Key + "\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver1Uri, content);
+
+        //Put complex
+        String pserver2Key = "pserver-2-" + testName;
+        String pserver2Uri = "/cloud-infrastructure/pservers/pserver/" + pserver2Key;
+        content = "{\"hostname\":\"" + pserver2Key + "\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver2Uri, content);
+
+        //Get pserver with pathed
+        queryParameters.add("format","pathed");
+        content = "";
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, "/cloud-infrastructure/pservers", content);
+        queryParameters.remove("format");
+
+        String msg = response.getEntity().toString();
+        assertEquals("Expected get to succeed", 200, response.getStatus());
+        assertThat(msg, containsString(pserver1Uri));
+        assertThat(msg, containsString(pserver2Uri));
+
+        dbEngine.rollback();
+
+    }
+
+   @Test
+    public void testSetGetPaginationMethods(){
+        DBConnectionType type = DBConnectionType.REALTIME;
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
+        traversalHttpEntry.setPaginationBucket(10);
+        traversalHttpEntry.setPaginationIndex(1);
+        traversalHttpEntry.setTotalsForPaging(101, traversalHttpEntry.getPaginationBucket());
+        assertEquals("Expected the pagination bucket size to be 10", 10, traversalHttpEntry.getPaginationBucket());
+        assertEquals("Expected the total number of pagination buckets to be 11", 11, traversalHttpEntry.getTotalPaginationBuckets());
+        assertEquals("Expected the pagination index to be 1",1, traversalHttpEntry.getPaginationIndex());
+        assertEquals("Expected the total amount of vertices to be 101",101, traversalHttpEntry.getTotalVertices());
+    }
+
+    @Test
+    public void relatedToTest() throws UnsupportedEncodingException, AAIException {
+
+        DBConnectionType type = DBConnectionType.REALTIME;
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, queryStyle, type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
+
+        //Put pserver
+        String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
+        String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+        //Put complex
+        uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
+        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\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+
+        //PutEdge
+        uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
+        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\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
+
+        //getRelatedTo
+        uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/related-to/pservers";
+        content = "";
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
+        String respBody = response.getEntity().toString();
+
+        dbEngine.rollback();
+        assertEquals("Expected the pserver to be created", 200, response.getStatus());
+        assertThat("Related to pserver is returned.", respBody, containsString("\"hostname\":\"junit-edge-test-pserver\""));
+       
+    }
+
+    @Test
+    public void setDepthTest() throws UnsupportedEncodingException, AAIException {
+               System.setProperty("AJSC_HOME", ".");
+               System.setProperty("BUNDLECONFIG_DIR", "src/main/test/resources");
+
+               String depthParam = AAIConfig.get("aai.rest.getall.depthparam");
+        DBConnectionType type = DBConnectionType.REALTIME;
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
+        int depth = traversalHttpEntry.setDepth(null, depthParam);
+        assertEquals(AAIProperties.MAXIMUM_DEPTH.intValue(), depth);
+    }
+
+
+    @Test
+    public void getAbstractTest() throws UnsupportedEncodingException, AAIException {
+
+        DBConnectionType type = DBConnectionType.REALTIME;
+        traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
+        //HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
+        Loader loader = traversalHttpEntry.getLoader();
+        TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
+
+        //Put generic-vnf
+        String uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf";
+        String content = "{\"vnf-id\":\"junit-abstract-test-generic-vnf\",\"vnf-name\":\"junit-generic-vnf-name\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+
+        //Put pserver
+        uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver";
+        content = "{\"hostname\":\"junit-abstract-test-pserver\"}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
+
+        //PutEdge
+        uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver/relationship-list/relationship";
+        content = "{\"related-to\":\"vnf\",\"relationship-data\":[{\"relationship-key\":\"vnf.vnf-id\",\"relationship-value\":\"junit-abstract-test-generic-vnf\"}]}";
+        doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
+
+        //getRelatedTo
+        uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf/related-to/pservers";
+        content = "";
+        Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
+        String respBody = response.getEntity().toString();
+
+        dbEngine.rollback();
+        assertThat("Related to pserver is returned.", respBody, containsString("\"hostname\":\"junit-abstract-test-pserver\""));
     }
-}
+}
\ No newline at end of file