import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.context.SecurityContextImpl;
import org.unitils.database.DatabaseUnitils;
import org.unitils.database.annotations.Transactional;
import org.unitils.database.util.TransactionMode;
import eu.etaxonomy.cdm.api.application.CdmDataChangeService;
import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
import eu.etaxonomy.cdm.cache.CdmRemoteCacheManager;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.taxeditor.remoting.cache.ConversationalTransientEntityCacher;
import eu.etaxonomy.taxeditor.remoting.source.CdmPersistentRemoteSource;
import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSource;
user,
password);
} catch (Exception e) {
+ System.err.println("user: " + user + " password: " + password);
e.printStackTrace();
// Assert.fail("Server failed to start. Reason : " + e.getMessage());
}
//FIXME:Remoting the authentication code should be replaced by a method call which actually
// does the authentication in the editor code so that the 'real' authentication can be tested
SecurityContextHolder.clearContext();
- SecurityContextImpl sc = new SecurityContextImpl();
- Authentication token = new UsernamePasswordAuthenticationToken(username,password);
+
+ UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
Authentication authentication = getRemoteApplicationController().getAuthenticationManager().authenticate(token);
- authentication = new UsernamePasswordAuthenticationToken(username,password, authentication.getAuthorities());
- sc.setAuthentication(authentication);
- SecurityContextHolder.setContext(sc);
+
+ User user = (User) authentication.getPrincipal();
+ /* circumventing problem with hibernate not refreshing the transient collection authorities in this case,
+ * see http://dev.e-taxonomy.eu/trac/ticket/4053 */
+ user.initAuthorities();
+ authentication = new UsernamePasswordAuthenticationToken(user,password, authentication.getAuthorities());
+ SecurityContextHolder.getContext().setAuthentication(authentication);
CdmApplicationState.setCurrentSecurityContext(SecurityContextHolder.getContext());
+
+
+
+
+// SecurityContextHolder.clearContext();
+// SecurityContextImpl sc = new SecurityContextImpl();
+// Authentication token = new UsernamePasswordAuthenticationToken(username,password);
+// Authentication authentication = getRemoteApplicationController().getAuthenticationManager().authenticate(token);
+//
+// authentication = new UsernamePasswordAuthenticationToken(username,password, authentication.getAuthorities());
+// sc.setAuthentication(authentication);
+//
+// SecurityContextHolder.setContext(sc);
+// CdmApplicationState.setCurrentSecurityContext(SecurityContextHolder.getContext());
+
}
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
+import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.User;
-import eu.etaxonomy.cdm.persistence.dto.MergeResult;
import eu.etaxonomy.taxeditor.remoting.cache.ConversationalTransientEntityCacher;
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
import eu.etaxonomy.taxeditor.session.MockSessionOwner;
sessionOwner.setCdmEntitySession(cdmEntitySession);
cacher = getCacher(sessionOwner);
- User extraUser = null;
+ UserDetails extraUser = null;
try {
- extraUser = (User) userService.loadUserByUsername(extraUsername);
+ extraUser = userService.loadUserByUsername(extraUsername);
Group editorGroup = getRemoteApplicationController().getGroupService().find(editorGroupUuid);
- if (!extraUser.getGroups().contains(editorGroup)){
- extraUser.getGroups().add(editorGroup);
- userService.merge(extraUser, true);
+ if (!((User)extraUser).getGroups().contains(editorGroup)){
+ ((User)extraUser).getGroups().add(editorGroup);
+ userService.merge(((User)extraUser), true);
+
}
} catch (UsernameNotFoundException unfe) {
- User user = User.NewInstance(extraUsername, extraPassword);
+ UserDetails user = User.NewInstance(extraUsername, extraPassword);
userService.createUser(user);
+ user = userService.load(((User)user).getUuid());
Group editorGroup = getRemoteApplicationController().getGroupService().find(editorGroupUuid);
- user = userService.load(user.getUuid());
- user.getGroups().add(editorGroup);
- MergeResult<User> result = userService.merge(user, true);
- user = result.getMergedEntity();
+ ((User)user).getGroups().add(editorGroup);
+ userService.merge(((User)user), true);
+
+
}
protected static void authenticateExtraUser() {
+
authenticate(extraUsername, extraPassword);
}