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.json.JSONArray;
42 import org.json.JSONObject;
43 import org.junit.Assert;
44 import org.junit.Before;
45 import org.junit.FixMethodOrder;
46 import org.junit.Test;
47 import org.junit.runner.RunWith;
48 import org.junit.runners.MethodSorters;
49 import org.junit.runners.Parameterized;
50 import org.mockito.Mockito;
51 import org.onap.aai.AAISetup;
52 import org.onap.aai.db.props.AAIProperties;
53 import org.onap.aai.exceptions.AAIException;
54 import org.onap.aai.introspection.Introspector;
55 import org.onap.aai.introspection.Loader;
56 import org.onap.aai.introspection.ModelType;
57 import org.onap.aai.parsers.query.QueryParser;
58 import org.onap.aai.rest.ueb.UEBNotification;
59 import org.onap.aai.restcore.HttpMethod;
60 import org.onap.aai.serialization.engines.QueryStyle;
61 import org.onap.aai.serialization.engines.TransactionalGraphEngine;
62 import org.onap.aai.util.AAIConfig;
64 @RunWith(value = Parameterized.class)
65 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
66 public class HttpEntryTest extends AAISetup {
68 protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
70 private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();
73 VALID_HTTP_STATUS_CODES.add(200);
74 VALID_HTTP_STATUS_CODES.add(201);
75 VALID_HTTP_STATUS_CODES.add(204);
78 @Parameterized.Parameter(value = 0)
79 public QueryStyle queryStyle;
82 * TODO Change the HttpEntry instances accoringly
84 @Parameterized.Parameters(name = "QueryStyle.{0}")
85 public static Collection<Object[]> data() {
86 return Arrays.asList(new Object[][] {{QueryStyle.TRAVERSAL}, {QueryStyle.TRAVERSAL_URI}});
89 private HttpHeaders httpHeaders;
91 private UriInfo uriInfo;
93 private MultivaluedMap<String, String> headersMultiMap;
94 private MultivaluedMap<String, String> queryParameters;
96 private List<String> aaiRequestContextList;
98 private List<MediaType> outputMediaTypes;
101 public void setup() {
103 httpHeaders = Mockito.mock(HttpHeaders.class);
104 uriInfo = Mockito.mock(UriInfo.class);
106 headersMultiMap = new MultivaluedHashMap<>();
107 queryParameters = Mockito.spy(new MultivaluedHashMap<>());
109 headersMultiMap.add("X-FromAppId", "JUNIT");
110 headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());
111 headersMultiMap.add("Real-Time", "true");
112 headersMultiMap.add("Accept", "application/json");
113 headersMultiMap.add("aai-request-context", "");
115 outputMediaTypes = new ArrayList<>();
116 outputMediaTypes.add(APPLICATION_JSON);
118 aaiRequestContextList = new ArrayList<>();
119 aaiRequestContextList.add("");
121 when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
122 when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);
124 when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);
126 when(uriInfo.getQueryParameters()).thenReturn(queryParameters);
127 when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);
129 // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable
130 Mockito.doReturn(null).when(queryParameters).remove(anyObject());
132 when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);
135 private Response doRequest(HttpEntry httpEntry, Loader loader, TransactionalGraphEngine dbEngine, HttpMethod method,
136 String uri, String content) throws UnsupportedEncodingException, AAIException {
137 URI uriObject = UriBuilder.fromPath(uri).build();
138 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
139 String objType = uriQuery.getResultType();
140 if (uri.endsWith("relationship")) {
141 objType = "relationship";
144 if (method.equals(HttpMethod.GET) || method.equals(HttpMethod.GET_RELATIONSHIP)) {
145 obj = loader.introspectorFromName(objType);
147 obj = loader.unmarshal(objType, content, org.onap.aai.restcore.MediaType.getEnum("application/json"));
150 DBRequest dbRequest =
151 new DBRequest.Builder(method, uriObject, uriQuery, obj, httpHeaders, uriInfo, "JUNIT-TRANSACTION")
152 .rawRequestContent(content).build();
154 List<DBRequest> dbRequestList = new ArrayList<>();
155 dbRequestList.add(dbRequest);
157 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = httpEntry.process(dbRequestList, "JUNIT");
158 return responsesTuple.getValue1().get(0).getValue1();
162 public void test1PutOnPserver() throws UnsupportedEncodingException, AAIException {
165 * TODO do the same with uri
167 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
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 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
182 Loader loader = traversalHttpEntry.getLoader();
183 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
185 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
186 String content = "{\"hostname\":\"junit-test2\"}";
187 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
189 assertEquals("Expected the pserver to be created", 201, response.getStatus());
193 public void test3PutOnPInterface() {
195 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
196 Loader loader = traversalHttpEntry.getLoader();
197 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
199 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1/p-interfaces/p-interface/p1";
200 String content = "{\"interface-name\":\"p1\"}";
201 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
203 assertEquals("Expected the p-interface to be created", 201, response.getStatus());
204 } catch (UnsupportedEncodingException | AAIException e) {
205 // TODO Auto-generated catch block
211 public void test4GetOnPserver() throws UnsupportedEncodingException, AAIException {
213 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
215 Loader loader = traversalHttpEntry.getLoader();
216 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
218 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
219 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
220 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
222 assertEquals("Expected the pserver to be returned", 200, response.getStatus());
226 public void test5MergePatchOnPserver() throws UnsupportedEncodingException, AAIException {
228 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
230 Loader loader = traversalHttpEntry.getLoader();
231 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
233 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
234 String content = "{\"hostname\":\"junit-test1\", \"equip-type\":\"junit-equip-type\"}";
235 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.MERGE_PATCH, uri, content);
237 assertEquals("Expected the pserver to be updated", 200, response.getStatus());
240 private int doDelete(String resourceVersion, String uri, String nodeType)
241 throws UnsupportedEncodingException, AAIException {
242 queryParameters.add("resource-version", resourceVersion);
243 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
244 Loader loader = traversalHttpEntry.getLoader();
245 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
247 URI uriObject = UriBuilder.fromPath(uri).build();
249 QueryParser uriQuery = dbEngine.getQueryBuilder().createQueryFromURI(uriObject);
253 Introspector obj = loader.introspectorFromName(nodeType);
255 DBRequest dbRequest = new DBRequest.Builder(HttpMethod.DELETE, uriObject, uriQuery, obj, httpHeaders, uriInfo,
256 "JUNIT-TRANSACTION").rawRequestContent(content).build();
258 List<DBRequest> dbRequestList = new ArrayList<>();
259 dbRequestList.add(dbRequest);
261 Pair<Boolean, List<Pair<URI, Response>>> responsesTuple = traversalHttpEntry.process(dbRequestList, "JUNIT");
262 Response response = responsesTuple.getValue1().get(0).getValue1();
264 return response.getStatus();
268 public void test6DeleteOnPserver() throws UnsupportedEncodingException, AAIException {
270 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
271 Loader loader = traversalHttpEntry.getLoader();
272 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
274 String uri = "/cloud-infrastructure/pservers/pserver/junit-test1";
276 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
278 String msg = response.getEntity().toString();
279 JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
280 String resourceVersion = "";
281 if (jsonObj.isJsonObject()) {
282 resourceVersion = jsonObj.get("resource-version").getAsString();
284 assertEquals("Expected the pserver to be deleted", 204,
285 doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test1", "pserver"));
289 public void test7DeleteOnPserverNoPinterface() throws UnsupportedEncodingException, AAIException {
291 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
292 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
293 Loader loader = traversalHttpEntry.getLoader();
294 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
296 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
298 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
300 String msg = response.getEntity().toString();
301 JsonObject jsonObj = new JsonParser().parse(msg).getAsJsonObject();
302 String resourceVersion = "";
303 if (jsonObj.isJsonObject()) {
304 resourceVersion = jsonObj.get("resource-version").getAsString();
306 assertEquals("Expected the pserver to be deleted", 204,
307 doDelete(resourceVersion, "/cloud-infrastructure/pservers/pserver/junit-test2", "pserver"));
311 public void test8FailedGetOnPserver() throws UnsupportedEncodingException, AAIException {
313 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
314 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
315 Loader loader = traversalHttpEntry.getLoader();
316 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
318 String uri = "/cloud-infrastructure/pservers/pserver/junit-test2";
320 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
323 assertEquals("Expected the pserver to be deleted", 404, response.getStatus());
327 public void putEdgeTest() throws UnsupportedEncodingException, AAIException {
329 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
330 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
331 Loader loader = traversalHttpEntry.getLoader();
332 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
335 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
336 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
337 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
339 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
341 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
342 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
345 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
346 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
347 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
348 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
351 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
355 public void notificationOnRelatedToTest() throws UnsupportedEncodingException, AAIException {
357 Loader ld = loaderFactory.createLoaderForVersion(ModelType.MOXY, schemaVersions.getDefaultVersion());
358 UEBNotification uebNotification = Mockito.spy(new UEBNotification(ld, loaderFactory, schemaVersions));
359 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion(), uebNotification);
361 Loader loader = traversalHttpEntry.getLoader();
362 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
364 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
365 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
366 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
368 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
370 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
371 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
374 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
375 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
376 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
378 doNothing().when(uebNotification).triggerEvents();
379 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
381 assertEquals("Expected the pserver relationship to be deleted", 200, response.getStatus());
382 assertEquals("Two notifications", 2, uebNotification.getEvents().size());
383 assertEquals("Notification generated for PUT edge", "UPDATE",
384 uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
385 assertThat("Event body for the edge create has the related to",
386 uebNotification.getEvents().get(0).getObj().marshal(false),
387 containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver"));
389 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.DELETE_EDGE, uri, content);
390 assertEquals("Expected the pserver relationship to be deleted", 204, response.getStatus());
391 assertEquals("Two notifications", 2, uebNotification.getEvents().size());
392 assertEquals("Notification generated for DELETE edge", "UPDATE",
393 uebNotification.getEvents().get(0).getEventHeader().getValue("action").toString());
394 assertThat("Event body for the edge delete does not have the related to",
395 uebNotification.getEvents().get(0).getObj().marshal(false),
396 not(containsString("cloud-infrastructure/pservers/pserver/junit-edge-test-pserver")));
402 public void putEdgeWrongLabelTest() throws UnsupportedEncodingException, AAIException {
404 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
405 // HttpEntry httpEntry = new HttpEntry(Version.getLatest(), ModelType.MOXY, queryStyle, type);
406 Loader loader = traversalHttpEntry.getLoader();
407 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
410 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
411 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
412 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
414 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
416 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
417 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
420 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
421 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
422 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"junk\"}";
423 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
426 String msg = response.getEntity().toString();
427 assertEquals("Expected the pserver to be created", 400, response.getStatus());
428 assertThat(msg, containsString("ERR.5.4.6107"));
429 assertThat(msg, containsString(
430 "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"));
435 public void pathedFormatOnGetTest() throws UnsupportedEncodingException, AAIException {
437 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
439 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
440 // HttpEntry httpEntry = new HttpEntry(schemaVersions.getDefaultVersion(), ModelType.MOXY, QueryStyle.TRAVERSAL,
442 Loader loader = traversalHttpEntry.getLoader();
443 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
446 String pserverKey = "pserver-" + testName;
447 String pserverUri = "/cloud-infrastructure/pservers/pserver/" + pserverKey;
448 String content = "{\"hostname\":\"" + pserverKey + "\"}";
449 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserverUri, content);
452 String complexKey = "complex-" + testName;
453 String complexUri = "/cloud-infrastructure/complexes/complex/" + complexKey;
454 content = "{\"physical-location-id\":\"" + complexKey
455 + "\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
456 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, complexUri, content);
459 String relationshipUri =
460 "/cloud-infrastructure/complexes/complex/" + complexKey + "/relationship-list/relationship";
461 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
462 + "/cloud-infrastructure/pservers/pserver/" + pserverKey
463 + "\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
464 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, relationshipUri, content);
466 // Get pserver with pathed
467 queryParameters.add("format", "pathed");
469 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, pserverUri, content);
470 queryParameters.remove("format");
472 String msg = response.getEntity().toString();
473 assertEquals("Expected get to succeed", 200, response.getStatus());
474 assertThat(msg, containsString(pserverUri));
481 public void getAllPserversTest() throws UnsupportedEncodingException, AAIException {
483 final String testName = new Object() {}.getClass().getEnclosingMethod().getName();
485 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
486 Loader loader = traversalHttpEntry.getLoader();
487 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
490 String pserver1Key = "pserver-1-" + testName;
491 String pserver1Uri = "/cloud-infrastructure/pservers/pserver/" + pserver1Key;
492 String content = "{\"hostname\":\"" + pserver1Key + "\"}";
493 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver1Uri, content);
496 String pserver2Key = "pserver-2-" + testName;
497 String pserver2Uri = "/cloud-infrastructure/pservers/pserver/" + pserver2Key;
498 content = "{\"hostname\":\"" + pserver2Key + "\"}";
499 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, pserver2Uri, content);
501 // Get pserver with pathed
502 queryParameters.add("format", "pathed");
504 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET,
505 "/cloud-infrastructure/pservers", content);
506 queryParameters.remove("format");
508 String msg = response.getEntity().toString();
509 assertEquals("Expected get to succeed", 200, response.getStatus());
510 assertThat(msg, containsString(pserver1Uri));
511 assertThat(msg, containsString(pserver2Uri));
518 public void testSetGetPaginationMethods() {
519 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
520 traversalHttpEntry.setPaginationBucket(10);
521 traversalHttpEntry.setPaginationIndex(1);
522 traversalHttpEntry.setTotalsForPaging(101, traversalHttpEntry.getPaginationBucket());
523 assertEquals("Expected the pagination bucket size to be 10", 10, traversalHttpEntry.getPaginationBucket());
524 assertEquals("Expected the total number of pagination buckets to be 11", 11,
525 traversalHttpEntry.getTotalPaginationBuckets());
526 assertEquals("Expected the pagination index to be 1", 1, traversalHttpEntry.getPaginationIndex());
527 assertEquals("Expected the total amount of vertices to be 101", 101, traversalHttpEntry.getTotalVertices());
531 public void relatedToTest() throws UnsupportedEncodingException, AAIException {
533 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
534 Loader loader = traversalHttpEntry.getLoader();
535 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
538 String uri = "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver";
539 String content = "{\"hostname\":\"junit-edge-test-pserver\"}";
540 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
542 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex";
544 "{\"physical-location-id\":\"junit-edge-test-complex\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
545 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
548 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/relationship-list/relationship";
549 content = "{\"related-to\":\"pserver\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
550 + "/cloud-infrastructure/pservers/pserver/junit-edge-test-pserver\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}";
551 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
554 uri = "/cloud-infrastructure/complexes/complex/junit-edge-test-complex/related-to/pservers";
556 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
557 String respBody = response.getEntity().toString();
560 assertEquals("Expected the pserver to be created", 200, response.getStatus());
561 assertThat("Related to pserver is returned.", respBody,
562 containsString("\"hostname\":\"junit-edge-test-pserver\""));
567 public void setDepthTest() throws AAIException {
568 System.setProperty("AJSC_HOME", ".");
569 System.setProperty("BUNDLECONFIG_DIR", "src/main/test/resources");
571 String depthParam = AAIConfig.get("aai.rest.getall.depthparam");
572 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
573 int depth = traversalHttpEntry.setDepth(null, depthParam);
574 assertEquals(AAIProperties.MAXIMUM_DEPTH.intValue(), depth);
578 public void getAbstractTest() throws UnsupportedEncodingException, AAIException {
580 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
581 Loader loader = traversalHttpEntry.getLoader();
582 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
585 String uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf";
586 String content = "{\"vnf-id\":\"junit-abstract-test-generic-vnf\",\"vnf-name\":\"junit-generic-vnf-name\"}";
587 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
590 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver";
591 content = "{\"hostname\":\"junit-abstract-test-pserver\"}";
592 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
595 uri = "/cloud-infrastructure/pservers/pserver/junit-abstract-test-pserver/relationship-list/relationship";
597 "{\"related-to\":\"vnf\",\"relationship-data\":[{\"relationship-key\":\"vnf.vnf-id\",\"relationship-value\":\"junit-abstract-test-generic-vnf\"}]}";
598 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
601 uri = "/network/generic-vnfs/generic-vnf/junit-abstract-test-generic-vnf/related-to/pservers";
603 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
604 String respBody = response.getEntity().toString();
607 assertThat("Related to pserver is returned.", respBody,
608 containsString("\"hostname\":\"junit-abstract-test-pserver\""));
612 public void getRelationshipListTest() throws UnsupportedEncodingException, AAIException {
613 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
614 Loader loader = traversalHttpEntry.getLoader();
615 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
618 String uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
619 String content = "{\"hostname\":\"httpEntryTest-pserver-01\"}";
620 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
622 uri = "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01";
624 "{\"physical-location-id\":\"httpEntryTest-complex-01\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
625 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
628 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01/relationship-list/relationship";
629 content = "{\"related-to\":\"complex\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
630 + "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}"
631 + "\"relationship-daasSta\":[{" + "\"relationship-key\":\"complex.physical-location-id\","
632 + "\"relationship-value\":\"httpEntryTest-complex-01\"" + "}]";
633 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
634 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
637 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
639 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET_RELATIONSHIP, uri, content);
641 "{\"relationship\":[{\"related-to\":\"complex\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\",\"related-link\":\"/aai/v14/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-data\":[{\"relationship-key\":\"complex.physical-location-id\",\"relationship-value\":\"httpEntryTest-complex-01\"}]}]}";
642 Assert.assertEquals(expected, response.getEntity().toString());
648 public void getRelationshipListTestWithFormatSimple() throws UnsupportedEncodingException, AAIException {
649 traversalHttpEntry.setHttpEntryProperties(schemaVersions.getDefaultVersion());
650 Loader loader = traversalHttpEntry.getLoader();
651 TransactionalGraphEngine dbEngine = traversalHttpEntry.getDbEngine();
654 String uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
655 String content = "{\"hostname\":\"httpEntryTest-pserver-01\"}";
656 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
658 uri = "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01";
660 "{\"physical-location-id\":\"httpEntryTest-complex-01\",\"physical-location-type\":\"AAIDefault\",\"street1\":\"AAIDefault\",\"city\":\"AAIDefault\",\"state\":\"NJ\",\"postal-code\":\"07748\",\"country\":\"USA\",\"region\":\"US\"}";
661 doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT, uri, content);
664 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01/relationship-list/relationship";
665 content = "{\"related-to\":\"complex\",\"related-link\":\"/aai/" + schemaVersions.getDefaultVersion().toString()
666 + "/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}"
667 + "\"relationship-daasSta\":[{" + "\"relationship-key\":\"complex.physical-location-id\","
668 + "\"relationship-value\":\"httpEntryTest-complex-01\"" + "}]";
669 Response response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.PUT_EDGE, uri, content);
670 assertEquals("Expected the pserver relationship to be created", 200, response.getStatus());
673 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
675 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET, uri, content);
678 uri = "/cloud-infrastructure/pservers/pserver/httpEntryTest-pserver-01";
679 queryParameters.add("format", "resource");
681 response = doRequest(traversalHttpEntry, loader, dbEngine, HttpMethod.GET_RELATIONSHIP, uri, content);
682 String responsePayload = response.getEntity().toString();
683 JSONObject responseJsonObject = new JSONObject(responsePayload);
684 JSONArray responseResultsArray = responseJsonObject.getJSONArray("results");
685 String responseResults = responseResultsArray.get(0).toString();
686 JSONObject pserverResponseObject = new JSONObject(responseResults);
687 String pserverResponse = pserverResponseObject.get("pserver").toString();
688 JSONObject pserverResponseFields = new JSONObject(pserverResponse);
689 String pserverResponseRelationshipList = pserverResponseFields.get("relationship-list").toString();
692 "{\"relationship\":[{\"related-to\":\"complex\",\"relationship-data\":[{\"relationship-value\":\"httpEntryTest-complex-01\",\"relationship-key\":\"complex.physical-location-id\"}],\"related-link\":\"/aai/v14/cloud-infrastructure/complexes/complex/httpEntryTest-complex-01\",\"relationship-label\":\"org.onap.relationships.inventory.LocatedIn\"}]}";
693 assertEquals(expected, pserverResponseRelationshipList);
694 // Assert.assertEquals(expected, response.getEntity().toString());
695 queryParameters.remove("format");