Search in sources :

Example 1 with AccessPermissionImpl

use of org.alfresco.repo.security.permissions.impl.AccessPermissionImpl in project records-management by Alfresco.

the class ExtendedSecurityServiceImplUnitTest method removeAllExtendedSecurity.

/**
 * Given that a node has extended security
 * When I remove the extended security
 * Then the inplace groups permissions are removed
 */
@Test
public void removeAllExtendedSecurity() {
    // group names
    String readGroup = extendedSecurityService.getIPRGroupShortName(READER_GROUP_FULL_PREFIX, READERS, 0);
    String writeGroup = extendedSecurityService.getIPRGroupShortName(WRITER_GROUP_FULL_PREFIX, WRITERS, 0);
    // setup permissions
    Set<AccessPermission> permissions = Stream.of(new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, readGroup, 0), new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, AlfMock.generateText(), 1), new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, writeGroup, 2)).collect(Collectors.toSet());
    when(mockedPermissionService.getAllSetPermissions(nodeRef)).thenReturn(permissions);
    // remove extended security
    extendedSecurityService.remove(nodeRef);
    // verify that the groups permissions have been removed
    verify(mockedPermissionService).clearPermission(nodeRef, readGroup);
    verify(mockedPermissionService).clearPermission(nodeRef, writeGroup);
}
Also used : AccessPermission(org.alfresco.service.cmr.security.AccessPermission) AccessPermissionImpl(org.alfresco.repo.security.permissions.impl.AccessPermissionImpl) Matchers.anyString(org.mockito.Matchers.anyString) Test(org.junit.Test)

Example 2 with AccessPermissionImpl

use of org.alfresco.repo.security.permissions.impl.AccessPermissionImpl in project records-management by Alfresco.

the class ExtendedSecurityServiceImplUnitTest method addExtendedSecurityToNodeWithExtendedSecurity.

/**
 * Given that a node already has extended security
 * When I add extended security
 * Then the existing extended security is replaced with the new extended security
 */
@Test
public void addExtendedSecurityToNodeWithExtendedSecurity() {
    // group names
    String readGroup = extendedSecurityService.getIPRGroupShortName(READER_GROUP_FULL_PREFIX, READERS, 0);
    String writeGroup = extendedSecurityService.getIPRGroupShortName(WRITER_GROUP_FULL_PREFIX, WRITERS, 0);
    // setup permissions
    Set<AccessPermission> permissions = Stream.of(new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, readGroup, 0), new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, AlfMock.generateText(), 1), new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, writeGroup, 2)).collect(Collectors.toSet());
    when(mockedPermissionService.getAllSetPermissions(nodeRef)).thenReturn(permissions);
    // set revised reader and writers
    String user = generateText();
    String group = generateText();
    String userW = generateText();
    String groupW = generateText();
    Set<String> newReaders = Stream.of(user, group).collect(Collectors.toSet());
    Set<String> newWriters = Stream.of(userW, groupW).collect(Collectors.toSet());
    // new group names
    String newReadGroup = extendedSecurityService.getIPRGroupShortName(READER_GROUP_PREFIX, newReaders, 0);
    String newWriteGroup = extendedSecurityService.getIPRGroupShortName(WRITER_GROUP_PREFIX, newWriters, 0);
    // make sure users and groups exist
    Stream.of(user, group, userW, groupW).forEach((a) -> when(mockedAuthorityService.authorityExists(a)).thenReturn(true));
    // setup query results for no group matches
    when(mockedReadPagingResults.getPage()).thenReturn(Collections.emptyList());
    when(mockedAuthorityService.getAuthorities(eq(AuthorityType.GROUP), eq(RMAuthority.ZONE_APP_RM), any(String.class), eq(false), eq(false), any(PagingRequest.class))).thenReturn(mockedReadPagingResults);
    // set extended security
    extendedSecurityService.set(nodeRef, newReaders, newWriters);
    // verify that the old permissions are cleared
    verify(mockedPermissionService).clearPermission(nodeRef, readGroup);
    verify(mockedPermissionService).clearPermission(nodeRef, writeGroup);
    // verify read group created correctly
    verify(mockedAuthorityService).createAuthority(AuthorityType.GROUP, newReadGroup, newReadGroup, Collections.singleton(RMAuthority.ZONE_APP_RM));
    newReadGroup = GROUP_PREFIX + newReadGroup;
    verify(mockedAuthorityService).addAuthority(GROUP_PREFIX + ROOT_IPR_GROUP, newReadGroup);
    verify(mockedAuthorityService).addAuthority(newReadGroup, user);
    verify(mockedAuthorityService).addAuthority(newReadGroup, group);
    // verify write group created correctly
    verify(mockedAuthorityService).createAuthority(AuthorityType.GROUP, newWriteGroup, newWriteGroup, Collections.singleton(RMAuthority.ZONE_APP_RM));
    newWriteGroup = GROUP_PREFIX + newWriteGroup;
    verify(mockedAuthorityService).addAuthority(GROUP_PREFIX + ROOT_IPR_GROUP, newWriteGroup);
    verify(mockedAuthorityService).addAuthority(newWriteGroup, userW);
    verify(mockedAuthorityService).addAuthority(newWriteGroup, groupW);
    // verify groups assigned to RM roles
    verify(mockedFilePlanRoleService).assignRoleToAuthority(filePlan, FilePlanRoleService.ROLE_EXTENDED_READERS, newReadGroup);
    verify(mockedFilePlanRoleService).assignRoleToAuthority(filePlan, FilePlanRoleService.ROLE_EXTENDED_WRITERS, newWriteGroup);
    // verify permissions are assigned to node
    verify(mockedPermissionService).setPermission(nodeRef, newReadGroup, RMPermissionModel.READ_RECORDS, true);
    verify(mockedPermissionService).setPermission(nodeRef, newWriteGroup, RMPermissionModel.FILING, true);
}
Also used : AccessPermission(org.alfresco.service.cmr.security.AccessPermission) AccessPermissionImpl(org.alfresco.repo.security.permissions.impl.AccessPermissionImpl) Matchers.anyString(org.mockito.Matchers.anyString) PagingRequest(org.alfresco.query.PagingRequest) Test(org.junit.Test)

Example 3 with AccessPermissionImpl

use of org.alfresco.repo.security.permissions.impl.AccessPermissionImpl in project records-management by Alfresco.

the class ExtendedSecurityServiceImplUnitTest method removeExtendedSecurityFromRenditions.

/**
 * Given that node has renditions
 * When I remove the extended security for a node
 * Then the extended security is also removed from the renditions
 */
@Test
public void removeExtendedSecurityFromRenditions() {
    // group names
    String readGroup = extendedSecurityService.getIPRGroupShortName(READER_GROUP_FULL_PREFIX, READERS, 0);
    String writeGroup = extendedSecurityService.getIPRGroupShortName(WRITER_GROUP_FULL_PREFIX, WRITERS, 0);
    // setup renditions
    NodeRef renditionNodeRef = AlfMock.generateNodeRef(mockedNodeService);
    when(mockedNodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_RECORD)).thenReturn(true);
    when(mockedChildAssociationRef.getChildRef()).thenReturn(renditionNodeRef);
    when(mockedNodeService.getChildAssocs(nodeRef, RenditionModel.ASSOC_RENDITION, RegexQNamePattern.MATCH_ALL)).thenReturn(Collections.singletonList(mockedChildAssociationRef));
    // setup permissions
    Set<AccessPermission> permissions = Stream.of(new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, readGroup, 0), new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, AlfMock.generateText(), 1), new AccessPermissionImpl(AlfMock.generateText(), AccessStatus.ALLOWED, writeGroup, 2)).collect(Collectors.toSet());
    when(mockedPermissionService.getAllSetPermissions(nodeRef)).thenReturn(permissions);
    // remove extended security
    extendedSecurityService.remove(nodeRef);
    // verify that the groups permissions have been removed
    verify(mockedPermissionService).clearPermission(nodeRef, readGroup);
    verify(mockedPermissionService).clearPermission(nodeRef, writeGroup);
    // verify that the groups permissions have been removed from the rendition
    verify(mockedPermissionService).clearPermission(renditionNodeRef, readGroup);
    verify(mockedPermissionService).clearPermission(renditionNodeRef, writeGroup);
}
Also used : NodeRef(org.alfresco.service.cmr.repository.NodeRef) AccessPermission(org.alfresco.service.cmr.security.AccessPermission) AccessPermissionImpl(org.alfresco.repo.security.permissions.impl.AccessPermissionImpl) Matchers.anyString(org.mockito.Matchers.anyString) Test(org.junit.Test)

Example 4 with AccessPermissionImpl

use of org.alfresco.repo.security.permissions.impl.AccessPermissionImpl in project records-management by Alfresco.

the class FilePlanPermissionServiceImplUnitTest method setupPermissions.

/**
 * Helper method to setup permissions on mock objects
 */
private void setupPermissions(NodeRef nodeRef) {
    Set<AccessPermission> perms = new HashSet<AccessPermission>(4);
    // setup basic file and read for authorities
    perms.add(new AccessPermissionImpl(RMPermissionModel.READ_RECORDS, AccessStatus.ALLOWED, AUTHORITY, 0));
    perms.add(new AccessPermissionImpl(RMPermissionModel.FILING, AccessStatus.ALLOWED, AUTHORITY2, 1));
    doReturn(perms).when(mockedPermissionService).getAllSetPermissions(nodeRef);
}
Also used : AccessPermission(org.alfresco.service.cmr.security.AccessPermission) AccessPermissionImpl(org.alfresco.repo.security.permissions.impl.AccessPermissionImpl) HashSet(java.util.HashSet)

Aggregations

AccessPermissionImpl (org.alfresco.repo.security.permissions.impl.AccessPermissionImpl)4 AccessPermission (org.alfresco.service.cmr.security.AccessPermission)4 Test (org.junit.Test)3 Matchers.anyString (org.mockito.Matchers.anyString)3 HashSet (java.util.HashSet)1 PagingRequest (org.alfresco.query.PagingRequest)1 NodeRef (org.alfresco.service.cmr.repository.NodeRef)1