Improve test coverage
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / filters / GatewayFilter.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 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.filters;
22
23 import org.apache.http.HttpStatus;
24 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
25 import org.openecomp.sdc.be.config.Configuration;
26 import org.openecomp.sdc.be.servlets.exception.ComponentExceptionMapper;
27 import org.openecomp.sdc.common.api.FilterDecisionEnum;
28 import org.openecomp.sdc.common.log.wrappers.Logger;
29 import org.openecomp.sdc.common.util.ThreadLocalsHolder;
30 import org.springframework.beans.factory.annotation.Autowired;
31 import org.springframework.stereotype.Component;
32
33 import javax.servlet.Filter;
34 import javax.servlet.FilterChain;
35 import javax.servlet.FilterConfig;
36 import javax.servlet.ServletException;
37 import javax.servlet.ServletRequest;
38 import javax.servlet.ServletResponse;
39 import javax.servlet.http.HttpServletRequest;
40 import javax.servlet.http.HttpServletResponse;
41 import javax.ws.rs.WebApplicationException;
42 import java.io.IOException;
43 import java.util.List;
44 import java.util.stream.Stream;
45
46 @Component("gatewayFilter")
47 public class GatewayFilter implements Filter {
48
49     private Configuration.CookieConfig authCookieConf;
50     private Configuration config;
51     private static final Logger log = Logger.getLogger(BeServletFilter.class);
52
53     @Autowired
54     private ThreadLocalUtils threadLocalUtils;
55     @Autowired
56     private ComponentExceptionMapper componentExceptionMapper;
57
58
59     public GatewayFilter(org.openecomp.sdc.be.config.Configuration configuration) {
60         this.authCookieConf = configuration.getAuthCookie();
61     }
62
63     @Override
64     public void init(FilterConfig filterConfig) throws ServletException {
65     }
66
67     @Override
68     public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
69
70         HttpServletRequest httpRequest = (HttpServletRequest) req;
71         HttpServletResponse httpResponse = (HttpServletResponse) res;
72         try {
73             if (isUrlFromWhiteList(httpRequest) || isConsumerBusinessLogic()) {
74                 ThreadLocalsHolder.setApiType(FilterDecisionEnum.NA);
75                 threadLocalUtils.setUserContextFromDB(httpRequest);
76                 filterChain.doFilter(httpRequest, res);
77             }
78         } catch (ComponentException ce) {
79             componentExceptionMapper.writeToResponse(ce, httpResponse);
80
81         } catch (WebApplicationException we) {
82             httpResponse.setStatus(we.getResponse().getStatus());
83             setDefaultHttpParams(httpResponse);
84             httpResponse.getWriter().write(we.getMessage());
85
86         } catch (Exception ex) {
87             httpResponse.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);
88             setDefaultHttpParams(httpResponse);
89             httpResponse.getWriter().write(ex.getMessage());
90         }
91     }
92
93     private void setDefaultHttpParams(HttpServletResponse httpResponse) {
94         httpResponse.setContentType("application/json");
95         httpResponse.setCharacterEncoding("UTF-8");
96     }
97
98     private boolean isUrlFromWhiteList(HttpServletRequest httpRequest) {
99         String pathInfo;
100         List<String> excludedUrls = authCookieConf.getExcludedUrls();
101         pathInfo = httpRequest.getPathInfo().toLowerCase();
102         log.debug("SessionValidationFilter: white list validation ->  PathInfo: {} ", pathInfo);
103         Stream<String> stream = excludedUrls.stream();
104         pathInfo.getClass();
105         return stream.anyMatch(pathInfo::matches);
106     }
107
108     private Boolean isConsumerBusinessLogic() {
109        return config.getConsumerBusinessLogic();
110     }
111     @Override
112     public void destroy() {
113
114     }
115 }