Skip to content
Snippets Groups Projects
Commit 16490278 authored by Alok Joshi's avatar Alok Joshi
Browse files

use config option

parent 56c336c7
No related branches found
No related tags found
2 merge requests!744Upgraded packages to mitigated vulns in netty, guava, snakeyaml,!626Bypass info and swagger apis in collaboration filter
......@@ -127,3 +127,4 @@ springdoc.swagger-ui.doc-expansion=none
#Collaboration context featureflag name:partition specific
featureFlag.strategy=dataPartition
collaborationFilter.excludedPaths=info,swagger,health,api-docs
......@@ -5,6 +5,7 @@ import org.apache.http.HttpStatus;
import org.opengroup.osdu.core.common.feature.IFeatureFlag;
import org.opengroup.osdu.core.common.model.http.AppError;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
import javax.servlet.Filter;
......@@ -16,6 +17,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import static org.opengroup.osdu.storage.util.StringConstants.COLLABORATIONS_FEATURE_NAME;
......@@ -26,20 +28,18 @@ public class CollaborationFilter implements Filter {
@Autowired
public IFeatureFlag collaborationFeatureFlag;
@Value("#{'${collaborationFilter.excludedPaths:info,swagger,health,api-docs}'.split(',')}")
private List<String> excludedPaths;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
if(httpRequest.getRequestURI().contains("info") ||
httpRequest.getRequestURI().contains("swagger") ||
httpRequest.getRequestURI().contains("health") ||
httpRequest.getRequestURI().contains("api-docs"))
return;
HttpServletResponse httpResponse = (HttpServletResponse) response;
if (!collaborationFeatureFlag.isFeatureEnabled(COLLABORATIONS_FEATURE_NAME)) {
if (!isExcludedPath(httpRequest) && !collaborationFeatureFlag.isFeatureEnabled(COLLABORATIONS_FEATURE_NAME)) {
String collaborationHeader = httpRequest.getHeader(X_COLLABORATION_HEADER_NAME);
if (!Strings.isNullOrEmpty(collaborationHeader)) {
httpResponse.setContentType(MediaType.APPLICATION_JSON_VALUE);
......@@ -59,4 +59,9 @@ public class CollaborationFilter implements Filter {
return "{\"code\": " + appError.getCode() + ",\"reason\": \"" + appError.getReason() + "\",\"message\": \"" + appError.getMessage() + "\"}";
}
private boolean isExcludedPath(HttpServletRequest request) {
String path = request.getRequestURI().substring(request.getContextPath().length() + 1);
return excludedPaths.contains(path);
}
}
......@@ -2,7 +2,6 @@ package org.opengroup.osdu.storage.util;
import org.apache.http.HttpStatus;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
......@@ -10,6 +9,7 @@ import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.opengroup.osdu.core.common.feature.IFeatureFlag;
import org.opengroup.osdu.core.common.model.http.AppError;
import org.springframework.test.util.ReflectionTestUtils;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
......@@ -17,6 +17,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
......@@ -48,13 +49,15 @@ public class CollaborationFilterTest {
public IFeatureFlag iCollaborationFeatureFlag;
@Before
public void setup() {
ReflectionTestUtils.setField(collaborationFilter, "excludedPaths", Arrays.asList("info", "swagger", "health", "api-docs"));
initMocks(this);
}
@Test
public void shouldThrowException_ifCollaborationHeaderProvided_whenCollaborationFeatureFlagDisabled() throws IOException, ServletException {
when(httpServletRequest.getHeader(DATA_PARTITION_ID)).thenReturn(DATA_PARTITION);
when(httpServletRequest.getRequestURI()).thenReturn("https://my-service-url");
when(httpServletRequest.getRequestURI()).thenReturn("https://my-service-url/api/storage/v2/");
when(httpServletRequest.getContextPath()).thenReturn("/api/storage/v2/");
when(iCollaborationFeatureFlag.isFeatureEnabled(FEATURE_NAME)).thenReturn(false);
when(httpServletRequest.getHeader(X_COLLABORATION_HEADER_NAME)).thenReturn(COLLABORATION_DIRECTIVES);
when(httpServletResponse.getWriter()).thenReturn(writer);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment