Commit 2afad654f72b977162e43ad69e80fa006d9db1ad

Authored by Julien Iguchi-Cartigny
1 parent 0399d385

deal with userForm

src/main/java/fr/plil/sio/web/mvc/NewUserController.java
... ... @@ -2,6 +2,7 @@ package fr.plil.sio.web.mvc;
2 2  
3 3 import org.springframework.stereotype.Controller;
4 4 import org.springframework.validation.BindingResult;
  5 +import org.springframework.web.bind.annotation.ModelAttribute;
5 6 import org.springframework.web.bind.annotation.RequestMapping;
6 7 import org.springframework.web.bind.annotation.RequestMethod;
7 8 import org.springframework.web.servlet.ModelAndView;
... ... @@ -15,6 +16,9 @@ public class NewUserController {
15 16 private UserRepository userRepository;
16 17  
17 18 @Resource
  19 + private UserService userService;
  20 +
  21 + @Resource
18 22 private UserSession userSession;
19 23  
20 24 @Resource
... ... @@ -26,7 +30,8 @@ public class NewUserController {
26 30 }
27 31  
28 32 @RequestMapping(value = {"/newUser"}, method = RequestMethod.POST)
29   - public String postNewUser(User user, BindingResult result) {
  33 + public String postNewUser(@ModelAttribute("userForm") UserForm user,
  34 + BindingResult result) {
30 35  
31 36 if (!userSession.getUsername().equals("admin")) {
32 37 result.rejectValue("username", "new.user.only.admin");
... ... @@ -44,7 +49,7 @@ public class NewUserController {
44 49 return "newUser";
45 50 }
46 51  
47   - userRepository.save(user);
  52 + userService.createUser(user.getUsername(), user.getPassword());
48 53  
49 54 return "redirect:/";
50 55 }
... ... @@ -60,4 +65,8 @@ public class NewUserController {
60 65 public void setUserFormValidator(UserFormValidator userFormValidator) {
61 66 this.userFormValidator = userFormValidator;
62 67 }
  68 +
  69 + public void setUserService(UserService userService) {
  70 + this.userService = userService;
  71 + }
63 72 }
... ...
src/main/java/fr/plil/sio/web/mvc/User.java
... ... @@ -39,23 +39,4 @@ public class User {
39 39 public void setPassword(String password) {
40 40 this.password = password;
41 41 }
42   -
43   - @Override
44   - public boolean equals(Object obj) {
45   - if (obj == null) {
46   - return false;
47   - }
48   - if (getClass() != obj.getClass()) {
49   - return false;
50   - }
51   - final User other = (User) obj;
52   - return !((this.username == null) ? (other.username != null) : !this.username.equals(other.username));
53   - }
54   -
55   - @Override
56   - public int hashCode() {
57   - int hash = 7;
58   - hash = 29 * hash + (this.username != null ? this.username.hashCode() : 0);
59   - return hash;
60   - }
61 42 }
... ...
src/main/java/fr/plil/sio/web/mvc/UserService.java 0 โ†’ 100644
... ... @@ -0,0 +1,6 @@
  1 +package fr.plil.sio.web.mvc;
  2 +
  3 +public interface UserService {
  4 +
  5 + User createUser(String username, String password);
  6 +}
... ...
src/main/java/fr/plil/sio/web/mvc/UserServiceImpl.java 0 โ†’ 100644
... ... @@ -0,0 +1,23 @@
  1 +package fr.plil.sio.web.mvc;
  2 +
  3 +import org.springframework.stereotype.Service;
  4 +import org.springframework.transaction.annotation.Transactional;
  5 +
  6 +import javax.annotation.Resource;
  7 +
  8 +@Service("userService")
  9 +public class UserServiceImpl implements UserService {
  10 +
  11 + @Resource
  12 + private UserRepository userRepository;
  13 +
  14 + @Override
  15 + @Transactional
  16 + public User createUser(String username, String password) {
  17 + User user = new User();
  18 + user.setUsername(username);
  19 + user.setPassword(password);
  20 + userRepository.save(user);
  21 + return user;
  22 + }
  23 +}
... ...
src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java
... ... @@ -7,29 +7,29 @@ import org.springframework.validation.BindingResult;
7 7 import org.springframework.web.servlet.ModelAndView;
8 8  
9 9 import static org.junit.Assert.*;
10   -import static org.mockito.Mockito.mock;
11   -import static org.mockito.Mockito.when;
  10 +import static org.mockito.Mockito.*;
12 11  
13 12 public class NewUserControllerTest {
14 13  
15 14 private NewUserController newUserController;
16 15 private BindingResult results;
17   - private User user;
  16 + private UserForm user;
18 17 private UserRepository userRepository;
19 18 private UserSession userSession;
20 19 private UserFormValidator userFormValidator;
  20 + private UserService userService;
21 21  
22 22 @Before
23 23 public void createInstances() {
24 24 newUserController = new NewUserController();
25   - user = new User();
  25 + user = new UserForm();
26 26 results = new BeanPropertyBindingResult(user, "user");
27 27 userRepository = mock(UserRepository.class);
28   -
29 28 User user = new User("admin", "password");
30 29 when(userRepository.findByUsername("admin")).thenReturn(user);
31   -
32 30 newUserController.setUserRepository(userRepository);
  31 + userService = mock(UserService.class);
  32 + newUserController.setUserService(userService);
33 33 userSession = new UserSession();
34 34 userSession.setUsername("admin");
35 35 newUserController.setUserSession(userSession);
... ... @@ -49,16 +49,17 @@ public class NewUserControllerTest {
49 49 @Test
50 50 public void testPostNewUserSucceed() {
51 51 user.setUsername("abc");
52   - user.setPassword("abc");
  52 + user.setPassword("abcD#");
53 53 String view = newUserController.postNewUser(user, results);
54 54 assertFalse(results.hasErrors());
55   - assertEquals("redirect:/",view);
  55 + assertEquals("redirect:/", view);
  56 + verify(userService).createUser("abc", "abcD#");
56 57 }
57 58  
58 59 @Test
59 60 public void testPostNewUserFailedNotAdmin() {
60 61 user.setUsername("abc");
61   - user.setPassword("abc");
  62 + user.setPassword("abcD#");
62 63 userSession.setUsername("blabla");
63 64 String view = newUserController.postNewUser(user, results);
64 65 assertTrue(results.hasErrors());
... ...
src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java
... ... @@ -10,22 +10,22 @@ import static org.junit.Assert.assertTrue;
10 10  
11 11 public class UserFormValidatorTest {
12 12  
13   - private User user;
  13 + private UserForm user;
14 14 private UserFormValidator validator;
15 15 private Errors results;
16 16  
17 17 @Before
18 18 public void createInstances() {
19 19 validator = new UserFormValidator();
20   - user = new User();
  20 + user = new UserForm();
21 21 user.setUsername("abc");
22   - user.setPassword("abc");
  22 + user.setPassword("abc#A");
23 23 results = new BeanPropertyBindingResult(user, "user");
24 24 }
25 25  
26 26 @Test
27 27 public void testSupports() {
28   - assertTrue(validator.supports(User.class));
  28 + assertTrue(validator.supports(UserForm.class));
29 29 }
30 30  
31 31 @Test
... ... @@ -34,17 +34,4 @@ public class UserFormValidatorTest {
34 34 assertFalse(results.hasErrors());
35 35 }
36 36  
37   - @Test
38   - public void testValidatePasswordTooShort() {
39   - user.setPassword("ab");
40   - validator.validate(user,results);
41   - assertTrue(results.hasErrors());
42   - }
43   -
44   - @Test
45   - public void testValidateUsernameTooShort() {
46   - user.setUsername("ab");
47   - validator.validate(user,results);
48   - assertTrue(results.hasErrors());
49   - }
50 37 }
... ...