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,6 +2,7 @@ package fr.plil.sio.web.mvc;
2 2
3 import org.springframework.stereotype.Controller; 3 import org.springframework.stereotype.Controller;
4 import org.springframework.validation.BindingResult; 4 import org.springframework.validation.BindingResult;
  5 +import org.springframework.web.bind.annotation.ModelAttribute;
5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.RequestMapping;
6 import org.springframework.web.bind.annotation.RequestMethod; 7 import org.springframework.web.bind.annotation.RequestMethod;
7 import org.springframework.web.servlet.ModelAndView; 8 import org.springframework.web.servlet.ModelAndView;
@@ -15,6 +16,9 @@ public class NewUserController { @@ -15,6 +16,9 @@ public class NewUserController {
15 private UserRepository userRepository; 16 private UserRepository userRepository;
16 17
17 @Resource 18 @Resource
  19 + private UserService userService;
  20 +
  21 + @Resource
18 private UserSession userSession; 22 private UserSession userSession;
19 23
20 @Resource 24 @Resource
@@ -26,7 +30,8 @@ public class NewUserController { @@ -26,7 +30,8 @@ public class NewUserController {
26 } 30 }
27 31
28 @RequestMapping(value = {"/newUser"}, method = RequestMethod.POST) 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 if (!userSession.getUsername().equals("admin")) { 36 if (!userSession.getUsername().equals("admin")) {
32 result.rejectValue("username", "new.user.only.admin"); 37 result.rejectValue("username", "new.user.only.admin");
@@ -44,7 +49,7 @@ public class NewUserController { @@ -44,7 +49,7 @@ public class NewUserController {
44 return "newUser"; 49 return "newUser";
45 } 50 }
46 51
47 - userRepository.save(user); 52 + userService.createUser(user.getUsername(), user.getPassword());
48 53
49 return "redirect:/"; 54 return "redirect:/";
50 } 55 }
@@ -60,4 +65,8 @@ public class NewUserController { @@ -60,4 +65,8 @@ public class NewUserController {
60 public void setUserFormValidator(UserFormValidator userFormValidator) { 65 public void setUserFormValidator(UserFormValidator userFormValidator) {
61 this.userFormValidator = userFormValidator; 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,23 +39,4 @@ public class User {
39 public void setPassword(String password) { 39 public void setPassword(String password) {
40 this.password = password; 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 @@ @@ -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 @@ @@ -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,29 +7,29 @@ import org.springframework.validation.BindingResult;
7 import org.springframework.web.servlet.ModelAndView; 7 import org.springframework.web.servlet.ModelAndView;
8 8
9 import static org.junit.Assert.*; 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 public class NewUserControllerTest { 12 public class NewUserControllerTest {
14 13
15 private NewUserController newUserController; 14 private NewUserController newUserController;
16 private BindingResult results; 15 private BindingResult results;
17 - private User user; 16 + private UserForm user;
18 private UserRepository userRepository; 17 private UserRepository userRepository;
19 private UserSession userSession; 18 private UserSession userSession;
20 private UserFormValidator userFormValidator; 19 private UserFormValidator userFormValidator;
  20 + private UserService userService;
21 21
22 @Before 22 @Before
23 public void createInstances() { 23 public void createInstances() {
24 newUserController = new NewUserController(); 24 newUserController = new NewUserController();
25 - user = new User(); 25 + user = new UserForm();
26 results = new BeanPropertyBindingResult(user, "user"); 26 results = new BeanPropertyBindingResult(user, "user");
27 userRepository = mock(UserRepository.class); 27 userRepository = mock(UserRepository.class);
28 -  
29 User user = new User("admin", "password"); 28 User user = new User("admin", "password");
30 when(userRepository.findByUsername("admin")).thenReturn(user); 29 when(userRepository.findByUsername("admin")).thenReturn(user);
31 -  
32 newUserController.setUserRepository(userRepository); 30 newUserController.setUserRepository(userRepository);
  31 + userService = mock(UserService.class);
  32 + newUserController.setUserService(userService);
33 userSession = new UserSession(); 33 userSession = new UserSession();
34 userSession.setUsername("admin"); 34 userSession.setUsername("admin");
35 newUserController.setUserSession(userSession); 35 newUserController.setUserSession(userSession);
@@ -49,16 +49,17 @@ public class NewUserControllerTest { @@ -49,16 +49,17 @@ public class NewUserControllerTest {
49 @Test 49 @Test
50 public void testPostNewUserSucceed() { 50 public void testPostNewUserSucceed() {
51 user.setUsername("abc"); 51 user.setUsername("abc");
52 - user.setPassword("abc"); 52 + user.setPassword("abcD#");
53 String view = newUserController.postNewUser(user, results); 53 String view = newUserController.postNewUser(user, results);
54 assertFalse(results.hasErrors()); 54 assertFalse(results.hasErrors());
55 - assertEquals("redirect:/",view); 55 + assertEquals("redirect:/", view);
  56 + verify(userService).createUser("abc", "abcD#");
56 } 57 }
57 58
58 @Test 59 @Test
59 public void testPostNewUserFailedNotAdmin() { 60 public void testPostNewUserFailedNotAdmin() {
60 user.setUsername("abc"); 61 user.setUsername("abc");
61 - user.setPassword("abc"); 62 + user.setPassword("abcD#");
62 userSession.setUsername("blabla"); 63 userSession.setUsername("blabla");
63 String view = newUserController.postNewUser(user, results); 64 String view = newUserController.postNewUser(user, results);
64 assertTrue(results.hasErrors()); 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,22 +10,22 @@ import static org.junit.Assert.assertTrue;
10 10
11 public class UserFormValidatorTest { 11 public class UserFormValidatorTest {
12 12
13 - private User user; 13 + private UserForm user;
14 private UserFormValidator validator; 14 private UserFormValidator validator;
15 private Errors results; 15 private Errors results;
16 16
17 @Before 17 @Before
18 public void createInstances() { 18 public void createInstances() {
19 validator = new UserFormValidator(); 19 validator = new UserFormValidator();
20 - user = new User(); 20 + user = new UserForm();
21 user.setUsername("abc"); 21 user.setUsername("abc");
22 - user.setPassword("abc"); 22 + user.setPassword("abc#A");
23 results = new BeanPropertyBindingResult(user, "user"); 23 results = new BeanPropertyBindingResult(user, "user");
24 } 24 }
25 25
26 @Test 26 @Test
27 public void testSupports() { 27 public void testSupports() {
28 - assertTrue(validator.supports(User.class)); 28 + assertTrue(validator.supports(UserForm.class));
29 } 29 }
30 30
31 @Test 31 @Test
@@ -34,17 +34,4 @@ public class UserFormValidatorTest { @@ -34,17 +34,4 @@ public class UserFormValidatorTest {
34 assertFalse(results.hasErrors()); 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 }