View Javadoc
1   package org.exoplatform.platform.component.organization.test;
2   
3   import org.exoplatform.container.PortalContainer;
4   import org.exoplatform.container.configuration.ConfigurationManager;
5   import org.exoplatform.container.xml.InitParams;
6   import org.exoplatform.platform.organization.integration.*;
7   import org.exoplatform.services.jcr.RepositoryService;
8   import org.exoplatform.services.jcr.core.ManageableRepository;
9   import org.exoplatform.services.organization.MembershipHandler;
10  import org.exoplatform.services.organization.OrganizationService;
11  import org.exoplatform.services.organization.User;
12  import org.exoplatform.services.organization.UserHandler;
13  import org.exoplatform.services.organization.externalstore.IDMExternalStoreService;
14  import org.exoplatform.services.organization.idm.*;
15  import org.junit.Before;
16  import org.junit.Test;
17  import org.mockito.Mockito;
18  import org.picketlink.idm.api.AttributesManager;
19  import org.picketlink.idm.api.IdentitySession;
20  import org.picketlink.idm.api.PersistenceManager;
21  import org.picketlink.idm.impl.api.session.IdentitySessionImpl;
22  import org.picketlink.idm.impl.api.session.context.IdentitySessionContextImpl;
23  import org.picketlink.idm.impl.repository.RepositoryIdentityStoreSessionImpl;
24  import org.picketlink.idm.spi.store.IdentityStoreInvocationContext;
25  import org.picketlink.idm.spi.store.IdentityStoreSession;
26  
27  import javax.jcr.Node;
28  import javax.jcr.Session;
29  import javax.naming.ldap.LdapContext;
30  
31  import static junit.framework.TestCase.assertFalse;
32  import static junit.framework.TestCase.assertNotNull;
33  import static org.mockito.Matchers.any;
34  import static org.mockito.Mockito.never;
35  import static org.mockito.internal.verification.VerificationModeFactory.times;
36  
37  public class TestOrganizationIntegration {
38    PortalContainer     container           = null;
39  
40    RepositoryService   repositoryService   = null;
41  
42    OrganizationService organizationService = null;
43  
44    @Before
45    public void setUp() throws Exception {
46      container = PortalContainer.getInstance();
47      repositoryService = container.getComponentInstanceOfType(RepositoryService.class);
48      organizationService = container.getComponentInstanceOfType(OrganizationService.class);
49    }
50  
51    @Test
52    public void testIntegrationService() throws Exception {
53      IDMExternalStoreService externalStoreService = Mockito.mock(IDMExternalStoreService.class);
54      Mockito.when(externalStoreService.isEnabled()).thenReturn(false);
55      container.registerComponentInstance(org.exoplatform.services.organization.externalstore.IDMExternalStoreService.class,
56                                          externalStoreService);
57  
58      OrganizationIntegrationService organizationIntegrationService =
59                                                                    container.createComponent(OrganizationIntegrationService.class);
60      container.registerComponentInstance(organizationIntegrationService);
61      assertNotNull(organizationIntegrationService);
62      NewUserListener userListener = container.createComponent(NewUserListener.class);
63      assertNotNull(userListener);
64      organizationIntegrationService.addListenerPlugin(userListener);
65      NewProfileListener profileListener = container.createComponent(NewProfileListener.class);
66      assertNotNull(profileListener);
67      organizationIntegrationService.addListenerPlugin(profileListener);
68      NewMembershipListener membershipListener = container.createComponent(NewMembershipListener.class);
69      assertNotNull(membershipListener);
70      organizationIntegrationService.addListenerPlugin(membershipListener);
71      NewGroupListener groupListener = container.createComponent(NewGroupListener.class);
72      assertNotNull(groupListener);
73      organizationIntegrationService.addListenerPlugin(groupListener);
74  
75    }
76  
77    @Test
78    public void testSyncDeletedUserException() throws Exception {
79      PicketLinkIDMService picketLinkIDMService = Mockito.mock(PicketLinkIDMService.class);
80      IdentitySessionImpl identitySession = Mockito.mock(IdentitySessionImpl.class);
81      Mockito.when((IdentitySessionImpl) picketLinkIDMService.getIdentitySession()).thenReturn(identitySession);
82      IdentitySessionContextImpl ctx = Mockito.mock(IdentitySessionContextImpl.class);
83      Mockito.when(((IdentitySessionImpl) identitySession).getSessionContext()).thenReturn(ctx);
84      IdentityStoreInvocationContext identityStoreInvocationContext = Mockito.mock(IdentityStoreInvocationContext.class);
85      Mockito.when(ctx.resolveStoreInvocationContext()).thenReturn(identityStoreInvocationContext);
86      RepositoryIdentityStoreSessionImpl repoSession = Mockito.mock(RepositoryIdentityStoreSessionImpl.class);
87      Mockito.when((RepositoryIdentityStoreSessionImpl) identityStoreInvocationContext.getIdentityStoreSession())
88             .thenReturn(repoSession);
89      IdentityStoreSession identityStoreSession = Mockito.mock(IdentityStoreSession.class);
90      Mockito.when(repoSession.getIdentityStoreSession("PortalLDAPStore")).thenReturn(identityStoreSession);
91      LdapContext ldapContext = Mockito.mock(LdapContext.class);
92      Mockito.when((LdapContext) identityStoreSession.getSessionContext()).thenReturn(ldapContext);
93      boolean connected = false;
94      if (ldapContext.getEnvironment() != null) {
95        connected = true;
96      } else {
97        connected = false;
98      }
99      assertFalse(connected);
100     OrganizationService organizationService = Mockito.mock(OrganizationService.class);
101     RepositoryService repositoryService = Mockito.mock(RepositoryService.class);
102     ConfigurationManager manager = Mockito.mock(ConfigurationManager.class);
103     PortalContainer container = Mockito.mock(PortalContainer.class);
104     InitParams initParams = Mockito.mock(InitParams.class);
105     PicketLinkIDMCacheService picketLinkIDMCacheService = Mockito.mock(PicketLinkIDMCacheService.class);
106     IDMExternalStoreService externalStoreService = Mockito.mock(IDMExternalStoreService.class);
107     Mockito.when(externalStoreService.isEnabled()).thenReturn(false);
108     OrganizationIntegrationService organizationIntegrationService =
109                                                                   Mockito.spy(new OrganizationIntegrationService(organizationService,
110                                                                                                                  externalStoreService,
111                                                                                                                  repositoryService,
112                                                                                                                  manager,
113                                                                                                                  container,
114                                                                                                                  initParams,
115                                                                                                                  picketLinkIDMCacheService));
116     PicketLinkIDMOrganizationServiceImpl picketLinkIDMOrganizationServiceImpl =
117                                                                               Mockito.mock(PicketLinkIDMOrganizationServiceImpl.class);
118     UserDAOImpl userDAO = new UserDAOImpl(picketLinkIDMOrganizationServiceImpl, picketLinkIDMService);
119     IdentitySession session = Mockito.mock(IdentitySession.class);
120     Mockito.when(picketLinkIDMService.getIdentitySession()).thenReturn(session);
121     User user = userDAO.createUserInstance("root");
122     user.setPassword("123456");
123     user.setEmail("test@gmail.com");
124     NewUserListener userListener = Mockito.mock(NewUserListener.class);
125     organizationIntegrationService.addListenerPlugin(userListener);
126     Mockito.verify(userListener, never()).preDelete(user);
127     Mockito.verify(userListener, never()).postDelete(user);
128     assertNotNull(user);
129   }
130 
131   @Test
132   public void testSyncDeletedUser() throws Exception {
133     PicketLinkIDMService picketLinkIDMService = Mockito.mock(PicketLinkIDMService.class);
134     OrganizationService organizationService = Mockito.mock(OrganizationService.class);
135     RepositoryService repositoryService = Mockito.mock(RepositoryService.class);
136     ManageableRepository repository = Mockito.mock(ManageableRepository.class);
137     Mockito.when(repositoryService.getCurrentRepository()).thenReturn(repository);
138     Session session = Mockito.mock(Session.class);
139     Mockito.when(repository.getSystemSession("collaboration")).thenReturn(session);
140     ConfigurationManager manager = Mockito.mock(ConfigurationManager.class);
141     PortalContainer container = Mockito.mock(PortalContainer.class);
142     InitParams initParams = Mockito.mock(InitParams.class);
143     PicketLinkIDMCacheService picketLinkIDMCacheService = Mockito.mock(PicketLinkIDMCacheService.class);
144     IDMExternalStoreService externalStoreService = Mockito.mock(IDMExternalStoreService.class);
145     Mockito.when(externalStoreService.isEnabled()).thenReturn(false);
146     OrganizationIntegrationService organizationIntegrationService =
147                                                                   Mockito.spy(new OrganizationIntegrationService(organizationService,
148                                                                                                                  externalStoreService,
149                                                                                                                  repositoryService,
150                                                                                                                  manager,
151                                                                                                                  container,
152                                                                                                                  initParams,
153                                                                                                                  picketLinkIDMCacheService));
154     PicketLinkIDMOrganizationServiceImpl picketLinkIDMOrganizationServiceImpl =
155                                                                               Mockito.mock(PicketLinkIDMOrganizationServiceImpl.class);
156     UserDAOImpl userDAO = new UserDAOImpl(picketLinkIDMOrganizationServiceImpl, picketLinkIDMService);
157     IdentitySession identitySession = Mockito.mock(IdentitySession.class);
158     Mockito.when(picketLinkIDMService.getIdentitySession()).thenReturn(identitySession);
159     Config config = Mockito.mock(Config.class);
160     Mockito.when(picketLinkIDMOrganizationServiceImpl.getConfiguration()).thenReturn(config);
161     AttributesManager am = Mockito.mock(AttributesManager.class);
162     Mockito.when(identitySession.getAttributesManager()).thenReturn(am);
163     PersistenceManager persistenceManager = Mockito.mock(PersistenceManager.class);
164     Mockito.when(identitySession.getPersistenceManager()).thenReturn(persistenceManager);
165     User user = userDAO.createUserInstance("exo");
166     user.setPassword("123456");
167     user.setEmail("test@gmail.com");
168     userDAO.saveUser(user, false);
169     userDAO.persistUserInfo(user, identitySession, true);
170     userDAO.populateUser(user, identitySession);
171     NewUserListener userListener = Mockito.mock(NewUserListener.class);
172     organizationIntegrationService.addListenerPlugin(userListener);
173     MembershipHandler membershipHandler = Mockito.mock(MembershipHandler.class);
174     Mockito.when(organizationService.getMembershipHandler()).thenReturn(membershipHandler);
175     UserHandler userHandler = Mockito.mock(UserHandler.class);
176     Mockito.when(organizationService.getUserHandler()).thenReturn(userHandler);
177     Node folder = Mockito.mock(Node.class);
178     Mockito.when(session.getItem("/")).thenReturn(folder);
179     Node organizationInitializersHomePathNode = Mockito.mock(Node.class);
180     Mockito.when(folder.getNode("OrganizationIntegrationService")).thenReturn(organizationInitializersHomePathNode);
181     Node node = Mockito.mock(Node.class);
182     Mockito.when(org.exoplatform.platform.organization.integration.Util.getUsersFolder(session)).thenReturn(node);
183     Mockito.when(Util.hasUserFolder(session, user.getUserName())).thenReturn(true);
184     userDAO.removeUser(user.getUserName(), false);
185     organizationIntegrationService.syncUser("exo", EventType.DELETED.toString());
186     Mockito.verify(userListener, times(1)).preDelete(any());
187     Mockito.verify(userListener, times(1)).postDelete(any());
188   }
189 
190 }