aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVenkata Harish K Kajur <vk250x@att.com>2017-09-15 16:51:00 -0400
committerVenkata Harish K Kajur <vk250x@att.com>2017-09-15 16:51:05 -0400
commit741ca84296546a70ae1ad204b1b6ee4940eecfe7 (patch)
tree4c2ecd457e72707881b5e26fbd97185ab569e22f
parent1c8ac9c824ae2f5bf82ff5082c3485d057ec3f1a (diff)
Increase the code coverage for sonar to 30%
Issue-ID: AAI-212 Change-Id: I823f697733c4b6ae44d36f018b2d093316499add Signed-off-by: Venkata Harish K Kajur <vk250x@att.com>
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/dbgraphmap/SearchGraphTest.java6
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSInInterceptorTest.java6
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSOutInterceptorTest.java132
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/interceptors/PostAaiAjscInterceptorTest.java6
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/interceptors/PreAaiAjscInterceptorTest.java6
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/ExceptionHandlerTest.java6
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/search/ModelAndNamedQueryRestProviderTest.java185
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/search/SearchProviderTest.java266
-rw-r--r--aai-traversal/src/test/java/org/openecomp/aai/rest/util/EchoResponseTest.java6
-rw-r--r--aai-traversal/src/test/resources/payloads/named-queries/named-query.json18
10 files changed, 490 insertions, 147 deletions
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/dbgraphmap/SearchGraphTest.java b/aai-traversal/src/test/java/org/openecomp/aai/dbgraphmap/SearchGraphTest.java
index 3dc2713..11804e5 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/dbgraphmap/SearchGraphTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/dbgraphmap/SearchGraphTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -145,4 +145,4 @@ public class SearchGraphTest {
Response response = searchGraph.runGenericQuery(httpHeaders, "cloud-region", keys, includeStrings, 1, dbEngine, loader, urlBuilder);
System.out.println(response);
}
-}
+} \ No newline at end of file
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSInInterceptorTest.java b/aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSInInterceptorTest.java
index 5687d72..d265299 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSInInterceptorTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSInInterceptorTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -200,4 +200,4 @@ public class AAILogJAXRSInInterceptorTest {
aaiLogJAXRSInInterceptor.handleMessage(message);
}
-}
+} \ No newline at end of file
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSOutInterceptorTest.java b/aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSOutInterceptorTest.java
index 4114018..df2feec 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSOutInterceptorTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/interceptors/AAILogJAXRSOutInterceptorTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -107,130 +107,4 @@ public class AAILogJAXRSOutInterceptorTest {
loggingCallback.onClose(newOut);
}
-// @Test
-// public void testHandleMessageWhenUUIDHasMultiple() throws IOException {
-//
-// Map<String, List<String>> headers = new HashMap<>();
-//
-// headers.put("X-FromAppId", Arrays.asList("JUNIT"));
-// headers.put("X-TransactionId", Arrays.asList("jfasodjf:fjaosjfidsaj:afsidjfaodfja"));
-// headers.put("Content-Type", Arrays.asList("application/json"));
-// headers.put("Accept", Arrays.asList("application/json"));
-//
-// when(message.getExchange()).thenReturn(exchange);
-// when(message.getContent(InputStream.class)).thenReturn(is);
-// when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(headers);
-// when(message.get(Message.CONTENT_TYPE)).thenReturn("*/*");
-//
-// when(message.get("CamelHttpUrl")).thenReturn("/somestring");
-// aaiLogJAXRSOutInterceptor.handleMessage(message);
-// }
-//
-// @Test
-// public void testHandleMessageWhenMissingTransactionId() throws IOException {
-//
-// Map<String, List<String>> headers = new HashMap<>();
-//
-// headers.put("X-FromAppId", Arrays.asList("JUNIT"));
-// headers.put("Content-Type", Arrays.asList("application/json"));
-// headers.put("Accept", Arrays.asList("application/json"));
-//
-// when(message.getExchange()).thenReturn(exchange);
-// when(message.getContent(InputStream.class)).thenReturn(is);
-// when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(headers);
-// when(message.get(Message.CONTENT_TYPE)).thenReturn("*/*");
-//
-// when(message.get("CamelHttpUrl")).thenReturn("/somestring");
-// aaiLogJAXRSOutInterceptor.handleMessage(message);
-// }
-//
-// @Test
-// public void testHandleMessageWhenMissingContentType() throws IOException {
-//
-// Map<String, List<String>> headers = new HashMap<>();
-//
-// headers.put("X-FromAppId", Arrays.asList("JUNIT"));
-// headers.put("X-TransactionId", Arrays.asList("jfasodjf:fjaosjfidsaj:afsidjfaodfja"));
-// headers.put("Accept", Arrays.asList("application/json"));
-//
-// when(message.getExchange()).thenReturn(exchange);
-// when(message.getContent(InputStream.class)).thenReturn(is);
-// when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(headers);
-// when(message.get(Message.CONTENT_TYPE)).thenReturn("*/*");
-//
-// when(message.get("CamelHttpUrl")).thenReturn("/somestring");
-// aaiLogJAXRSOutInterceptor.handleMessage(message);
-// }
-//
-// @Test
-// public void testHandleMessageWhenQueryExistsAndUriEcho() throws IOException {
-//
-// Map<String, List<String>> headers = new HashMap<>();
-//
-// headers.put("X-FromAppId", Arrays.asList("JUNIT"));
-// headers.put("X-TransactionId", Arrays.asList("jfasodjf:fjaosjfidsaj:afsidjfaodfja"));
-// headers.put("Content-Type", Arrays.asList("application/json"));
-// headers.put("Accept", Arrays.asList("application/json"));
-//
-// when(message.getExchange()).thenReturn(exchange);
-// when(message.getContent(InputStream.class)).thenReturn(is);
-// when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(headers);
-// when(message.get(Message.CONTENT_TYPE)).thenReturn("*/*");
-// when(message.get(Message.QUERY_STRING)).thenReturn(null);
-// when(exchange.containsKey("AAI_LOGGING_HBASE_ENABLED")).thenReturn(true);
-// when(exchange.remove("AAI_LOGGING_HBASE_ENABLED")).thenReturn("");
-// when(exchange.containsKey("AAI_LOGGING_TRACE_ENABLED")).thenReturn(true);
-// when(exchange.remove("AAI_LOGGING_TRACE_ENABLED")).thenReturn("");
-// when(message.get("CamelHttpUrl")).thenReturn("/util/echo");
-// aaiLogJAXRSOutInterceptor.handleMessage(message);
-// }
-//
-// @Test
-// public void testHandleMessageWhenQueryExistsAndUriTranslog() throws IOException {
-//
-// Map<String, List<String>> headers = new HashMap<>();
-//
-// headers.put("X-FromAppId", Arrays.asList("JUNIT"));
-// headers.put("X-TransactionId", Arrays.asList("jfasodjf:fjaosjfidsaj:afsidjfaodfja"));
-// headers.put("Content-Type", Arrays.asList("application/json"));
-// headers.put("Accept", Arrays.asList("application/json"));
-//
-// when(message.getExchange()).thenReturn(exchange);
-// when(message.getContent(InputStream.class)).thenReturn(is);
-// when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(headers);
-// when(message.get(Message.CONTENT_TYPE)).thenReturn("*/*");
-// when(message.get(Message.QUERY_STRING)).thenReturn(null);
-// when(exchange.containsKey("AAI_LOGGING_HBASE_ENABLED")).thenReturn(true);
-// when(exchange.remove("AAI_LOGGING_HBASE_ENABLED")).thenReturn("");
-// when(exchange.containsKey("AAI_LOGGING_TRACE_ENABLED")).thenReturn(true);
-// when(exchange.remove("AAI_LOGGING_TRACE_ENABLED")).thenReturn("");
-// when(message.get("CamelHttpUrl")).thenReturn("/translog/");
-// aaiLogJAXRSOutInterceptor.handleMessage(message);
-// }
-//
-// @Test
-// public void testHandleMessageWhenPutMessageKeyReturnsException() throws IOException {
-//
-// Map<String, List<String>> headers = new HashMap<>();
-//
-// headers.put("X-FromAppId", Arrays.asList("JUNIT"));
-// headers.put("X-TransactionId", Arrays.asList("jfasodjf:fjaosjfidsaj:afsidjfaodfja"));
-// headers.put("Content-Type", Arrays.asList("application/json"));
-// headers.put("Accept", Arrays.asList("application/json"));
-//
-// when(message.getExchange()).thenReturn(exchange);
-// when(message.getContent(InputStream.class)).thenReturn(is);
-// when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(headers);
-// when(message.get(Message.CONTENT_TYPE)).thenReturn("*/*");
-// when(message.get(Message.QUERY_STRING)).thenReturn(null);
-// when(exchange.containsKey("AAI_LOGGING_HBASE_ENABLED")).thenReturn(true);
-// when(exchange.remove("AAI_LOGGING_HBASE_ENABLED")).thenReturn("");
-// when(exchange.containsKey("AAI_LOGGING_TRACE_ENABLED")).thenReturn(true);
-// when(exchange.remove("AAI_LOGGING_TRACE_ENABLED")).thenReturn("");
-// when(message.get("CamelHttpUrl")).thenReturn("/translog/");
-// when(message.get(Message.ENCODING)).thenReturn("http");
-// when(message.get(Message.RESPONSE_CODE)).thenReturn(200);
-//
-// aaiLogJAXRSOutInterceptor.handleMessage(message);
-// }
-}
+} \ No newline at end of file
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/interceptors/PostAaiAjscInterceptorTest.java b/aai-traversal/src/test/java/org/openecomp/aai/interceptors/PostAaiAjscInterceptorTest.java
index 17f5c44..3aa2aa9 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/interceptors/PostAaiAjscInterceptorTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/interceptors/PostAaiAjscInterceptorTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -70,4 +70,4 @@ public class PostAaiAjscInterceptorTest {
assertTrue("Expecting the post interceptor to return success regardless", success);
}
-}
+} \ No newline at end of file
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/interceptors/PreAaiAjscInterceptorTest.java b/aai-traversal/src/test/java/org/openecomp/aai/interceptors/PreAaiAjscInterceptorTest.java
index 766b99f..9162019 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/interceptors/PreAaiAjscInterceptorTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/interceptors/PreAaiAjscInterceptorTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -59,4 +59,4 @@ public class PreAaiAjscInterceptorTest {
assertTrue("Expecting the post interceptor to return success regardless", success);
}
-}
+} \ No newline at end of file
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/ExceptionHandlerTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/ExceptionHandlerTest.java
index 388e8e4..8e2bb94 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/rest/ExceptionHandlerTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/ExceptionHandlerTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -152,4 +152,4 @@ public class ExceptionHandlerTest {
assertNotNull(response.getEntity());
assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
}
-}
+} \ No newline at end of file
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/ModelAndNamedQueryRestProviderTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/ModelAndNamedQueryRestProviderTest.java
new file mode 100644
index 0000000..5813ef1
--- /dev/null
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/ModelAndNamedQueryRestProviderTest.java
@@ -0,0 +1,185 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.openecomp.aai
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.aai.rest.search;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import org.apache.commons.io.IOUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.openecomp.aai.dbmap.DBConnectionType;
+import org.openecomp.aai.introspection.Loader;
+import org.openecomp.aai.introspection.LoaderFactory;
+import org.openecomp.aai.introspection.ModelType;
+import org.openecomp.aai.introspection.Version;
+import org.openecomp.aai.serialization.db.DBSerializer;
+import org.openecomp.aai.serialization.engines.QueryStyle;
+import org.openecomp.aai.serialization.engines.TitanDBEngine;
+import org.openecomp.aai.serialization.engines.TransactionalGraphEngine;
+import org.openecomp.aai.serialization.queryformats.utils.UrlBuilder;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.*;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class ModelAndNamedQueryRestProviderTest {
+
+ protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
+
+ private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();
+
+ private static final Version version = Version.getLatest();
+ private static final ModelType introspectorFactoryType = ModelType.MOXY;
+ private static final QueryStyle queryStyle = QueryStyle.TRAVERSAL;
+ private static final DBConnectionType type = DBConnectionType.REALTIME;
+
+ private Loader loader;
+ private TransactionalGraphEngine dbEngine;
+
+ static {
+ VALID_HTTP_STATUS_CODES.add(200);
+ VALID_HTTP_STATUS_CODES.add(201);
+ VALID_HTTP_STATUS_CODES.add(204);
+ }
+
+ private ModelAndNamedQueryRestProvider modelAndNamedQueryRestProvider;
+
+ private HttpHeaders httpHeaders;
+
+ private UriInfo uriInfo;
+
+ private MultivaluedMap<String, String> headersMultiMap;
+ private MultivaluedMap<String, String> queryParameters;
+
+ private List<String> aaiRequestContextList;
+
+ private List<MediaType> outputMediaTypes;
+
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(ModelAndNamedQueryRestProviderTest.class.getName());
+
+ @Before
+ public void setup(){
+ logger.info("Starting the setup for the integration tests of Rest Endpoints");
+ System.setProperty("AJSC_HOME", ".");
+ System.setProperty("BUNDLECONFIG_DIR", "bundleconfig-local");
+
+ modelAndNamedQueryRestProvider = new ModelAndNamedQueryRestProvider();
+ httpHeaders = mock(HttpHeaders.class);
+ uriInfo = mock(UriInfo.class);
+
+ headersMultiMap = new MultivaluedHashMap<>();
+ queryParameters = Mockito.spy(new MultivaluedHashMap<>());
+
+ headersMultiMap.add("X-FromAppId", "JUNIT");
+ headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());
+ headersMultiMap.add("Real-Time", "true");
+ headersMultiMap.add("Accept", "application/json");
+ headersMultiMap.add("aai-request-context", "");
+
+ outputMediaTypes = new ArrayList<>();
+ outputMediaTypes.add(APPLICATION_JSON);
+
+ aaiRequestContextList = new ArrayList<>();
+ aaiRequestContextList.add("");
+
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
+ when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);
+ when(httpHeaders.getRequestHeader("X-FromAppId")).thenReturn(Arrays.asList("JUNIT"));
+ when(httpHeaders.getRequestHeader("X-TransactionId")).thenReturn(Arrays.asList("JUNIT"));
+
+ when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);
+
+
+ when(uriInfo.getQueryParameters()).thenReturn(queryParameters);
+ when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);
+
+ // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable
+ Mockito.doReturn(null).when(queryParameters).remove(anyObject());
+
+ when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);
+ loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version);
+ dbEngine = new TitanDBEngine(
+ queryStyle,
+ type,
+ loader);
+ }
+
+ @Test
+ public void testNamedQueryWhenNoDataToBeFoundReturnHttpNotFound() throws Exception {
+
+ String queryParameters = getPayload("payloads/named-queries/named-query.json");
+ HttpServletRequest request = mock(HttpServletRequest.class);
+
+ when(request.getContentType()).thenReturn("application/json");
+
+ Response response = modelAndNamedQueryRestProvider.getNamedQueryResponse(
+ httpHeaders,
+ request,
+ queryParameters
+ );
+
+ assertNotNull(response);
+ assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus());
+ }
+
+ @Test
+ public void testNamedQueryInvalidHeaders() throws Exception {
+
+ httpHeaders = mock(HttpHeaders.class);
+
+ when(httpHeaders.getRequestHeader("X-FromAppId")).thenThrow(IllegalArgumentException.class);
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
+
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);
+
+ Response response = modelAndNamedQueryRestProvider.getNamedQueryResponse(
+ httpHeaders,
+ null,
+ "cloud-region"
+ );
+
+ assertNotNull(response);
+ assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
+ }
+
+ public String getPayload(String filename) throws IOException {
+
+ InputStream inputStream = getClass()
+ .getClassLoader()
+ .getResourceAsStream(filename);
+
+ String message = String.format("Unable to find the %s in src/test/resources", filename);
+ assertNotNull(message, inputStream);
+
+ String resource = IOUtils.toString(inputStream);
+ return resource;
+ }
+}
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/search/SearchProviderTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/SearchProviderTest.java
new file mode 100644
index 0000000..6b922bf
--- /dev/null
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/search/SearchProviderTest.java
@@ -0,0 +1,266 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.openecomp.aai
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.aai.rest.search;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.openecomp.aai.dbmap.DBConnectionType;
+import org.openecomp.aai.introspection.Loader;
+import org.openecomp.aai.introspection.LoaderFactory;
+import org.openecomp.aai.introspection.ModelType;
+import org.openecomp.aai.introspection.Version;
+import org.openecomp.aai.serialization.db.DBSerializer;
+import org.openecomp.aai.serialization.engines.QueryStyle;
+import org.openecomp.aai.serialization.engines.TitanDBEngine;
+import org.openecomp.aai.serialization.engines.TransactionalGraphEngine;
+import org.openecomp.aai.serialization.queryformats.utils.UrlBuilder;
+
+import javax.ws.rs.core.*;
+import java.util.*;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class SearchProviderTest {
+
+ protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
+
+ private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();
+
+ private static final Version version = Version.getLatest();
+ private static final ModelType introspectorFactoryType = ModelType.MOXY;
+ private static final QueryStyle queryStyle = QueryStyle.TRAVERSAL;
+ private static final DBConnectionType type = DBConnectionType.REALTIME;
+
+ private Loader loader;
+ private TransactionalGraphEngine dbEngine;
+
+ static {
+ VALID_HTTP_STATUS_CODES.add(200);
+ VALID_HTTP_STATUS_CODES.add(201);
+ VALID_HTTP_STATUS_CODES.add(204);
+ }
+
+ private SearchProvider searchProvider;
+
+ private HttpHeaders httpHeaders;
+
+ private UriInfo uriInfo;
+
+ private MultivaluedMap<String, String> headersMultiMap;
+ private MultivaluedMap<String, String> queryParameters;
+
+ private List<String> aaiRequestContextList;
+
+ private List<MediaType> outputMediaTypes;
+
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(SearchProviderTest.class.getName());
+
+ @Before
+ public void setup(){
+ logger.info("Starting the setup for the integration tests of Rest Endpoints");
+ System.setProperty("AJSC_HOME", ".");
+ System.setProperty("BUNDLECONFIG_DIR", "bundleconfig-local");
+
+ searchProvider = new SearchProvider();
+ httpHeaders = mock(HttpHeaders.class);
+ uriInfo = mock(UriInfo.class);
+
+ headersMultiMap = new MultivaluedHashMap<>();
+ queryParameters = Mockito.spy(new MultivaluedHashMap<>());
+
+ headersMultiMap.add("X-FromAppId", "JUNIT");
+ headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());
+ headersMultiMap.add("Real-Time", "true");
+ headersMultiMap.add("Accept", "application/json");
+ headersMultiMap.add("aai-request-context", "");
+
+ outputMediaTypes = new ArrayList<>();
+ outputMediaTypes.add(APPLICATION_JSON);
+
+ aaiRequestContextList = new ArrayList<>();
+ aaiRequestContextList.add("");
+
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
+ when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);
+ when(httpHeaders.getRequestHeader("X-FromAppId")).thenReturn(Arrays.asList("JUNIT"));
+ when(httpHeaders.getRequestHeader("X-TransactionId")).thenReturn(Arrays.asList("JUNIT"));
+
+ when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);
+
+
+ when(uriInfo.getQueryParameters()).thenReturn(queryParameters);
+ when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);
+
+ // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable
+ Mockito.doReturn(null).when(queryParameters).remove(anyObject());
+
+ when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);
+ loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version);
+ dbEngine = new TitanDBEngine(
+ queryStyle,
+ type,
+ loader);
+ }
+
+ @Test
+ public void testNodesQueryInvalidData() throws Exception {
+
+ List<String> keys = new ArrayList<>();
+ keys.add("cloud-region.cloud-owner:test-aic");
+
+ List<String> includeStrings = new ArrayList<>();
+ includeStrings.add("cloud-region");
+
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);
+
+ Response response = searchProvider.getNodesQueryResponse(
+ httpHeaders,
+ null,
+ "cloud-region",
+ keys,
+ includeStrings,
+ version.toString()
+ );
+
+ assertNotNull(response);
+ assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ response = searchProvider.getNodesQueryResponse(
+ httpHeaders,
+ null,
+ "cloud-region",
+ keys,
+ includeStrings,
+ "latest"
+ );
+
+ assertNotNull(response);
+ assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ }
+
+ @Test
+ public void testNodesQueryInvalidHeaders() throws Exception {
+
+ List<String> keys = new ArrayList<>();
+ keys.add("cloud-region.cloud-owner:test-aic");
+
+ List<String> includeStrings = new ArrayList<>();
+ includeStrings.add("cloud-region");
+
+ httpHeaders = mock(HttpHeaders.class);
+
+ when(httpHeaders.getRequestHeader("X-FromAppId")).thenThrow(IllegalArgumentException.class);
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
+
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);
+
+ Response response = searchProvider.getNodesQueryResponse(
+ httpHeaders,
+ null,
+ "cloud-region",
+ keys,
+ includeStrings,
+ version.toString()
+ );
+
+ assertNotNull(response);
+ assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
+ }
+
+ @Test
+ public void testGenericQueryInvalidData() throws Exception {
+
+ List<String> keys = new ArrayList<>();
+ keys.add("cloud-region.cloud-owner:test-aic");
+
+ List<String> includeStrings = new ArrayList<>();
+ includeStrings.add("cloud-region");
+
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);
+
+ Response response = searchProvider.getGenericQueryResponse(
+ httpHeaders,
+ null,
+ "cloud-region",
+ keys,
+ includeStrings,
+ 0,
+ version.toString()
+ );
+
+ assertNotNull(response);
+ assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+ response = searchProvider.getNodesQueryResponse(
+ httpHeaders,
+ null,
+ "cloud-region",
+ keys,
+ includeStrings,
+ "latest"
+ );
+
+ assertNotNull(response);
+ assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+ }
+
+ @Test
+ public void testGenericQueryInvalidHeaders() throws Exception {
+
+ List<String> keys = new ArrayList<>();
+ keys.add("cloud-region.cloud-owner:test-aic");
+
+ List<String> includeStrings = new ArrayList<>();
+ includeStrings.add("cloud-region");
+
+ httpHeaders = mock(HttpHeaders.class);
+
+ when(httpHeaders.getRequestHeader("X-FromAppId")).thenThrow(IllegalArgumentException.class);
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);
+
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);
+
+ Response response = searchProvider.getGenericQueryResponse(
+ httpHeaders,
+ null,
+ "cloud-region",
+ keys,
+ includeStrings,
+ 0,
+ version.toString()
+ );
+
+ assertNotNull(response);
+ assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
+ }
+
+}
diff --git a/aai-traversal/src/test/java/org/openecomp/aai/rest/util/EchoResponseTest.java b/aai-traversal/src/test/java/org/openecomp/aai/rest/util/EchoResponseTest.java
index 146c1ca..44d38be 100644
--- a/aai-traversal/src/test/java/org/openecomp/aai/rest/util/EchoResponseTest.java
+++ b/aai-traversal/src/test/java/org/openecomp/aai/rest/util/EchoResponseTest.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -132,4 +132,4 @@ public class EchoResponseTest {
assertNotNull(response);
assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
}
-}
+} \ No newline at end of file
diff --git a/aai-traversal/src/test/resources/payloads/named-queries/named-query.json b/aai-traversal/src/test/resources/payloads/named-queries/named-query.json
new file mode 100644
index 0000000..f27823f
--- /dev/null
+++ b/aai-traversal/src/test/resources/payloads/named-queries/named-query.json
@@ -0,0 +1,18 @@
+{
+ "query-parameters": {
+ "named-query": {
+ "named-query-name": "wan-connector",
+ "named-query-version": "1",
+ "named-query-uuid": "afsjdiofjsia-afiojadfio-dsjfoisajfid"
+ }
+ },
+ "instance-filters": {
+ "instance-filter": [
+ {
+ "connector": {
+ "resource-instance-id": "123456-16102016"
+ }
+ }
+ ]
+ }
+} \ No newline at end of file