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.Matchers.anyObject;
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;
38 import javax.ws.rs.core.*;
40 import org.javatuples.Pair;
41 import org.junit.Before;
42 import org.junit.FixMethodOrder;
43 import org.junit.Test;
44 import org.junit.runner.RunWith;
45 import org.junit.runners.MethodSorters;
46 import org.junit.runners.Parameterized;
47 import org.mockito.Mockito;
48 import org.onap.aai.AAISetup;
49 import org.onap.aai.db.props.AAIProperties;
50 import org.onap.aai.dbmap.DBConnectionType;
51 import org.onap.aai.exceptions.AAIException;
52 import org.onap.aai.introspection.Introspector;
53 import org.onap.aai.introspection.Loader;
54 import org.onap.aai.introspection.LoaderFactory;
55 import org.onap.aai.introspection.ModelType;
56 import org.onap.aai.parsers.query.QueryParser;
57 import org.onap.aai.rest.ueb.UEBNotification;
58 import org.onap.aai.restcore.HttpMethod;
59 import org.onap.aai.serialization.engines.QueryStyle;
60 import org.onap.aai.serialization.engines.TransactionalGraphEngine;
61 import org.onap.aai.util.AAIConfig;
63 @RunWith(value = Parameterized.class)
64 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
65 public class HttpEntryTest extends AAISetup {
67 protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
69 private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();
72 VALID_HTTP_STATUS_CODES.add(200);
73 VALID_HTTP_STATUS_CODES.add(201);
74 VALID_HTTP_STATUS_CODES.add(204);
77 @Parameterized.Parameter(value = 0)
78 public QueryStyle queryStyle;
81 * TODO Change the HttpEntry instances accoringly
83 @Parameterized.Parameters(name = "QueryStyle.{0}")
84 public static Collection<Object[]> data() {
85 return Arrays.asList(new Object[][] {{QueryStyle.TRAVERSAL}, {QueryStyle.TRAVERSAL_URI}});
88 private HttpHeaders httpHeaders;
90 private UriInfo uriInfo;
92 private MultivaluedMap<String, String> headersMultiMap;
93 private MultivaluedMap<String, String> queryParameters;
95 private List<String> aaiRequestContextList;
97 private List<MediaType> outputMediaTypes;
100 public void setup() {
102 httpHeaders = Mockito.mock(HttpHeaders.class);
103 uriInfo = Mockito.mock(UriInfo.class);
105 headersMultiMap = new MultivaluedHashMap<>();
106 queryParameters = Mockito.spy(new MultivaluedHashMap<>());
108 headersMultiMap.add("X-FromAppId", "JUNIT");
109 headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());
110 headersMultiMap.add("Real-Time", "true");
111 headersMultiMap.add("Accept", "application/json");
112 headersMultiMap.add("aai-request-context", "");
114 outputMediaTypes = new ArrayList<>();
115 outputMediaTypes.add(APPLICATION_JSON);
117 aaiRequestContextList = new ArrayList<>();
118 aaiRequestContextList.add("");
120 when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
121 when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);
123 when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);
125 when(uriInfo.getQueryParameters()).thenReturn(queryParameters);
126 when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);
128 // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable
129 Mockito.doReturn(null).when(queryParameters).remove(anyObject());
131 when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);
134 private Response doRequest(HttpEntry httpEntry, Loader loader, TransactionalGraphEngine dbEngine, HttpMethod method,
135 String uri, String content) throws UnsupportedEncodingException, AAIException {
136 URI uriObject = UriBuilder.fromPath(uri).build();
137 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
138 String objType = uriQuery.getResultType();
139 if (uri.endsWith("relationship")) {
140 objType = "relationship";
142 Introspector obj = null;
143 if (method.equals(HttpMethod.GET)) {
144 obj = loader.introspectorFromName(objType);
146 obj = loader.unmarshal(objType, content, org.onap.aai.restcore.MediaType.getEnum("application/json"));
149 DBRequest dbRequest =
150 new DBRequest.Builder(method, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION")
151 .rawRequestContent(content).build();
153 List<DBRequest> dbRequestList = new ArrayList<>();
154 dbRequestList.add(dbRequest);
156 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = httpEntry.process(dbRequestList, "JUNIT");
157 return responsesTuple.getValue1().get(0).getValue1();
161 public void test1PutOnPserver() throws UnsupportedEncodingException, AAIException {
164 * TODO do the same with uri
166 DBConnectionType type = DBConnectionType.REALTIME;
167 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
168 Loader loader = traversalHttpEntry.getLoader();
169 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
171 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
172 String content = "{\"hostname\":\"junit-test1\"}";
173 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
175 assertEquals("Expected the pserver to be created", 201, response.getStatus());
179 public void test2PutOnPserverNoPInterface() throws UnsupportedEncodingException, AAIException {
181 DBConnectionType type = DBConnectionType.REALTIME;
182 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
183 Loader loader = traversalHttpEntry.getLoader();
184 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
186 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
187 String content = "{\"hostname\":\"junit-test2\"}";
188 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
190 assertEquals("Expected the pserver to be created", 201, response.getStatus());
194 public void test3PutOnPInterface() {
196 DBConnectionType type = DBConnectionType.REALTIME;
197 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
198 Loader loader = traversalHttpEntry.getLoader();
199 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
201 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1/p-interfaces/p-interface/p1";
202 String content = "{\"interface-name\":\"p1\"}";
203 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
205 assertEquals("Expected the p-interface to be created", 201, response.getStatus());
206 } catch (UnsupportedEncodingException | AAIException e) {
207 // TODO Auto-generated catch block
213 public void test4GetOnPserver() throws UnsupportedEncodingException, AAIException {
215 DBConnectionType type = DBConnectionType.REALTIME;
216 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
218 Loader loader = traversalHttpEntry.getLoader();
219 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
221 URI uriObject = UriBuilder.fromPath("/cloud-infrastructure/pservers/pserver/junit-test1").build();
223 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
224 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
225 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
227 assertEquals("Expected the pserver to be returned", 200, response.getStatus());
231 public void test5MergePatchOnPserver() throws UnsupportedEncodingException, AAIException {
233 DBConnectionType type = DBConnectionType.REALTIME;
234 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
236 Loader loader = traversalHttpEntry.getLoader();
237 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
239 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
240 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
241 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.MERGE_PATCH, uri, content);
243 assertEquals("Expected the pserver to be updated", 200, response.getStatus());
246 private int doDelete(String resourceVersion, String uri, String nodeType)
247 throws UnsupportedEncodingException, AAIException {
248 queryParameters.add("resource-version", resourceVersion);
249 DBConnectionType type = DBConnectionType.REALTIME;
250 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
251 Loader loader = traversalHttpEntry.getLoader();
252 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
254 URI uriObject = UriBuilder.fromPath(uri).build();
256 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
260 Introspector obj = loader.introspectorFromName(nodeType);
262 DBRequest dbRequest = new DBRequest.Builder(HttpMethod.DELETE, uriObject, uriQuery, obj, httpHeaders, uriInfo,
263 "JUNIT-TRANSACTION").rawRequestContent(content).build();
265 List<DBRequest> dbRequestList = new ArrayList<>();
266 dbRequestList.add(dbRequest);
268 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = traversalHttpEntry.process(dbRequestList, "JUNIT");
269 Response response = responsesTuple.getValue1().get(0).getValue1();
271 return response.getStatus();
275 public void test6DeleteOnPserver() throws UnsupportedEncodingException, AAIException {
277 DBConnectionType type = DBConnectionType.REALTIME;
278 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
279 Loader loader = traversalHttpEntry.getLoader();
280 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
282 URI uriObject = UriBuilder.fromPath("/cloud-infrastructure/pservers/pserver/junit-test1").build();
283 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
285 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
287 String msg = response.getEntity().toString();
288 JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
289 String resourceVersion = "";
290 if (jsonObj.isJsonObject()) {
291 resourceVersion = jsonObj.get("resource-version").getAsString();
293 assertEquals("Expected the pserver to be deleted", 204,
294 doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test1", "pserver"));
298 public void test7DeleteOnPserverNoPinterface() throws UnsupportedEncodingException, AAIException {
300 DBConnectionType type = DBConnectionType.REALTIME;
301 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
302 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
303 Loader loader = traversalHttpEntry.getLoader();
304 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
306 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
308 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
310 String msg = response.getEntity().toString();
311 JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
312 String resourceVersion = "";
313 if (jsonObj.isJsonObject()) {
314 resourceVersion = jsonObj.get("resource-version").getAsString();
316 assertEquals("Expected the pserver to be deleted", 204,
317 doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test2", "pserver"));
321 public void test8FailedGetOnPserver() throws UnsupportedEncodingException, AAIException {
323 DBConnectionType type = DBConnectionType.REALTIME;
324 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
325 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
326 Loader loader = traversalHttpEntry.getLoader();
327 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
329 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
331 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
334 assertEquals("Expected the pserver to be deleted", 404, response.getStatus());
338 public void putEdgeTest() throws UnsupportedEncodingException, AAIException {
340 DBConnectionType type = DBConnectionType.REALTIME;
341 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
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 DBConnectionType type = DBConnectionType.REALTIME;
372 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type, uebNotification);
374 Loader loader = traversalHttpEntry.getLoader();
375 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
377 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
378 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
379 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
381 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
383 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
384 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
387 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
388 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
389 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
391 doNothing().when(uebNotification).triggerEvents();
392 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
393 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.DELETE_EDGE, uri, content);
396 assertEquals("Expected the pserver relationship to be deleted", 204, response.getStatus());
397 assertEquals("Two notifications", 2, uebNotification.getEvents().size());
399 assertEquals("Notification generated for PUT edge", "UPDATE",
400 uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
401 assertThat("Event body for the edge create has the related to",
402 uebNotification.getEvents().get(0).getObj().marshal(false),
403 containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver"));
405 assertEquals("Notification generated for DELETE edge", "UPDATE",
406 uebNotification.getEvents().get(1).getEventHeader().getValue("action").toString());
407 assertThat("Event body for the edge delete does not have the related to",
408 uebNotification.getEvents().get(1).getObj().marshal(false),
409 not(containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver")));
414 public void putEdgeWrongLabelTest() throws UnsupportedEncodingException, AAIException {
416 DBConnectionType type = DBConnectionType.REALTIME;
417 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
418 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
419 Loader loader = traversalHttpEntry.getLoader();
420 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
423 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
424 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
425 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
427 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
429 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
430 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
433 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
434 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
435 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"junk\"}";
436 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
439 String msg = response.getEntity().toString();
440 assertEquals("Expected the pserver to be created", 400, response.getStatus());
441 assertThat(msg, containsString("ERR.5.4.6107"));
442 assertThat(msg, containsString(
443 "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"));
448 public void pathedFormatOnGetTest() throws UnsupportedEncodingException, AAIException {
450 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
452 DBConnectionType type = DBConnectionType.REALTIME;
453 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
454 // HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL,
456 Loader loader = traversalHttpEntry.getLoader();
457 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
460 String pserverKey = "pserver-" + testName;
461 String pserverUri = "/cloud-infrastructure/pservers/pserver/" + pserverKey;
462 String content = "{\"hostname\":\"" + pserverKey + "\"}";
463 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserverUri, content);
466 String complexKey = "complex-" + testName;
467 String complexUri = "/cloud-infrastructure/complexes/complex/" + complexKey;
468 content = "{\"physical-location-id\":\"" + complexKey
469 + "\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
470 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, complexUri, content);
473 String relationshipUri =
474 "/cloud-infrastructure/complexes/complex/" + complexKey + "/relationship-list/relationship";
475 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
476 + "/cloud-infrastructure/pservers/pserver/" + pserverKey
477 + "\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
478 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, relationshipUri, content);
480 // Get pserver with pathed
481 queryParameters.add("format", "pathed");
483 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, pserverUri, content);
484 queryParameters.remove("format");
486 String msg = response.getEntity().toString();
487 assertEquals("Expected get to succeed", 200, response.getStatus());
488 assertThat(msg, containsString(pserverUri));
495 public void getAllPserversTest() throws UnsupportedEncodingException, AAIException {
497 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
499 DBConnectionType type = DBConnectionType.REALTIME;
500 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
501 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
502 Loader loader = traversalHttpEntry.getLoader();
503 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
506 String pserver1Key = "pserver-1-" + testName;
507 String pserver1Uri = "/cloud-infrastructure/pservers/pserver/" + pserver1Key;
508 String content = "{\"hostname\":\"" + pserver1Key + "\"}";
509 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver1Uri, content);
512 String pserver2Key = "pserver-2-" + testName;
513 String pserver2Uri = "/cloud-infrastructure/pservers/pserver/" + pserver2Key;
514 content = "{\"hostname\":\"" + pserver2Key + "\"}";
515 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver2Uri, content);
517 // Get pserver with pathed
518 queryParameters.add("format", "pathed");
520 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET,
521 "/cloud-infrastructure/pservers", content);
522 queryParameters.remove("format");
524 String msg = response.getEntity().toString();
525 assertEquals("Expected get to succeed", 200, response.getStatus());
526 assertThat(msg, containsString(pserver1Uri));
527 assertThat(msg, containsString(pserver2Uri));
534 public void testSetGetPaginationMethods() {
535 DBConnectionType type = DBConnectionType.REALTIME;
536 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
537 // HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL,
539 traversalHttpEntry.setPaginationBucket(10);
540 traversalHttpEntry.setPaginationIndex(1);
541 traversalHttpEntry.setTotalsForPaging(101, traversalHttpEntry.getPaginationBucket());
542 assertEquals("Expected the pagination bucket size to be 10", 10, traversalHttpEntry.getPaginationBucket());
543 assertEquals("Expected the total number of pagination buckets to be 11", 11,
544 traversalHttpEntry.getTotalPaginationBuckets());
545 assertEquals("Expected the pagination index to be 1", 1, traversalHttpEntry.getPaginationIndex());
546 assertEquals("Expected the total amount of vertices to be 101", 101, traversalHttpEntry.getTotalVertices());
550 public void relatedToTest() throws UnsupportedEncodingException, AAIException {
552 DBConnectionType type = DBConnectionType.REALTIME;
553 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
554 // HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, queryStyle, type);
555 Loader loader = traversalHttpEntry.getLoader();
556 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
559 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
560 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
561 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
563 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
565 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
566 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
569 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
570 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
571 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
572 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
575 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/related-to/pservers";
577 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
578 String respBody = response.getEntity().toString();
581 assertEquals("Expected the pserver to be created", 200, response.getStatus());
582 assertThat("Related to pserver is returned.", respBody,
583 containsString("\"hostname\":\"junit-edge-test-pserver\""));
588 public void setDepthTest() throws UnsupportedEncodingException, AAIException {
589 System.setProperty("AJSC_HOME", ".");
590 System.setProperty("BUNDLECONFIG_DIR", "src/main/test/resources");
592 String depthParam = AAIConfig.get("aai.rest.getall.depthparam");
593 DBConnectionType type = DBConnectionType.REALTIME;
594 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
595 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, QueryStyle.TRAVERSAL, type);
596 int depth = traversalHttpEntry.setDepth(null, depthParam);
597 assertEquals(AAIProperties.MAXIMUM_DEPTH.intValue(), depth);
601 public void getAbstractTest() throws UnsupportedEncodingException, AAIException {
603 DBConnectionType type = DBConnectionType.REALTIME;
604 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), type);
605 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
606 Loader loader = traversalHttpEntry.getLoader();
607 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
610 String uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf";
611 String content = "{\"vnf-id\":\"junit-abstract-test-generic-vnf\",\"vnf-name\":\"junit-generic-vnf-name\"}";
612 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
615 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver";
616 content = "{\"hostname\":\"junit-abstract-test-pserver\"}";
617 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
620 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver/relationship-list/relationship";
622 "{\"related-to\":\"vnf\",\"relationship-data\":[{\"relationship-key\":\"vnf.vnf-id\",\"relationship-value\":\"junit-abstract-test-generic-vnf\"}]}";
623 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
626 uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf/related-to/pservers";
628 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
629 String respBody = response.getEntity().toString();
632 assertThat("Related to pserver is returned.", respBody,
633 containsString("\"hostname\":\"junit-abstract-test-pserver\""));