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..b8cd0c9c3 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,7 @@ 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; @@ -14,8 +16,7 @@ public class UserService implements UserDetailsService { private UserRepository userRepository; - @Autowired - public UserService(final UserRepository userRepository) { + public UserService(UserRepository userRepository) { this.userRepository = userRepository; } 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..e05048841 100644 --- a/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java +++ b/webwolf/src/test/java/org/owasp/webwolf/user/UserServiceTest.java @@ -1,10 +1,9 @@ package org.owasp.webwolf.user; - -import org.junit.Assert; -import org.junit.Before; +import org.assertj.core.api.Assertions; 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,50 +16,37 @@ public class UserServiceTest { @Mock private UserRepository mockUserRepository; - private UserService cut; - - @Before - public void setup(){ - cut = new UserService(mockUserRepository); - } + @InjectMocks + private UserService sut; @Test public void testLoadUserByUsername(){ - // setup - final String username = "guest"; - final String password = "123"; - + var username = "guest"; + var password = "123"; WebGoatUser user = new WebGoatUser(username, password); when(mockUserRepository.findByUsername(username)).thenReturn(user); - // execute - final WebGoatUser webGoatUser = cut.loadUserByUsername(username); + var webGoatUser = sut.loadUserByUsername(username); - // verify - Assert.assertEquals(username, webGoatUser.getUsername()); - Assert.assertEquals(password, webGoatUser.getPassword()); + Assertions.assertThat(username).isEqualTo(webGoatUser.getUsername()); + Assertions.assertThat(password).isEqualTo(webGoatUser.getPassword()); } @Test(expected = UsernameNotFoundException.class) public void testLoadUserByUsername_NULL(){ - // setup - final String username = "guest"; + var username = "guest"; when(mockUserRepository.findByUsername(username)).thenReturn(null); - // execute - cut.loadUserByUsername(username); + sut.loadUserByUsername(username); } @Test public void testAddUser(){ - // setup - final String username = "guest"; - final String password = "guest"; + var username = "guest"; + var password = "guest"; - // execute - cut.addUser(username, password); + sut.addUser(username, password); - // verify verify(mockUserRepository, times(1)).save(any(WebGoatUser.class)); } } 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..5c160f5e1 --- /dev/null +++ b/webwolf/src/test/java/org/owasp/webwolf/user/UserValidatorTest.java @@ -0,0 +1,77 @@ +package org.owasp.webwolf.user; + +import org.assertj.core.api.Assertions; +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; + +@RunWith(SpringJUnit4ClassRunner.class) +public class UserValidatorTest { + + @Mock + private UserRepository mockUserRepository; + + @InjectMocks + private UserValidator userValidator; + + @Test + public void validUserFormShouldNotHaveErrors() { + var validUserForm = new UserForm(); + validUserForm.setUsername("guest"); + validUserForm.setMatchingPassword("123"); + validUserForm.setPassword("123"); + BindException errors = new BindException(validUserForm, "validUserForm"); + + userValidator.validate(validUserForm, errors); + + Assertions.assertThat(errors.hasErrors()).isFalse(); + } + + @Test + public void whenPasswordDoNotMatchShouldFail() { + var validUserForm = new UserForm(); + validUserForm.setUsername("guest"); + validUserForm.setMatchingPassword("123"); + validUserForm.setPassword("124"); + BindException errors = new BindException(validUserForm, "validUserForm"); + + userValidator.validate(validUserForm, errors); + + Assertions.assertThat(errors.hasErrors()).isTrue(); + } + + @Test + public void registerExistingUserAgainShouldFail() { + var username = "guest"; + var password = "123"; + var validUserForm = new UserForm(); + validUserForm.setUsername(username); + validUserForm.setMatchingPassword(password); + validUserForm.setPassword("124"); + BindException errors = new BindException(validUserForm, "validUserForm"); + var webGoatUser = new WebGoatUser(username, password); + when(mockUserRepository.findByUsername(validUserForm.getUsername())).thenReturn(webGoatUser); + + userValidator.validate(validUserForm, errors); + + Assertions.assertThat(errors.hasErrors()).isTrue(); + } + + @Test + public void testSupports() { + Assertions.assertThat(userValidator.supports(UserForm.class)).isTrue(); + } + + @Test + public void testSupports_false() { + Assertions.assertThat(userValidator.supports(UserService.class)).isFalse(); + } +} \ No newline at end of file