From 2afad654f72b977162e43ad69e80fa006d9db1ad Mon Sep 17 00:00:00 2001 From: Julien Iguchi-Cartigny Date: Tue, 7 Jul 2015 14:25:35 +0200 Subject: [PATCH] deal with userForm --- src/main/java/fr/plil/sio/web/mvc/NewUserController.java | 13 +++++++++++-- src/main/java/fr/plil/sio/web/mvc/User.java | 19 ------------------- src/main/java/fr/plil/sio/web/mvc/UserService.java | 6 ++++++ src/main/java/fr/plil/sio/web/mvc/UserServiceImpl.java | 23 +++++++++++++++++++++++ src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java | 19 ++++++++++--------- src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java | 21 ++++----------------- 6 files changed, 54 insertions(+), 47 deletions(-) create mode 100644 src/main/java/fr/plil/sio/web/mvc/UserService.java create mode 100644 src/main/java/fr/plil/sio/web/mvc/UserServiceImpl.java diff --git a/src/main/java/fr/plil/sio/web/mvc/NewUserController.java b/src/main/java/fr/plil/sio/web/mvc/NewUserController.java index 7439c39..f85980e 100644 --- a/src/main/java/fr/plil/sio/web/mvc/NewUserController.java +++ b/src/main/java/fr/plil/sio/web/mvc/NewUserController.java @@ -2,6 +2,7 @@ package fr.plil.sio.web.mvc; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @@ -15,6 +16,9 @@ public class NewUserController { private UserRepository userRepository; @Resource + private UserService userService; + + @Resource private UserSession userSession; @Resource @@ -26,7 +30,8 @@ public class NewUserController { } @RequestMapping(value = {"/newUser"}, method = RequestMethod.POST) - public String postNewUser(User user, BindingResult result) { + public String postNewUser(@ModelAttribute("userForm") UserForm user, + BindingResult result) { if (!userSession.getUsername().equals("admin")) { result.rejectValue("username", "new.user.only.admin"); @@ -44,7 +49,7 @@ public class NewUserController { return "newUser"; } - userRepository.save(user); + userService.createUser(user.getUsername(), user.getPassword()); return "redirect:/"; } @@ -60,4 +65,8 @@ public class NewUserController { public void setUserFormValidator(UserFormValidator userFormValidator) { this.userFormValidator = userFormValidator; } + + public void setUserService(UserService userService) { + this.userService = userService; + } } diff --git a/src/main/java/fr/plil/sio/web/mvc/User.java b/src/main/java/fr/plil/sio/web/mvc/User.java index c732335..b35e576 100644 --- a/src/main/java/fr/plil/sio/web/mvc/User.java +++ b/src/main/java/fr/plil/sio/web/mvc/User.java @@ -39,23 +39,4 @@ public class User { public void setPassword(String password) { this.password = password; } - - @Override - public boolean equals(Object obj) { - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final User other = (User) obj; - return !((this.username == null) ? (other.username != null) : !this.username.equals(other.username)); - } - - @Override - public int hashCode() { - int hash = 7; - hash = 29 * hash + (this.username != null ? this.username.hashCode() : 0); - return hash; - } } diff --git a/src/main/java/fr/plil/sio/web/mvc/UserService.java b/src/main/java/fr/plil/sio/web/mvc/UserService.java new file mode 100644 index 0000000..976d1f5 --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/UserService.java @@ -0,0 +1,6 @@ +package fr.plil.sio.web.mvc; + +public interface UserService { + + User createUser(String username, String password); +} diff --git a/src/main/java/fr/plil/sio/web/mvc/UserServiceImpl.java b/src/main/java/fr/plil/sio/web/mvc/UserServiceImpl.java new file mode 100644 index 0000000..569854e --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/UserServiceImpl.java @@ -0,0 +1,23 @@ +package fr.plil.sio.web.mvc; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +@Service("userService") +public class UserServiceImpl implements UserService { + + @Resource + private UserRepository userRepository; + + @Override + @Transactional + public User createUser(String username, String password) { + User user = new User(); + user.setUsername(username); + user.setPassword(password); + userRepository.save(user); + return user; + } +} diff --git a/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java b/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java index 449bfdc..48c0042 100644 --- a/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java +++ b/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java @@ -7,29 +7,29 @@ import org.springframework.validation.BindingResult; import org.springframework.web.servlet.ModelAndView; import static org.junit.Assert.*; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; public class NewUserControllerTest { private NewUserController newUserController; private BindingResult results; - private User user; + private UserForm user; private UserRepository userRepository; private UserSession userSession; private UserFormValidator userFormValidator; + private UserService userService; @Before public void createInstances() { newUserController = new NewUserController(); - user = new User(); + user = new UserForm(); results = new BeanPropertyBindingResult(user, "user"); userRepository = mock(UserRepository.class); - User user = new User("admin", "password"); when(userRepository.findByUsername("admin")).thenReturn(user); - newUserController.setUserRepository(userRepository); + userService = mock(UserService.class); + newUserController.setUserService(userService); userSession = new UserSession(); userSession.setUsername("admin"); newUserController.setUserSession(userSession); @@ -49,16 +49,17 @@ public class NewUserControllerTest { @Test public void testPostNewUserSucceed() { user.setUsername("abc"); - user.setPassword("abc"); + user.setPassword("abcD#"); String view = newUserController.postNewUser(user, results); assertFalse(results.hasErrors()); - assertEquals("redirect:/",view); + assertEquals("redirect:/", view); + verify(userService).createUser("abc", "abcD#"); } @Test public void testPostNewUserFailedNotAdmin() { user.setUsername("abc"); - user.setPassword("abc"); + user.setPassword("abcD#"); userSession.setUsername("blabla"); String view = newUserController.postNewUser(user, results); assertTrue(results.hasErrors()); diff --git a/src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java b/src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java index ab6b411..44c8a9d 100644 --- a/src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java +++ b/src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java @@ -10,22 +10,22 @@ import static org.junit.Assert.assertTrue; public class UserFormValidatorTest { - private User user; + private UserForm user; private UserFormValidator validator; private Errors results; @Before public void createInstances() { validator = new UserFormValidator(); - user = new User(); + user = new UserForm(); user.setUsername("abc"); - user.setPassword("abc"); + user.setPassword("abc#A"); results = new BeanPropertyBindingResult(user, "user"); } @Test public void testSupports() { - assertTrue(validator.supports(User.class)); + assertTrue(validator.supports(UserForm.class)); } @Test @@ -34,17 +34,4 @@ public class UserFormValidatorTest { assertFalse(results.hasErrors()); } - @Test - public void testValidatePasswordTooShort() { - user.setPassword("ab"); - validator.validate(user,results); - assertTrue(results.hasErrors()); - } - - @Test - public void testValidateUsernameTooShort() { - user.setUsername("ab"); - validator.validate(user,results); - assertTrue(results.hasErrors()); - } } -- libgit2 0.21.2