From 909a00704202612de6d4a3986615804d4a6de161 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 20 Jun 2012 16:55:59 +0200 Subject: [PATCH] Fixed some users related tests due to previous patch FEA: ItEr76S30PermissionsEnhancements --- .../users/bootstrap/ProfilesBootstrap.java | 6 ++++-- .../users/bootstrap/UsersBootstrapInDB.java | 2 ++ .../users/services/DBUserDetailsService.java | 7 +++---- .../services/LDAPUserDetailsService.java | 7 +++---- .../bootstrap/UsersBootstrapInDBTest.java | 18 +++++++++------- .../services/DBUserDetailsServiceTest.java | 21 +++++++++++++++---- .../services/LDAPUserDetailsServiceTest.java | 16 +++++++++++++- 7 files changed, 55 insertions(+), 22 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/users/bootstrap/ProfilesBootstrap.java b/libreplan-business/src/main/java/org/libreplan/business/users/bootstrap/ProfilesBootstrap.java index f0d3bb461..4f6e46c14 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/users/bootstrap/ProfilesBootstrap.java +++ b/libreplan-business/src/main/java/org/libreplan/business/users/bootstrap/ProfilesBootstrap.java @@ -43,8 +43,10 @@ public class ProfilesBootstrap implements IProfileBootstrap { @Transactional public void loadRequiredData() { if (profileDAO.list(Profile.class).isEmpty()) { - for (PredefinedProfiles profile : PredefinedProfiles.values()) { - profileDAO.save(profile.createProfile()); + for (PredefinedProfiles each : PredefinedProfiles.values()) { + Profile profile = each.createProfile(); + profileDAO.save(profile); + profile.dontPoseAsTransientObjectAnymore(); } } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/bootstrap/UsersBootstrapInDB.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/bootstrap/UsersBootstrapInDB.java index cdbfce05d..4ead3747d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/bootstrap/UsersBootstrapInDB.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/bootstrap/UsersBootstrapInDB.java @@ -21,6 +21,7 @@ package org.libreplan.web.users.bootstrap; +import org.libreplan.business.BootstrapOrder; import org.libreplan.business.users.daos.IUserDAO; import org.libreplan.business.users.entities.User; import org.libreplan.web.users.services.IDBPasswordEncoderService; @@ -34,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional; * @author Manuel Rego Casasnovas */ @Transactional +@BootstrapOrder(1) public class UsersBootstrapInDB implements IUsersBootstrapInDB { @Autowired diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/services/DBUserDetailsService.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/services/DBUserDetailsService.java index 472e75fb5..34a4b3930 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/services/DBUserDetailsService.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/services/DBUserDetailsService.java @@ -21,8 +21,7 @@ package org.libreplan.web.users.services; -import static org.libreplan.web.I18nHelper._; - +import java.text.MessageFormat; import java.util.Set; import org.libreplan.business.common.exceptions.InstanceNotFoundException; @@ -63,8 +62,8 @@ public class DBUserDetailsService implements UserDetailsService { try { user = userDAO.findByLoginName(loginName); } catch (InstanceNotFoundException e) { - throw new UsernameNotFoundException(_( - "User with username '{0}': not found", loginName)); + throw new UsernameNotFoundException(MessageFormat.format( + "User with username {0}: not found", loginName)); } Scenario scenario = user.getLastConnectedScenario(); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/services/LDAPUserDetailsService.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/services/LDAPUserDetailsService.java index 83ebc325f..782a81674 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/services/LDAPUserDetailsService.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/services/LDAPUserDetailsService.java @@ -18,8 +18,7 @@ */ package org.libreplan.web.users.services; -import static org.libreplan.web.I18nHelper._; - +import java.text.MessageFormat; import java.util.Set; import org.libreplan.business.common.exceptions.InstanceNotFoundException; @@ -62,8 +61,8 @@ public class LDAPUserDetailsService implements UserDetailsService { try { user = userDAO.findByLoginName(loginName); } catch (InstanceNotFoundException e) { - throw new UsernameNotFoundException(_("User with username " - + "'{0}': not found", loginName)); + throw new UsernameNotFoundException(MessageFormat.format( + "User with username {0}: not found", loginName)); } Scenario scenario = user.getLastConnectedScenario(); diff --git a/libreplan-webapp/src/test/java/org/libreplan/web/test/users/bootstrap/UsersBootstrapInDBTest.java b/libreplan-webapp/src/test/java/org/libreplan/web/test/users/bootstrap/UsersBootstrapInDBTest.java index 8d4ac5c6f..5225eb730 100644 --- a/libreplan-webapp/src/test/java/org/libreplan/web/test/users/bootstrap/UsersBootstrapInDBTest.java +++ b/libreplan-webapp/src/test/java/org/libreplan/web/test/users/bootstrap/UsersBootstrapInDBTest.java @@ -31,11 +31,13 @@ import static org.libreplan.web.test.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CO import org.junit.Test; import org.junit.runner.RunWith; import org.libreplan.business.common.exceptions.InstanceNotFoundException; +import org.libreplan.business.users.bootstrap.IProfileBootstrap; import org.libreplan.business.users.daos.IUserDAO; import org.libreplan.business.users.entities.User; import org.libreplan.web.users.bootstrap.IUsersBootstrapInDB; import org.libreplan.web.users.bootstrap.MandatoryUser; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; @@ -53,6 +55,9 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class UsersBootstrapInDBTest { + @Autowired + private IProfileBootstrap profileBootstrap; + @Autowired private IUsersBootstrapInDB usersBootstrap; @@ -60,16 +65,14 @@ public class UsersBootstrapInDBTest { private IUserDAO userDAO; @Test + @Rollback(false) public void testMandatoryUsersCreated() throws InstanceNotFoundException { + profileBootstrap.loadRequiredData(); - checkLoadRequiredData(); - - /* - * Load data again to verify that a second load does not cause - * problems. - */ - checkLoadRequiredData(); + checkLoadRequiredData(); + // Load data again to verify that a second load does not cause problems + checkLoadRequiredData(); } private void checkLoadRequiredData() throws InstanceNotFoundException { @@ -82,6 +85,7 @@ public class UsersBootstrapInDBTest { assertEquals(u.getLoginName(), user.getLoginName()); assertEquals(u.getInitialRoles(), user.getRoles()); + assertEquals(u.getInitialProfiles(), user.getProfiles()); } diff --git a/libreplan-webapp/src/test/java/org/libreplan/web/test/users/services/DBUserDetailsServiceTest.java b/libreplan-webapp/src/test/java/org/libreplan/web/test/users/services/DBUserDetailsServiceTest.java index e075dde3d..0060f2b54 100644 --- a/libreplan-webapp/src/test/java/org/libreplan/web/test/users/services/DBUserDetailsServiceTest.java +++ b/libreplan-webapp/src/test/java/org/libreplan/web/test/users/services/DBUserDetailsServiceTest.java @@ -37,6 +37,7 @@ import org.junit.runner.RunWith; import org.libreplan.business.common.IAdHocTransactionService; import org.libreplan.business.common.IOnTransaction; import org.libreplan.business.scenarios.bootstrap.IScenariosBootstrap; +import org.libreplan.business.users.entities.Profile; import org.libreplan.business.users.entities.UserRole; import org.libreplan.web.users.bootstrap.IUsersBootstrapInDB; import org.libreplan.web.users.bootstrap.MandatoryUser; @@ -96,17 +97,29 @@ public class DBUserDetailsServiceTest { for (MandatoryUser u : MandatoryUser.values()) { - UserDetails userDetails = - userDetailsService.loadUserByUsername(u.getLoginName()); - + UserDetails userDetails = userDetailsService.loadUserByUsername(u + .getLoginName()); assertEquals(u.getLoginName(), userDetails.getUsername()); - assertEquals(u.getInitialRoles(), getUserRoles(userDetails)); + assertEquals(getUserRoles(u), getUserRoles(userDetails)); } } + private Object getUserRoles(MandatoryUser u) { + Set userRoles = new HashSet(); + + userRoles.addAll(u.getInitialRoles()); + + Set initialProfiles = u.getInitialProfiles(); + for (Profile profile : initialProfiles) { + userRoles.addAll(profile.getRoles()); + } + + return userRoles; + } + private Set getUserRoles(UserDetails userDetails) { Set userRoles = new HashSet(); diff --git a/libreplan-webapp/src/test/java/org/libreplan/web/test/users/services/LDAPUserDetailsServiceTest.java b/libreplan-webapp/src/test/java/org/libreplan/web/test/users/services/LDAPUserDetailsServiceTest.java index f1a826199..76444c445 100644 --- a/libreplan-webapp/src/test/java/org/libreplan/web/test/users/services/LDAPUserDetailsServiceTest.java +++ b/libreplan-webapp/src/test/java/org/libreplan/web/test/users/services/LDAPUserDetailsServiceTest.java @@ -35,6 +35,7 @@ import org.junit.runner.RunWith; import org.libreplan.business.common.IAdHocTransactionService; import org.libreplan.business.common.IOnTransaction; import org.libreplan.business.scenarios.bootstrap.IScenariosBootstrap; +import org.libreplan.business.users.entities.Profile; import org.libreplan.business.users.entities.UserRole; import org.libreplan.web.users.bootstrap.IUsersBootstrapInDB; import org.libreplan.web.users.bootstrap.MandatoryUser; @@ -104,12 +105,25 @@ public class LDAPUserDetailsServiceTest { assertEquals(u.getLoginName(), userDetails.getUsername()); - assertEquals(u.getInitialRoles(), getUserRoles(userDetails)); + assertEquals(getUserRoles(u), getUserRoles(userDetails)); } } + private Object getUserRoles(MandatoryUser u) { + Set userRoles = new HashSet(); + + userRoles.addAll(u.getInitialRoles()); + + Set initialProfiles = u.getInitialProfiles(); + for (Profile profile : initialProfiles) { + userRoles.addAll(profile.getRoles()); + } + + return userRoles; + } + private Set getUserRoles(UserDetails userDetails) { Set userRoles = new HashSet();