summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/test/java/org/openecomp/sdc/be/servlets
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/test/java/org/openecomp/sdc/be/servlets')
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/AbstractValidationsServletTest.java117
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ApplicationConfig.java45
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/BaseTestConfig.java27
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentInstanceServletTest.java208
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/GroupEndpointTest.java179
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/GroupTypesEndpointTest.java197
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/JerseySpringBaseTest.java45
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/PolicyServletTest.java338
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/PolicyTypesEndpointTest.java101
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceServletTest.java419
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceUploadServletTest.java233
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/TypesUploadServletTest.java292
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/servlets/UserAdminServletTest.java340
13 files changed, 1575 insertions, 966 deletions
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/AbstractValidationsServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/AbstractValidationsServletTest.java
index cee856d905..be43fa7d62 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/AbstractValidationsServletTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/AbstractValidationsServletTest.java
@@ -20,9 +20,17 @@
package org.openecomp.sdc.be.servlets;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
+import fj.data.Either;
+import org.apache.commons.codec.binary.Base64;
+import org.junit.Before;
+import org.junit.Test;
+import org.openecomp.sdc.be.model.UploadResourceInfo;
+import org.openecomp.sdc.be.model.User;
+import org.openecomp.sdc.common.datastructure.Wrapper;
+import org.openecomp.sdc.exception.ResponseFormat;
+import org.slf4j.Logger;
+import javax.ws.rs.core.Response;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -32,73 +40,60 @@ import java.nio.file.Paths;
import java.util.Map;
import java.util.stream.Stream;
-import javax.ws.rs.core.Response;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
-import org.apache.commons.codec.binary.Base64;
-import org.junit.Before;
-import org.junit.Test;
-import org.openecomp.sdc.be.model.UploadResourceInfo;
-import org.openecomp.sdc.be.model.User;
-import org.openecomp.sdc.common.datastructure.Wrapper;
-import org.openecomp.sdc.exception.ResponseFormat;
-import org.slf4j.Logger;
+public class AbstractValidationsServletTest {
+ private static AbstractValidationsServlet servlet = new AbstractValidationsServlet() {};
-import fj.data.Either;
+ private static final String BASIC_TOSCA_TEMPLATE = "tosca_definitions_version: tosca_simple_yaml_%s";
-public class AbstractValidationsServletTest {
- private static AbstractValidationsServlet servlet = new AbstractValidationsServlet() {
- };
+ @Before
+ public void setUp() throws Exception {
+ servlet.initLog(mock(Logger.class));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testGetScarFromPayload() {
- private static final String BASIC_TOSCA_TEMPLATE = "tosca_definitions_version: tosca_simple_yaml_%s";
+ String payloadName = "valid_vf.csar";
+ String rootPath = System.getProperty("user.dir");
+ Path path = null;
+ byte[] data = null;
+ String payloadData = null;
+ Either<Map<String, byte[]>, ResponseFormat> returnValue = null;
+ try {
+ path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
+ data = Files.readAllBytes(path);
+ payloadData = Base64.encodeBase64String(data);
+ UploadResourceInfo resourceInfo = new UploadResourceInfo();
+ resourceInfo.setPayloadName(payloadName);
+ resourceInfo.setPayloadData(payloadData);
+ Method privateMethod = null;
+ privateMethod = AbstractValidationsServlet.class.getDeclaredMethod("getScarFromPayload", UploadResourceInfo.class);
+ privateMethod.setAccessible(true);
+ returnValue = (Either<Map<String, byte[]>, ResponseFormat>) privateMethod.invoke(servlet, resourceInfo);
+ } catch (IOException | NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ assertTrue(returnValue.isLeft());
+ Map<String, byte[]> csar = returnValue.left().value();
+ assertTrue(csar != null);
+ }
- @Before
- public void setUp() throws Exception {
- servlet.initLog(mock(Logger.class));
- }
+ @Test
+ public void testValidToscaVersion() throws Exception {
+ Stream.of("1_0", "1_0_0", "1_1", "1_1_0").forEach(this::testValidToscaVersion);
+ }
-
- @SuppressWarnings("unchecked")
- @Test
- public void testGetScarFromPayload() {
- String payloadName = "valid_vf.csar";
- String rootPath = System.getProperty("user.dir");
- Path path = null;
- byte[] data = null;
- String payloadData = null;
- Either<Map<String, byte[]>, ResponseFormat> returnValue = null;
- try {
- path = Paths.get(rootPath + "/src/test/resources/valid_vf.csar");
- data = Files.readAllBytes(path);
- payloadData = Base64.encodeBase64String(data);
- UploadResourceInfo resourceInfo = new UploadResourceInfo();
- resourceInfo.setPayloadName(payloadName);
- resourceInfo.setPayloadData(payloadData);
- Method privateMethod = null;
- privateMethod = AbstractValidationsServlet.class.getDeclaredMethod("getScarFromPayload",
- UploadResourceInfo.class);
- privateMethod.setAccessible(true);
- returnValue = (Either<Map<String, byte[]>, ResponseFormat>) privateMethod.invoke(servlet, resourceInfo);
- } catch (IOException | NoSuchMethodException | SecurityException | IllegalAccessException
- | IllegalArgumentException | InvocationTargetException e) {
- e.printStackTrace();
- }
- assertTrue(returnValue.isLeft());
- Map<String, byte[]> csar = returnValue.left().value();
- assertTrue(csar != null);
- }
+ private void testValidToscaVersion(String version) {
+ Wrapper<Response> responseWrapper = new Wrapper<>();
+ servlet.validatePayloadIsTosca(responseWrapper, new UploadResourceInfo(), new User(), String.format(BASIC_TOSCA_TEMPLATE, version));
+ assertTrue(responseWrapper.isEmpty());
+ }
- @Test
- public void testValidToscaVersion() throws Exception {
- Stream.of("1_0", "1_0_0", "1_1", "1_1_0").forEach(this::testValidToscaVersion);
- }
- private void testValidToscaVersion(String version) {
- Wrapper<Response> responseWrapper = new Wrapper<>();
- servlet.validatePayloadIsTosca(responseWrapper, new UploadResourceInfo(), new User(),
- String.format(BASIC_TOSCA_TEMPLATE, version));
- assertTrue(responseWrapper.isEmpty());
- }
-
}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ApplicationConfig.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ApplicationConfig.java
index 6ef8091921..6fe303b495 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ApplicationConfig.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ApplicationConfig.java
@@ -20,42 +20,41 @@
package org.openecomp.sdc.be.servlets;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.core.Application;
-
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.MultiPart;
import org.glassfish.jersey.server.ResourceConfig;
import org.mockito.Mockito;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.Application;
+import java.util.HashSet;
+import java.util.Set;
+
public class ApplicationConfig extends Application {
- public Set<Class<?>> getClasses() {
- final Set<Class<?>> resources = new HashSet<Class<?>>();
+ public Set<Class<?>> getClasses() {
+ final Set<Class<?>> resources = new HashSet<Class<?>>();
- // Add your resources.
- resources.add(ResourceUploadServlet.class);
- resources.add(MultiPart.class);
- resources.add(FormDataContentDisposition.class);
+ // Add your resources.
+ resources.add(ResourceUploadServlet.class);
+ resources.add(MultiPart.class);
+ resources.add(FormDataContentDisposition.class);
- final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
- ResourceConfig resourceConfig = ResourceConfig.forApplication(this);
+ ResourceConfig resourceConfig = ResourceConfig.forApplication(this);
- resourceConfig.register(new AbstractBinder() {
+ resourceConfig.register(new AbstractBinder() {
- @Override
- protected void configure() {
- // TODO Auto-generated method stub
- bind(request).to(HttpServletRequest.class);
- }
- });
+ @Override
+ protected void configure() {
+ // TODO Auto-generated method stub
+ bind(request).to(HttpServletRequest.class);
+ }
+ });
- return resources;
- }
+ return resources;
+ }
}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/BaseTestConfig.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/BaseTestConfig.java
new file mode 100644
index 0000000000..218505d8ef
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/BaseTestConfig.java
@@ -0,0 +1,27 @@
+package org.openecomp.sdc.be.servlets;
+
+import org.openecomp.sdc.be.auditing.impl.AuditingManager;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.springframework.context.annotation.Bean;
+
+import static org.mockito.Mockito.mock;
+
+public class BaseTestConfig {
+
+ @Bean
+ ComponentsUtils componentsUtils() {return new ComponentsUtils(mock(AuditingManager.class));}
+
+ @Bean
+ DefaultExceptionMapper defaultExceptionMapper() {return new DefaultExceptionMapper();}
+
+ @Bean
+ ComponentExceptionMapper componentExceptionMapper() {
+ return new ComponentExceptionMapper(componentsUtils());
+ }
+
+ @Bean
+ StorageExceptionMapper storageExceptionMapper() {
+ return new StorageExceptionMapper(componentsUtils());
+ }
+
+}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentInstanceServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentInstanceServletTest.java
index 97b1fe2a81..c723e0e664 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentInstanceServletTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentInstanceServletTest.java
@@ -1,17 +1,7 @@
package org.openecomp.sdc.be.servlets;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.when;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.glassfish.grizzly.http.util.HttpStatus;
+import fj.data.Either;
+import org.eclipse.jetty.http.HttpStatus;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
@@ -19,8 +9,8 @@ import org.glassfish.jersey.test.TestProperties;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;
-import org.openecomp.sdc.be.components.impl.ServiceComponentInstanceBusinessLogic;
-import org.openecomp.sdc.be.components.impl.VFComponentInstanceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
+import org.openecomp.sdc.be.config.SpringConfig;
import org.openecomp.sdc.be.dao.api.ActionStatus;
import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
import org.openecomp.sdc.be.impl.ComponentsUtils;
@@ -29,108 +19,114 @@ import org.openecomp.sdc.be.impl.WebAppContextWrapper;
import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
import org.openecomp.sdc.common.api.Constants;
import org.openecomp.sdc.exception.ResponseFormat;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.web.context.WebApplicationContext;
-import fj.data.Either;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
/**
* The test suite designed for test functionality of ComponentInstanceServlet class
*/
public class ComponentInstanceServletTest extends JerseyTest {
-
- private final static String USER_ID = "jh0003";
- private static HttpServletRequest request;
- private static HttpSession session;
- private static ServletContext servletContext;
- private static WebAppContextWrapper webAppContextWrapper;
- private static WebApplicationContext webApplicationContext;
- private static VFComponentInstanceBusinessLogic vfBusinessLogic;
- private static ServiceComponentInstanceBusinessLogic serviceBusinessLogic;
- private static ComponentsUtils componentsUtils;
- private static ServletUtils servletUtils;
- private static ResponseFormat responseFormat;
-
- @BeforeClass
- public static void setup() {
- createMocks();
- stubMethods();
- }
- @Test
- public void testGetRelationByIdSuccess(){
-
- String containerComponentType = "resources";
- String componentId = "componentId";
- String relationId = "relationId";
- String path = "/v1/catalog/" + containerComponentType + "/" + componentId + "/" + relationId + "/relationId";
- Either<RequirementCapabilityRelDef, ResponseFormat> successResponse = Either.left(new RequirementCapabilityRelDef());
- when(vfBusinessLogic.getRelationById(eq(componentId), eq(relationId), eq(USER_ID), eq(ComponentTypeEnum.RESOURCE))).thenReturn(successResponse);
- when(responseFormat.getStatus()).thenReturn(HttpStatus.OK_200.getStatusCode());
- when(componentsUtils.getResponseFormat(ActionStatus.OK)).thenReturn(responseFormat);
- Response response = target()
- .path(path)
- .request(MediaType.APPLICATION_JSON)
- .header("USER_ID", USER_ID)
- .get( Response.class);
+ private final static String USER_ID = "jh0003";
+ private static HttpServletRequest request;
+ private static HttpSession session;
+ private static ServletContext servletContext;
+ private static WebAppContextWrapper webAppContextWrapper;
+ private static WebApplicationContext webApplicationContext;
+ private static ComponentInstanceBusinessLogic componentInstanceBusinessLogic;
+ private static ComponentsUtils componentsUtils;
+ private static ServletUtils servletUtils;
+ private static ResponseFormat responseFormat;
+
+ @BeforeClass
+ public static void setup() {
+ createMocks();
+ stubMethods();
+ }
+
+ @Test
+ public void testGetRelationByIdSuccess(){
+
+ String containerComponentType = "resources";
+ String componentId = "componentId";
+ String relationId = "relationId";
+ String path = "/v1/catalog/" + containerComponentType + "/" + componentId + "/" + relationId + "/relationId";
+ Either<RequirementCapabilityRelDef, ResponseFormat> successResponse = Either.left(new RequirementCapabilityRelDef());
+ when(componentInstanceBusinessLogic.getRelationById(eq(componentId), eq(relationId), eq(USER_ID), eq(ComponentTypeEnum.RESOURCE))).thenReturn(successResponse);
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.OK_200);
+ when(componentsUtils.getResponseFormat(ActionStatus.OK)).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .get( Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.OK_200);
+ }
+
+ @Test
+ public void testGetRelationByIdFailure(){
+
+ String containerComponentType = "unknown_type";
+ String componentId = "componentId";
+ String relationId = "relationId";
+ String path = "/v1/catalog/" + containerComponentType + "/" + componentId + "/" + relationId + "/relationId";
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.BAD_REQUEST_400);
+ when(componentsUtils.getResponseFormat(eq(ActionStatus.UNSUPPORTED_ERROR), eq(containerComponentType))).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .get( Response.class);
- assertTrue(response.getStatus() == HttpStatus.OK_200.getStatusCode());
- }
-
- @Test
- public void testGetRelationByIdFailure(){
-
- String containerComponentType = "unknown_type";
- String componentId = "componentId";
- String relationId = "relationId";
- String path = "/v1/catalog/" + containerComponentType + "/" + componentId + "/" + relationId + "/relationId";
- when(responseFormat.getStatus()).thenReturn(HttpStatus.BAD_REQUEST_400.getStatusCode());
- when(componentsUtils.getResponseFormat(eq(ActionStatus.UNSUPPORTED_ERROR), eq(containerComponentType))).thenReturn(responseFormat);
- Response response = target()
- .path(path)
- .request(MediaType.APPLICATION_JSON)
- .header("USER_ID", USER_ID)
- .get( Response.class);
+ assertTrue(response.getStatus() == HttpStatus.BAD_REQUEST_400);
+ }
- assertTrue(response.getStatus() == HttpStatus.BAD_REQUEST_400.getStatusCode());
- }
+ @Override
+ protected ResourceConfig configure() {
+ forceSet(TestProperties.CONTAINER_PORT, "0");
+ ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
+ return new ResourceConfig(ComponentInstanceServlet.class)
+ .register(new AbstractBinder() {
+ @Override
+ protected void configure() {
+ bind(request).to(HttpServletRequest.class);
+ }
+ })
+ .property("contextConfig", context);
+ }
- @Override
- protected Application configure() {
+ private static void createMocks() {
+ request = Mockito.mock(HttpServletRequest.class);
+ session = Mockito.mock(HttpSession.class);
+ servletContext = Mockito.mock(ServletContext.class);
+ webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
+ webApplicationContext = Mockito.mock(WebApplicationContext.class);
+ componentInstanceBusinessLogic = Mockito.mock(ComponentInstanceBusinessLogic.class);
+ componentsUtils = Mockito.mock(ComponentsUtils.class);
+ servletUtils = Mockito.mock(ServletUtils.class);
+ responseFormat = Mockito.mock(ResponseFormat.class);
+ }
- ResourceConfig resourceConfig = new ResourceConfig(ComponentInstanceServlet.class);
- forceSet(TestProperties.CONTAINER_PORT, "0");
-
- resourceConfig.register(new AbstractBinder() {
- @Override
- protected void configure() {
- bind(request).to(HttpServletRequest.class);
- }
- });
- return resourceConfig;
- }
-
- private static void createMocks() {
- request = Mockito.mock(HttpServletRequest.class);
- session = Mockito.mock(HttpSession.class);
- servletContext = Mockito.mock(ServletContext.class);
- webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
- webApplicationContext = Mockito.mock(WebApplicationContext.class);
- vfBusinessLogic = Mockito.mock(VFComponentInstanceBusinessLogic.class);
- serviceBusinessLogic = Mockito.mock(ServiceComponentInstanceBusinessLogic.class);
- componentsUtils = Mockito.mock(ComponentsUtils.class);
- servletUtils = Mockito.mock(ServletUtils.class);
- responseFormat = Mockito.mock(ResponseFormat.class);
- }
-
- private static void stubMethods() {
- when(request.getSession()).thenReturn(session);
- when(session.getServletContext()).thenReturn(servletContext);
- when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
- when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
- when(webApplicationContext.getBean(VFComponentInstanceBusinessLogic.class)).thenReturn(vfBusinessLogic);
- when(webApplicationContext.getBean(ServiceComponentInstanceBusinessLogic.class)).thenReturn(serviceBusinessLogic);
- when(request.getHeader("USER_ID")).thenReturn(USER_ID);
- when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils);
- when(servletUtils.getComponentsUtils()).thenReturn(componentsUtils);
- }
+ private static void stubMethods() {
+ when(request.getSession()).thenReturn(session);
+ when(session.getServletContext()).thenReturn(servletContext);
+ when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
+ when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
+ when(webApplicationContext.getBean(ComponentInstanceBusinessLogic.class)).thenReturn(componentInstanceBusinessLogic);
+ when(request.getHeader("USER_ID")).thenReturn(USER_ID);
+ when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils);
+ when(servletUtils.getComponentsUtils()).thenReturn(componentsUtils);
+ }
}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/GroupEndpointTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/GroupEndpointTest.java
new file mode 100644
index 0000000000..414ffaad59
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/GroupEndpointTest.java
@@ -0,0 +1,179 @@
+//package org.openecomp.sdc.be.servlets;
+//
+//import com.fasterxml.jackson.databind.DeserializationFeature;
+//import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+//import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
+//import fj.data.Either;
+//import org.eclipse.jetty.http.HttpStatus;
+//import org.glassfish.hk2.utilities.binding.AbstractBinder;
+//import org.glassfish.jersey.client.ClientConfig;
+//import org.glassfish.jersey.server.ResourceConfig;
+//import org.glassfish.jersey.test.JerseyTest;
+//import org.glassfish.jersey.test.TestProperties;
+//import org.junit.Before;
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//import org.mockito.Mock;
+//import org.mockito.junit.MockitoJUnitRunner;
+//import org.openecomp.sdc.be.DummyConfigurationManager;
+//import org.openecomp.sdc.be.components.impl.GroupBusinessLogic;
+//import org.openecomp.sdc.be.dao.api.ActionStatus;
+//import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
+//import org.openecomp.sdc.be.impl.ComponentsUtils;
+//import org.openecomp.sdc.be.impl.ServletUtils;
+//import org.openecomp.sdc.be.impl.WebAppContextWrapper;
+//import org.openecomp.sdc.be.info.GroupDefinitionInfo;
+//import org.openecomp.sdc.be.model.GroupDefinition;
+//import org.openecomp.sdc.common.api.Constants;
+//import org.openecomp.sdc.exception.ResponseFormat;
+//import org.springframework.web.context.WebApplicationContext;
+//
+//import javax.servlet.ServletContext;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpSession;
+//import javax.ws.rs.client.ClientBuilder;
+//import javax.ws.rs.client.Invocation;
+//import javax.ws.rs.core.Application;
+//import javax.ws.rs.core.MediaType;
+//import javax.ws.rs.core.Response;
+//
+//import static org.assertj.core.api.Assertions.assertThat;
+//import static org.junit.Assert.assertEquals;
+//import static org.mockito.ArgumentMatchers.*;
+//import static org.mockito.Mockito.when;
+//
+//@RunWith(MockitoJUnitRunner.class)
+//public class GroupEndpointTest extends JerseyTest {
+//
+// public static final String USER_ID = "jh0003";
+// public static final String INVALID_USER_ID = "jh0001";
+// final static String RESOURCE_TYPE = "resources";
+// private static final String COMPONENT_ID = "1234";
+// private static final String VALID_GROUP_ID = "1";
+// private static final String INVALID_GROUP_ID = "2";
+// private static final String NEW_GROUP_NAME = "new group";
+// private static final String VALID_GROUP_TYPE = "networkConnection";
+//
+// @Mock
+// private GroupBusinessLogic groupBusinessLogic;
+// @Mock
+// private ServletContext servletContext;
+// @Mock
+// private WebAppContextWrapper webAppContextWrapper;
+// @Mock
+// private WebApplicationContext webApplicationContext;
+// @Mock
+// private HttpServletRequest request;
+// @Mock
+// private HttpSession session;
+// @Mock
+// private ComponentsUtils componentUtils;
+// @Mock
+// private ServletUtils servletUtils;
+// @Mock
+// private ResponseFormat responseFormat;
+//
+// @Override
+// protected Application configure() {
+// ResourceConfig resourceConfig = new ResourceConfig()
+// .register(GroupServlet.class)
+// //.register(mapper)
+// ;
+// forceSet(TestProperties.CONTAINER_PORT, "0");
+// resourceConfig.register(new AbstractBinder() {
+// @Override
+// protected void configure() {
+// bind(request).to(HttpServletRequest.class);
+// }
+// });
+// return resourceConfig;
+// }
+//
+// @Before
+// public void before() {
+// when(request.getSession()).thenReturn(session);
+// when(session.getServletContext()).thenReturn(servletContext);
+// when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
+// when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
+// when(webApplicationContext.getBean(GroupBusinessLogic.class)).thenReturn(groupBusinessLogic);
+//// when(webApplicationContext.getBean(ComponentsUtils.class)).thenReturn(componentUtils);
+// when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils);
+// when(servletUtils.getComponentsUtils()).thenReturn(componentUtils);
+//// when(request.getHeader("USER_ID")).thenReturn(USER_ID);
+// final JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+// setClient(ClientBuilder.newClient(new ClientConfig(jacksonJsonProvider)));
+// new DummyConfigurationManager();
+//// when(ConfigurationManager.getConfigurationManager().getConfiguration().getExcludedGroupTypesMapping()).thenReturn(buildExcludePolicyTypesMap());
+// }
+//
+// //@Test
+// public void createGroup() {
+// GroupDefinition groupDefinition = new GroupDefinition();
+// groupDefinition.setName(NEW_GROUP_NAME);
+// groupDefinition.setType(VALID_GROUP_TYPE);
+// when(groupBusinessLogic.createGroup(eq(NEW_GROUP_NAME), eq(ComponentTypeEnum.RESOURCE), eq(COMPONENT_ID), eq(USER_ID)))
+// .thenReturn(groupDefinition);
+// //List<GroupDefinition> gdList = buildCreateGroupCall().post(Response.class);
+//
+// }
+//
+// //@Test
+// public void deleteGroup_withInvalidUser_shouldReturn_401() {
+// int unauthorized401 = HttpStatus.UNAUTHORIZED_401;
+// int unauthorized403 = HttpStatus.FORBIDDEN_403;
+// when(groupBusinessLogic.validateUserExists(eq(INVALID_USER_ID), anyString(), anyBoolean()))
+// .thenReturn(Either.right(new ResponseFormat(unauthorized401)));
+//
+// Response response = buildDeleteGroupCall(INVALID_USER_ID, VALID_GROUP_ID).delete();
+// assertThat(response.getStatus()).isEqualTo(unauthorized401);
+// }
+//
+// @Test
+// public void getGroupById_internalServerError() {
+// when(groupBusinessLogic.getGroupWithArtifactsById(eq(ComponentTypeEnum.RESOURCE), eq(COMPONENT_ID), eq(VALID_GROUP_ID), eq(USER_ID), eq(false) ))
+// .thenReturn(Either.right(new ResponseFormat(HttpStatus.INTERNAL_SERVER_ERROR_500)));
+// Response response = buildGetGroupCall(VALID_GROUP_ID).get();
+// assertEquals(response.getStatus(), 500);
+// }
+//
+// @Test
+// public void getGroupById_Success() {
+// GroupDefinitionInfo groupDefinitionInfo = new GroupDefinitionInfo();
+// groupDefinitionInfo.setUniqueId(VALID_GROUP_ID);
+// when(groupBusinessLogic.getGroupWithArtifactsById(eq(ComponentTypeEnum.RESOURCE), eq(COMPONENT_ID), eq(VALID_GROUP_ID), eq(USER_ID), eq(false) ))
+// .thenReturn(Either.left(groupDefinitionInfo));
+// when(componentUtils.getResponseFormat(ActionStatus.OK)).thenReturn(responseFormat);
+// when(responseFormat.getStatus()).thenReturn(HttpStatus.OK_200);
+// GroupDefinitionInfo gdi = buildGetGroupCall(VALID_GROUP_ID).get(GroupDefinitionInfo.class);
+// assertEquals(gdi.getUniqueId(), VALID_GROUP_ID);
+// }
+//
+// @Test
+// public void getGroupById_Failure() {
+// when(groupBusinessLogic.getGroupWithArtifactsById(eq(ComponentTypeEnum.RESOURCE), eq(COMPONENT_ID), eq(INVALID_GROUP_ID), eq(USER_ID), eq(false) ))
+// .thenReturn(Either.right(new ResponseFormat(HttpStatus.NOT_FOUND_404)));
+// Response response = buildGetGroupCall(INVALID_GROUP_ID).get();
+// assertEquals(response.getStatus(), 404);
+// }
+//
+// private Invocation.Builder buildGetGroupCall(String groupId) {
+// String path = "/v1/catalog/" + RESOURCE_TYPE + "/" + COMPONENT_ID + "/groups/" + groupId;
+// return target(path)
+// .request(MediaType.APPLICATION_JSON)
+// .header(Constants.USER_ID_HEADER, USER_ID);
+// }
+//
+// private Invocation.Builder buildDeleteGroupCall(String userId, String groupId) {
+// String path = "/v1/catalog/" + RESOURCE_TYPE + "/" + COMPONENT_ID + "/groups/" + groupId;
+// return target(path)
+// .request(MediaType.APPLICATION_JSON)
+// .header(Constants.USER_ID_HEADER, userId);
+// }
+//
+// private Invocation.Builder buildCreateGroupCall() {
+// String path = "/v1/catalog/" + RESOURCE_TYPE + "/" + COMPONENT_ID + "/groups";
+// return target(path)
+// .request(MediaType.APPLICATION_JSON)
+// .header(Constants.USER_ID_HEADER, USER_ID);
+// }
+//}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/GroupTypesEndpointTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/GroupTypesEndpointTest.java
new file mode 100644
index 0000000000..2d5494354d
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/GroupTypesEndpointTest.java
@@ -0,0 +1,197 @@
+package org.openecomp.sdc.be.servlets;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Sets;
+import fj.data.Either;
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.sdc.be.DummyConfigurationManager;
+import org.openecomp.sdc.be.components.impl.GroupTypeBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
+import org.openecomp.sdc.be.components.utils.GroupTypeBuilder;
+import org.openecomp.sdc.be.components.validation.UserValidations;
+import org.openecomp.sdc.be.config.ConfigurationManager;
+import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.openecomp.sdc.be.model.GroupTypeDefinition;
+import org.openecomp.sdc.be.model.User;
+import org.openecomp.sdc.be.model.operations.StorageException;
+import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
+import org.openecomp.sdc.be.model.operations.impl.GroupTypeOperation;
+import org.openecomp.sdc.common.api.Constants;
+import org.openecomp.sdc.exception.ResponseFormat;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.http.HttpStatus;
+
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Stream;
+
+import static java.util.Arrays.asList;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class GroupTypesEndpointTest extends JerseySpringBaseTest {
+
+ private static final String USER_ID = "a001";
+ private static final String INVALID_USER_ID = "a002";
+ private static final GroupTypeDefinition EMPTY_GROUP_TYPE = new GroupTypeDefinition();
+ private static final String COMPONENT_TYPE = "VF";
+ private static final HashSet<String> EXCLUDED_TYPES = Sets.newHashSet("Root", "Heat");
+
+ private static ComponentsUtils componentsUtils;
+ private static GroupTypeOperation groupTypeOperation;
+ private static TitanDao titanDao;
+ private static UserValidations userValidations;
+ private static User user;
+
+ @Configuration
+ @Import(BaseTestConfig.class)
+ static class GroupTypesTestConfig {
+
+ @Bean
+ GroupTypesEndpoint groupTypesEndpoint() {
+ return new GroupTypesEndpoint(groupTypeBusinessLogic());
+ }
+
+ @Bean
+ GroupTypeBusinessLogic groupTypeBusinessLogic() {
+ return new GroupTypeBusinessLogic(groupTypeOperation, titanDao, userValidations);
+ }
+ }
+
+ @BeforeClass
+ public static void initClass() {
+ componentsUtils = mock(ComponentsUtils.class);
+ groupTypeOperation = mock(GroupTypeOperation.class);
+ titanDao = mock(TitanDao.class);
+ userValidations = mock(UserValidations.class);
+ user = mock(User.class);
+ }
+
+ @Before
+ public void init() {
+ new DummyConfigurationManager();
+ when(ConfigurationManager.getConfigurationManager().getConfiguration().getExcludedGroupTypesMapping()).thenReturn(buildExcludeGroupTypesMap());
+ ResponseFormatManager responseFormatManager = ResponseFormatManager.getInstance();
+ when(userValidations.validateUserExists(eq(USER_ID), anyString(), anyBoolean())).thenReturn(Either.left(user));
+ // TODO: handle for invalid user test
+// when(userValidations.validateUserExists(eq(INVALID_USER_ID), anyString(), anyBoolean())).thenReturn(Either.right(???)));
+ }
+
+ @Override
+ protected void configureClient(ClientConfig config) {
+ final JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ config.register(jacksonJsonProvider);
+ }
+
+ @Override
+ protected ResourceConfig configure() {
+ return super.configure(GroupTypesTestConfig.class)
+ .register(GroupTypesEndpoint.class);
+ }
+
+ @Test
+ public void getGroupTypes_validUser_Success() {
+ List<GroupTypeDefinition> testConfigGroupTypes = buildGroupTypesList();
+ when(groupTypeOperation.getAllGroupTypes(EXCLUDED_TYPES)).thenReturn(buildGroupTypesList());
+ List<GroupTypeDefinition> fetchedGroupTypes = buildGetGroupTypesCall(USER_ID).get(new GenericType<List<GroupTypeDefinition>>(){});
+ verifyGroupTypesList(testConfigGroupTypes, fetchedGroupTypes);
+ }
+
+ @Test
+ public void getGroupTypes_whenNoInteranlComponentType_passEmptyAsExcludedTypes() {
+ List<GroupTypeDefinition> testConfigGroupTypes = buildGroupTypesList();
+ when(groupTypeOperation.getAllGroupTypes(null)).thenReturn(buildGroupTypesList());
+ List<GroupTypeDefinition> fetchedGroupTypes = buildGetGroupTypesCallNoInternalComponent(USER_ID).get(new GenericType<List<GroupTypeDefinition>>(){});
+ verifyGroupTypesList(testConfigGroupTypes, fetchedGroupTypes);
+ }
+
+ @Ignore
+ public void getGroupTypes_dbError() {
+ when(groupTypeOperation.getAllGroupTypes(EXCLUDED_TYPES)).thenThrow(new StorageException(StorageOperationStatus.NOT_FOUND));
+ when(componentsUtils.convertFromStorageResponse(StorageOperationStatus.NOT_FOUND)).thenReturn(ActionStatus.RESOURCE_NOT_FOUND);
+ when(componentsUtils.getResponseFormat(ActionStatus.RESOURCE_NOT_FOUND)).thenReturn(new ResponseFormat(HttpStatus.NOT_FOUND.value()));
+ Response response = buildGetGroupTypesCall(USER_ID).get();
+ assertThat(response.getStatus()).isEqualTo(HttpStatus.NOT_FOUND.value());
+ }
+
+ // TODO: simulate proper error with configuration error mapping and eactivate the test
+ @Ignore
+ public void getGroupTypes_invalidUser_Failure() {
+ when(groupTypeOperation.getAllGroupTypes(EXCLUDED_TYPES)).thenReturn(buildGroupTypesList());
+ Response response = buildGetGroupTypesCall(INVALID_USER_ID).get();
+ assertThat(response.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value());
+ }
+
+ private void verifyGroupTypesList(List<GroupTypeDefinition> groupTypes, List<GroupTypeDefinition> fetchedGroupTypes) {
+ assertThat(fetchedGroupTypes)
+ .usingElementComparatorOnFields("version", "type", "uniqueId")
+ .isEqualTo(groupTypes);
+ verifyOnlySpecificFieldsInResponse(fetchedGroupTypes, "version", "type", "uniqueId");
+ }
+
+ private void verifyOnlySpecificFieldsInResponse(List<GroupTypeDefinition> fetchedGroupTypes, String ... fields) {
+ assertThat(fetchedGroupTypes)
+ .usingElementComparatorIgnoringFields(fields)
+ .containsOnly(EMPTY_GROUP_TYPE);
+ }
+
+ private Invocation.Builder buildGetGroupTypesCall(String userId) {
+ return target("/v1/catalog/groupTypes")
+ .queryParam("internalComponentType", COMPONENT_TYPE)
+ .request(MediaType.APPLICATION_JSON)
+ .header(Constants.USER_ID_HEADER, userId);
+ }
+
+ private Invocation.Builder buildGetGroupTypesCallNoInternalComponent(String userId) {
+ return target("/v1/catalog/groupTypes")
+ .request(MediaType.APPLICATION_JSON)
+ .header(Constants.USER_ID_HEADER, userId);
+ }
+
+ private Map<String, Set<String>> buildExcludeGroupTypesMap() {
+ return new ImmutableMap.Builder<String, Set<String>>()
+ .put("CR", Sets.newHashSet("VFModule", "Root", "Heat"))
+ .put(COMPONENT_TYPE, EXCLUDED_TYPES)
+ .build();
+ }
+
+
+ private List<GroupTypeDefinition> buildGroupTypesList() {
+ GroupTypeDefinition type1 = GroupTypeBuilder.create()
+ .setDerivedFrom("root")
+ .setType("VFModule")
+ .setUniqueId("id1")
+ .setVersion("1.0")
+ .build();
+ GroupTypeDefinition type2 = GroupTypeBuilder.create().setDerivedFrom("root").setType("Heat").setUniqueId("id2").build();
+ return asList(type1, type2);
+ }
+
+ private GroupTypeDefinition[] listOfEmptyGroupTypes(int size) {
+ return Stream.generate(GroupTypeDefinition::new).limit(size).toArray(GroupTypeDefinition[]::new);
+ }
+
+
+} \ No newline at end of file
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/JerseySpringBaseTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/JerseySpringBaseTest.java
new file mode 100644
index 0000000000..9a074c95c2
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/JerseySpringBaseTest.java
@@ -0,0 +1,45 @@
+package org.openecomp.sdc.be.servlets;
+
+import org.glassfish.hk2.utilities.binding.AbstractBinder;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.test.JerseyTest;
+import org.glassfish.jersey.test.TestProperties;
+import org.junit.BeforeClass;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+
+import javax.servlet.http.HttpServletRequest;
+
+import static org.mockito.Mockito.mock;
+
+public class JerseySpringBaseTest extends JerseyTest {
+
+ protected static HttpServletRequest request;
+
+ @BeforeClass
+ public static void initBaseClass() {
+ request = mock(HttpServletRequest.class);
+ }
+
+ protected ResourceConfig configure() {
+ return configure(BaseTestConfig.class);
+ }
+
+ protected ResourceConfig configure(Class<?> springConfig) {
+ ApplicationContext context = new AnnotationConfigApplicationContext(springConfig);
+ forceSet(TestProperties.CONTAINER_PORT, "0");
+ return new ResourceConfig()
+ .register(new AbstractBinder() {
+ @Override
+ protected void configure() {
+ bind(request).to(HttpServletRequest.class);
+ }
+ })
+ .register(DefaultExceptionMapper.class)
+ .register(ComponentExceptionMapper.class)
+ .register(StorageExceptionMapper.class)
+ .property("jersey.config.server.provider.classnames", "org.openecomp.sdc.be.view.MixinModelWriter")
+ .property("contextConfig", context);
+ }
+
+}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/PolicyServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/PolicyServletTest.java
new file mode 100644
index 0000000000..bb949253b2
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/PolicyServletTest.java
@@ -0,0 +1,338 @@
+package org.openecomp.sdc.be.servlets;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import fj.data.Either;
+import org.glassfish.grizzly.http.util.HttpStatus;
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.openecomp.sdc.be.components.impl.PolicyBusinessLogic;
+import org.openecomp.sdc.be.components.utils.PropertyDataDefinitionBuilder;
+import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
+import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.openecomp.sdc.be.impl.ServletUtils;
+import org.openecomp.sdc.be.model.PolicyDefinition;
+import org.openecomp.sdc.be.model.PolicyTargetDTO;
+import org.openecomp.sdc.be.model.PropertyDefinition;
+import org.openecomp.sdc.common.api.Constants;
+import org.openecomp.sdc.exception.ResponseFormat;
+
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.mockito.Mockito.when;
+
+public class PolicyServletTest extends JerseySpringBaseTest{
+
+ private final static String USER_ID = "jh0003";
+ private static final String COMPONENT_ID = "componentId";
+ private static PolicyBusinessLogic businessLogic;
+ private static ComponentsUtils componentsUtils;
+ private static ServletUtils servletUtils;
+ private static ResponseFormat responseFormat;
+
+ private static String validComponentType = "resources";
+ private static String unsupportedComponentType = "unsupported";
+ private static String componentId = "componentId";
+ private static String policyTypeName = "policyTypeName";
+
+ private static final String PROPS_URL = "/v1/catalog/{componentType}/{serviceId}/policies/{policyId}/properties";
+ private static final String SERVICE_ID = "serviceId";
+ private static final String POLICY_ID = "policyId";
+
+ private static final String UPDATE_TARGETS_URL = "/v1/catalog/{componentType}/{componentId}/policies/{policyId}/targets";
+
+ @BeforeClass
+ public static void initClass() {
+ createMocks();
+ when(servletUtils.getComponentsUtils()).thenReturn(componentsUtils);
+ }
+
+ @Before
+ public void beforeMethod() {
+ final JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ setClient(ClientBuilder.newClient(new ClientConfig(jacksonJsonProvider)));
+ }
+
+ @Test
+ public void testGetPolicySuccess(){
+ String path = "/v1/catalog/" + validComponentType + "/" + componentId + "/policies/" + POLICY_ID;
+ Either<PolicyDefinition, ResponseFormat> successResponse = Either.left(new PolicyDefinition());
+ when(businessLogic.getPolicy(eq(ComponentTypeEnum.RESOURCE), eq(componentId), eq(POLICY_ID), eq(USER_ID))).thenReturn(successResponse);
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.OK_200.getStatusCode());
+ when(componentsUtils.getResponseFormat(ActionStatus.OK)).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .get(Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.OK_200.getStatusCode());
+ }
+
+ @Test
+ public void testGetPolicyFailure(){
+ String path = "/v1/catalog/" + unsupportedComponentType + "/" + componentId + "/policies/" + POLICY_ID;
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.BAD_REQUEST_400.getStatusCode());
+ when(componentsUtils.getResponseFormat(eq(ActionStatus.UNSUPPORTED_ERROR), eq(unsupportedComponentType))).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .get(Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.BAD_REQUEST_400.getStatusCode());
+ }
+
+ @Test
+ public void testPostPolicySuccess(){
+ String path = "/v1/catalog/" + validComponentType + "/" + componentId + "/policies/" + policyTypeName;
+ PolicyDefinition policy = new PolicyDefinition();
+ Either<PolicyDefinition, ResponseFormat> successResponse = Either.left(policy);
+ when(businessLogic.createPolicy(eq(ComponentTypeEnum.RESOURCE), eq(componentId), eq(policyTypeName), eq(USER_ID), eq(true))).thenReturn(successResponse);
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.CREATED_201.getStatusCode());
+ when(componentsUtils.getResponseFormat(ActionStatus.CREATED)).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .post(Entity.entity(policy, MediaType.APPLICATION_JSON),Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.CREATED_201.getStatusCode());
+ }
+
+ @Test
+ public void testPostPolicyFailure(){
+ String path = "/v1/catalog/" + unsupportedComponentType + "/" + componentId + "/policies/" + policyTypeName;
+ PolicyDefinition policy = new PolicyDefinition();
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.BAD_REQUEST_400.getStatusCode());
+ when(componentsUtils.getResponseFormat(eq(ActionStatus.UNSUPPORTED_ERROR), eq(unsupportedComponentType))).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .post(Entity.entity(policy, MediaType.APPLICATION_JSON),Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.BAD_REQUEST_400.getStatusCode());
+ }
+
+ @Test
+ public void testPutPolicySuccess(){
+ String path = "/v1/catalog/" + validComponentType + "/" + componentId + "/policies/" + POLICY_ID;
+ PolicyDefinition policy = new PolicyDefinition();
+ policy.setUniqueId(POLICY_ID);
+ Either<PolicyDefinition, ResponseFormat> successResponse = Either.left(policy);
+ when(businessLogic.updatePolicy(eq(ComponentTypeEnum.RESOURCE), eq(componentId), any(PolicyDefinition.class), eq(USER_ID), eq(true))).thenReturn(successResponse);
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.OK_200.getStatusCode());
+ when(componentsUtils.getResponseFormat(ActionStatus.OK)).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .put(Entity.entity(policy, MediaType.APPLICATION_JSON),Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.OK_200.getStatusCode());
+ }
+
+ @Test
+ public void testPutPolicyFailure(){
+ String path = "/v1/catalog/" + unsupportedComponentType + "/" + componentId + "/policies/" + POLICY_ID;
+ PolicyDefinition policy = new PolicyDefinition();
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.BAD_REQUEST_400.getStatusCode());
+ when(componentsUtils.getResponseFormat(eq(ActionStatus.UNSUPPORTED_ERROR), eq(unsupportedComponentType))).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .put(Entity.entity(policy, MediaType.APPLICATION_JSON),Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.BAD_REQUEST_400.getStatusCode());
+ }
+
+ @Test
+ public void testDeletePolicySuccess(){
+ String path = "/v1/catalog/" + validComponentType + "/" + componentId + "/policies/" + POLICY_ID;
+ Either<PolicyDefinition, ResponseFormat> successResponse = Either.left(new PolicyDefinition());
+ when(businessLogic.deletePolicy(eq(ComponentTypeEnum.RESOURCE), eq(componentId), eq(POLICY_ID), eq(USER_ID), eq(true))).thenReturn(successResponse);
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.NO_CONTENT_204.getStatusCode());
+ when(componentsUtils.getResponseFormat(ActionStatus.NO_CONTENT)).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .delete(Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.NO_CONTENT_204.getStatusCode());
+ }
+
+ @Test
+ public void testDeletePolicyFailure(){
+ String path = "/v1/catalog/" + unsupportedComponentType + "/" + componentId + "/policies/" + POLICY_ID;
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.BAD_REQUEST_400.getStatusCode());
+ when(componentsUtils.getResponseFormat(eq(ActionStatus.UNSUPPORTED_ERROR), eq(unsupportedComponentType))).thenReturn(responseFormat);
+ Response response = target()
+ .path(path)
+ .request(MediaType.APPLICATION_JSON)
+ .header("USER_ID", USER_ID)
+ .delete(Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.BAD_REQUEST_400.getStatusCode());
+ }
+
+ @Test
+ public void getPolicyProperties_operationForbidden() {
+ when(businessLogic.getPolicyProperties(ComponentTypeEnum.SERVICE, SERVICE_ID, POLICY_ID, USER_ID)).thenReturn(Either.right(new ResponseFormat(Response.Status.FORBIDDEN.getStatusCode())));
+ Response response = buildGetPropertiesRequest().get();
+ assertThat(response.getStatus()).isEqualTo(Response.Status.FORBIDDEN.getStatusCode());
+ }
+
+ @Test
+ public void getPolicyProperties_unHandledError_returnGeneralError() {
+ when(businessLogic.getPolicyProperties(ComponentTypeEnum.SERVICE, SERVICE_ID, POLICY_ID, USER_ID)).thenThrow(new RuntimeException());
+ Response response = buildGetPropertiesRequest().get();
+ assertThat(response.getStatus()).isEqualTo(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode());
+ }
+
+ @Test
+ @Ignore
+ public void getPolicyProperties_wrongComponentType() {
+ Response response = buildGetPropertiesRequest("unknownType").get();
+ assertThat(response.getStatus()).isEqualTo(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode());
+ verifyZeroInteractions(businessLogic);
+ }
+
+ @Test
+ public void getPolicyProperties() {
+ List<PropertyDataDefinition> properties = getPropertiesList();
+ when(businessLogic.getPolicyProperties(ComponentTypeEnum.SERVICE, SERVICE_ID, POLICY_ID, USER_ID)).thenReturn(Either.left(properties));
+ List<PropertyDataDefinition> policyProps = buildGetPropertiesRequest().get(new GenericType<List<PropertyDataDefinition>>() {});
+ assertThat(policyProps)
+ .usingElementComparatorOnFields("uniqueId")
+ .containsExactlyInAnyOrder(properties.get(0), properties.get(1));
+ }
+
+ @Test
+ public void updatePolicyPropertiesSuccess() {
+ List<PropertyDataDefinition> properties = getPropertiesList();
+ when(businessLogic.updatePolicyProperties(eq(ComponentTypeEnum.SERVICE), eq(SERVICE_ID), eq(POLICY_ID), any(PropertyDataDefinition[].class), eq(USER_ID), eq(true))).thenReturn(Either.left(properties));
+ List<PropertyDataDefinition> policyProps = buildUpdatePropertiesRequest(ComponentTypeEnum.SERVICE_PARAM_NAME, properties).invoke(new GenericType<List<PropertyDataDefinition>>() {});
+ assertThat(policyProps)
+ .usingElementComparatorOnFields("uniqueId")
+ .containsExactlyInAnyOrder(properties.get(0), properties.get(1));
+ }
+
+ @Test
+ public void updatePolicyTargetsSuccess() {
+ List<PolicyTargetDTO> targets = getTargetDTOList();
+ when(businessLogic.updatePolicyTargets(eq(ComponentTypeEnum.RESOURCE), eq(COMPONENT_ID), eq(POLICY_ID), anyMap(), eq(USER_ID))).thenReturn(Either.left(new PolicyDefinition()));
+ Response policyTargets = buildUpdateTargetsRequest(ComponentTypeEnum.RESOURCE_PARAM_NAME, targets).invoke();
+ assertThat(policyTargets.getStatus()).isEqualTo(200);
+ }
+
+ @Test
+ public void updatePolicyPropertiesFailure() {
+ List<PropertyDataDefinition> properties = getPropertiesList();
+ ResponseFormat notFoundResponse = new ResponseFormat(HttpStatus.NOT_FOUND_404.getStatusCode());
+ when(businessLogic.updatePolicyProperties(eq(ComponentTypeEnum.SERVICE), eq(SERVICE_ID), eq(POLICY_ID), any(PropertyDataDefinition[].class), eq(USER_ID), eq(true))).thenReturn(Either.right(notFoundResponse));
+ Response policyProps = buildUpdatePropertiesRequest(ComponentTypeEnum.SERVICE_PARAM_NAME, properties).invoke();
+ assertEquals(HttpStatus.NOT_FOUND_404.getStatusCode(), policyProps.getStatus());
+ }
+
+ private List<PropertyDataDefinition> getPropertiesList() {
+ PropertyDefinition prop1 = new PropertyDataDefinitionBuilder()
+ .setUniqueId("prop1")
+ .build();
+
+ PropertyDefinition prop2 = new PropertyDataDefinitionBuilder()
+ .setUniqueId("prop2")
+ .build();
+ return Arrays.asList(prop1, prop2);
+ }
+
+ private List<PolicyTargetDTO> getTargetDTOList() {
+ PolicyTargetDTO target1 = new PolicyTargetDTO();
+ target1.setUniqueIds(Collections.singletonList("uniqueId"));
+ target1.setType("GROUPS");
+
+ PolicyTargetDTO target2 = new PolicyTargetDTO();
+ target2.setUniqueIds(Collections.singletonList("uniqueId"));
+ target2.setType("component_Instances");
+
+ return Arrays.asList(target1, target2);
+ }
+
+ private Invocation.Builder buildGetPropertiesRequest(String componentType) {
+ return target(PROPS_URL)
+ .resolveTemplate("componentType", componentType)
+ .resolveTemplate("serviceId", SERVICE_ID)
+ .resolveTemplate("policyId", POLICY_ID)
+ .request(MediaType.APPLICATION_JSON)
+ .header(Constants.USER_ID_HEADER, USER_ID);
+
+ }
+
+ private Invocation buildUpdatePropertiesRequest(String componentType, List<PropertyDataDefinition> properties) {
+ return target(PROPS_URL)
+ .resolveTemplate("componentType", componentType)
+ .resolveTemplate("serviceId", SERVICE_ID)
+ .resolveTemplate("policyId", POLICY_ID)
+ .request(MediaType.APPLICATION_JSON)
+ .header(Constants.USER_ID_HEADER, USER_ID)
+ .buildPut(Entity.entity(properties, MediaType.APPLICATION_JSON));
+ }
+
+ private Invocation buildUpdateTargetsRequest(String componentType, List<PolicyTargetDTO> targets) {
+ return target(UPDATE_TARGETS_URL)
+ .resolveTemplate("componentType", componentType)
+ .resolveTemplate("componentId", COMPONENT_ID)
+ .resolveTemplate("policyId", POLICY_ID)
+ .request(MediaType.APPLICATION_JSON)
+ .header(Constants.USER_ID_HEADER, USER_ID)
+ .buildPut(Entity.entity(targets, MediaType.APPLICATION_JSON));
+ }
+
+ private Invocation.Builder buildGetPropertiesRequest() {
+ return target(PROPS_URL)
+ .resolveTemplate("componentType", "services")
+ .resolveTemplate("serviceId", SERVICE_ID)
+ .resolveTemplate("policyId", POLICY_ID)
+ .request(MediaType.APPLICATION_JSON)
+ .header(Constants.USER_ID_HEADER, USER_ID);
+ }
+
+ @Override
+ protected ResourceConfig configure() {
+ return super.configure()
+ .register(new PolicyServlet(businessLogic, servletUtils, null, componentsUtils));
+ }
+
+ private static void createMocks() {
+ businessLogic = Mockito.mock(PolicyBusinessLogic.class);
+ componentsUtils = Mockito.mock(ComponentsUtils.class);
+ servletUtils = Mockito.mock(ServletUtils.class);
+ responseFormat = Mockito.mock(ResponseFormat.class);
+ }
+
+}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/PolicyTypesEndpointTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/PolicyTypesEndpointTest.java
new file mode 100644
index 0000000000..23f32d169b
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/PolicyTypesEndpointTest.java
@@ -0,0 +1,101 @@
+package org.openecomp.sdc.be.servlets;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import fj.data.Either;
+import org.apache.http.HttpStatus;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.junit.Test;
+import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
+import org.openecomp.sdc.be.components.utils.PolicyTypeBuilder;
+import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.openecomp.sdc.be.model.PolicyTypeDefinition;
+import org.openecomp.sdc.common.api.Constants;
+import org.openecomp.sdc.exception.ResponseFormat;
+
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.List;
+
+import static java.util.Arrays.asList;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class PolicyTypesEndpointTest extends JerseySpringBaseTest {
+
+ public static final String USER_ID = "userId";
+ public static final String COMPONENT_TYPE = "VF";
+ private PolicyTypeBusinessLogic policyTypeBusinessLogic;
+ private ComponentsUtils componentUtils;
+
+ @Override
+ protected ResourceConfig configure() {
+ policyTypeBusinessLogic = mock(PolicyTypeBusinessLogic.class);
+ componentUtils = mock(ComponentsUtils.class);
+ final JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ return super.configure()
+ .register(new PolicyTypesEndpoint(policyTypeBusinessLogic))
+ .register(jacksonJsonProvider);
+ }
+
+ @Test
+ public void getPolicyTypes() {
+ List<PolicyTypeDefinition> policyTypes = buildPolicyTypesList();
+ when(policyTypeBusinessLogic.getAllPolicyTypes(USER_ID, COMPONENT_TYPE)).thenReturn(Either.left(policyTypes));
+ when(componentUtils.getResponseFormat(ActionStatus.OK)).thenReturn(new ResponseFormat(HttpStatus.SC_OK));
+ List<PolicyTypeDefinition> fetchedPolicyTypes = buildGetPolicyTypesCall().get(new GenericType<List<PolicyTypeDefinition>>(){});
+ verifyPolicyTypesList(policyTypes, fetchedPolicyTypes);
+ }
+
+ @Test
+ public void getPolicyTypes_whenNoInternalComponent_passNullAsComponentType() {
+ List<PolicyTypeDefinition> policyTypes = buildPolicyTypesList();
+ when(policyTypeBusinessLogic.getAllPolicyTypes(USER_ID, null)).thenReturn(Either.left(policyTypes));
+ when(componentUtils.getResponseFormat(ActionStatus.OK)).thenReturn(new ResponseFormat(HttpStatus.SC_OK));
+ List<PolicyTypeDefinition> fetchedPolicyTypes = buildGetPolicyTypesCallNoInternalComponent().get(new GenericType<List<PolicyTypeDefinition>>(){});
+ verifyPolicyTypesList(policyTypes, fetchedPolicyTypes);
+ }
+
+ @Test
+ public void getPolicyTypes_error() {
+ when(policyTypeBusinessLogic.getAllPolicyTypes(USER_ID, COMPONENT_TYPE)).thenReturn(Either.right(new ResponseFormat(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
+ Response response = buildGetPolicyTypesCall().get();
+ assertThat(response.getStatus()).isEqualTo(500);
+ }
+
+ private void verifyPolicyTypesList(List<PolicyTypeDefinition> policyTypes, List<PolicyTypeDefinition> fetchedPolicyTypes) {
+ assertThat(fetchedPolicyTypes)
+ .usingElementComparatorOnFields("version", "type", "uniqueId")
+ .isEqualTo(policyTypes);
+ assertThat(fetchedPolicyTypes).extracting("derivedFrom")//derivedFrom is not on the PolicyTypeMixin and should not return in response
+ .containsOnly((String)null);
+ }
+
+ private Invocation.Builder buildGetPolicyTypesCall() {
+ return target("/v1/catalog/policyTypes")
+ .queryParam("internalComponentType", COMPONENT_TYPE)
+ .request(MediaType.APPLICATION_JSON)
+ .header(Constants.USER_ID_HEADER, USER_ID);
+ }
+
+ private Invocation.Builder buildGetPolicyTypesCallNoInternalComponent() {
+ return target("/v1/catalog/policyTypes")
+ .request(MediaType.APPLICATION_JSON)
+ .header(Constants.USER_ID_HEADER, USER_ID);
+ }
+
+ private List<PolicyTypeDefinition> buildPolicyTypesList() {
+ PolicyTypeDefinition type1 = new PolicyTypeBuilder().setDerivedFrom("root").setType("type1").setUniqueId("id1").setVersion("1.0").build();
+ PolicyTypeDefinition type2 = new PolicyTypeBuilder().setDerivedFrom("type1").setType("type2").setUniqueId("id2").setVersion("1.0").build();
+ PolicyTypeDefinition type3 = new PolicyTypeBuilder().setDerivedFrom("root").setType("type3").setUniqueId("id3").setVersion("1.0").build();
+ return asList(type1, type2, type3);
+ }
+
+
+
+}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceServletTest.java
index 7e0c6b7647..e8aeb5fc70 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceServletTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceServletTest.java
@@ -20,19 +20,9 @@
package org.openecomp.sdc.be.servlets;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import fj.data.Either;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
@@ -46,6 +36,7 @@ import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.openecomp.sdc.be.components.impl.ResourceImportManager;
+import org.openecomp.sdc.be.config.SpringConfig;
import org.openecomp.sdc.be.dao.api.ActionStatus;
import org.openecomp.sdc.be.impl.ComponentsUtils;
import org.openecomp.sdc.be.impl.ServletUtils;
@@ -59,209 +50,217 @@ import org.openecomp.sdc.common.api.Constants;
import org.openecomp.sdc.common.impl.ExternalConfiguration;
import org.openecomp.sdc.common.util.GeneralUtility;
import org.openecomp.sdc.exception.ResponseFormat;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.web.context.WebApplicationContext;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.Arrays;
-import fj.data.Either;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
public class ResourceServletTest extends JerseyTest {
- public static final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
- public static final ResourceImportManager resourceImportManager = Mockito.mock(ResourceImportManager.class);
- final static HttpSession session = Mockito.mock(HttpSession.class);
- final static ServletContext servletContext = Mockito.mock(ServletContext.class);
- final static WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
- final static WebApplicationContext webApplicationContext = Mockito.mock(WebApplicationContext.class);
- public static final ServletUtils servletUtils = Mockito.mock(ServletUtils.class);
- public static final ComponentsUtils componentUtils = Mockito.mock(ComponentsUtils.class);
- public static final UserBusinessLogic userAdmin = Mockito.mock(UserBusinessLogic.class);
- Gson gson = new GsonBuilder().setPrettyPrinting().create();
-
- @BeforeClass
- public static void setup() {
- ExternalConfiguration.setAppName("catalog-be");
- when(request.getSession()).thenReturn(session);
- when(session.getServletContext()).thenReturn(servletContext);
- when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
- when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
- when(webApplicationContext.getBean(ResourceImportManager.class)).thenReturn(resourceImportManager);
- when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils);
- when(servletUtils.getComponentsUtils()).thenReturn(componentUtils);
- when(servletUtils.getUserAdmin()).thenReturn(userAdmin);
- String userId = "jh0003";
- User user = new User();
- user.setUserId(userId);
- user.setRole(Role.ADMIN.name());
- Either<User, ActionStatus> eitherUser = Either.left(user);
- when(userAdmin.getUser(userId, false)).thenReturn(eitherUser);
- when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(userId);
-
- ImmutablePair<Resource, ActionStatus> pair = new ImmutablePair<Resource, ActionStatus>(new Resource(), ActionStatus.OK);
- Either<ImmutablePair<Resource, ActionStatus>, ResponseFormat> ret = Either.left(pair);
- when(resourceImportManager.importUserDefinedResource(Mockito.anyString(), Mockito.any(UploadResourceInfo.class), Mockito.any(User.class), Mockito.anyBoolean(), Mockito.anyBoolean())).thenReturn(ret);
-
- }
-
- @Before
- public void beforeTest() {
- Mockito.reset(componentUtils);
-
- Mockito.doAnswer(new Answer<ResponseFormat>() {
- public ResponseFormat answer(InvocationOnMock invocation) {
- Object[] args = invocation.getArguments();
- ActionStatus action = (ActionStatus) args[0];
- ResponseFormat resp = (action == ActionStatus.OK) ? new ResponseFormat(HttpStatus.CREATED.value()) : new ResponseFormat(HttpStatus.INTERNAL_SERVER_ERROR.value());
- return resp;
- }
- }).when(componentUtils).getResponseFormat(Mockito.any(ActionStatus.class));
-
- }
-
- @Test
- public void testHappyScenarioTest() {
- UploadResourceInfo validJson = buildValidJson();
- setMD5OnRequest(true, validJson);
- Response response = target().path("/v1/catalog/resources").request(MediaType.APPLICATION_JSON).post(Entity.json(gson.toJson(validJson)), Response.class);
- Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(Mockito.any(ActionStatus.class));
- Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(ActionStatus.OK);
- assertTrue(response.getStatus() == HttpStatus.CREATED.value());
-
- }
-
- @Test
- public void testNonValidMd5Fail() {
- UploadResourceInfo validJson = buildValidJson();
-
- setMD5OnRequest(false, validJson);
-
- Response response = target().path("/v1/catalog/resources").request(MediaType.APPLICATION_JSON).post(Entity.json(gson.toJson(validJson)), Response.class);
- Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(Mockito.any(ActionStatus.class));
- Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(ActionStatus.INVALID_RESOURCE_CHECKSUM);
- assertTrue(response.getStatus() == HttpStatus.INTERNAL_SERVER_ERROR.value());
-
- }
-
- @Test
- public void testNonValidPayloadNameFail() {
- UploadResourceInfo mdJson = buildValidJson();
- mdJson.setPayloadName("myCompute.xml");
-
- runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_TOSCA_FILE_EXTENSION);
-
- }
-
- @Test
- public void testNullPayloadFail() {
- UploadResourceInfo mdJson = buildValidJson();
- mdJson.setPayloadData(null);
- runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_RESOURCE_PAYLOAD);
-
- }
-
- @Test
- public void testNonYmlPayloadFail() {
- UploadResourceInfo mdJson = buildValidJson();
- String payload = "{ json : { isNot : yaml } ";
- encodeAndSetPayload(mdJson, payload);
- runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_YAML_FILE);
-
- }
-
- @Test
- public void testNonToscaPayloadFail() {
- UploadResourceInfo mdJson = buildValidJson();
-
- String payload = "node_types: \r\n" + " org.openecomp.resource.importResource4test:\r\n" + " derived_from: tosca.nodes.Root\r\n" + " description: update update";
- encodeAndSetPayload(mdJson, payload);
- runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_TOSCA_TEMPLATE);
-
- }
-
- @Test
- public void testServiceToscaPayloadFail() {
- UploadResourceInfo mdJson = buildValidJson();
-
- String payload = "tosca_definitions_version: tosca_simple_yaml_1_0_0\r\n" + "node_types: \r\n" + " org.openecomp.resource.importResource4test:\r\n" + " derived_from: tosca.nodes.Root\r\n" + " topology_template: thisIsService\r\n"
- + " description: update update";
-
- encodeAndSetPayload(mdJson, payload);
- runAndVerifyActionStatusError(mdJson, ActionStatus.NOT_RESOURCE_TOSCA_TEMPLATE);
-
- }
-
- @Test
- public void testMultipleResourcesInPayloadFail() {
- UploadResourceInfo mdJson = buildValidJson();
-
- String payload = "tosca_definitions_version: tosca_simple_yaml_1_0_0\r\n" + "node_types: \r\n" + " org.openecomp.resource.importResource4test2:\r\n" + " derived_from: tosca.nodes.Root\r\n" + " org.openecomp.resource.importResource4test:\r\n"
- + " derived_from: tosca.nodes.Root\r\n" + " description: update update";
-
- encodeAndSetPayload(mdJson, payload);
- runAndVerifyActionStatusError(mdJson, ActionStatus.NOT_SINGLE_RESOURCE);
-
- }
-
- @Test
- public void testNonValidNameSpaceInPayloadFail() {
- UploadResourceInfo mdJson = buildValidJson();
-
- String payload = "tosca_definitions_version: tosca_simple_yaml_1_0_0\r\n" + "node_types: \r\n" + " org.openecomp.resourceX.importResource4test:\r\n" + " derived_from: tosca.nodes.Root\r\n" + " description: update update";
-
- encodeAndSetPayload(mdJson, payload);
- runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_RESOURCE_NAMESPACE);
-
- }
-
- private void encodeAndSetPayload(UploadResourceInfo mdJson, String payload) {
- byte[] encodedBase64Payload = Base64.encodeBase64(payload.getBytes());
- mdJson.setPayloadData(new String(encodedBase64Payload));
- }
-
- private void runAndVerifyActionStatusError(UploadResourceInfo mdJson, ActionStatus invalidResourcePayload) {
- setMD5OnRequest(true, mdJson);
- Response response = target().path("/v1/catalog/resources").request(MediaType.APPLICATION_JSON).post(Entity.json(gson.toJson(mdJson)), Response.class);
- Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(Mockito.any(ActionStatus.class));
- Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(invalidResourcePayload);
- assertTrue(response.getStatus() == HttpStatus.INTERNAL_SERVER_ERROR.value());
- }
-
- private void setMD5OnRequest(boolean isValid, UploadResourceInfo json) {
- String md5 = (isValid) ? GeneralUtility.calculateMD5Base64EncodedByString(gson.toJson(json)) : "stam=";
- when(request.getHeader(Constants.MD5_HEADER)).thenReturn(md5);
+ public static final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ public static final ResourceImportManager resourceImportManager = Mockito.mock(ResourceImportManager.class);
+ final static HttpSession session = Mockito.mock(HttpSession.class);
+ final static ServletContext servletContext = Mockito.mock(ServletContext.class);
+ final static WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
+ final static WebApplicationContext webApplicationContext = Mockito.mock(WebApplicationContext.class);
+ public static final ServletUtils servletUtils = Mockito.mock(ServletUtils.class);
+ public static final ComponentsUtils componentUtils = Mockito.mock(ComponentsUtils.class);
+ public static final UserBusinessLogic userAdmin = Mockito.mock(UserBusinessLogic.class);
+ Gson gson = new GsonBuilder().setPrettyPrinting().create();
+
+ @BeforeClass
+ public static void setup() {
+ ExternalConfiguration.setAppName("catalog-be");
+ when(request.getSession()).thenReturn(session);
+ when(session.getServletContext()).thenReturn(servletContext);
+ when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
+ when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
+ when(webApplicationContext.getBean(ResourceImportManager.class)).thenReturn(resourceImportManager);
+ when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils);
+ when(servletUtils.getComponentsUtils()).thenReturn(componentUtils);
+ when(servletUtils.getUserAdmin()).thenReturn(userAdmin);
+ String userId = "jh0003";
+ User user = new User();
+ user.setUserId(userId);
+ user.setRole(Role.ADMIN.name());
+ Either<User, ActionStatus> eitherUser = Either.left(user);
+ when(userAdmin.getUser(userId, false)).thenReturn(eitherUser);
+ when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(userId);
+
+ ImmutablePair<Resource, ActionStatus> pair = new ImmutablePair<Resource, ActionStatus>(new Resource(), ActionStatus.OK);
+ Either<ImmutablePair<Resource, ActionStatus>, ResponseFormat> ret = Either.left(pair);
+ when(resourceImportManager.importUserDefinedResource(Mockito.anyString(), Mockito.any(UploadResourceInfo.class), Mockito.any(User.class), Mockito.anyBoolean())).thenReturn(ret);
+
+ }
+
+ @Before
+ public void beforeTest() {
+ Mockito.reset(componentUtils);
+
+ Mockito.doAnswer(new Answer<ResponseFormat>() {
+ public ResponseFormat answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ ActionStatus action = (ActionStatus) args[0];
+ ResponseFormat resp = (action == ActionStatus.OK) ? new ResponseFormat(HttpStatus.CREATED.value()) : new ResponseFormat(HttpStatus.INTERNAL_SERVER_ERROR.value());
+ return resp;
+ }
+ }).when(componentUtils).getResponseFormat(Mockito.any(ActionStatus.class));
+
+ }
+
+ @Test
+ public void testHappyScenarioTest() {
+ UploadResourceInfo validJson = buildValidJson();
+ setMD5OnRequest(true, validJson);
+ Response response = target().path("/v1/catalog/resources").request(MediaType.APPLICATION_JSON).post(Entity.json(gson.toJson(validJson)), Response.class);
+ Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(Mockito.any(ActionStatus.class));
+ Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(ActionStatus.OK);
+ assertTrue(response.getStatus() == HttpStatus.CREATED.value());
+
+ }
+
+ @Test
+ public void testNonValidMd5Fail() {
+ UploadResourceInfo validJson = buildValidJson();
+
+ setMD5OnRequest(false, validJson);
+
+ Response response = target().path("/v1/catalog/resources").request(MediaType.APPLICATION_JSON).post(Entity.json(gson.toJson(validJson)), Response.class);
+ Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(Mockito.any(ActionStatus.class));
+ Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(ActionStatus.INVALID_RESOURCE_CHECKSUM);
+ assertTrue(response.getStatus() == HttpStatus.INTERNAL_SERVER_ERROR.value());
+
+ }
+
+ @Test
+ public void testNonValidPayloadNameFail() {
+ UploadResourceInfo mdJson = buildValidJson();
+ mdJson.setPayloadName("myCompute.xml");
+
+ runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_TOSCA_FILE_EXTENSION);
+
+ }
+
+ @Test
+ public void testNullPayloadFail() {
+ UploadResourceInfo mdJson = buildValidJson();
+ mdJson.setPayloadData(null);
+ runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_RESOURCE_PAYLOAD);
+
+ }
+
+ @Test
+ public void testNonYmlPayloadFail() {
+ UploadResourceInfo mdJson = buildValidJson();
+ String payload = "{ json : { isNot : yaml } ";
+ encodeAndSetPayload(mdJson, payload);
+ runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_YAML_FILE);
+
+ }
+
+ @Test
+ public void testNonToscaPayloadFail() {
+ UploadResourceInfo mdJson = buildValidJson();
+
+ String payload = "node_types: \r\n" + " org.openecomp.resource.importResource4test:\r\n" + " derived_from: tosca.nodes.Root\r\n" + " description: update update";
+ encodeAndSetPayload(mdJson, payload);
+ runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_TOSCA_TEMPLATE);
+
+ }
+
+ @Test
+ public void testServiceToscaPayloadFail() {
+ UploadResourceInfo mdJson = buildValidJson();
+
+ String payload = "tosca_definitions_version: tosca_simple_yaml_1_0_0\r\n" + "node_types: \r\n" + " org.openecomp.resource.importResource4test:\r\n" + " derived_from: tosca.nodes.Root\r\n" + " topology_template: thisIsService\r\n"
+ + " description: update update";
+
+ encodeAndSetPayload(mdJson, payload);
+ runAndVerifyActionStatusError(mdJson, ActionStatus.NOT_RESOURCE_TOSCA_TEMPLATE);
+
+ }
+
+ @Test
+ public void testMultipleResourcesInPayloadFail() {
+ UploadResourceInfo mdJson = buildValidJson();
+
+ String payload = "tosca_definitions_version: tosca_simple_yaml_1_0_0\r\n" + "node_types: \r\n" + " org.openecomp.resource.importResource4test2:\r\n" + " derived_from: tosca.nodes.Root\r\n" + " org.openecomp.resource.importResource4test:\r\n"
+ + " derived_from: tosca.nodes.Root\r\n" + " description: update update";
+
+ encodeAndSetPayload(mdJson, payload);
+ runAndVerifyActionStatusError(mdJson, ActionStatus.NOT_SINGLE_RESOURCE);
+
+ }
+
+ @Test
+ public void testNonValidNameSpaceInPayloadFail() {
+ UploadResourceInfo mdJson = buildValidJson();
+
+ String payload = "tosca_definitions_version: tosca_simple_yaml_1_0_0\r\n" + "node_types: \r\n" + " org.openecomp.resourceX.importResource4test:\r\n" + " derived_from: tosca.nodes.Root\r\n" + " description: update update";
+
+ encodeAndSetPayload(mdJson, payload);
+ runAndVerifyActionStatusError(mdJson, ActionStatus.INVALID_RESOURCE_NAMESPACE);
+
+ }
+
+ private void encodeAndSetPayload(UploadResourceInfo mdJson, String payload) {
+ byte[] encodedBase64Payload = Base64.encodeBase64(payload.getBytes());
+ mdJson.setPayloadData(new String(encodedBase64Payload));
+ }
+
+ private void runAndVerifyActionStatusError(UploadResourceInfo mdJson, ActionStatus invalidResourcePayload) {
+ setMD5OnRequest(true, mdJson);
+ Response response = target().path("/v1/catalog/resources").request(MediaType.APPLICATION_JSON).post(Entity.json(gson.toJson(mdJson)), Response.class);
+ Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(Mockito.any(ActionStatus.class));
+ Mockito.verify(componentUtils, Mockito.times(1)).getResponseFormat(invalidResourcePayload);
+ assertTrue(response.getStatus() == HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
- }
+ private void setMD5OnRequest(boolean isValid, UploadResourceInfo json) {
+ String md5 = (isValid) ? GeneralUtility.calculateMD5Base64EncodedByString(gson.toJson(json)) : "stam=";
+ when(request.getHeader(Constants.MD5_HEADER)).thenReturn(md5);
+
+ }
- private UploadResourceInfo buildValidJson() {
- UploadResourceInfo ret = new UploadResourceInfo();
- ret.setName("ciMyCompute");
- ret.setPayloadName("ciMyCompute.yml");
- ret.addSubCategory("Application Layer 4+", "Application Servers");
- ret.setDescription("ResourceDescription");
- ret.setVendorName("VendorName");
- ret.setVendorRelease("VendorRelease");
- ret.setContactId("AT1234");
- ret.setIcon("router");
- ret.setTags(Arrays.asList(new String[] { "ciMyCompute" }));
- ret.setPayloadData(
- "dG9zY2FfZGVmaW5pdGlvbnNfdmVyc2lvbjogdG9zY2Ffc2ltcGxlX3lhbWxfMV8wXzANCm5vZGVfdHlwZXM6IA0KICBvcmcub3BlbmVjb21wLnJlc291cmNlLk15Q29tcHV0ZToNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLm5vZGVzLlJvb3QNCiAgICBhdHRyaWJ1dGVzOg0KICAgICAgcHJpdmF0ZV9hZGRyZXNzOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHB1YmxpY19hZGRyZXNzOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIG5ldHdvcmtzOg0KICAgICAgICB0eXBlOiBtYXANCiAgICAgICAgZW50cnlfc2NoZW1hOg0KICAgICAgICAgIHR5cGU6IHRvc2NhLmRhdGF0eXBlcy5uZXR3b3JrLk5ldHdvcmtJbmZvDQogICAgICBwb3J0czoNCiAgICAgICAgdHlwZTogbWFwDQogICAgICAgIGVudHJ5X3NjaGVtYToNCiAgICAgICAgICB0eXBlOiB0b3NjYS5kYXRhdHlwZXMubmV0d29yay5Qb3J0SW5mbw0KICAgIHJlcXVpcmVtZW50czoNCiAgICAgIC0gbG9jYWxfc3RvcmFnZTogDQogICAgICAgICAgY2FwYWJpbGl0eTogdG9zY2EuY2FwYWJpbGl0aWVzLkF0dGFjaG1lbnQNCiAgICAgICAgICBub2RlOiB0b3NjYS5ub2Rlcy5CbG9ja1N0b3JhZ2UNCiAgICAgICAgICByZWxhdGlvbnNoaXA6IHRvc2NhLnJlbGF0aW9uc2hpcHMuQXR0YWNoZXNUbw0KICAgICAgICAgIG9jY3VycmVuY2VzOiBbMCwgVU5CT1VOREVEXSAgDQogICAgY2FwYWJpbGl0aWVzOg0KICAgICAgaG9zdDogDQogICAgICAgIHR5cGU6IHRvc2NhLmNhcGFiaWxpdGllcy5Db250YWluZXINCiAgICAgICAgdmFsaWRfc291cmNlX3R5cGVzOiBbdG9zY2Eubm9kZXMuU29mdHdhcmVDb21wb25lbnRdIA0KICAgICAgZW5kcG9pbnQgOg0KICAgICAgICB0eXBlOiB0b3NjYS5jYXBhYmlsaXRpZXMuRW5kcG9pbnQuQWRtaW4gDQogICAgICBvczogDQogICAgICAgIHR5cGU6IHRvc2NhLmNhcGFiaWxpdGllcy5PcGVyYXRpbmdTeXN0ZW0NCiAgICAgIHNjYWxhYmxlOg0KICAgICAgICB0eXBlOiB0b3NjYS5jYXBhYmlsaXRpZXMuU2NhbGFibGUNCiAgICAgIGJpbmRpbmc6DQogICAgICAgIHR5cGU6IHRvc2NhLmNhcGFiaWxpdGllcy5uZXR3b3JrLkJpbmRhYmxl");
- return ret;
- }
-
- @Override
- protected Application configure() {
-
- ResourceConfig resourceConfig = new ResourceConfig(ResourcesServlet.class);
- forceSet(TestProperties.CONTAINER_PORT, "0");
- resourceConfig.register(new AbstractBinder() {
-
- @Override
- protected void configure() {
- bind(request).to(HttpServletRequest.class);
- }
- });
-
- return resourceConfig;
- }
+ private UploadResourceInfo buildValidJson() {
+ UploadResourceInfo ret = new UploadResourceInfo();
+ ret.setName("ciMyCompute");
+ ret.setPayloadName("ciMyCompute.yml");
+ ret.addSubCategory("Application Layer 4+", "Application Servers");
+ ret.setDescription("ResourceDescription");
+ ret.setVendorName("VendorName");
+ ret.setVendorRelease("VendorRelease");
+ ret.setContactId("AT1234");
+ ret.setIcon("router");
+ ret.setTags(Arrays.asList(new String[] { "ciMyCompute" }));
+ ret.setPayloadData(
+ "dG9zY2FfZGVmaW5pdGlvbnNfdmVyc2lvbjogdG9zY2Ffc2ltcGxlX3lhbWxfMV8wXzANCm5vZGVfdHlwZXM6IA0KICBvcmcub3BlbmVjb21wLnJlc291cmNlLk15Q29tcHV0ZToNCiAgICBkZXJpdmVkX2Zyb206IHRvc2NhLm5vZGVzLlJvb3QNCiAgICBhdHRyaWJ1dGVzOg0KICAgICAgcHJpdmF0ZV9hZGRyZXNzOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIHB1YmxpY19hZGRyZXNzOg0KICAgICAgICB0eXBlOiBzdHJpbmcNCiAgICAgIG5ldHdvcmtzOg0KICAgICAgICB0eXBlOiBtYXANCiAgICAgICAgZW50cnlfc2NoZW1hOg0KICAgICAgICAgIHR5cGU6IHRvc2NhLmRhdGF0eXBlcy5uZXR3b3JrLk5ldHdvcmtJbmZvDQogICAgICBwb3J0czoNCiAgICAgICAgdHlwZTogbWFwDQogICAgICAgIGVudHJ5X3NjaGVtYToNCiAgICAgICAgICB0eXBlOiB0b3NjYS5kYXRhdHlwZXMubmV0d29yay5Qb3J0SW5mbw0KICAgIHJlcXVpcmVtZW50czoNCiAgICAgIC0gbG9jYWxfc3RvcmFnZTogDQogICAgICAgICAgY2FwYWJpbGl0eTogdG9zY2EuY2FwYWJpbGl0aWVzLkF0dGFjaG1lbnQNCiAgICAgICAgICBub2RlOiB0b3NjYS5ub2Rlcy5CbG9ja1N0b3JhZ2UNCiAgICAgICAgICByZWxhdGlvbnNoaXA6IHRvc2NhLnJlbGF0aW9uc2hpcHMuQXR0YWNoZXNUbw0KICAgICAgICAgIG9jY3VycmVuY2VzOiBbMCwgVU5CT1VOREVEXSAgDQogICAgY2FwYWJpbGl0aWVzOg0KICAgICAgaG9zdDogDQogICAgICAgIHR5cGU6IHRvc2NhLmNhcGFiaWxpdGllcy5Db250YWluZXINCiAgICAgICAgdmFsaWRfc291cmNlX3R5cGVzOiBbdG9zY2Eubm9kZXMuU29mdHdhcmVDb21wb25lbnRdIA0KICAgICAgZW5kcG9pbnQgOg0KICAgICAgICB0eXBlOiB0b3NjYS5jYXBhYmlsaXRpZXMuRW5kcG9pbnQuQWRtaW4gDQogICAgICBvczogDQogICAgICAgIHR5cGU6IHRvc2NhLmNhcGFiaWxpdGllcy5PcGVyYXRpbmdTeXN0ZW0NCiAgICAgIHNjYWxhYmxlOg0KICAgICAgICB0eXBlOiB0b3NjYS5jYXBhYmlsaXRpZXMuU2NhbGFibGUNCiAgICAgIGJpbmRpbmc6DQogICAgICAgIHR5cGU6IHRvc2NhLmNhcGFiaWxpdGllcy5uZXR3b3JrLkJpbmRhYmxl");
+ return ret;
+ }
+
+ @Override
+ protected Application configure() {
+ ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
+ forceSet(TestProperties.CONTAINER_PORT, "0");
+ return new ResourceConfig(ResourcesServlet.class)
+ .register(new AbstractBinder() {
+ @Override
+ protected void configure() {
+ bind(request).to(HttpServletRequest.class);
+ }
+ })
+ .property("contextConfig", context);
+
+ }
}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceUploadServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceUploadServletTest.java
index ff69241263..23daab9bf9 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceUploadServletTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ResourceUploadServletTest.java
@@ -20,25 +20,7 @@
package org.openecomp.sdc.be.servlets;
-import static org.mockito.ArgumentMatchers.anyObject;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.when;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletInputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
+import com.google.gson.Gson;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.media.multipart.FormDataBodyPart;
@@ -53,6 +35,7 @@ import org.junit.Test;
import org.mockito.Mockito;
import org.openecomp.sdc.be.auditing.impl.AuditingManager;
import org.openecomp.sdc.be.config.ConfigurationManager;
+import org.openecomp.sdc.be.config.SpringConfig;
import org.openecomp.sdc.be.dao.api.ResourceUploadStatus;
import org.openecomp.sdc.be.impl.WebAppContextWrapper;
import org.openecomp.sdc.be.model.UploadResourceInfo;
@@ -64,125 +47,105 @@ import org.openecomp.sdc.common.impl.ExternalConfiguration;
import org.openecomp.sdc.common.impl.FSConfigurationSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.web.context.WebApplicationContext;
-import com.google.gson.Gson;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.core.Application;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.when;
public class ResourceUploadServletTest extends JerseyTest {
- private static Logger log = LoggerFactory.getLogger(ResourceUploadServletTest.class.getName());
- final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
- final HttpSession session = Mockito.mock(HttpSession.class);
- final ServletContext servletContext = Mockito.mock(ServletContext.class);
- final WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
- final WebApplicationContext webApplicationContext = Mockito.mock(WebApplicationContext.class);
- final IResourceUploader iResourceUploader = Mockito.mock(IResourceUploader.class);
- final AuditingManager iAuditingManager = Mockito.mock(AuditingManager.class);
-
- Gson gson = new Gson();
-
- public void zipDirectory() {
-
- }
-
- @Before
- public void setup() {
- ExternalConfiguration.setAppName("catalog-be");
-
- when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
- // when(servletContext.getAttribute(Constants.AUDITING_MANAGER)).thenReturn(iAuditingManager);
- when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
- when(webApplicationContext.getBean(IResourceUploader.class)).thenReturn(iResourceUploader);
- when(iResourceUploader.saveArtifact((ESArtifactData) anyObject(), eq(true))).thenReturn(ResourceUploadStatus.OK);
- when(webApplicationContext.getBean(AuditingManager.class)).thenReturn(iAuditingManager);
- }
-
- @Override
- protected Application configure() {
-
- ResourceConfig resourceConfig = new ResourceConfig(ResourceUploadServlet.class);
-
- resourceConfig.register(MultiPartFeature.class);
- resourceConfig.register(new AbstractBinder() {
-
- @Override
- protected void configure() {
- // The below code was cut-pasted to here from setup() because
- // due to it now has
- // to be executed during servlet initialization
- bind(request).to(HttpServletRequest.class);
- when(request.getSession()).thenReturn(session);
- when(session.getServletContext()).thenReturn(servletContext);
- String appConfigDir = "src/test/resources/config/catalog-be";
- ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
- ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
- for (String mandatoryHeader : configurationManager.getConfiguration().getIdentificationHeaderFields()) {
-
- when(request.getHeader(mandatoryHeader)).thenReturn(mandatoryHeader);
-
- }
-
- when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager);
- }
- });
-
- return resourceConfig;
- }
-
- @Override
- protected void configureClient(ClientConfig config) {
- config.register(MultiPartFeature.class);
- }
-
- public class DelegatingServletInputStream extends ServletInputStream {
-
- private final InputStream sourceStream;
-
- /**
- * Create a DelegatingServletInputStream for the given source stream.
- *
- * @param sourceStream
- * the source stream (never <code>null</code>)
- */
- public DelegatingServletInputStream(InputStream sourceStream) {
- // Assert.notNull(sourceStream,
- // "Source InputStream must not be null");
- this.sourceStream = sourceStream;
- }
-
- /**
- * Return the underlying source stream (never <code>null</code>).
- */
- public final InputStream getSourceStream() {
- return this.sourceStream;
- }
-
- public int read() throws IOException {
- return this.sourceStream.read();
- }
-
- public void close() throws IOException {
- super.close();
- this.sourceStream.close();
- }
-
- }
-
- @Test
- public void testMultipart() {
- FileDataBodyPart filePart = new FileDataBodyPart("resourceZip", new File("src/test/resources/config/normative-types-root.zip"));
-
- List<String> tags = new ArrayList<String>();
- tags.add("tag1");
- tags.add("tag2");
- UploadResourceInfo resourceInfo = new UploadResourceInfo("payload", "normative-types-root.yml", "my_description", "category/mycategory", tags, null);
-
- FormDataBodyPart metadataPart = new FormDataBodyPart("resourceMetadata", gson.toJson(resourceInfo), MediaType.APPLICATION_JSON_TYPE);
- MultiPart multipartEntity = new FormDataMultiPart();
- multipartEntity.bodyPart(filePart);
- multipartEntity.bodyPart(metadataPart);
-
- Response response = target().path("/v1/catalog/upload/" + ResourceUploadServlet.NORMATIVE_TYPE_RESOURCE).request(MediaType.APPLICATION_JSON).post(Entity.entity(multipartEntity, MediaType.MULTIPART_FORM_DATA), Response.class);
- log.debug("{}", response);
- }
+ private static final Logger log = LoggerFactory.getLogger(ResourceUploadServletTest.class);
+ final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ final HttpSession session = Mockito.mock(HttpSession.class);
+ final ServletContext servletContext = Mockito.mock(ServletContext.class);
+ final WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
+ final WebApplicationContext webApplicationContext = Mockito.mock(WebApplicationContext.class);
+ final IResourceUploader iResourceUploader = Mockito.mock(IResourceUploader.class);
+ final AuditingManager iAuditingManager = Mockito.mock(AuditingManager.class);
+
+ Gson gson = new Gson();
+
+ public void zipDirectory() {
+
+ }
+
+ @Before
+ public void setup() {
+ ExternalConfiguration.setAppName("catalog-be");
+
+ when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
+ // when(servletContext.getAttribute(Constants.AUDITING_MANAGER)).thenReturn(iAuditingManager);
+ when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
+ when(webApplicationContext.getBean(IResourceUploader.class)).thenReturn(iResourceUploader);
+ when(iResourceUploader.saveArtifact((ESArtifactData) anyObject(), eq(true))).thenReturn(ResourceUploadStatus.OK);
+ when(webApplicationContext.getBean(AuditingManager.class)).thenReturn(iAuditingManager);
+ }
+
+ @Override
+ protected Application configure() {
+
+ ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
+ return new ResourceConfig(ResourceUploadServlet.class)
+ .register(MultiPartFeature.class)
+ .register(new AbstractBinder() {
+
+ @Override
+ protected void configure() {
+ // The below code was cut-pasted to here from setup() because
+ // due to it now has
+ // to be executed during servlet initialization
+ bind(request).to(HttpServletRequest.class);
+ when(request.getSession()).thenReturn(session);
+ when(session.getServletContext()).thenReturn(servletContext);
+ String appConfigDir = "src/test/resources/config/catalog-be";
+ ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
+ ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
+ for (String mandatoryHeader : configurationManager.getConfiguration().getIdentificationHeaderFields()) {
+
+ when(request.getHeader(mandatoryHeader)).thenReturn(mandatoryHeader);
+
+ }
+
+ when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager);
+ }
+ })
+ .property("contextConfig", context);
+
+ }
+
+ @Override
+ protected void configureClient(ClientConfig config) {
+ config.register(MultiPartFeature.class);
+ }
+
+ @Test
+ public void testMultipart() {
+ FileDataBodyPart filePart = new FileDataBodyPart("resourceZip", new File("src/test/resources/config/normative-types-root.zip"));
+ List<String> tags = new ArrayList<String>();
+ tags.add("tag1");
+ tags.add("tag2");
+ UploadResourceInfo resourceInfo = new UploadResourceInfo("payload", "normative-types-root.yml", "my_description", "category/mycategory", tags, null);
+
+ FormDataBodyPart metadataPart = new FormDataBodyPart("resourceMetadata", gson.toJson(resourceInfo), MediaType.APPLICATION_JSON_TYPE);
+ MultiPart multipartEntity = new FormDataMultiPart();
+ multipartEntity.bodyPart(filePart);
+ multipartEntity.bodyPart(metadataPart);
+
+ Response response = target().path("/v1/catalog/upload/" + ResourceUploadServlet.NORMATIVE_TYPE_RESOURCE).request(MediaType.APPLICATION_JSON).post(Entity.entity(multipartEntity, MediaType.MULTIPART_FORM_DATA), Response.class);
+ log.debug("{}", response);
+ }
}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/TypesUploadServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/TypesUploadServletTest.java
index 37a493de37..690f7427a8 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/TypesUploadServletTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/TypesUploadServletTest.java
@@ -20,22 +20,8 @@
package org.openecomp.sdc.be.servlets;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.when;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.glassfish.grizzly.http.util.HttpStatus;
+import fj.data.Either;
+import org.eclipse.jetty.http.HttpStatus;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
@@ -49,6 +35,7 @@ import org.junit.Test;
import org.mockito.Mockito;
import org.openecomp.sdc.be.components.impl.CapabilityTypeImportManager;
import org.openecomp.sdc.be.config.ConfigurationManager;
+import org.openecomp.sdc.be.config.SpringConfig;
import org.openecomp.sdc.be.dao.api.ActionStatus;
import org.openecomp.sdc.be.impl.ComponentsUtils;
import org.openecomp.sdc.be.impl.ServletUtils;
@@ -62,182 +49,109 @@ import org.openecomp.sdc.common.api.Constants;
import org.openecomp.sdc.common.impl.ExternalConfiguration;
import org.openecomp.sdc.common.impl.FSConfigurationSource;
import org.openecomp.sdc.exception.ResponseFormat;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.web.context.WebApplicationContext;
-import fj.data.Either;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
public class TypesUploadServletTest extends JerseyTest {
- public static final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
- public static final HttpSession session = Mockito.mock(HttpSession.class);
- public static final ServletContext servletContext = Mockito.mock(ServletContext.class);
- public static final WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
- public static final WebApplicationContext webApplicationContext = Mockito.mock(WebApplicationContext.class);
- public static final CapabilityTypeImportManager importManager = Mockito.mock(CapabilityTypeImportManager.class);
- public static final ServletUtils servletUtils = Mockito.mock(ServletUtils.class);
- public static final UserBusinessLogic userAdmin = Mockito.mock(UserBusinessLogic.class);
- public static final ComponentsUtils componentUtils = Mockito.mock(ComponentsUtils.class);
- public static final ResponseFormat responseFormat = Mockito.mock(ResponseFormat.class);
-
- @BeforeClass
- public static void setup() {
- ExternalConfiguration.setAppName("catalog-be");
- when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR))
- .thenReturn(webAppContextWrapper);
- when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
- when(webApplicationContext.getBean(CapabilityTypeImportManager.class)).thenReturn(importManager);
- when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils);
- when(servletUtils.getComponentsUtils()).thenReturn(componentUtils);
- when(servletUtils.getUserAdmin()).thenReturn(userAdmin);
- String userId = "jh0003";
- User user = new User();
- user.setUserId(userId);
- user.setRole(Role.ADMIN.name());
- Either<User, ActionStatus> eitherUser = Either.left(user);
- when(userAdmin.getUser(userId, false)).thenReturn(eitherUser);
- when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(userId);
- when(responseFormat.getStatus()).thenReturn(HttpStatus.CREATED_201.getStatusCode());
- when(componentUtils.getResponseFormat(ActionStatus.CREATED)).thenReturn(responseFormat);
-
- }
-
- @Test
- public void creatingCapabilityTypeSuccessTest() {
- List<CapabilityTypeDefinition> emptyList = new ArrayList<CapabilityTypeDefinition>();
- Either<List<CapabilityTypeDefinition>, ResponseFormat> either = Either.left(emptyList);
- when(importManager.createCapabilityTypes(Mockito.anyString())).thenReturn(either);
- FileDataBodyPart filePart = new FileDataBodyPart("capabilityTypeZip",
- new File("src/test/resources/types/capabilityTypes.zip"));
- MultiPart multipartEntity = new FormDataMultiPart();
- multipartEntity.bodyPart(filePart);
-
- Response response = target().path("/v1/catalog/uploadType/capability").request(MediaType.APPLICATION_JSON)
- .post(Entity.entity(multipartEntity, MediaType.MULTIPART_FORM_DATA), Response.class);
-
- assertTrue(response.getStatus() == HttpStatus.CREATED_201.getStatusCode());
-
- }
-
- @Override
- protected void configureClient(ClientConfig config) {
- config.register(MultiPartFeature.class);
- }
-
- @Override
- protected Application configure() {
- ResourceConfig resourceConfig = new ResourceConfig(TypesUploadServlet.class);
-
- resourceConfig.register(MultiPartFeature.class);
- resourceConfig.register(new AbstractBinder() {
-
- @Override
- protected void configure() {
- // The below code was cut-pasted to here from setup() because
- // due to it now has
- // to be executed during servlet initialization
- bind(request).to(HttpServletRequest.class);
- when(request.getSession()).thenReturn(session);
- when(session.getServletContext()).thenReturn(servletContext);
- String appConfigDir = "src/test/resources/config/catalog-be";
- ConfigurationSource configurationSource = new FSConfigurationSource(
- ExternalConfiguration.getChangeListener(), appConfigDir);
- ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
- for (String mandatoryHeader : configurationManager.getConfiguration().getIdentificationHeaderFields()) {
-
- when(request.getHeader(mandatoryHeader)).thenReturn(mandatoryHeader);
-
- }
-
- when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR))
- .thenReturn(configurationManager);
- }
- });
-
- return resourceConfig;
- }
-
- private TypesUploadServlet createTestSubject() {
- return new TypesUploadServlet();
- }
-
-
- @Test
- public void testUploadCapabilityType() throws Exception {
- TypesUploadServlet testSubject;
- File file = null;
- HttpServletRequest request = null;
- String creator = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testUploadInterfaceLifecycleType() throws Exception {
- TypesUploadServlet testSubject;
- File file = null;
- HttpServletRequest request = null;
- String creator = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testUploadCategories() throws Exception {
- TypesUploadServlet testSubject;
- File file = null;
- HttpServletRequest request = null;
- String creator = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testUploadDataTypes() throws Exception {
- TypesUploadServlet testSubject;
- File file = null;
- HttpServletRequest request = null;
- String creator = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testUploadGroupTypes() throws Exception {
- TypesUploadServlet testSubject;
- File file = null;
- HttpServletRequest request = null;
- String creator = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testUploadPolicyTypes() throws Exception {
- TypesUploadServlet testSubject;
- File file = null;
- HttpServletRequest request = null;
- String creator = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
-
+ public static final HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+ private static final HttpSession session = Mockito.mock(HttpSession.class);
+ public static final ServletContext servletContext = Mockito.mock(ServletContext.class);
+ public static final WebAppContextWrapper webAppContextWrapper = Mockito.mock(WebAppContextWrapper.class);
+ private static final WebApplicationContext webApplicationContext = Mockito.mock(WebApplicationContext.class);
+ private static final CapabilityTypeImportManager importManager = Mockito.mock(CapabilityTypeImportManager.class);
+ private static final ServletUtils servletUtils = Mockito.mock(ServletUtils.class);
+ private static final UserBusinessLogic userAdmin = Mockito.mock(UserBusinessLogic.class);
+ private static final ComponentsUtils componentUtils = Mockito.mock(ComponentsUtils.class);
+ private static final ResponseFormat responseFormat = Mockito.mock(ResponseFormat.class);
+
+ @BeforeClass
+ public static void setup() {
+ ExternalConfiguration.setAppName("catalog-be");
+ when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
+ when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
+ when(webApplicationContext.getBean(CapabilityTypeImportManager.class)).thenReturn(importManager);
+ when(webApplicationContext.getBean(ServletUtils.class)).thenReturn(servletUtils);
+ when(servletUtils.getComponentsUtils()).thenReturn(componentUtils);
+ when(servletUtils.getUserAdmin()).thenReturn(userAdmin);
+ String userId = "jh0003";
+ User user = new User();
+ user.setUserId(userId);
+ user.setRole(Role.ADMIN.name());
+ Either<User, ActionStatus> eitherUser = Either.left(user);
+ when(userAdmin.getUser(userId, false)).thenReturn(eitherUser);
+ when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(userId);
+ when(responseFormat.getStatus()).thenReturn(HttpStatus.CREATED_201);
+ when(componentUtils.getResponseFormat(ActionStatus.CREATED)).thenReturn(responseFormat);
+
+ }
+
+ @Test
+ public void creatingCapabilityTypeSuccessTest() {
+ List<CapabilityTypeDefinition> emptyList = new ArrayList<CapabilityTypeDefinition>();
+ Either<List<CapabilityTypeDefinition>, ResponseFormat> either = Either.left(emptyList);
+ when(importManager.createCapabilityTypes(Mockito.anyString())).thenReturn(either);
+ FileDataBodyPart filePart = new FileDataBodyPart("capabilityTypeZip", new File("src/test/resources/types/capabilityTypes.zip"));
+ MultiPart multipartEntity = new FormDataMultiPart();
+ multipartEntity.bodyPart(filePart);
+
+ Response response = target().path("/v1/catalog/uploadType/capability").request(MediaType.APPLICATION_JSON).post(Entity.entity(multipartEntity, MediaType.MULTIPART_FORM_DATA), Response.class);
+
+ assertTrue(response.getStatus() == HttpStatus.CREATED_201);
+
+ }
+
+ @Override
+ protected void configureClient(ClientConfig config) {
+ config.register(MultiPartFeature.class);
+ }
+
+ @Override
+ protected ResourceConfig configure() {
+
+ ResourceConfig resourceConfig = new ResourceConfig()
+ .register(new TypesUploadServlet(importManager, null, null, null, null, null));
+
+ resourceConfig.register(MultiPartFeature.class);
+ resourceConfig.register(new AbstractBinder() {
+
+ @Override
+ protected void configure() {
+ // The below code was cut-pasted to here from setup() because
+ // due to it now has
+ // to be executed during servlet initialization
+ bind(request).to(HttpServletRequest.class);
+ when(request.getSession()).thenReturn(session);
+ when(session.getServletContext()).thenReturn(servletContext);
+ String appConfigDir = "src/test/resources/config/catalog-be";
+ ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
+ ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
+ for (String mandatoryHeader : configurationManager.getConfiguration().getIdentificationHeaderFields()) {
+
+ when(request.getHeader(mandatoryHeader)).thenReturn(mandatoryHeader);
+
+ }
+
+ when(servletContext.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).thenReturn(configurationManager);
+ }
+ });
+ ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
+ resourceConfig.property("contextConfig", context);
+
+ return resourceConfig;
+ }
}
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/UserAdminServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/UserAdminServletTest.java
index afa0907f25..696214f49d 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/UserAdminServletTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/UserAdminServletTest.java
@@ -20,24 +20,13 @@
package org.openecomp.sdc.be.servlets;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.Response;
-
+import com.google.gson.Gson;
+import fj.data.Either;
import org.glassfish.hk2.utilities.binding.AbstractBinder;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Before;
import org.junit.BeforeClass;
-import org.junit.Test;
import org.openecomp.sdc.be.auditing.impl.AuditingManager;
import org.openecomp.sdc.be.dao.api.ActionStatus;
import org.openecomp.sdc.be.dao.utils.UserStatusEnum;
@@ -52,238 +41,105 @@ import org.openecomp.sdc.exception.ResponseFormat;
import org.springframework.http.HttpStatus;
import org.springframework.web.context.WebApplicationContext;
-import com.google.gson.Gson;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import javax.ws.rs.core.Application;
-import fj.data.Either;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
public class UserAdminServletTest extends JerseyTest {
- final static HttpServletRequest request = mock(HttpServletRequest.class);
- final static HttpSession session = mock(HttpSession.class);
- final static ServletContext servletContext = mock(ServletContext.class);
- final static WebAppContextWrapper webAppContextWrapper = mock(WebAppContextWrapper.class);
- final static WebApplicationContext webApplicationContext = mock(WebApplicationContext.class);
- final static UserBusinessLogic userAdminManager = spy(UserBusinessLogic.class);
- final static AuditingManager auditingManager = mock(AuditingManager.class);
- final static ComponentsUtils componentsUtils = mock(ComponentsUtils.class);
- final static ResponseFormat okResponseFormat = mock(ResponseFormat.class);
-
- final static String ADMIN_ATT_UID = "jh0003";
- Gson gson = new Gson();
-
- @BeforeClass
- public static void setup() {
- ExternalConfiguration.setAppName("catalog-be");
-
- when(session.getServletContext()).thenReturn(servletContext);
- when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR))
- .thenReturn(webAppContextWrapper);
- when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
-
- when(webApplicationContext.getBean(UserBusinessLogic.class)).thenReturn(userAdminManager);
- when(webApplicationContext.getBean(ComponentsUtils.class)).thenReturn(componentsUtils);
- when(componentsUtils.getAuditingManager()).thenReturn(auditingManager);
- when(componentsUtils.getResponseFormat(ActionStatus.OK)).thenReturn(okResponseFormat);
- when(okResponseFormat.getStatus()).thenReturn(HttpStatus.OK.value());
-
- }
-
- @Before
- public void beforeTest() {
- reset(userAdminManager);
- doReturn(buildEitherUser(ADMIN_ATT_UID, true)).when(userAdminManager).getUser(ADMIN_ATT_UID, false);
-
- reset(request);
- when(request.getSession()).thenReturn(session);
- when(request.getHeader("USER_ID")).thenReturn(ADMIN_ATT_UID);
- }
-
- /*
- * @Test public void deactivateUserSuccessfullyTest(){ String
- * userToDeleteUserId = "admin1"; User adminUser = new User();
- * adminUser.setUserId(ADMIN_ATT_UID); Either<User, ActionStatus>
- * eitherActiveUser = buildEitherUser(userToDeleteUserId, true); User
- * userToDelete = eitherActiveUser.left().value();
- * doReturn(eitherActiveUser).when(userAdminManager).getUser(
- * userToDeleteUserId);
- *
- * Either<User, ActionStatus> eitherInactiveUser =
- * buildEitherUser(userToDeleteUserId, false);
- * doReturn(eitherInactiveUser).when(userAdminManager).deActivateUser(
- * adminUser, userToDelete.getUserId());
- *
- *
- * Response response =
- * target().path("/v1/user/"+userToDeleteUserId).request().delete();
- * assertTrue(response.getStatus() == HttpStatus.OK.value());
- * verify(userAdminManager, times(1)).deActivateUser(adminUser,
- * userToDelete.getUserId()); }
- *
- *
- * @Test public void forceDeleteUserSuccessfullyTest(){ String
- * userToDeleteUserId = "admin1";
- * when(request.getHeader(User.FORCE_DELETE_HEADER_FLAG)).thenReturn(User.
- * FORCE_DELETE_HEADER_FLAG);
- *
- * User adminUser = new User(); adminUser.setUserId(ADMIN_ATT_UID);
- *
- * Either<User, ActionStatus> eitherActiveUser =
- * buildEitherUser(userToDeleteUserId, true); User userToDelete =
- * eitherActiveUser.left().value();
- * doReturn(eitherActiveUser).when(userAdminManager).getUser(
- * userToDeleteUserId);
- *
- * Either<User, ActionStatus> eitherUser =
- * buildEitherUser(userToDeleteUserId, true);
- * doReturn(eitherUser).when(userAdminManager).deleteUser(userToDelete.
- * getUserId());
- *
- *
- * Response response =
- * target().path("/v1/user/"+userToDeleteUserId).request().delete();
- * assertTrue(response.getStatus() == HttpStatus.OK.value());
- * verify(userAdminManager, times(0)).deActivateUser(adminUser,
- * userToDelete.getUserId()); verify(userAdminManager,
- * times(1)).deleteUser(userToDelete.getUserId()); }
- */
-
- @Override
- protected Application configure() {
-
- ResourceConfig resourceConfig = new ResourceConfig(UserAdminServlet.class);
-
- resourceConfig.register(new AbstractBinder() {
-
- @Override
- protected void configure() {
- bind(request).to(HttpServletRequest.class);
- }
- });
-
- return resourceConfig;
- }
-
- private static Either<User, ActionStatus> buildEitherUser(String userId, boolean isActive) {
- User user = new User();
- user.setUserId(userId);
- user.setRole(UserRoleEnum.ADMIN.getName());
- if (!isActive) {
- user.setStatus(UserStatusEnum.INACTIVE);
- }
- return Either.left(user);
- }
-
- private UserAdminServlet createTestSubject() {
- return new UserAdminServlet();
- }
-
-
- @Test
- public void testGet() throws Exception {
- UserAdminServlet testSubject;
- String userId = "";
- HttpServletRequest request = null;
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testGetRole() throws Exception {
- UserAdminServlet testSubject;
- String userId = "";
- HttpServletRequest request = null;
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testUpdateUserRole() throws Exception {
- UserAdminServlet testSubject;
- String userIdUpdateUser = "";
- HttpServletRequest request = null;
- String data = "";
- String modifierUserId = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testCreateUser() throws Exception {
- UserAdminServlet testSubject;
- HttpServletRequest request = null;
- String newUserData = "";
- String modifierAttId = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testAuthorize() throws Exception {
- UserAdminServlet testSubject;
- HttpServletRequest request = null;
- String userId = "";
- String firstName = "";
- String lastName = "";
- String email = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testGetAdminsUser() throws Exception {
- UserAdminServlet testSubject;
- String userId = "";
- HttpServletRequest request = null;
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
-
-
- @Test
- public void testGetUsersList() throws Exception {
- UserAdminServlet testSubject;
- HttpServletRequest request = null;
- String userId = "";
- String roles = "";
- Response result;
-
- // test 1
- testSubject = createTestSubject();
- roles = null;
-
- // test 2
- testSubject = createTestSubject();
- roles = "";
- }
-
-
- @Test
- public void testDeActivateUser() throws Exception {
- UserAdminServlet testSubject;
- String userId = "";
- HttpServletRequest request = null;
- String userIdHeader = "";
- Response result;
-
- // default test
- testSubject = createTestSubject();
- }
+ final static HttpServletRequest request = mock(HttpServletRequest.class);
+ final static HttpSession session = mock(HttpSession.class);
+ final static ServletContext servletContext = mock(ServletContext.class);
+ final static WebAppContextWrapper webAppContextWrapper = mock(WebAppContextWrapper.class);
+ final static WebApplicationContext webApplicationContext = mock(WebApplicationContext.class);
+ final static UserBusinessLogic userAdminManager = spy(UserBusinessLogic.class);
+ final static AuditingManager auditingManager = mock(AuditingManager.class);
+ final static ComponentsUtils componentsUtils = mock(ComponentsUtils.class);
+ final static ResponseFormat okResponseFormat = mock(ResponseFormat.class);
+
+ final static String ADMIN_ATT_UID = "jh0003";
+ Gson gson = new Gson();
+
+ @BeforeClass
+ public static void setup() {
+ ExternalConfiguration.setAppName("catalog-be");
+
+ when(session.getServletContext()).thenReturn(servletContext);
+ when(servletContext.getAttribute(Constants.WEB_APPLICATION_CONTEXT_WRAPPER_ATTR)).thenReturn(webAppContextWrapper);
+ when(webAppContextWrapper.getWebAppContext(servletContext)).thenReturn(webApplicationContext);
+
+ when(webApplicationContext.getBean(UserBusinessLogic.class)).thenReturn(userAdminManager);
+ when(webApplicationContext.getBean(ComponentsUtils.class)).thenReturn(componentsUtils);
+ when(componentsUtils.getAuditingManager()).thenReturn(auditingManager);
+ when(componentsUtils.getResponseFormat(ActionStatus.OK)).thenReturn(okResponseFormat);
+ when(okResponseFormat.getStatus()).thenReturn(HttpStatus.OK.value());
+
+ }
+
+ @Before
+ public void beforeTest() {
+ reset(userAdminManager);
+ doReturn(buildEitherUser(ADMIN_ATT_UID, true)).when(userAdminManager).getUser(ADMIN_ATT_UID, false);
+
+ reset(request);
+ when(request.getSession()).thenReturn(session);
+ when(request.getHeader("USER_ID")).thenReturn(ADMIN_ATT_UID);
+ }
+
+ /*
+ * @Test public void deactivateUserSuccessfullyTest(){ String userToDeleteUserId = "admin1"; User adminUser = new User(); adminUser.setUserId(ADMIN_ATT_UID); Either<User, ActionStatus> eitherActiveUser = buildEitherUser(userToDeleteUserId, true);
+ * User userToDelete = eitherActiveUser.left().value(); doReturn(eitherActiveUser).when(userAdminManager).getUser( userToDeleteUserId);
+ *
+ * Either<User, ActionStatus> eitherInactiveUser = buildEitherUser(userToDeleteUserId, false); doReturn(eitherInactiveUser).when(userAdminManager).deActivateUser( adminUser, userToDelete.getUserId());
+ *
+ *
+ * Response response = target().path("/v1/user/"+userToDeleteUserId).request().delete(); assertTrue(response.getStatus() == HttpStatus.OK.value()); verify(userAdminManager, times(1)).deActivateUser(adminUser, userToDelete.getUserId()); }
+ *
+ *
+ * @Test public void forceDeleteUserSuccessfullyTest(){ String userToDeleteUserId = "admin1"; when(request.getHeader(User.FORCE_DELETE_HEADER_FLAG)).thenReturn(User. FORCE_DELETE_HEADER_FLAG);
+ *
+ * User adminUser = new User(); adminUser.setUserId(ADMIN_ATT_UID);
+ *
+ * Either<User, ActionStatus> eitherActiveUser = buildEitherUser(userToDeleteUserId, true); User userToDelete = eitherActiveUser.left().value(); doReturn(eitherActiveUser).when(userAdminManager).getUser( userToDeleteUserId);
+ *
+ * Either<User, ActionStatus> eitherUser = buildEitherUser(userToDeleteUserId, true); doReturn(eitherUser).when(userAdminManager).deleteUser(userToDelete. getUserId());
+ *
+ *
+ * Response response = target().path("/v1/user/"+userToDeleteUserId).request().delete(); assertTrue(response.getStatus() == HttpStatus.OK.value()); verify(userAdminManager, times(0)).deActivateUser(adminUser, userToDelete.getUserId());
+ * verify(userAdminManager, times(1)).deleteUser(userToDelete.getUserId()); }
+ */
+
+ @Override
+ protected Application configure() {
+
+ ResourceConfig resourceConfig = new ResourceConfig(UserAdminServlet.class);
+
+ resourceConfig.register(new AbstractBinder() {
+
+ @Override
+ protected void configure() {
+ bind(request).to(HttpServletRequest.class);
+ }
+ });
+
+ return resourceConfig;
+ }
+
+ private static Either<User, ActionStatus> buildEitherUser(String userId, boolean isActive) {
+ User user = new User();
+ user.setUserId(userId);
+ user.setRole(UserRoleEnum.ADMIN.getName());
+ if (!isActive) {
+ user.setStatus(UserStatusEnum.INACTIVE);
+ }
+ return Either.left(user);
+ }
}