View Javadoc
1   package org.exoplatform.platform.upgrade.plugins;
2   
3   import org.exoplatform.container.xml.InitParams;
4   import org.exoplatform.services.jcr.RepositoryService;
5   import org.exoplatform.services.jcr.config.RepositoryEntry;
6   import org.exoplatform.services.jcr.core.ExtendedNode;
7   import org.exoplatform.services.jcr.core.ExtendedSession;
8   import org.exoplatform.services.jcr.core.ManageableRepository;
9   import org.exoplatform.services.jcr.ext.hierarchy.NodeHierarchyCreator;
10  import org.exoplatform.services.security.IdentityConstants;
11  import org.junit.Test;
12  
13  import static org.mockito.Mockito.*;
14  
15  public class PLFSecureJCRFoldersUpgradePluginTest {
16  
17    @Test
18    public void testSecureJCRFoldersMigration() throws Exception {
19      // Given
20      NodeHierarchyCreator nodeHierarchyCreator = mock(NodeHierarchyCreator.class);
21      RepositoryEntry entry = mock(RepositoryEntry.class);
22      when(entry.getDefaultWorkspaceName()).thenReturn("collaboration");
23  
24      ExtendedSession session = mock(ExtendedSession.class);
25      ManageableRepository repo = mock(ManageableRepository.class);
26      when(repo.getConfiguration()).thenReturn(entry);
27      when(repo.getSystemSession(any())).thenReturn(session);
28  
29      RepositoryService repositoryService = mock(RepositoryService.class);
30      when(repositoryService.getCurrentRepository()).thenReturn(repo);
31  
32  
33      ExtendedNode rootNode = mock(ExtendedNode.class);
34      when(session.getRootNode()).thenReturn(rootNode);
35  
36      ExtendedNode loginHistoryNode = mock(ExtendedNode.class);
37      when(rootNode.hasNode("exo:LoginHistoryHome")).thenReturn(true);
38      when(rootNode.getNode("exo:LoginHistoryHome")).thenReturn(loginHistoryNode);
39  
40      ExtendedNode usersNode = mock(ExtendedNode.class);
41      when(nodeHierarchyCreator.getJcrPath("usersPath")).thenReturn("/Users");
42      when(session.getItem("/Users")).thenReturn(usersNode);
43  
44      ExtendedNode gadgetsNode = mock(ExtendedNode.class);
45      when(session.getItem("/production/app:gadgets")).thenReturn(gadgetsNode);
46  
47      // When
48      PLFSecureJCRFoldersUpgradePlugin plugin = new PLFSecureJCRFoldersUpgradePlugin(repositoryService, nodeHierarchyCreator, new InitParams());
49      plugin.processUpgrade("5.1.0", "5.2.0");
50  
51      // Then
52      verify(rootNode, times(1)).removePermission(IdentityConstants.ANY);
53      verify(gadgetsNode, times(1)).removePermission(IdentityConstants.ANY);
54      verify(usersNode, times(1)).removePermission("*:/platform/users");
55      verify(loginHistoryNode, times(1)).removePermission("*:/platform/users");
56    }
57  }