package uk.ac.ox.zoo.seeg.abraid.mp.publicsite.security; import org.junit.Test; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import uk.ac.ox.zoo.seeg.abraid.mp.common.dao.*; import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.Expert; import uk.ac.ox.zoo.seeg.abraid.mp.common.service.core.ExpertServiceImpl; import uk.ac.ox.zoo.seeg.abraid.mp.publicsite.domain.PublicSiteUser; import java.util.ArrayList; import java.util.Collection; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Tests the UserDetailsService class. * Copyright (c) 2014 University of Oxford */ public class UserDetailsServiceTest { @Test public void loadUserByUsername() { AdminUnitReviewDao adminUnitReviewDao = mock(AdminUnitReviewDao.class); ExpertDao expertDao = mock(ExpertDao.class); DiseaseOccurrenceDao diseaseOccurrenceDao = mock(DiseaseOccurrenceDao.class); DiseaseGroupDao diseaseGroupDao = mock(DiseaseGroupDao.class); DiseaseOccurrenceReviewDao diseaseOccurrenceReviewDao = mock(DiseaseOccurrenceReviewDao.class); UserDetailsService userDetailsService = new UserDetailsServiceImpl(new ExpertServiceImpl(adminUnitReviewDao, expertDao, diseaseGroupDao, diseaseOccurrenceDao, diseaseOccurrenceReviewDao, null, null)); String fullName = "Helena Patching"; String email = "helena.patching@zoo.ox.ac.uk"; int id = 1; String hashedPassword = "$2a$10$JdJkIeiqwA8Kso3WfvYlT.//vz2M1Tu5iXSy3w0opBtf8cBQEik3y"; boolean isAdministrator = true; Collection<GrantedAuthority> authorities = new ArrayList<>(); authorities.add(new SimpleGrantedAuthority("ROLE_USER")); authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN")); UserDetails user = new PublicSiteUser(id, email, fullName, hashedPassword, authorities); Expert expert = mock(Expert.class); when(expert.getName()).thenReturn(fullName); when(expert.getEmail()).thenReturn(email); when(expert.getPassword()).thenReturn(hashedPassword); when(expert.isAdministrator()).thenReturn(isAdministrator); when(expert.getId()).thenReturn(id); when(expertDao.getByEmail(email)).thenReturn(expert); UserDetails testUser = userDetailsService.loadUserByUsername(email); assertThat(testUser).isEqualTo(user); } }