2 * Copyright (C) 2015 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.httpinvoker
;
11 import java
.util
.UUID
;
13 import org
.apache
.log4j
.Logger
;
14 import org
.junit
.After
;
15 import org
.junit
.Before
;
16 import org
.springframework
.security
.core
.userdetails
.UserDetails
;
17 import org
.springframework
.security
.core
.userdetails
.UsernameNotFoundException
;
19 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationState
;
20 import eu
.etaxonomy
.cdm
.api
.service
.IUserService
;
21 import eu
.etaxonomy
.cdm
.model
.permission
.Group
;
22 import eu
.etaxonomy
.cdm
.model
.permission
.User
;
23 import eu
.etaxonomy
.taxeditor
.remoting
.cache
.ConversationalTransientEntityCacher
;
24 import eu
.etaxonomy
.taxeditor
.session
.ICdmEntitySession
;
25 import eu
.etaxonomy
.taxeditor
.session
.MockSessionOwner
;
32 public abstract class RemotingSessionAwareTest
extends BaseRemotingTest
{
34 private static final Logger logger
= Logger
.getLogger(RemotingSessionAwareTest
.class);
36 protected ConversationalTransientEntityCacher cacher
;
37 protected MockSessionOwner sessionOwner
;
39 private static String extraUsername
= "Someone";
40 private static String extraPassword
= "Password";
41 private static UUID editorGroupUuid
= UUID
.fromString("22e5e8af-b99c-4884-a92f-71978efd3770");
44 private IUserService userService
= getRemoteApplicationController().getUserService();
47 public void initializeSession() {
49 sessionOwner
= new MockSessionOwner
<>();
50 logger
.info("created mock session owner : " + sessionOwner
);
51 ICdmEntitySession cdmEntitySession
= cdmEntitySessionManager
.newSession(sessionOwner
, true);
52 CdmApplicationState
.getCurrentDataChangeService().register(sessionOwner
);
53 sessionOwner
.setCdmEntitySession(cdmEntitySession
);
54 cacher
= getCacher(sessionOwner
);
56 UserDetails extraUser
= null;
59 extraUser
= userService
.loadUserByUsername(extraUsername
);
60 Group editorGroup
= getRemoteApplicationController().getGroupService().find(editorGroupUuid
);
61 if (!((User
)extraUser
).getGroups().contains(editorGroup
)){
62 ((User
)extraUser
).getGroups().add(editorGroup
);
63 userService
.merge(((User
)extraUser
), true);
66 } catch (UsernameNotFoundException unfe
) {
67 UserDetails user
= User
.NewInstance(extraUsername
, extraPassword
);
68 user
= userService
.save((User
)user
);
69 //user = userService.find(((User)user).getUuid());
70 Group editorGroup
= getRemoteApplicationController().getGroupService().find(editorGroupUuid
);
71 ((User
)user
).getGroups().add(editorGroup
);
72 userService
.merge(((User
)user
), true);
81 public void postSessionAwareTest() {
82 sessionOwner
.dispose();
83 CdmApplicationState
.getCurrentDataChangeService().unregister(sessionOwner
);
84 logger
.info("disposed of mock session owner : " + sessionOwner
);
88 protected static void authenticateExtraUser() {
90 authenticate(extraUsername
, extraPassword
);