Summary Table
Categories |
Total Count |
PII |
0 |
URL |
0 |
DNS |
7 |
EKL |
0 |
IP |
0 |
PORT |
0 |
VsID |
0 |
CF |
0 |
AI |
0 |
VPD |
0 |
PL |
0 |
Other |
0 |
File Content
/*package gov.va.med.ars.controller;
import static org.hamcrest.Matchers.is;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.SerializationFeature;
import gov.va.med.ars.constants.ErrorMessages;
import gov.va.med.ars.exceptions.GenericException;
import gov.va.med.ars.filter.CORSFilter;
import gov.va.med.ars.model.request.UserSearchRequest;
import gov.va.med.ars.model.response.GenericResponse;
import gov.va.med.ars.model.response.UserDetailsResponse;
import gov.va.med.ars.service.IUserAdministrationService;
import javafx.util.Pair;
@RunWith(MockitoJUnitRunner.class)
public class UserAdministrationRestControllerTest {
private static final Logger logger = LogManager.getLogger(UserAdministrationRestControllerTest.class);
private MockMvc mockMvc;
public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(),
MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));
@Mock
private IUserAdministrationService userAdministrationService;
@Mock
private GenericException genericException = new GenericException(ErrorMessages.INVALID_REQUEST,
"At least one field information needs to be added", HttpStatus.NOT_FOUND);
@InjectMocks
private UserAdministrationRestController userAdministrationRestController;
@Before
public void init() throws Exception {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(userAdministrationRestController).addFilters(new CORSFilter())
.build();
}
@Test
public void testsearchAllUsers() throws Exception {
UserSearchRequest userSearchRequest = new UserSearchRequest();
userSearchRequest.setAdmin("true");
userSearchRequest.setCreatedBy("");
userSearchRequest.setDescending(false);
userSearchRequest.setDomain("");
userSearchRequest.setEdit("");
userSearchRequest.setEmail("");
userSearchRequest.setExport("");
userSearchRequest.setFirstName("");
userSearchRequest.setLastName("");
userSearchRequest.setPageNumber(1);
userSearchRequest.setPageSize(10);
userSearchRequest.setPhone("");
userSearchRequest.setSortColumn("");
userSearchRequest.setStatus("");
userSearchRequest.setUserName("
DNS
");
userSearchRequest.setExport("Y");
userSearchRequest.setEdit("Y");
userSearchRequest.setAdmin("Y");
UserDetailsResponse userDetailsResponse = new UserDetailsResponse();
List<UserDetailsResponse> listuserDetails = new ArrayList<>();
userDetailsResponse.setStatus("active");
userDetailsResponse.setDomain("Base");
userDetailsResponse.setUserName("
DNS
");
userDetailsResponse.setExport("y");
userDetailsResponse.setAdmin("y");
userDetailsResponse.setEdit("y");
listuserDetails.add(userDetailsResponse);
GenericResponse genericResponse = new GenericResponse();
genericResponse.setpageNumber(1);
genericResponse.setpageSize(10);
genericResponse.setsortColumn("userName");
genericResponse.settotalNumberOfResults((long) 3);
genericResponse.setResponse(listuserDetails);
when(userAdministrationService.getAllUserDetails(any(UserSearchRequest.class))).thenReturn(genericResponse);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestJson = ow.writeValueAsString(userSearchRequest);
mockMvc.perform(post("/api/v1/userSearch").contentType(MediaType.APPLICATION_JSON).content(requestJson))
.andDo(print()).andExpect(status().isOk())
.andExpect(content().contentType("application/json;charset=UTF-8"))
.andExpect(jsonPath("$.pageNumber", is(1))).andExpect(jsonPath("$.pageSize", is(10)))
.andExpect(jsonPath("$.sortColumn", is("userName")))
.andExpect(jsonPath("$.totalNumberOfResults", is(3)))
.andExpect(jsonPath("$.response[0].status", is("active")))
.andExpect(jsonPath("$.response[0].domain", is("Base")))
.andExpect(jsonPath("$.response[0].userName", is("
DNS
")))
.andExpect(jsonPath("$.response[0].export", is("y")))
.andExpect(jsonPath("$.response[0].admin", is("y"))).andExpect(jsonPath("$.response[0].edit", is("y")));
verify(userAdministrationService, times(1)).getAllUserDetails(Matchers.refEq(userSearchRequest));
verifyNoMoreInteractions(userAdministrationService);
}
@Test
public void testEditUserSuccess() throws Exception {
Pair<String, Boolean> pairResult = new Pair <>("success", true);
UserSearchRequest userSearchRequest = new UserSearchRequest();
userSearchRequest.setAdmin("true");
userSearchRequest.setCreatedBy("");
userSearchRequest.setDescending(false);
userSearchRequest.setDomain("");
userSearchRequest.setEdit("");
userSearchRequest.setEmail("");
userSearchRequest.setExport("");
userSearchRequest.setFirstName("");
userSearchRequest.setLastName("");
userSearchRequest.setPageNumber(1);
userSearchRequest.setPageSize(10);
userSearchRequest.setPhone("");
userSearchRequest.setSortColumn("");
userSearchRequest.setStatus("");
userSearchRequest.setUserName("
DNS
");
userSearchRequest.setExport("Y");
userSearchRequest.setEdit("Y");
userSearchRequest.setAdmin("Y");
when(userAdministrationService.editUserByUserName(userSearchRequest)).thenReturn(pairResult);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestJson = ow.writeValueAsString(userSearchRequest);
ResultActions andExpect = mockMvc
.perform(post("/api/v1/editUser").contentType(MediaType.APPLICATION_JSON).content(requestJson))
.andDo(print()).andExpect(status().is(200));
logger.info("status results:" + andExpect.andReturn().getResponse().getContentAsString());
verify(userAdministrationService, times(1)).editUserByUserName(Matchers.refEq(userSearchRequest));
verifyNoMoreInteractions(userAdministrationService);
}
@Test
public void testgetUserByIdSuccess() throws Exception {
String userId = "100";
UserDetailsResponse userDetailsResponse = new UserDetailsResponse();
userDetailsResponse.setStatus("User");
userDetailsResponse.setDomain("Base");
userDetailsResponse.setUserName("
DNS
");
userDetailsResponse.setExport("y");
userDetailsResponse.setAdmin("y");
userDetailsResponse.setEdit("y");
when(userAdministrationService.getUserDetails(userId, "ARS")).thenReturn(userDetailsResponse);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestJson = ow.writeValueAsString(userId);
mockMvc.perform(
get("/api/v1/userDetails/" + userId).contentType(MediaType.APPLICATION_JSON).content(requestJson))
.andDo(print()).andExpect(status().isOk())
.andExpect(jsonPath("$.domain", is("Base")))
.andExpect(jsonPath("$.userName", is("
DNS
")))
.andExpect(jsonPath("$.export", is("y")))
.andExpect(jsonPath("$.admin", is("y")))
.andExpect(jsonPath("$.edit", is("y")))
.andExpect(jsonPath("$.status", is("User")));
verify(userAdministrationService, times(1)).getUserDetails(Matchers.refEq(userId), "ARS");
verifyNoMoreInteractions(userAdministrationService);
}
@Test
public void testdeleteUserSuccess() throws Exception {
Long userId = (long) 100;
UserDetailsResponse userDetailsResponse = new UserDetailsResponse();
userDetailsResponse.setStatus("User");
userDetailsResponse.setDomain("Base");
userDetailsResponse.setUserName("
DNS
");
userDetailsResponse.setExport("1");
userDetailsResponse.setAdmin("!");
userDetailsResponse.setEdit("2");
when(userAdministrationService.deleteUserByUserName(userId)).thenReturn(true);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
String requestJson = ow.writeValueAsString(userId);
mockMvc.perform(
get("/api/v1/userDelete/" + userId).contentType(MediaType.APPLICATION_JSON).content(requestJson))
.andDo(print()).andExpect(status().isOk());
verify(userAdministrationService, times(1)).deleteUserByUserName(Matchers.refEq(userId));
verifyNoMoreInteractions(userAdministrationService);
}
}
*/