Catalog alignment
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / servlets / JerseySpringBaseTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.servlets;
22
23 import com.fasterxml.jackson.databind.DeserializationFeature;
24 import org.glassfish.grizzly.servlet.HttpSessionImpl;
25 import org.glassfish.grizzly.servlet.WebappContext;
26 import org.glassfish.hk2.utilities.binding.AbstractBinder;
27 import org.glassfish.jersey.client.ClientConfig;
28 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
29 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
30 import org.glassfish.jersey.logging.LoggingFeature;
31 import org.glassfish.jersey.media.multipart.MultiPartFeature;
32 import org.glassfish.jersey.server.ResourceConfig;
33 import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
34 import org.glassfish.jersey.test.JerseyTest;
35 import org.glassfish.jersey.test.TestProperties;
36 import org.junit.BeforeClass;
37 import org.openecomp.sdc.be.impl.WebAppContextWrapper;
38 import org.openecomp.sdc.be.servlets.exception.ComponentExceptionMapper;
39 import org.openecomp.sdc.be.servlets.exception.DefaultExceptionMapper;
40 import org.openecomp.sdc.be.servlets.exception.StorageExceptionMapper;
41 import org.springframework.context.ApplicationContext;
42 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
43 import org.springframework.web.context.WebApplicationContext;
44
45 import javax.servlet.http.HttpServletRequest;
46 import javax.ws.rs.core.Feature;
47 import java.util.logging.Level;
48 import java.util.logging.Logger;
49
50 import static org.mockito.Mockito.mock;
51
52 public abstract class JerseySpringBaseTest extends JerseyTest {
53
54     private static final Logger log = Logger.getLogger(JerseySpringBaseTest.class.getName());
55     protected static HttpServletRequest request;
56     protected static HttpSessionImpl session;
57     protected static WebappContext context;
58     protected static WebAppContextWrapper contextWrapper;
59     protected static WebApplicationContext applicationContext;
60     private final static JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
61     private final static Feature loggingFeature = new LoggingFeature(log, Level.INFO, LoggingFeature.Verbosity.PAYLOAD_ANY, null);
62
63     @BeforeClass
64     public static void initBaseClass() {
65         request = mock(HttpServletRequest.class);
66         session = mock(HttpSessionImpl.class);
67         context = mock(WebappContext.class);
68         contextWrapper = mock(WebAppContextWrapper.class);
69         applicationContext = mock(WebApplicationContext.class);
70     }
71
72     @Override
73     protected void configureClient(ClientConfig config) {
74         config.register(MultiPartFeature.class)
75               .register(loggingFeature)
76               .register(jacksonJsonProvider);
77     }
78
79     protected ResourceConfig configure() {
80         return configure(BaseTestConfig.class);
81     }
82
83     protected ResourceConfig configure(Class<?> springConfig) {
84         ApplicationContext context = new AnnotationConfigApplicationContext(springConfig);
85         forceSet(TestProperties.CONTAINER_PORT, "0");
86         return new ResourceConfig()
87                 .register(new AbstractBinder() {
88                     @Override
89                     protected void configure() {
90                         bind(request).to(HttpServletRequest.class);
91                     }
92                 })
93                 .register(RolesAllowedDynamicFeature.class)
94                 .register(DefaultExceptionMapper.class)
95                 .register(ComponentExceptionMapper.class)
96                 .register(StorageExceptionMapper.class)
97                 .register(MultiPartFeature.class)
98                 .register(jacksonJsonProvider)
99                 .register(loggingFeature)
100                 .property("jersey.config.server.provider.classnames", "org.openecomp.sdc.be.view.MixinModelWriter")
101                 .property("contextConfig", context);
102     }
103
104 }