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 85c1576ff..90a430a1c 100644 --- a/webwolf/src/main/java/org/owasp/webwolf/user/UserService.java +++ b/webwolf/src/main/java/org/owasp/webwolf/user/UserService.java @@ -1,5 +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; @@ -10,14 +11,11 @@ import org.springframework.stereotype.Service; * @since 3/19/17. */ @Service +@AllArgsConstructor public class UserService implements UserDetailsService { - private UserRepository userRepository; - @Autowired - public UserService(final UserRepository userRepository) { - this.userRepository = userRepository; - } + private UserRepository userRepository; @Override public WebGoatUser loadUserByUsername(final String username) throws UsernameNotFoundException { diff --git a/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java b/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java index 63da863bf..ad53e36ec 100644 --- a/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java +++ b/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java @@ -5,6 +5,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -17,13 +18,9 @@ public class UserServiceTest { @Mock private UserRepository mockUserRepository; + @InjectMocks private UserService cut; - @Before - public void setup(){ - cut = new UserService(mockUserRepository); - } - @Test public void testLoadUserByUsername(){ // setup diff --git a/webwolf/src/test/java/org/owasp/webwolf/user/UserValidatorTest.java b/webwolf/src/test/java/org/owasp/webwolf/user/UserValidatorTest.java new file mode 100644 index 000000000..60e614a58 --- /dev/null +++ b/webwolf/src/test/java/org/owasp/webwolf/user/UserValidatorTest.java @@ -0,0 +1,85 @@ +package org.owasp.webwolf.user; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.validation.BindException; + +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertFalse; +import static org.mockito.Mockito.when; + +/** + * @author rjclancy + * @since 3/26/19. + */ +@RunWith(SpringJUnit4ClassRunner.class) +public class UserValidatorTest { + + @Mock + private UserRepository mockUserRepository; + + @InjectMocks + private UserValidator userValidator; + + @Test + public void testValidUserForm() { + UserForm validUserForm = new UserForm(); + validUserForm.setUsername("guest"); + validUserForm.setMatchingPassword("123"); + validUserForm.setPassword("123"); + BindException errors = new BindException(validUserForm, "validUserForm"); + + userValidator.validate(validUserForm, errors); + + assertFalse(errors.hasErrors()); + } + + @Test + public void testValidUserForm_INVALID_PASSWORD() { + UserForm validUserForm = new UserForm(); + validUserForm.setUsername("guest"); + validUserForm.setMatchingPassword("123"); + validUserForm.setPassword("124"); + BindException errors = new BindException(validUserForm, "validUserForm"); + + userValidator.validate(validUserForm, errors); + + assertTrue(errors.hasErrors()); + } + + @Test + public void testValidUserForm_DUPLICATE_USER() { + // setup + final String username = "guest"; + final String password = "123"; + + UserForm validUserForm = new UserForm(); + validUserForm.setUsername(username); + validUserForm.setMatchingPassword(password); + validUserForm.setPassword("124"); + BindException errors = new BindException(validUserForm, "validUserForm"); + + WebGoatUser webGoatUser = new WebGoatUser(username, password); + when(mockUserRepository.findByUsername(validUserForm.getUsername())).thenReturn(webGoatUser); + + // execute + userValidator.validate(validUserForm, errors); + + // verify + assertTrue(errors.hasErrors()); + } + + @Test + public void testSupports(){ + Assert.assertTrue(userValidator.supports(UserForm.class)); + } + + @Test + public void testSupports_false(){ + Assert.assertFalse(userValidator.supports(UserService.class)); + } +} \ No newline at end of file