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
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
48 PLFSecureJCRFoldersUpgradePlugin plugin = new PLFSecureJCRFoldersUpgradePlugin(repositoryService, nodeHierarchyCreator, new InitParams());
49 plugin.processUpgrade("5.1.0", "5.2.0");
50
51
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 }