Summary Table

Categories Total Count
PII 3
URL 0
DNS 11
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.service.impl;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doNothing;
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 java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.http.MediaType;

import gov.va.med.ars.dao.ars.ArsRoleRepository;
import gov.va.med.ars.dao.ars.IArsRole;
import gov.va.med.ars.dao.ars.IArsUserRepository;
import gov.va.med.ars.dao.ars.IArsUserRoleUsages;
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.domain.ars.ArsRole;
import gov.va.med.domain.ars.ArsUser;
import gov.va.med.domain.ars.ArsUserRoleUsages;
import gov.va.med.domain.ars.ArsUserRoleUsagesId;
import javafx.util.Pair;

@RunWith(MockitoJUnitRunner.class)
public class UserAdministrationRestServiceImplTest {
private static final Logger logger = LogManager.getLogger(UserAdministrationRestServiceImplTest.class);
public static final MediaType APPLICATION_JSON_UTF8 = new MediaType(MediaType.APPLICATION_JSON.getType(),
MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));

@Mock
IArsUserRepository arsUserRepository;

@Mock
IArsRole arsRoleRepository;

@Mock
IArsUserRoleUsages arsUserRoleUsagesRepository;

@InjectMocks
private UserAdministrationServiceImpl userAdministrationServiceImpl;

@Test
public void testMockIsWorking() {
assertNotNull("UserAdministrationServiceImpl Injection Failed", userAdministrationServiceImpl);
logger.info("userAdministrationServiceImpl" + userAdministrationServiceImpl);
}

@SuppressWarnings("unchecked")
@Test
public void testgetAllUserDetailsSuccess() throws Exception {
UserSearchRequest userSearchRequest = new UserSearchRequest();
userSearchRequest.setAdmin("");
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("admin");
userSearchRequest.setStatus("");
userSearchRequest.setUserName("
DNS ");
userSearchRequest.setSystem("EWV");

Set<ArsUserRoleUsages> hashSet = new HashSet<>();

DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");
List<ArsUser> listuserDetails = new ArrayList<>();
ArsUser arsUser = new ArsUser();

arsUser.setArsUserId(100);
arsUser.setUserName("
DNS ");
arsUser.setEnabled("y");
arsUser.setLastName("user");
arsUser.setFirstName("Base");
arsUser.setMiddleName("NM");
arsUser.setPhoneNumber("");
arsUser.setEmailAddress("
PII ");
arsUser.setLastLoginDate(dateFormat.parse("08112016"));
arsUser.setArsUserRoleUsageses(hashSet);
arsUser.setCreatedBy("ARS_ADMIN");
arsUser.setDateCreated(dateFormat.parse("08112016"));
arsUser.setDateModified(dateFormat.parse("08112016"));
arsUser.setDeactivationComments("");
arsUser.setDeactivationReasonCd((long) 1);
arsUser.setDomain("Base");
arsUser.setEnableExport(true);
arsUser.setEnableEdit(true);
arsUser.setEnableAdmin(true);

listuserDetails.add(arsUser);

List<ArsRole> arsRoleList = new ArrayList<>();
ArsRole arsRole = new ArsRole();
arsRole.setRoleName("ARS_ADMIN");
arsRole.setArsRoleId(100);
// arsRole.setArsRolePermissionsUsageses(arsRolePermissionsUsageses);
// arsRole.setArsUserRoleUsageses(userrolemapping);
arsRole.setCreatedBy("user");
arsRole.setDateCreated(dateFormat.parse("08112016"));
arsRole.setDescription("description");
arsRoleList.add(arsRole);

Page<ArsUser> pagedResponse = new PageImpl<ArsUser>(listuserDetails);

when(arsUserRepository.count(any(Specification.class))).thenReturn((long) 1);

when(arsUserRepository.findAll(any(Specification.class), any(PageRequest.class))).thenReturn(pagedResponse);

when(arsRoleRepository.findAllByRoleNameLike("ARS%")).thenReturn(arsRoleList);

GenericResponse repositoryResponse = userAdministrationServiceImpl.getAllUserDetails(userSearchRequest);

verify(arsUserRepository, times(1)).count(any(Specification.class));
verify(arsUserRepository, times(1)).findAll(any(Specification.class), any(PageRequest.class));
verifyNoMoreInteractions(arsUserRepository);

List<UserDetailsResponse> resultResponseList = (List<UserDetailsResponse>) repositoryResponse.getResponse();
assertEquals(10, repositoryResponse.getpageSize());
assertEquals(1L, repositoryResponse.gettotalNumberOfResults());
assertEquals(10, repositoryResponse.getpageSize());
assertEquals("
DNS ", resultResponseList.get(0).getUserName());
assertEquals("Yes", resultResponseList.get(0).getAdmin());
assertEquals("Yes", resultResponseList.get(0).getEdit());
assertEquals("Yes", resultResponseList.get(0).getExport());
assertEquals("Active", resultResponseList.get(0).getStatus());
assertEquals("Base", resultResponseList.get(0).getDomain());

}

@Test
public void testgetUserByIdSuccess() throws Exception {
String userId = "
DNS ";

Set<ArsUserRoleUsages> hashSet = new HashSet<>();

DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");
List<ArsRole> arsRoleList = new ArrayList<>();
ArsRole arsRole = new ArsRole();
arsRole.setRoleName("ARS_ADMIN");
arsRole.setArsRoleId(100);
// arsRole.setArsRolePermissionsUsageses(arsRolePermissionsUsageses);
// arsRole.setArsUserRoleUsageses(userrolemapping);
arsRole.setCreatedBy("user");
arsRole.setDateCreated(dateFormat.parse("08112016"));
arsRole.setDescription("description");
arsRoleList.add(arsRole);

List<ArsUser> listuserDetails = new ArrayList<>();
ArsUser arsUser = new ArsUser();

arsUser.setArsUserId(100);
arsUser.setUserName("
DNS ");
arsUser.setEnabled("y");
arsUser.setLastName("user");
arsUser.setFirstName("Base");
arsUser.setMiddleName("NM");
arsUser.setPhoneNumber("");
arsUser.setEmailAddress("
PII ");
arsUser.setLastLoginDate(dateFormat.parse("08112016"));
arsUser.setArsUserRoleUsageses(hashSet);
arsUser.setCreatedBy("ARS_ADMIN");
arsUser.setDateCreated(dateFormat.parse("08112016"));
arsUser.setDateModified(dateFormat.parse("08112016"));
arsUser.setDeactivationComments("");
arsUser.setDeactivationReasonCd((long) 1);
arsUser.setDomain("Base");
arsUser.setEnableExport(true);
arsUser.setEnableEdit(true);
arsUser.setEnableAdmin(true);

listuserDetails.add(arsUser);

when(arsRoleRepository.findAllByRoleNameLike("ARS%")).thenReturn(arsRoleList);
List<Long> roleIds = arsRoleList.stream().map(ArsRole::getArsRoleId).collect(Collectors.toList());
when(arsUserRepository.findByUserName(userId, roleIds)).thenReturn(arsUser);

UserDetailsResponse userById = userAdministrationServiceImpl.getUserDetails(userId, "ARS");
verify(arsUserRepository, times(1)).findByUserName(userId, roleIds);

verifyNoMoreInteractions(arsUserRepository);

assertEquals("
DNS ", userById.getUserName());
assertEquals("Yes", userById.getAdmin());
assertEquals("Yes", userById.getEdit());
assertEquals("Yes", userById.getExport());
assertEquals("Active", userById.getStatus());
assertEquals("Base", userById.getDomain());

}
// Testing edit when enable admin is set to true
@Ignore
@SuppressWarnings("restriction")
@Test
public void testeditUserByUserNameOnAdminSuccess() throws Exception {
Pair<String, Boolean> pairResult = new Pair<>("success", true);
UserSearchRequest userSearchRequest = new UserSearchRequest();
userSearchRequest.setAdmin("true");
userSearchRequest.setCreatedBy("");
userSearchRequest.setDescending(false);
userSearchRequest.setDomain("notbase");
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");
userSearchRequest.setModifiedBy("user");
userSearchRequest.setStatus("ACTIVE");
userSearchRequest.setUserId((long) 100);
userSearchRequest.setSystem("ARS");

Set<ArsUserRoleUsages> hashSet = new HashSet<ArsUserRoleUsages>();
ArsRole arsRole = new ArsRole();
ArsUser updatedarsUser = new ArsUser();
ArsUserRoleUsages arsUserRoleUsages = new ArsUserRoleUsages();
hashSet.add(new ArsUserRoleUsages());

DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");


updatedarsUser.setArsUserId(100);
updatedarsUser.setUserName("
DNS ");
updatedarsUser.setEnabled("ACTIVE");
updatedarsUser.setLastName("");
updatedarsUser.setFirstName("");
updatedarsUser.setMiddleName("NM");
updatedarsUser.setPhoneNumber("");
updatedarsUser.setEmailAddress("");
updatedarsUser.setLastLoginDate(dateFormat.parse("08112016"));
updatedarsUser.setDeactivationReasonCd((long) 1);
updatedarsUser.setDeactivationComments("");
updatedarsUser.setCreatedBy("ARS_ADMIN");
updatedarsUser.setDateCreated(dateFormat.parse("08112016"));
updatedarsUser.setModifiedBy("user");
updatedarsUser.setDateModified(new Date());
updatedarsUser.setEnableExport(true);
updatedarsUser.setEnableEdit(true);
updatedarsUser.setEnableAdmin(true);
updatedarsUser.setDomain("notbase");

updatedarsUser.setArsUserRoleUsageses(hashSet);

arsRole.setRoleName("ARS_ADMIN");
arsRole.setArsRoleId(100);
arsRole.setCreatedBy("user");
arsRole.setDateCreated(dateFormat.parse("08112016"));
arsRole.setDescription("description");

ArsUserRoleUsagesId arsUserRoleUsagesId = new ArsUserRoleUsagesId();
arsUserRoleUsagesId.setArsRoleId((long) 100);
arsUserRoleUsagesId.setArsUserId((long) 100);

ArsUserRoleUsages userrolemapping = new ArsUserRoleUsages();
userrolemapping.setId(arsUserRoleUsagesId);
userrolemapping.setArsUser(updatedarsUser);
userrolemapping.setArsRole(arsRole);
userrolemapping.setCreatedBy("Admin");
userrolemapping.setDateCreated(new Date());
when(arsUserRepository.findByArsUserId((long) 100)).thenReturn(updatedarsUser);

when(arsUserRepository.save(updatedarsUser)).thenReturn(updatedarsUser);
when(arsUserRepository.findByAppUserIdByUserRoleUsages(100)).thenReturn(updatedarsUser);
// doNothing().when(arsUserRepository).updateUserByUserName(userSearchRequest.getUserName().toUpperCase(),
// userSearchRequest.getDomain(), true, true, true);

when(arsRoleRepository.findByRoleNameIgnoreCase("ARS_ADMIN")).thenReturn(arsRole);
System.out.println("when field arsRole" + arsRole);
when(arsUserRoleUsagesRepository.save(userrolemapping)).thenReturn(userrolemapping);
arsUserRoleUsagesRepository.save(userrolemapping);

pairResult = userAdministrationServiceImpl.editUserByUserName(userSearchRequest);
verify(arsUserRepository, times(2)).findByArsUserId(userSearchRequest.getUserId());
verify(arsUserRepository, times(1)).save(any(ArsUser.class));
System.out.println("userSearchRequest: " + userSearchRequest);

// verify(arsUserRoleUsagesRepository,
// times(1)).save(any(ArsUserRoleUsages.class));
verifyNoMoreInteractions(arsUserRepository);
assertTrue(pairResult.getValue());

}

// edit when enable admin is set to false
@Ignore
@SuppressWarnings("restriction")
@Test
public void testeditUserByUserName_Success() throws Exception {
Pair<String, Boolean> pairResult = new Pair<>("success", true);
UserSearchRequest userSearchRequest = new UserSearchRequest();
userSearchRequest.setAdmin("true");
userSearchRequest.setCreatedBy("");
userSearchRequest.setDescending(false);
userSearchRequest.setDomain("notbase");
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("n");
userSearchRequest.setModifiedBy("user");
userSearchRequest.setStatus("ACTIVE");
userSearchRequest.setUserId((long) 100);
userSearchRequest.setSystem("ARS");

Set<ArsUserRoleUsages> hashSet = new HashSet<>();

DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");

ArsUser updatedarsUser = new ArsUser();

updatedarsUser.setArsUserId(100);
updatedarsUser.setUserName("
DNS ");
updatedarsUser.setEnabled("ACTIVE");
updatedarsUser.setLastName("");
updatedarsUser.setFirstName("");
updatedarsUser.setMiddleName("NM");
updatedarsUser.setPhoneNumber("");
updatedarsUser.setEmailAddress("");
updatedarsUser.setLastLoginDate(dateFormat.parse("08112016"));
updatedarsUser.setDeactivationReasonCd((long) 1);
updatedarsUser.setDeactivationComments("");
updatedarsUser.setCreatedBy("ARS_ADMIN");
updatedarsUser.setDateCreated(dateFormat.parse("08112016"));
updatedarsUser.setModifiedBy("user");
updatedarsUser.setDateModified(new Date());
updatedarsUser.setEnableExport(true);
updatedarsUser.setEnableEdit(true);
updatedarsUser.setEnableAdmin(false);
updatedarsUser.setDomain("notbase");
updatedarsUser.setArsUserRoleUsageses(hashSet);

ArsRole arsRole = new ArsRole();
arsRole.setRoleName("ADMIN");
arsRole.setArsRoleId(100);
// arsRole.setArsRolePermissionsUsageses(arsRolePermissionsUsageses);
// arsRole.setArsUserRoleUsageses(userrolemapping);
arsRole.setCreatedBy("user");
arsRole.setDateCreated(dateFormat.parse("08112016"));
arsRole.setDescription("description");

ArsUserRoleUsagesId arsUserRoleUsagesId = new ArsUserRoleUsagesId();
arsUserRoleUsagesId.setArsRoleId((long) 100);
arsUserRoleUsagesId.setArsUserId((long) 100);

ArsUserRoleUsages userrolemapping = new ArsUserRoleUsages();
userrolemapping.setId(arsUserRoleUsagesId);
userrolemapping.setArsUser(updatedarsUser);
userrolemapping.setArsRole(arsRole);
userrolemapping.setCreatedBy("Admin");
userrolemapping.setDateCreated(new Date());
when(arsUserRepository.findByArsUserId((long) 100)).thenReturn(updatedarsUser);
when(arsUserRepository.save(updatedarsUser)).thenReturn(updatedarsUser);
// doNothing().when(arsUserRepository).updateUserByUserName(userSearchRequest.getUserName().toUpperCase(),
// userSearchRequest.getDomain(), true, true, true);

when(arsRoleRepository.findByRoleNameIgnoreCase("ARS_ADMIN")).thenReturn(arsRole);

doNothing().when(arsUserRoleUsagesRepository).delete(userrolemapping);
arsUserRoleUsagesRepository.delete(userrolemapping);

pairResult = userAdministrationServiceImpl.editUserByUserName(userSearchRequest);
System.out.println("pairResult: "+pairResult);
verify(arsUserRepository, times(2)).findByArsUserId(updatedarsUser.getArsUserId());
verify(arsUserRepository, times(1)).save(any(ArsUser.class));

verifyNoMoreInteractions(arsUserRepository);

// verifyNoMoreInteractions(arsUserRoleUsagesRepository);
assertTrue(pairResult.getValue());
}

@Test
public void testdeleteUserByUserName_Success() throws Exception {
Long userId = (long) 100;

Set<ArsUserRoleUsages> hashSet = new HashSet<>();

DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");

List<ArsUser> listuserDetails = new ArrayList<>();
ArsUser arsUser = new ArsUser();

arsUser.setArsUserId(100);
arsUser.setUserName("
DNS ");
arsUser.setEnabled("y");
arsUser.setLastName("user");
arsUser.setFirstName("Base");
arsUser.setMiddleName("NM");
arsUser.setPhoneNumber("");
arsUser.setEmailAddress("
PII ");
arsUser.setLastLoginDate(dateFormat.parse("08112016"));

arsUser.setArsUserRoleUsageses(hashSet);
arsUser.setCreatedBy("ARS_ADMIN");

arsUser.setDateCreated(dateFormat.parse("08112016"));

arsUser.setDateModified(dateFormat.parse("08112016"));

arsUser.setDeactivationComments("");
arsUser.setDeactivationReasonCd((long) 1);
arsUser.setDomain("Base");
arsUser.setEnableExport(true);
arsUser.setEnableEdit(true);
arsUser.setEnableAdmin(true);

listuserDetails.add(arsUser);

when(arsUserRepository.findByArsUserId(userId)).thenReturn(arsUser);
Mockito.doNothing().when(arsUserRepository).delete(arsUser);

boolean deleteUserByUserName = userAdministrationServiceImpl.deleteUserByUserName(userId);
verify(arsUserRepository, times(1)).findByArsUserId(userId);
verify(arsUserRepository, times(1)).delete(arsUser);
verifyNoMoreInteractions(arsUserRepository);

assertTrue(deleteUserByUserName);

}

}
*/