re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / servlets / JerseySpringBaseTest.java
1 package org.openecomp.sdc.be.servlets;
2
3 import com.fasterxml.jackson.databind.DeserializationFeature;
4 import org.glassfish.hk2.utilities.binding.AbstractBinder;
5 import org.glassfish.jersey.client.ClientConfig;
6 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
7 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
8 import org.glassfish.jersey.logging.LoggingFeature;
9 import org.glassfish.jersey.media.multipart.MultiPartFeature;
10 import org.glassfish.jersey.server.ResourceConfig;
11 import org.glassfish.jersey.test.JerseyTest;
12 import org.glassfish.jersey.test.TestProperties;
13 import org.junit.BeforeClass;
14 import org.openecomp.sdc.be.servlets.exception.ComponentExceptionMapper;
15 import org.openecomp.sdc.be.servlets.exception.DefaultExceptionMapper;
16 import org.openecomp.sdc.be.servlets.exception.StorageExceptionMapper;
17 import org.springframework.context.ApplicationContext;
18 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
19
20 import javax.servlet.http.HttpServletRequest;
21 import javax.ws.rs.core.Feature;
22 import java.util.logging.Level;
23 import java.util.logging.Logger;
24
25 import static org.mockito.Mockito.mock;
26 public abstract class JerseySpringBaseTest extends JerseyTest {
27
28     private static final Logger log = Logger.getLogger(JerseySpringBaseTest.class.getName());
29     protected static HttpServletRequest request;
30     private final static JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
31     private final static Feature loggingFeature = new LoggingFeature(log, Level.INFO, LoggingFeature.Verbosity.PAYLOAD_ANY, null);
32
33     @BeforeClass
34     public static void initBaseClass() {
35         request = mock(HttpServletRequest.class);
36     }
37
38     @Override
39     protected void configureClient(ClientConfig config) {
40         config.register(MultiPartFeature.class)
41               .register(loggingFeature)
42               .register(jacksonJsonProvider);
43     }
44
45     protected ResourceConfig configure() {
46         return configure(BaseTestConfig.class);
47     }
48
49     protected ResourceConfig configure(Class<?> springConfig) {
50         ApplicationContext context = new AnnotationConfigApplicationContext(springConfig);
51         forceSet(TestProperties.CONTAINER_PORT, "0");
52         return new ResourceConfig()
53                 .register(new AbstractBinder() {
54                     @Override
55                     protected void configure() {
56                         bind(request).to(HttpServletRequest.class);
57                     }
58                 })
59                 .register(DefaultExceptionMapper.class)
60                 .register(ComponentExceptionMapper.class)
61                 .register(StorageExceptionMapper.class)
62                 .register(MultiPartFeature.class)
63                 .register(jacksonJsonProvider)
64                 .register(loggingFeature)
65                 .property("jersey.config.server.provider.classnames", "org.openecomp.sdc.be.view.MixinModelWriter")
66                 .property("contextConfig", context);
67     }
68
69 }