Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
0 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
package gov.va.oneconsult.seoc.api.filter;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.ServletException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.http.HttpStatus;
import org.springframework.mock.web.MockFilterChain;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import gov.va.oneconsult.seoc.api.service.GenericService;
@RunWith(MockitoJUnitRunner.class)
public class MaintenanceFilterTest
{
@Mock
private GenericService genericService;
@InjectMocks
private MaintenanceFilter maintenanceFilter = new MaintenanceFilter();
/*
* SEOC operations which are not allowed during maintenance should give
* PRECONDITION Failed response
*/
@Test
public void testSeocEditOperationsInMaintenanceMode() throws ServletException, IOException
{
Map<String, String> maintenanceModeTestUrls = new HashMap<String, String>();
maintenanceModeTestUrls.put("/v1/seoc/", "POST");
maintenanceModeTestUrls.put("/v1/seoc", "POST");
maintenanceModeTestUrls.put("/v1/seoc/checkseocexists", "POST");
maintenanceModeTestUrls.put("/v1/seoc/createPendingRevision", "POST");
maintenanceModeTestUrls.put("/v1/seoc/validPendingRevision", "GET");
maintenanceModeTestUrls.put("/v1/seoc/validActivate", "GET");
maintenanceModeTestUrls.put("/v1/seoc/activate", "GET");
maintenanceModeTestUrls.put("/v1/seoc/discontinue", "GET");
maintenanceModeTestUrls.put("/v1/seoc/delete", "GET");
maintenanceModeTestUrls.put("v1/seoc/delete", "GET");
maintenanceModeTestUrls.put("v1/seoc/createBillingCode", "POST");
for (Entry<String, String> entry : maintenanceModeTestUrls.entrySet())
{
MockHttpServletRequest request = new MockHttpServletRequest();
Mockito.when(genericService.getMaintenanceBy()).thenReturn("User");
MockHttpServletResponse response = new MockHttpServletResponse();
MockFilterChain filterChain = new MockFilterChain();
request.setRequestURI(entry.getKey());
request.setMethod(entry.getValue());
maintenanceFilter.doFilter(request, response, filterChain);
assertThat(response.getStatus()).isEqualTo(HttpStatus.PRECONDITION_FAILED.value());
assertThat(response.getErrorMessage()).isEqualTo("{\"inMaintenanceBy\":\"User\"}");
}
Mockito.verify(genericService, Mockito.times(11)).getMaintenanceBy();
Mockito.verifyNoMoreInteractions(genericService);
}
/*
* SEOC operations allowed during maintenance should give OK response
*/
@Test
public void testSeocGetOperationsInMaintenanceMode() throws ServletException, IOException
{
Map<String, String> maintenanceModeTestUrls = new HashMap<String, String>();
maintenanceModeTestUrls.put("/v1/seoc/all", "GET");
maintenanceModeTestUrls.put("/v1/seoc/active", "GET");
maintenanceModeTestUrls.put("/v1/seoc/", "GET");
maintenanceModeTestUrls.put("/v1/seocKey/test123", "GET");
maintenanceModeTestUrls.put("/v1/seoc/12", "GET");
maintenanceModeTestUrls.put("/v1/seoc/name/abc", "GET");
for (Entry<String, String> entry : maintenanceModeTestUrls.entrySet())
{
MockHttpServletRequest request = new MockHttpServletRequest();
Mockito.when(genericService.getMaintenanceBy()).thenReturn("User");
MockHttpServletResponse response = new MockHttpServletResponse();
MockFilterChain filterChain = new MockFilterChain();
request.setRequestURI(entry.getKey());
request.setMethod(entry.getValue());
maintenanceFilter.doFilter(request, response, filterChain);
assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());
}
Mockito.verify(genericService, Mockito.times(6)).getMaintenanceBy();
Mockito.verifyNoMoreInteractions(genericService);
}
/*
* All SEOC Get operations allowed irrespective of maintenance mode
*/
@Test
public void testSeocGetOperationsInNonMaintenanceMode() throws ServletException, IOException
{
Map<String, String> maintenanceModeTestUrls = new HashMap<String, String>();
maintenanceModeTestUrls.put("/v1/seoc/all", "GET");
maintenanceModeTestUrls.put("/v1/seoc/active", "GET");
maintenanceModeTestUrls.put("/v1/seoc/", "GET");
maintenanceModeTestUrls.put("/v1/seocKey/test123", "GET");
maintenanceModeTestUrls.put("/v1/seoc/12", "GET");
maintenanceModeTestUrls.put("/v1/seoc/name/abc", "GET");
for (Entry<String, String> entry : maintenanceModeTestUrls.entrySet())
{
MockHttpServletRequest request = new MockHttpServletRequest();
Mockito.when(genericService.getMaintenanceBy()).thenReturn("");
MockHttpServletResponse response = new MockHttpServletResponse();
MockFilterChain filterChain = new MockFilterChain();
request.setRequestURI(entry.getKey());
request.setMethod(entry.getValue());
maintenanceFilter.doFilter(request, response, filterChain);
assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());
}
Mockito.verify(genericService, Mockito.times(6)).getMaintenanceBy();
Mockito.verifyNoMoreInteractions(genericService);
}
/*
* Maintenance mode operations are not allowed in non-maintenance mode
*/
@Test
public void testMaintenanceOperationsInNonMaintenanceMode() throws ServletException, IOException
{
Map<String, String> maintenanceModeTestUrls = new HashMap<String, String>();
maintenanceModeTestUrls.put("/v1/seoc/manageBillingCode", "PUT");
for (Entry<String, String> entry : maintenanceModeTestUrls.entrySet())
{
MockHttpServletRequest request = new MockHttpServletRequest();
Mockito.when(genericService.getMaintenanceBy()).thenReturn("");
MockHttpServletResponse response = new MockHttpServletResponse();
MockFilterChain filterChain = new MockFilterChain();
request.setRequestURI(entry.getKey());
request.setMethod(entry.getValue());
maintenanceFilter.doFilter(request, response, filterChain);
assertThat(response.getStatus()).isEqualTo(HttpStatus.PRECONDITION_FAILED.value());
assertThat(response.getErrorMessage()).isEqualTo("{\"inMaintenanceBy\":\"\"}");
}
Mockito.verify(genericService, Mockito.times(1)).getMaintenanceBy();
Mockito.verifyNoMoreInteractions(genericService);
}
}