-/*-
- * ============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.dbgraphmap;
-
-import com.thinkaurelius.titan.core.TitanGraph;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.openecomp.aai.dbmap.DBConnectionType;
-import org.openecomp.aai.exceptions.AAIException;
-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.mockito.Matchers.anyObject;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class SearchGraphTest {
-
- private SearchGraph searchGraph;
-
- protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");
-
- private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();
-
- private final static Version version = Version.getLatest();
- private final static ModelType introspectorFactoryType = ModelType.MOXY;
- private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL;
- private final static DBConnectionType type = DBConnectionType.REALTIME;
-
- static {
- VALID_HTTP_STATUS_CODES.add(200);
- VALID_HTTP_STATUS_CODES.add(201);
- VALID_HTTP_STATUS_CODES.add(204);
- }
-
- 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 Loader loader;
- private TitanGraph graph;
-
- private Graph tx;
-
- private GraphTraversalSource g;
- private TransactionalGraphEngine dbEngine;
-
- @Before
- public void setup(){
-
- System.setProperty("AJSC_HOME", ".");
- System.setProperty("BUNDLECONFIG_DIR", "bundleconfig-local");
-
- searchGraph = new SearchGraph();
-
- 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(expected = AAIException.class)
- public void testRunGenericQueryFailWhenInvalidRelationshipList() throws AAIException {
-
- 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 = searchGraph.runGenericQuery(httpHeaders, "cloud-region", keys, includeStrings, 1, dbEngine, loader, urlBuilder);
- System.out.println(response);
- }
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.openecomp.aai.dbgraphmap;\r
+\r
+import com.thinkaurelius.titan.core.TitanGraph;\r
+import com.thinkaurelius.titan.graphdb.types.system.EmptyVertex;\r
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;\r
+import org.apache.tinkerpop.gremlin.structure.Graph;\r
+import org.apache.tinkerpop.gremlin.structure.Vertex;\r
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;\r
+import org.apache.velocity.util.ArrayListWrapper;\r
+import org.eclipse.persistence.dynamic.DynamicEntity;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.mockito.InjectMocks;\r
+import org.mockito.Mock;\r
+import org.mockito.Mockito;\r
+import org.openecomp.aai.dbgraphgen.ModelBasedProcessing;\r
+import org.openecomp.aai.dbmap.DBConnectionType;\r
+import org.openecomp.aai.exceptions.AAIException;\r
+import org.openecomp.aai.extensions.AAIExtensionMap;\r
+import org.openecomp.aai.introspection.*;\r
+import org.openecomp.aai.parsers.relationship.RelationshipToURI;\r
+import org.openecomp.aai.serialization.db.DBSerializer;\r
+import org.openecomp.aai.serialization.engines.QueryStyle;\r
+import org.openecomp.aai.serialization.engines.TitanDBEngine;\r
+import org.openecomp.aai.serialization.engines.TransactionalGraphEngine;\r
+import org.openecomp.aai.serialization.queryformats.utils.UrlBuilder;\r
+\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.ws.rs.core.*;\r
+import java.net.URI;\r
+import java.sql.ResultSet;\r
+import java.util.*;\r
+import java.util.stream.Stream;\r
+\r
+import static org.mockito.Matchers.anyObject;\r
+import static org.mockito.Mockito.*;\r
+\r
+public class SearchGraphTest {\r
+\r
+ private SearchGraph searchGraph;\r
+\r
+ protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");\r
+\r
+ private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();\r
+\r
+ private final static Version version = Version.getLatest();\r
+ private final static ModelType introspectorFactoryType = ModelType.MOXY;\r
+ private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL;\r
+ private final static DBConnectionType type = DBConnectionType.REALTIME;\r
+\r
+ static {\r
+ VALID_HTTP_STATUS_CODES.add(200);\r
+ VALID_HTTP_STATUS_CODES.add(201);\r
+ VALID_HTTP_STATUS_CODES.add(204);\r
+ }\r
+\r
+ private HttpHeaders httpHeaders;\r
+\r
+ private UriInfo uriInfo;\r
+\r
+ private MultivaluedMap<String, String> headersMultiMap;\r
+ private MultivaluedMap<String, String> queryParameters;\r
+\r
+ private List<String> aaiRequestContextList;\r
+\r
+ private List<MediaType> outputMediaTypes;\r
+\r
+ private Loader loader;\r
+ private TitanGraph graph;\r
+\r
+ private Graph tx;\r
+\r
+ private GraphTraversalSource g;\r
+ private TransactionalGraphEngine dbEngine;\r
+\r
+ @Before\r
+ public void setup(){\r
+\r
+ System.setProperty("AJSC_HOME", ".");\r
+ System.setProperty("BUNDLECONFIG_DIR", "bundleconfig-local");\r
+\r
+ searchGraph = new SearchGraph();\r
+\r
+ httpHeaders = mock(HttpHeaders.class);\r
+ uriInfo = mock(UriInfo.class);\r
+\r
+ headersMultiMap = new MultivaluedHashMap<>();\r
+ queryParameters = Mockito.spy(new MultivaluedHashMap<>());\r
+\r
+ headersMultiMap.add("X-FromAppId", "JUNIT");\r
+ headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());\r
+ headersMultiMap.add("Real-Time", "true");\r
+ headersMultiMap.add("Accept", "application/json");\r
+ headersMultiMap.add("aai-request-context", "");\r
+\r
+ outputMediaTypes = new ArrayList<>();\r
+ outputMediaTypes.add(APPLICATION_JSON);\r
+\r
+ aaiRequestContextList = new ArrayList<>();\r
+ aaiRequestContextList.add("");\r
+\r
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);\r
+ when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);\r
+ when(httpHeaders.getRequestHeader("X-FromAppId")).thenReturn(Arrays.asList("JUNIT"));\r
+ when(httpHeaders.getRequestHeader("X-TransactionId")).thenReturn(Arrays.asList("JUNIT"));\r
+\r
+ when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);\r
+\r
+\r
+ when(uriInfo.getQueryParameters()).thenReturn(queryParameters);\r
+ when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);\r
+\r
+ // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable\r
+ Mockito.doReturn(null).when(queryParameters).remove(anyObject());\r
+\r
+ when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);\r
+ loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version);\r
+ dbEngine = new TitanDBEngine(\r
+ queryStyle,\r
+ type,\r
+ loader);\r
+ }\r
+\r
+@Test(expected = AAIException.class)\r
+ public void runNodesQuery() throws AAIException{\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);\r
+ searchGraph.runNodesQuery(httpHeaders,"",null,\r
+ null,dbEngine,loader,urlBuilder);\r
+ }\r
+ @Test(expected = AAIException.class)\r
+ public void runNodesQueryNull() throws AAIException{\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);\r
+ searchGraph.runNodesQuery(httpHeaders,"nnn",null,\r
+ null,dbEngine,loader,urlBuilder);\r
+ }\r
+ @Test(expected = AAIException.class)\r
+ public void testRunGenericQueryFailWhenInvalidRelationshipList() throws AAIException {\r
+\r
+ List<String> keys = new ArrayList<>();\r
+ keys.add("cloud-region.cloud-owner:test-aic");\r
+\r
+ List<String> includeStrings = new ArrayList<>();\r
+ includeStrings.add("cloud-region");\r
+\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);\r
+ Response response = searchGraph.runGenericQuery(httpHeaders, "service-instance", keys, includeStrings, 1, dbEngine, loader, urlBuilder);\r
+ System.out.println(response);\r
+ }\r
+\r
+\r
+ @Test(expected = AAIException.class)\r
+ public void testRunGenericQueryFailWhenInvalidRelationshipList1() throws AAIException {\r
+\r
+ List<String> keys = new ArrayList<>();\r
+ keys.add("cloud-region.cloud-owner:test-aic");\r
+\r
+ List<String> includeStrings = new ArrayList<>();\r
+ includeStrings.add("cloud-region");\r
+\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);\r
+ Response response = searchGraph.runGenericQuery(httpHeaders, null, keys, includeStrings, 1, dbEngine, loader, urlBuilder);\r
+ System.out.println(response);\r
+ }\r
+\r
+ @Test(expected = AAIException.class)\r
+ public void testRunGenericQueryFailWhenInvalidRelationshipList2() throws AAIException {\r
+\r
+ List<String> keys = new ArrayList<>();\r
+ keys.add("cloud-region.cloud-owner:test-aic");\r
+\r
+ List<String> includeStrings = new ArrayList<>();\r
+ includeStrings.add("cloud-region");\r
+\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);\r
+ Response response = searchGraph.runGenericQuery(httpHeaders, "", null, includeStrings, 1, dbEngine, loader, urlBuilder);\r
+ System.out.println(response);\r
+ }\r
+\r
+ @Test(expected = AAIException.class)\r
+ public void testRunGenericQueryFailWhenInvalidRelationshipList3() throws AAIException {\r
+\r
+ List<String> keys = new ArrayList<>();\r
+ keys.add("cloud-region.cloud-owner:test-aic");\r
+\r
+ List<String> includeStrings = new ArrayList<>();\r
+ includeStrings.add("cloud-region");\r
+\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);\r
+ Response response = searchGraph.runGenericQuery(httpHeaders, "", keys, null, 1, dbEngine, loader, urlBuilder);\r
+ System.out.println(response);\r
+ }\r
+\r
+\r
+ /*@Test(expected = NullPointerException.class)\r
+ public void createSearchResults() throws AAIException {\r
+\r
+ List<Vertex> keys = new ArrayList<>();\r
+ Vertex vertex=new EmptyVertex();\r
+ keys.add(vertex);\r
+\r
+\r
+\r
+ List<String> includeStrings = new ArrayList<>();\r
+ includeStrings.add("cloud-region");\r
+\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ UrlBuilder urlBuilder = new UrlBuilder(version, serializer);\r
+ Introspector response = searchGraph.createSearchResults(loader, urlBuilder, keys);\r
+ System.out.println(response);\r
+ }*/\r
+ @Test\r
+ public void createSearchResults1() throws Exception {\r
+\r
+ List<Vertex> keys = new ArrayList<>();\r
+ Vertex vertex=new EmptyVertex();\r
+ keys.add(vertex);\r
+ DBSerializer ds=mock(DBSerializer.class);\r
+ UrlBuilder urlBuilder=mock(UrlBuilder.class);\r
+ when(urlBuilder.pathed(vertex)).thenReturn("cloud-region");\r
+ Stream<Vertex> stream=mock(Stream.class);\r
+ when(stream.isParallel()).thenReturn(true);\r
+ List<String> includeStrings = new ArrayList<>();\r
+ includeStrings.add("cloud-region");\r
+ RelationshipToURI relationshipToURI=mock(RelationshipToURI.class);\r
+ URI uri =new URI("");\r
+ when(relationshipToURI.getUri()).thenReturn(uri);\r
+\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ // UrlBuilder urlBuilder = new UrlBuilder(version, serializer);\r
+ Introspector response = searchGraph.createSearchResults(loader, urlBuilder, keys);\r
+ System.out.println(response);\r
+ }\r
+ @Test(expected = AAIException.class)\r
+ public void executeModelOperationTest() throws Exception{\r
+ Vertex vertex=new EmptyVertex();\r
+ vertex.property("model-name");\r
+ Map<String,Object> mapObj=new HashMap<String,Object>();\r
+ mapObj.put("modle-version",vertex);\r
+ List<Map<String,Object>> startNodeFilterArrayOfHashes=new ArrayList<>();\r
+ startNodeFilterArrayOfHashes.add(mapObj);\r
+ List<org.openecomp.aai.dbgraphgen.ResultSet> resultSet=new ArrayList<org.openecomp.aai.dbgraphgen.ResultSet>();\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ // ModelBasedProcessing processor = new ModelBasedProcessing(loader, dbEngine, serializer);\r
+ AAIExtensionMap map=mock(AAIExtensionMap.class);\r
+ HttpServletRequest servletRequest=mock(HttpServletRequest.class);\r
+\r
+ when(map.getHttpServletRequest()).thenReturn(servletRequest);\r
+ when(servletRequest.getContentType()).thenReturn("application/json");\r
+ DynamicEntity modelAndNamedQuerySearch=mock(DynamicEntity.class);\r
+ when(modelAndNamedQuerySearch.isSet("topNodeType")).thenReturn(true);\r
+\r
+\r
+/* when(processor.queryByModel("9999","model-ver","model-version-id",\r
+ "model-inv-id","modelname","aai",\r
+ startNodeFilterArrayOfHashes,"aai-ver")).thenReturn(resultSet);*/\r
+\r
+ searchGraph.executeModelOperation("","","",type,true,\r
+ map);\r
+ }\r
+\r
+ @Test(expected = AAIException.class)\r
+ public void executeModelOperationXMLTest() throws Exception{\r
+ Vertex vertex=new EmptyVertex();\r
+ vertex.property("model-name");\r
+ Map<String,Object> mapObj=new HashMap<String,Object>();\r
+ mapObj.put("modle-version",vertex);\r
+ List<Map<String,Object>> startNodeFilterArrayOfHashes=new ArrayList<>();\r
+ startNodeFilterArrayOfHashes.add(mapObj);\r
+ List<org.openecomp.aai.dbgraphgen.ResultSet> resultSet=new ArrayList<org.openecomp.aai.dbgraphgen.ResultSet>();\r
+ DBSerializer serializer = new DBSerializer(version, dbEngine, introspectorFactoryType, "JUNIT");\r
+ // ModelBasedProcessing processor = new ModelBasedProcessing(loader, dbEngine, serializer);\r
+ AAIExtensionMap map=mock(AAIExtensionMap.class);\r
+ HttpServletRequest servletRequest=mock(HttpServletRequest.class);\r
+\r
+ when(map.getHttpServletRequest()).thenReturn(servletRequest);\r
+ when(servletRequest.getContentType()).thenReturn("application/xml");\r
+\r
+ DynamicEntity modelAndNamedQuerySearch=mock(DynamicEntity.class);\r
+ when(modelAndNamedQuerySearch.isSet("queryParameters")).thenReturn(true);\r
+/* when(processor.queryByModel("9999","model-ver","model-version-id",\r
+ "model-inv-id","modelname","aai",\r
+ startNodeFilterArrayOfHashes,"aai-ver")).thenReturn(resultSet);*/\r
+\r
+ searchGraph.executeModelOperation("","","",type,true,\r
+ map);\r
+ }\r
+ @Test\r
+ public void runNodesQueryTest() throws AAIException{\r
+ UrlBuilder urlBuilder=mock(UrlBuilder.class);\r
+ List<String> filter=new ArrayList<String>();\r
+ filter.add("model:EQUALS:DOES-NOT-EXIST:AAI");\r
+ List<String> edgeFilter=new ArrayList<String>();\r
+ edgeFilter.add("model:DOES-NOT-EXIST:DOES-NOT-EXIST:AAI");\r
+ Response response= searchGraph.runNodesQuery(httpHeaders,"model-ver",edgeFilter,\r
+ filter,dbEngine,loader,urlBuilder);\r
+ Assert.assertNotNull(response);\r
+ }\r
+\r
+ @Test\r
+ public void runNodesQueryExistsTest() throws AAIException{\r
+ UrlBuilder urlBuilder=mock(UrlBuilder.class);\r
+ List<String> filter=new ArrayList<String>();\r
+ filter.add("model:EQUALS:DOES-NOT-EXIST:AAI");\r
+ List<String> edgeFilter=new ArrayList<String>();\r
+ edgeFilter.add("model:EXISTS:DOES-NOT-EXIST:AAI");\r
+ Response response= searchGraph.runNodesQuery(httpHeaders,"model-ver",edgeFilter,\r
+ filter,dbEngine,loader,urlBuilder);\r
+ Assert.assertNotNull(response);\r
+ }\r
+\r
+ @Test\r
+ public void runNodesQueryTestDOESNOTEQUAL() throws AAIException{\r
+ UrlBuilder urlBuilder=mock(UrlBuilder.class);\r
+ List<String> filter=new ArrayList<String>();\r
+ filter.add("model:DOES-NOT-EQUAL:DOES-NOT-EXIST");\r
+ List<String> edgeFilter=new ArrayList<String>();\r
+ searchGraph.runNodesQuery(httpHeaders,"model-ver",edgeFilter,\r
+ filter,dbEngine,loader,urlBuilder);\r
+ }\r
+\r
+ @Test\r
+ public void runNodesQueryTestGreaterThan3() throws AAIException{\r
+ UrlBuilder urlBuilder=mock(UrlBuilder.class);\r
+ List<String> filter=new ArrayList<String>();\r
+ filter.add("model:DOES-NOT-EQUAL:DOES-NOT-EXIST:AAI");\r
+ List<String> edgeFilter=new ArrayList<String>();\r
+ searchGraph.runNodesQuery(httpHeaders,"model-ver",edgeFilter,\r
+ filter,dbEngine,loader,urlBuilder);\r
+ }\r
+\r
+ @Test\r
+ public void runNodesQueryTestGreaterThanExists() throws AAIException{\r
+ UrlBuilder urlBuilder=mock(UrlBuilder.class);\r
+ List<String> filter=new ArrayList<String>();\r
+ filter.add("model:EXISTS:DOES-NOT-EXIST:AAI");\r
+ List<String> edgeFilter=new ArrayList<String>();\r
+ searchGraph.runNodesQuery(httpHeaders,"model-ver",edgeFilter,\r
+ filter,dbEngine,loader,urlBuilder);\r
+ }\r
+\r
+ @Test(expected = AAIException.class)\r
+ public void runNodesQueryTestGreaterThanDoesNotExists() throws AAIException{\r
+ UrlBuilder urlBuilder=mock(UrlBuilder.class);\r
+ List<String> filter=new ArrayList<String>();\r
+ filter.add("model:DOES_NOT_EXIST:DOES-NOT-EXIST:AAI");\r
+ List<String> edgeFilter=new ArrayList<String>();\r
+ searchGraph.runNodesQuery(httpHeaders,"model-ver",edgeFilter,\r
+ filter,dbEngine,loader,urlBuilder);\r
+ }\r
}
\ No newline at end of file
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+\r
+package org.openecomp.aai.rest.search;\r
+\r
+import com.thinkaurelius.titan.core.TitanGraph;\r
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;\r
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;\r
+import org.apache.tinkerpop.gremlin.structure.Graph;\r
+import org.apache.tinkerpop.gremlin.structure.T;\r
+import org.apache.tinkerpop.gremlin.structure.Vertex;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.mockito.Mockito;\r
+import org.openecomp.aai.dbmap.DBConnectionType;\r
+import org.openecomp.aai.exceptions.AAIException;\r
+import org.openecomp.aai.introspection.Loader;\r
+import org.openecomp.aai.introspection.LoaderFactory;\r
+import org.openecomp.aai.introspection.ModelType;\r
+import org.openecomp.aai.introspection.Version;\r
+import org.openecomp.aai.serialization.engines.QueryStyle;\r
+import org.openecomp.aai.serialization.engines.TitanDBEngine;\r
+import org.openecomp.aai.serialization.engines.TransactionalGraphEngine;\r
+import org.openecomp.aai.serialization.queryformats.SubGraphStyle;\r
+\r
+import javax.ws.rs.core.*;\r
+import java.net.URI;\r
+import java.util.*;\r
+\r
+import static org.mockito.Matchers.anyObject;\r
+import static org.mockito.Mockito.mock;\r
+import static org.mockito.Mockito.when;\r
+\r
+public class GremlinServerImplTest {\r
+\r
+ GremlinServerImpl gremlinServerImpl;\r
+\r
+ protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");\r
+\r
+ private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();\r
+\r
+ private final static Version version = Version.getLatest();\r
+ private final static ModelType introspectorFactoryType = ModelType.MOXY;\r
+ private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL;\r
+ private final static DBConnectionType type = DBConnectionType.REALTIME;\r
+\r
+ static {\r
+ VALID_HTTP_STATUS_CODES.add(200);\r
+ VALID_HTTP_STATUS_CODES.add(201);\r
+ VALID_HTTP_STATUS_CODES.add(204);\r
+ }\r
+\r
+ private GenericQueryProcessor genericQueryProcessor;\r
+ private HttpHeaders httpHeaders;\r
+\r
+ private UriInfo uriInfo;\r
+\r
+ private MultivaluedMap<String, String> headersMultiMap;\r
+ private MultivaluedMap<String, String> queryParameters;\r
+\r
+ private List<String> aaiRequestContextList;\r
+\r
+ private List<MediaType> outputMediaTypes;\r
+\r
+ private Loader loader;\r
+ private TitanGraph graph;\r
+\r
+ private Graph tx;\r
+\r
+ private GraphTraversalSource g;\r
+ private TransactionalGraphEngine dbEngine;\r
+\r
+\r
+\r
+@Before\r
+ public void setup()throws AAIException{\r
+\r
+ httpHeaders = mock(HttpHeaders.class);\r
+ uriInfo = mock(UriInfo.class);\r
+\r
+ headersMultiMap = new MultivaluedHashMap<>();\r
+ queryParameters = Mockito.spy(new MultivaluedHashMap<>());\r
+\r
+ headersMultiMap.add("X-FromAppId", "JUNIT");\r
+ headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());\r
+ headersMultiMap.add("Real-Time", "true");\r
+ headersMultiMap.add("Accept", "application/json");\r
+ headersMultiMap.add("aai-request-context", "");\r
+\r
+ outputMediaTypes = new ArrayList<>();\r
+ outputMediaTypes.add(APPLICATION_JSON);\r
+\r
+ aaiRequestContextList = new ArrayList<>();\r
+ aaiRequestContextList.add("");\r
+\r
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);\r
+ when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);\r
+ when(httpHeaders.getRequestHeader("X-FromAppId")).thenReturn(Arrays.asList("JUNIT"));\r
+ when(httpHeaders.getRequestHeader("X-TransactionId")).thenReturn(Arrays.asList("JUNIT"));\r
+\r
+ when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);\r
+\r
+\r
+ when(uriInfo.getQueryParameters()).thenReturn(queryParameters);\r
+ when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);\r
+\r
+ // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable\r
+ Mockito.doReturn(null).when(queryParameters).remove(anyObject());\r
+\r
+ when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);\r
+ loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version);\r
+ dbEngine = new TitanDBEngine(\r
+ queryStyle,\r
+ type,\r
+ loader);\r
+ GenericQueryProcessor.Builder builder=new GenericQueryProcessor.Builder(dbEngine);\r
+builder.queryFrom(URI.create("te"));\r
+builder.queryFrom("te");\r
+builder.create();\r
+builder.processWith(QueryProcessorType.GREMLIN_SERVER);\r
+ builder.processWith(QueryProcessorType.LOCAL_GROOVY);\r
+\r
+ gremlinServerImpl= new GremlinServerImpl(builder);\r
+ }\r
+\r
+ @Test(expected = NullPointerException.class)\r
+ public void processSubGraphTest() throws Exception{\r
+ GraphTraversal<Vertex, Vertex> g=Mockito.mock(GraphTraversal.class);\r
+ g.has("cloud-region-id", "cloud-region-id-1");\r
+ gremlinServerImpl.processSubGraph(SubGraphStyle.prune,g);\r
+}\r
+\r
+ @Test(expected = RuntimeException.class)\r
+ public void executeTest() throws Exception{\r
+ GraphTraversal<Vertex, Vertex> g=Mockito.mock(GraphTraversal.class);\r
+ g.has("cloud-region-id", "cloud-region-id-1");\r
+ //Mockito.when(etPath()).thenReturn("testpath");\r
+ List<Object> re= gremlinServerImpl.execute(SubGraphStyle.prune);\r
+ Assert.assertNotNull(re);\r
+ }\r
+\r
+\r
+\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+\r
+package org.openecomp.aai.rest.search;\r
+\r
+import com.thinkaurelius.titan.core.TitanGraph;\r
+import groovy.lang.MissingPropertyException;\r
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;\r
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;\r
+import org.apache.tinkerpop.gremlin.structure.Graph;\r
+import org.apache.tinkerpop.gremlin.structure.Vertex;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.mockito.Mockito;\r
+import org.openecomp.aai.dbmap.DBConnectionType;\r
+import org.openecomp.aai.exceptions.AAIException;\r
+import org.openecomp.aai.introspection.Loader;\r
+import org.openecomp.aai.introspection.LoaderFactory;\r
+import org.openecomp.aai.introspection.ModelType;\r
+import org.openecomp.aai.introspection.Version;\r
+import org.openecomp.aai.serialization.engines.QueryStyle;\r
+import org.openecomp.aai.serialization.engines.TitanDBEngine;\r
+import org.openecomp.aai.serialization.engines.TransactionalGraphEngine;\r
+import org.openecomp.aai.serialization.queryformats.SubGraphStyle;\r
+\r
+import javax.ws.rs.core.*;\r
+import java.net.URI;\r
+import java.util.*;\r
+\r
+import static org.mockito.Matchers.anyObject;\r
+import static org.mockito.Mockito.mock;\r
+import static org.mockito.Mockito.when;\r
+\r
+public class GroovyShellImplTest {\r
+\r
+ GroovyShellImpl groovyShellImpl ;\r
+\r
+ protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");\r
+\r
+ private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();\r
+\r
+ private final static Version version = Version.getLatest();\r
+ private final static ModelType introspectorFactoryType = ModelType.MOXY;\r
+ private final static QueryStyle queryStyle = QueryStyle.TRAVERSAL;\r
+ private final static DBConnectionType type = DBConnectionType.REALTIME;\r
+\r
+ static {\r
+ VALID_HTTP_STATUS_CODES.add(200);\r
+ VALID_HTTP_STATUS_CODES.add(201);\r
+ VALID_HTTP_STATUS_CODES.add(204);\r
+ }\r
+\r
+ private GenericQueryProcessor genericQueryProcessor;\r
+ private HttpHeaders httpHeaders;\r
+\r
+ private UriInfo uriInfo;\r
+\r
+ private MultivaluedMap<String, String> headersMultiMap;\r
+ private MultivaluedMap<String, String> queryParameters;\r
+\r
+ private List<String> aaiRequestContextList;\r
+\r
+ private List<MediaType> outputMediaTypes;\r
+\r
+ private Loader loader;\r
+ private TitanGraph graph;\r
+\r
+ private Graph tx;\r
+\r
+ private GraphTraversalSource g;\r
+ private TransactionalGraphEngine dbEngine;\r
+\r
+\r
+\r
+@Before\r
+ public void setup()throws AAIException{\r
+\r
+ httpHeaders = mock(HttpHeaders.class);\r
+ uriInfo = mock(UriInfo.class);\r
+\r
+ headersMultiMap = new MultivaluedHashMap<>();\r
+ queryParameters = Mockito.spy(new MultivaluedHashMap<>());\r
+\r
+ headersMultiMap.add("X-FromAppId", "JUNIT");\r
+ headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());\r
+ headersMultiMap.add("Real-Time", "true");\r
+ headersMultiMap.add("Accept", "application/json");\r
+ headersMultiMap.add("aai-request-context", "");\r
+\r
+ outputMediaTypes = new ArrayList<>();\r
+ outputMediaTypes.add(APPLICATION_JSON);\r
+\r
+ aaiRequestContextList = new ArrayList<>();\r
+ aaiRequestContextList.add("");\r
+\r
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);\r
+ when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);\r
+ when(httpHeaders.getRequestHeader("X-FromAppId")).thenReturn(Arrays.asList("JUNIT"));\r
+ when(httpHeaders.getRequestHeader("X-TransactionId")).thenReturn(Arrays.asList("JUNIT"));\r
+\r
+ when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);\r
+\r
+\r
+ when(uriInfo.getQueryParameters()).thenReturn(queryParameters);\r
+ when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);\r
+\r
+ // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable\r
+ Mockito.doReturn(null).when(queryParameters).remove(anyObject());\r
+\r
+ when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);\r
+ loader = LoaderFactory.createLoaderForVersion(introspectorFactoryType, version);\r
+ dbEngine = new TitanDBEngine(\r
+ queryStyle,\r
+ type,\r
+ loader);\r
+ GenericQueryProcessor.Builder builder=new GenericQueryProcessor.Builder(dbEngine);\r
+builder.queryFrom(URI.create("te"));\r
+builder.queryFrom("te");\r
+builder.create();\r
+builder.processWith(QueryProcessorType.GREMLIN_SERVER);\r
+ builder.processWith(QueryProcessorType.LOCAL_GROOVY);\r
+\r
+ groovyShellImpl= new GroovyShellImpl(builder);\r
+ }\r
+\r
+ @Test(expected = MissingPropertyException.class)\r
+ public void processSubGraphTest() throws Exception{\r
+ GraphTraversal<Vertex, Vertex> g=Mockito.mock(GraphTraversal.class);\r
+ g.has("cloud-region-id", "cloud-region-id-1");\r
+ Map<String, Object> params = new HashMap<>();\r
+ groovyShellImpl.runQuery("vnfs-fromServiceInstance",params);\r
+}\r
+\r
+\r
+\r
+\r
+\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.openecomp.aai.rest.util;\r
+\r
+import org.junit.Test;\r
+\r
+import static org.junit.Assert.assertNotNull;\r
+\r
+public class LogFormatToolsTest {\r
+\r
+ @Test\r
+ public void testLogFormatTools(){\r
+\r
+ String dateTime = new LogFormatTools().getCurrentDateTime();\r
+ assertNotNull(dateTime);\r
+ }\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.openecomp.aai.retiredcustomer;\r
+\r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.mockito.Mockito;\r
+import org.openecomp.aai.ajsc_aai.JaxrsUserService;\r
+import org.openecomp.aai.introspection.Version;\r
+import org.openecomp.aai.rest.retired.RetiredConsumer;\r
+\r
+import javax.ws.rs.core.*;\r
+import java.util.*;\r
+\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.mockito.Matchers.anyObject;\r
+import static org.mockito.Mockito.when;\r
+\r
+public class JaxrsUserServiceTest {\r
+\r
+\r
+ protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");\r
+\r
+ private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();\r
+\r
+ static {\r
+ VALID_HTTP_STATUS_CODES.add(200);\r
+ VALID_HTTP_STATUS_CODES.add(201);\r
+ VALID_HTTP_STATUS_CODES.add(204);\r
+ }\r
+\r
+ protected JaxrsUserService jaxrsUserService;\r
+ protected HttpHeaders httpHeaders;\r
+ protected UriInfo uriInfo;\r
+\r
+ private MultivaluedMap<String, String> headersMultiMap;\r
+ private MultivaluedMap<String, String> queryParameters;\r
+\r
+ private List<String> aaiRequestContextList;\r
+\r
+ private List<MediaType> outputMediaTypes;\r
+\r
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(RetiredConsumer.class.getName());\r
+\r
+ @Before\r
+ public void setup(){\r
+ logger.info("Starting the setup for the integration tests of Rest Endpoints");\r
+\r
+ jaxrsUserService = new JaxrsUserService();\r
+ httpHeaders = Mockito.mock(HttpHeaders.class);\r
+ uriInfo = Mockito.mock(UriInfo.class);\r
+\r
+ headersMultiMap = new MultivaluedHashMap<>();\r
+ queryParameters = Mockito.spy(new MultivaluedHashMap<>());\r
+\r
+ headersMultiMap.add("X-FromAppId", "JUNIT");\r
+ headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());\r
+ headersMultiMap.add("Real-Time", "true");\r
+ headersMultiMap.add("Accept", "application/json");\r
+ headersMultiMap.add("aai-request-context", "");\r
+\r
+ outputMediaTypes = new ArrayList<>();\r
+ outputMediaTypes.add(APPLICATION_JSON);\r
+\r
+ aaiRequestContextList = new ArrayList<>();\r
+ aaiRequestContextList.add("");\r
+\r
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);\r
+ when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);\r
+\r
+ when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);\r
+\r
+\r
+ when(uriInfo.getQueryParameters()).thenReturn(queryParameters);\r
+ when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);\r
+\r
+ // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable\r
+ Mockito.doReturn(null).when(queryParameters).remove(anyObject());\r
+\r
+ when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);\r
+ }\r
+ @Test\r
+ public void lookUpUserTest(){\r
+ when(uriInfo.getPath()).thenReturn("/user?userID1");\r
+ String response = jaxrsUserService.lookupUser("userID1");\r
+ assertNotNull(response);\r
+\r
+\r
+ }\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.openecomp.aai.retiredcustomer;\r
+\r
+import com.att.eelf.configuration.EELFLogger;\r
+import com.att.eelf.configuration.EELFManager;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.mockito.Mockito;\r
+import org.openecomp.aai.introspection.Version;\r
+import org.openecomp.aai.rest.retired.RetiredConsumer;\r
+\r
+import javax.ws.rs.core.*;\r
+import java.util.*;\r
+\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.mockito.Matchers.anyObject;\r
+import static org.mockito.Mockito.when;\r
+\r
+public abstract class RetiredConsumerTest {\r
+\r
+ protected static final MediaType APPLICATION_JSON = MediaType.valueOf("application/json");\r
+\r
+ private static final Set<Integer> VALID_HTTP_STATUS_CODES = new HashSet<>();\r
+\r
+ static {\r
+ VALID_HTTP_STATUS_CODES.add(200);\r
+ VALID_HTTP_STATUS_CODES.add(201);\r
+ VALID_HTTP_STATUS_CODES.add(204);\r
+ }\r
+\r
+ protected RetiredConsumer retiredConsumer;\r
+ protected HttpHeaders httpHeaders;\r
+ protected UriInfo uriInfo;\r
+\r
+ private MultivaluedMap<String, String> headersMultiMap;\r
+ private MultivaluedMap<String, String> queryParameters;\r
+\r
+ private List<String> aaiRequestContextList;\r
+\r
+ private List<MediaType> outputMediaTypes;\r
+\r
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(RetiredConsumer.class.getName());\r
+\r
+ @Before\r
+ public void setup(){\r
+ logger.info("Starting the setup for the integration tests of Rest Endpoints");\r
+\r
+ retiredConsumer = getRetiredConsumer();\r
+ httpHeaders = Mockito.mock(HttpHeaders.class);\r
+ uriInfo = Mockito.mock(UriInfo.class);\r
+\r
+ headersMultiMap = new MultivaluedHashMap<>();\r
+ queryParameters = Mockito.spy(new MultivaluedHashMap<>());\r
+\r
+ headersMultiMap.add("X-FromAppId", "JUNIT");\r
+ headersMultiMap.add("X-TransactionId", UUID.randomUUID().toString());\r
+ headersMultiMap.add("Real-Time", "true");\r
+ headersMultiMap.add("Accept", "application/json");\r
+ headersMultiMap.add("aai-request-context", "");\r
+\r
+ outputMediaTypes = new ArrayList<>();\r
+ outputMediaTypes.add(APPLICATION_JSON);\r
+\r
+ aaiRequestContextList = new ArrayList<>();\r
+ aaiRequestContextList.add("");\r
+\r
+ when(httpHeaders.getAcceptableMediaTypes()).thenReturn(outputMediaTypes);\r
+ when(httpHeaders.getRequestHeaders()).thenReturn(headersMultiMap);\r
+\r
+ when(httpHeaders.getRequestHeader("aai-request-context")).thenReturn(aaiRequestContextList);\r
+\r
+\r
+ when(uriInfo.getQueryParameters()).thenReturn(queryParameters);\r
+ when(uriInfo.getQueryParameters(false)).thenReturn(queryParameters);\r
+\r
+ // TODO - Check if this is valid since RemoveDME2QueryParameters seems to be very unreasonable\r
+ Mockito.doReturn(null).when(queryParameters).remove(anyObject());\r
+\r
+ when(httpHeaders.getMediaType()).thenReturn(APPLICATION_JSON);\r
+ }\r
+\r
+ @Test\r
+ public void testRetiredForAllEndPoints(){\r
+ when(uriInfo.getPath()).thenReturn("/aai/v3/cloud-infrastructure/pservers/pserver/test-pserver1");\r
+\r
+ Response response = retiredConsumer.createMessageGet(Version.getLatest().toString(), httpHeaders, uriInfo, null);\r
+ assertNotNull(response);\r
+ assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus());\r
+\r
+ response = retiredConsumer.createMessagePost(Version.getLatest().toString(), httpHeaders, uriInfo, null);\r
+ assertNotNull(response);\r
+ assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus());\r
+\r
+ response = retiredConsumer.createMessagePatch(Version.getLatest().toString(), httpHeaders, uriInfo, null);\r
+ assertNotNull(response);\r
+ assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus());\r
+\r
+ response = retiredConsumer.createMessagePut(Version.getLatest().toString(), httpHeaders, uriInfo, null);\r
+ assertNotNull(response);\r
+ assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus());\r
+\r
+ response = retiredConsumer.createMessageDelete(Version.getLatest().toString(), httpHeaders, uriInfo, null);\r
+ assertNotNull(response);\r
+ assertEquals(Response.Status.GONE.getStatusCode(), response.getStatus());\r
+ }\r
+\r
+ public abstract RetiredConsumer getRetiredConsumer();\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.openecomp.aai.retiredcustomer;\r
+\r
+import org.openecomp.aai.rest.retired.RetiredConsumer;\r
+import org.openecomp.aai.rest.retired.V3ThroughV7Consumer;\r
+\r
+\r
+public class V3ThroughV7ConsumerTest extends RetiredConsumerTest {\r
+\r
+ @Override\r
+ public RetiredConsumer getRetiredConsumer() {\r
+ return new V3ThroughV7Consumer();\r
+ }\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+\r
+package org.openecomp.aai.retiredcustomer;\r
+\r
+import org.openecomp.aai.rest.retired.RetiredConsumer;\r
+import org.openecomp.aai.rest.retired.V7V8NamedQueries;\r
+\r
+public class V7V8NamedQueriesTest extends RetiredConsumerTest {\r
+\r
+ @Override\r
+ public RetiredConsumer getRetiredConsumer() {\r
+ return new V7V8NamedQueries();\r
+ }\r
+}\r
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.openecomp.aai\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+\r
+package org.openecomp.aai.util;\r
+\r
+import ch.qos.logback.classic.Level;\r
+import ch.qos.logback.classic.Logger;\r
+import ch.qos.logback.classic.PatternLayout;\r
+import ch.qos.logback.classic.spi.ILoggingEvent;\r
+import ch.qos.logback.core.AppenderBase;\r
+import org.apache.commons.lang.ObjectUtils;\r
+import org.junit.Before;\r
+import org.junit.Ignore;\r
+import org.junit.Rule;\r
+import org.junit.Test;\r
+import org.openecomp.aai.dbmap.AAIGraph;\r
+import org.openecomp.aai.logging.ErrorLogHelper;\r
+import org.powermock.api.mockito.PowerMockito;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.agent.PowerMockAgent;\r
+import org.powermock.modules.junit4.rule.PowerMockRule;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import javax.servlet.ServletContextEvent;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import static org.junit.Assert.assertFalse;\r
+import static org.junit.Assert.assertTrue;\r
+\r
+@PrepareForTest({AAIGraph.class, AAIConfig.class, ErrorLogHelper.class})\r
+public class AAIAppServletContextListenerTest {\r
+ \r
+ @Rule\r
+ public PowerMockRule rule = new PowerMockRule();\r
+ \r
+ static {\r
+ PowerMockAgent.initializeIfNeeded();\r
+ }\r
+ \r
+ private ServletContextEvent arg; \r
+ private AAIAppServletContextListener listener;\r
+ \r
+ /**\r
+ * Initialize.\r
+ */\r
+ @Before\r
+ @PrepareForTest({AAIGraph.class, AAIConfig.class, ErrorLogHelper.class})\r
+ public void initialize(){\r
+ arg = PowerMockito.mock(ServletContextEvent.class);\r
+ PowerMockito.mockStatic(AAIGraph.class);\r
+ PowerMockito.mockStatic(AAIConfig.class);\r
+ PowerMockito.mockStatic(ErrorLogHelper.class);\r
+ \r
+ listener = new AAIAppServletContextListener();\r
+ configureLog();\r
+ }\r
+ \r
+ /**\r
+ * Test contextDestroyed.\r
+ */\r
+ @Test(expected = NullPointerException.class)\r
+ //@Ignore\r
+ public void testContextDestroyed(){\r
+ listener.contextDestroyed(arg);\r
+ assertTrue(logContains(Level.DEBUG, "AAI Server shutdown"));\r
+ assertTrue(logContains(Level.INFO, "AAI graph shutdown"));\r
+ }\r
+ \r
+ /**\r
+ * Test contextInitialized.\r
+ */\r
+ @Test\r
+ //@Ignore\r
+ public void testContextInitialized(){\r
+ listener.contextInitialized(arg);\r
+ assertFalse(logContains(Level.DEBUG, "Loading aaiconfig.properties"));\r
+ assertFalse(logContains(Level.DEBUG, "Loading error.properties"));\r
+ assertFalse(logContains(Level.DEBUG, "Loading graph database"));\r
+ assertFalse(logContains(Level.INFO, "AAI Server initialization"));\r
+ }\r
+ \r
+ \r
+ /**\r
+ * Helper method to check if a String appears in the desired log level.\r
+ *\r
+ * @param level Log level to use\r
+ * @param expected String to search for\r
+ * @return True if search String is found, false otherwise\r
+ */\r
+ private boolean logContains(Level level, String expected) {\r
+ String actual[] = RecordingAppender.messages();\r
+ for (String log : actual) {\r
+ if (log.contains(level.toString()) && log.contains(expected))\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+\r
+ /**\r
+ * Set logging level, and initialize log-appender.\r
+ */\r
+ private void configureLog() {\r
+ org.slf4j.Logger rootLogger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);\r
+ rootLogger.debug("debug");\r
+ // rootLogger.();\r
+ // rootLogger.addAppender(RecordingAppender.appender(new PatternLayout()));\r
+ }\r
+\r
+}\r
+\r
+\r
+/**\r
+ * Appender class that appends log messages to a String List when some logging event occurs\r
+ */\r
+class RecordingAppender extends AppenderBase<ILoggingEvent> {\r
+ private static List<String> messages = new ArrayList<String>();\r
+ private static RecordingAppender appender = new RecordingAppender();\r
+ private PatternLayout patternLayout;\r
+\r
+ private RecordingAppender() {\r
+ super();\r
+ }\r
+\r
+ /**\r
+ * @param patternLayout Pattern to format log message\r
+ * @return Current appender \r
+ */\r
+ public static RecordingAppender appender(PatternLayout patternLayout) {\r
+ appender.patternLayout = patternLayout;\r
+ appender.clear();\r
+ return appender;\r
+ }\r
+\r
+ @Override\r
+ protected void append(ILoggingEvent event) {\r
+ messages.add(patternLayout.doLayout(event));\r
+ }\r
+\r
+ public void close() {}\r
+\r
+ public boolean requiresLayout() {\r
+ return false;\r
+ }\r
+\r
+ /**\r
+ * @return Return logs as a String array\r
+ */\r
+ public static String[] messages() {\r
+ return (String[]) messages.toArray(new String[messages.size()]);\r
+ }\r
+\r
+ /**\r
+ * Clear the message container\r
+ */\r
+ private void clear() {\r
+ messages.clear();\r
+ }\r
+ \r
+}\r