01c4be81c7d15e7d5de585298f0e04d728102d78
[taxeditor.git] / eu.etaxonomy.taxeditor.test / src / test / java / eu / etaxonomy / taxeditor / httpinvoker / RemotingSessionAwareTest.java
1 /**
2 * Copyright (C) 2015 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
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.
8 */
9 package eu.etaxonomy.taxeditor.httpinvoker;
10
11 import java.util.UUID;
12
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;
18
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;
26
27 /**
28 * @author cmathew
29 * @date 12 Jun 2015
30 *
31 */
32 public abstract class RemotingSessionAwareTest extends BaseRemotingTest {
33
34 private static final Logger logger = Logger.getLogger(RemotingSessionAwareTest.class);
35
36 protected ConversationalTransientEntityCacher cacher;
37 protected MockSessionOwner sessionOwner;
38
39 private static String extraUsername = "Someone";
40 private static String extraPassword = "Password";
41 private static UUID editorGroupUuid = UUID.fromString("22e5e8af-b99c-4884-a92f-71978efd3770");
42
43
44 private IUserService userService = getRemoteApplicationController().getUserService();
45
46 @Before
47 public void initializeSession() {
48
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);
55
56 UserDetails extraUser = null;
57
58 try {
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);
64
65 }
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);
73
74
75 }
76
77
78 }
79
80 @After
81 public void postSessionAwareTest() {
82 sessionOwner.dispose();
83 CdmApplicationState.getCurrentDataChangeService().unregister(sessionOwner);
84 logger.info("disposed of mock session owner : " + sessionOwner);
85 }
86
87
88 protected static void authenticateExtraUser() {
89
90 authenticate(extraUsername, extraPassword);
91 }
92
93 }