Add UserValidator tests + minor code clean up

This commit is contained in:
rjclancy 2019-03-26 20:23:28 +00:00
parent a242347ee0
commit c6c0cc60f9
3 changed files with 90 additions and 10 deletions

View File

@ -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 {

View File

@ -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

View File

@ -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));
}
}