diff --git a/webwolf/src/main/java/org/owasp/webwolf/user/UserService.java b/webwolf/src/main/java/org/owasp/webwolf/user/UserService.java index 319a9a355..85c1576ff 100644 --- a/webwolf/src/main/java/org/owasp/webwolf/user/UserService.java +++ b/webwolf/src/main/java/org/owasp/webwolf/user/UserService.java @@ -1,6 +1,6 @@ package org.owasp.webwolf.user; -import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; @@ -10,26 +10,27 @@ import org.springframework.stereotype.Service; * @since 3/19/17. */ @Service -@AllArgsConstructor public class UserService implements UserDetailsService { - private final UserRepository userRepository; + private UserRepository userRepository; + + @Autowired + public UserService(final UserRepository userRepository) { + this.userRepository = userRepository; + } @Override - public WebGoatUser loadUserByUsername(String username) throws UsernameNotFoundException { + public WebGoatUser loadUserByUsername(final String username) throws UsernameNotFoundException { WebGoatUser webGoatUser = userRepository.findByUsername(username); if (webGoatUser == null) { throw new UsernameNotFoundException("User not found"); - } else { - webGoatUser.createUser(); } + webGoatUser.createUser(); return webGoatUser; } - public void addUser(String username, String password) { + public void addUser(final String username, final String password) { userRepository.save(new WebGoatUser(username, password)); } - - } diff --git a/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java b/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java new file mode 100644 index 000000000..63da863bf --- /dev/null +++ b/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java @@ -0,0 +1,66 @@ +package org.owasp.webwolf.user; + + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.mockito.Mockito.*; + +@RunWith(SpringJUnit4ClassRunner.class) +public class UserServiceTest { + + @Mock + private UserRepository mockUserRepository; + + private UserService cut; + + @Before + public void setup(){ + cut = new UserService(mockUserRepository); + } + + @Test + public void testLoadUserByUsername(){ + // setup + final String username = "guest"; + final String password = "123"; + + WebGoatUser user = new WebGoatUser(username, password); + when(mockUserRepository.findByUsername(username)).thenReturn(user); + + // execute + final WebGoatUser webGoatUser = cut.loadUserByUsername(username); + + // verify + Assert.assertEquals(username, webGoatUser.getUsername()); + Assert.assertEquals(password, webGoatUser.getPassword()); + } + + @Test(expected = UsernameNotFoundException.class) + public void testLoadUserByUsername_NULL(){ + // setup + final String username = "guest"; + when(mockUserRepository.findByUsername(username)).thenReturn(null); + + // execute + cut.loadUserByUsername(username); + } + + @Test + public void testAddUser(){ + // setup + final String username = "guest"; + final String password = "guest"; + + // execute + cut.addUser(username, password); + + // verify + verify(mockUserRepository, times(1)).save(any(WebGoatUser.class)); + } +}