From e91faa776bd033c94e39ae6e9a93184cd657a486 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Mon, 25 Jun 2012 12:28:12 +0200 Subject: [PATCH] Finally fixing users and profiles related tests changing the way to define default users FEA: ItEr76S30PermissionsEnhancements --- .../users/bootstrap/PredefinedProfiles.java | 15 +++-- .../web/users/bootstrap/PredefinedUsers.java | 25 ++++---- .../users/bootstrap/UsersBootstrapInDB.java | 24 +++++++- .../bootstrap/UsersBootstrapInDBTest.java | 58 ++++--------------- .../services/DBUserDetailsServiceTest.java | 14 ++--- .../services/LDAPUserDetailsServiceTest.java | 12 ++-- 6 files changed, 67 insertions(+), 81 deletions(-) diff --git a/libreplan-business/src/main/java/org/libreplan/business/users/bootstrap/PredefinedProfiles.java b/libreplan-business/src/main/java/org/libreplan/business/users/bootstrap/PredefinedProfiles.java index a4691e255..1d91c3043 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/users/bootstrap/PredefinedProfiles.java +++ b/libreplan-business/src/main/java/org/libreplan/business/users/bootstrap/PredefinedProfiles.java @@ -59,9 +59,8 @@ import static org.libreplan.business.users.entities.UserRole.ROLE_WORK_AND_PROGR import java.util.Arrays; import java.util.HashSet; +import java.util.Set; -import org.libreplan.business.common.Registry; -import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.users.entities.Profile; import org.libreplan.business.users.entities.UserRole; @@ -129,12 +128,12 @@ public enum PredefinedProfiles { .create(name, new HashSet(Arrays.asList(roles))); } - public Profile getFromDB() { - try { - return Registry.getProfileDAO().findByProfileNameLoadingRoles(name); - } catch (InstanceNotFoundException e) { - return null; - } + public String getName() { + return name; + } + + public Set getRoles() { + return new HashSet(Arrays.asList(roles)); } } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/users/bootstrap/PredefinedUsers.java b/libreplan-webapp/src/main/java/org/libreplan/web/users/bootstrap/PredefinedUsers.java index 0f3f051be..ed1c93c47 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/users/bootstrap/PredefinedUsers.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/users/bootstrap/PredefinedUsers.java @@ -31,7 +31,6 @@ import org.libreplan.business.common.Configuration; import org.libreplan.business.common.Registry; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.users.bootstrap.PredefinedProfiles; -import org.libreplan.business.users.entities.Profile; import org.libreplan.business.users.entities.UserRole; /** @@ -81,8 +80,7 @@ public enum PredefinedUsers { .getChangedDefaultWssubcontractingPassword(); } }, - MANAGER(null, - Arrays.asList(PredefinedProfiles.PROJECT_MANAGER.getFromDB()), + MANAGER(null, Arrays.asList(PredefinedProfiles.PROJECT_MANAGER), Configuration.isExampleUsersDisabled()) { @Override public boolean hasChangedDefaultPassword() { @@ -91,22 +89,22 @@ public enum PredefinedUsers { } }, HRESOURCES(null, Arrays - .asList(PredefinedProfiles.HUMAN_RESOURCES_AND_COSTS_MANAGER - .getFromDB()), Configuration.isExampleUsersDisabled()) { + .asList(PredefinedProfiles.HUMAN_RESOURCES_AND_COSTS_MANAGER), + Configuration.isExampleUsersDisabled()) { @Override public boolean hasChangedDefaultPassword() { return getConfiguration().getChangedDefaultManagerPassword(); } }, - OUTSOURCING(null, Arrays.asList(PredefinedProfiles.OUTSOURCING_MANAGER - .getFromDB()), Configuration.isExampleUsersDisabled()) { + OUTSOURCING(null, Arrays.asList(PredefinedProfiles.OUTSOURCING_MANAGER), + Configuration.isExampleUsersDisabled()) { @Override public boolean hasChangedDefaultPassword() { return getConfiguration().getChangedDefaultManagerPassword(); } }, - REPORTS(null, Arrays.asList(PredefinedProfiles.REPORTS_RESPONSIBLE - .getFromDB()), Configuration.isExampleUsersDisabled()) { + REPORTS(null, Arrays.asList(PredefinedProfiles.REPORTS_RESPONSIBLE), + Configuration.isExampleUsersDisabled()) { @Override public boolean hasChangedDefaultPassword() { return getConfiguration().getChangedDefaultManagerPassword(); @@ -135,7 +133,7 @@ public enum PredefinedUsers { private Set initialRoles = new HashSet(); - private Set initialProfiles = new HashSet(); + private Set initialProfiles = new HashSet(); private final boolean userDisabled; @@ -145,12 +143,13 @@ public enum PredefinedUsers { } private PredefinedUsers(Collection initialUserRoles, - Collection initialProfiles, boolean userDisabled) { + Collection initialProfiles, boolean userDisabled) { if (initialUserRoles != null) { this.initialRoles = new HashSet(initialUserRoles); } if (initialProfiles != null) { - this.initialProfiles = new HashSet(initialProfiles); + this.initialProfiles = new HashSet( + initialProfiles); } this.userDisabled = userDisabled; } @@ -177,7 +176,7 @@ public enum PredefinedUsers { return initialRoles; } - public Set getInitialProfiles() { + public Set getInitialProfiles() { return initialProfiles; } 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 f00e09928..7942dfc10 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,8 +21,15 @@ package org.libreplan.web.users.bootstrap; +import java.util.HashSet; +import java.util.Set; + import org.libreplan.business.BootstrapOrder; +import org.libreplan.business.common.exceptions.InstanceNotFoundException; +import org.libreplan.business.users.bootstrap.PredefinedProfiles; +import org.libreplan.business.users.daos.IProfileDAO; import org.libreplan.business.users.daos.IUserDAO; +import org.libreplan.business.users.entities.Profile; import org.libreplan.business.users.entities.User; import org.libreplan.web.users.services.IDBPasswordEncoderService; import org.springframework.beans.factory.annotation.Autowired; @@ -41,6 +48,9 @@ public class UsersBootstrapInDB implements IUsersBootstrapInDB { @Autowired private IUserDAO userDAO; + @Autowired + private IProfileDAO profileDAO; + private IDBPasswordEncoderService dbPasswordEncoderService; public void setDbPasswordEncoderService( @@ -57,7 +67,7 @@ public class UsersBootstrapInDB implements IUsersBootstrapInDB { for (PredefinedUsers u : PredefinedUsers.values()) { User user = User.create(u.getLoginName(), getEncodedPassword(u), u.getInitialRoles(), - u.getInitialProfiles()); + getProfiles(u.getInitialProfiles())); user.setDisabled(u.isUserDisabled()); userDAO.save(user); @@ -66,6 +76,18 @@ public class UsersBootstrapInDB implements IUsersBootstrapInDB { } + private Set getProfiles(Set initialProfiles) { + Set profiles = new HashSet(); + for (PredefinedProfiles each : initialProfiles) { + try { + profiles.add(profileDAO.findByProfileName(each.getName())); + } catch (InstanceNotFoundException e) { + throw new RuntimeException(e); + } + } + return profiles; + } + private String getEncodedPassword(PredefinedUsers u) { return dbPasswordEncoderService.encodePassword(u.getClearPassword(), 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 5682df673..07cea54d8 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 @@ -30,8 +30,6 @@ 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.IAdHocTransactionService; -import org.libreplan.business.common.IOnTransaction; import org.libreplan.business.common.exceptions.InstanceNotFoundException; import org.libreplan.business.users.bootstrap.IProfileBootstrap; import org.libreplan.business.users.daos.IUserDAO; @@ -39,7 +37,6 @@ import org.libreplan.business.users.entities.User; import org.libreplan.web.users.bootstrap.IUsersBootstrapInDB; import org.libreplan.web.users.bootstrap.PredefinedUsers; 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; @@ -58,62 +55,27 @@ import org.springframework.transaction.annotation.Transactional; public class UsersBootstrapInDBTest { @Autowired - private IProfileBootstrap profileBootstrap; + private IUsersBootstrapInDB usersBootstrap; @Autowired - private IUsersBootstrapInDB usersBootstrap; + private IProfileBootstrap profileBootstrap; @Autowired private IUserDAO userDAO; - @Autowired - private IAdHocTransactionService transactionService; - @Test - @Rollback(false) - public void testLoadProfiles() { - transactionService.runOnAnotherTransaction(new IOnTransaction() { - @Override - public Void execute() { - profileBootstrap.loadRequiredData(); - return null; - } - }); - } + public void testMandatoryUsersCreated() throws InstanceNotFoundException { + profileBootstrap.loadRequiredData(); + usersBootstrap.loadRequiredData(); - @Test - @Rollback(false) - public void testLoadUsers() { - transactionService.runOnAnotherTransaction(new IOnTransaction() { - @Override - public Void execute() { - usersBootstrap.loadRequiredData(); - return null; - } - }); - } + for (PredefinedUsers u : PredefinedUsers.values()) { - @Test - public void testMandatoryUsersCreated() { - transactionService.runOnAnotherTransaction(new IOnTransaction() { - @Override - public Void execute() { - for (PredefinedUsers u : PredefinedUsers.values()) { - try { + User user = userDAO.findByLoginName(u.getLoginName()); - User user = userDAO.findByLoginName(u.getLoginName()); - - assertEquals(u.getLoginName(), user.getLoginName()); - assertEquals(u.getInitialRoles(), user.getRoles()); - - } catch (InstanceNotFoundException e) { - throw new RuntimeException(e); - } - } - return null; - } - }); + assertEquals(u.getLoginName(), user.getLoginName()); + assertEquals(u.getInitialRoles(), user.getRoles()); + } } } 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 bcef66a9b..5a88c18c7 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,8 +37,8 @@ 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.daos.IProfileDAO; -import org.libreplan.business.users.entities.Profile; +import org.libreplan.business.users.bootstrap.IProfileBootstrap; +import org.libreplan.business.users.bootstrap.PredefinedProfiles; import org.libreplan.business.users.entities.UserRole; import org.libreplan.web.users.bootstrap.IUsersBootstrapInDB; import org.libreplan.web.users.bootstrap.PredefinedUsers; @@ -72,10 +72,10 @@ public class DBUserDetailsServiceTest { private IScenariosBootstrap scenariosBootstrap; @Autowired - private IAdHocTransactionService transactionService; + private IProfileBootstrap profileBootstrap; @Autowired - private IProfileDAO profileDAO; + private IAdHocTransactionService transactionService; @Before public void loadScenariosBootsrap() { @@ -90,6 +90,7 @@ public class DBUserDetailsServiceTest { @Override public Void execute() { scenariosBootstrap.loadRequiredData(); + profileBootstrap.loadRequiredData(); return null; } }); @@ -116,9 +117,8 @@ public class DBUserDetailsServiceTest { userRoles.addAll(u.getInitialRoles()); - Set initialProfiles = u.getInitialProfiles(); - for (Profile profile : initialProfiles) { - userRoles.addAll(profile.getRoles()); + for (PredefinedProfiles each : u.getInitialProfiles()) { + userRoles.addAll(each.getRoles()); } return userRoles; 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 eadbca209..563caa962 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,7 +35,8 @@ 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.bootstrap.IProfileBootstrap; +import org.libreplan.business.users.bootstrap.PredefinedProfiles; import org.libreplan.business.users.entities.UserRole; import org.libreplan.web.users.bootstrap.IUsersBootstrapInDB; import org.libreplan.web.users.bootstrap.PredefinedUsers; @@ -73,6 +74,9 @@ public class LDAPUserDetailsServiceTest { @Autowired private IScenariosBootstrap scenariosBootstrap; + @Autowired + private IProfileBootstrap profileBootstrap; + @Autowired private IAdHocTransactionService transactionService; @@ -89,6 +93,7 @@ public class LDAPUserDetailsServiceTest { @Override public Void execute() { scenariosBootstrap.loadRequiredData(); + profileBootstrap.loadRequiredData(); return null; } }); @@ -116,9 +121,8 @@ public class LDAPUserDetailsServiceTest { userRoles.addAll(u.getInitialRoles()); - Set initialProfiles = u.getInitialProfiles(); - for (Profile profile : initialProfiles) { - userRoles.addAll(profile.getRoles()); + for (PredefinedProfiles each : u.getInitialProfiles()) { + userRoles.addAll(each.getRoles()); } return userRoles;