package com.constellio.app.ui.pages.management.authorizations; import com.constellio.app.modules.rm.RMTestRecords; import com.constellio.app.modules.rm.constants.RMRoles; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.app.ui.entities.AuthorizationVO; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.records.Transaction; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.security.global.AuthorizationAddRequest; import com.constellio.model.services.users.UserServices; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.SDKViewNavigation; import com.constellio.sdk.tests.setups.Users; import org.joda.time.LocalDate; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import static com.constellio.model.entities.security.global.AuthorizationAddRequest.authorizationInCollection; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; public class ListContentAccessAuthorizationsPresenterAcceptTest extends ConstellioTest { String alice; String legends; String rumors; String zeRootConcept = "zeRootConcept"; String zeConcept = "zeConcept"; String zeFolder = "zeFolder"; RMTestRecords records = new RMTestRecords(zeCollection); Users users = new Users(); @Mock SessionContext sessionContext; @Mock ListContentAccessAuthorizationsView accessView; @Mock ListContentRoleAuthorizationsView roleView; ListContentAccessAuthorizationsPresenter accessPresenter; ListContentRoleAuthorizationsPresenter rolePresenter; RMSchemasRecordsServices rm; @Test public void givenDetachRequestedIsClickedThenDetachCorrectlyAndDoNotThrowException() { accessPresenter.forRequestParams(records.folder_A01); rolePresenter.forRequestParams(records.folder_A01); accessPresenter.detachRequested(); rolePresenter.detachRequested(); } @Test public void givenFolderWithoutOwnAndInheritedAuthorizationsWhenGetAuthorizationsThenEmpty() throws Exception { accessPresenter.forRequestParams(zeFolder); rolePresenter.forRequestParams(zeFolder); assertThatInheritedAccessAuthorizations().isEmpty(); assertThatOwnAccessAuthorizations().isEmpty(); } @Test public void givenFolderWithInheritedAuthorizationsWhenGetInheritedAuthorizationThenOk() throws Exception { givenAliceIsInLegendsGroup(); add(givenAuthorizationFor(alice).on(zeFolder).givingReadAccess()); add(givenAuthorizationFor(alice).on(zeFolder).giving(RMRoles.USER)); add(givenAuthorizationFor(legends).on(zeFolder).givingReadWriteDeleteAccess()); add(givenAuthorizationFor(legends).on(zeFolder).giving(RMRoles.MANAGER)); add(givenAuthorizationFor(alice).on(zeConcept).givingReadWriteAccess()); add(givenAuthorizationFor(alice).on(zeConcept).giving(RMRoles.USER)); add(givenAuthorizationFor(legends).on(zeConcept).givingReadWriteDeleteAccess()); add(givenAuthorizationFor(legends).on(zeConcept).giving(RMRoles.MANAGER)); waitForBatchProcess(); accessPresenter.forRequestParams(zeFolder); rolePresenter.forRequestParams(zeFolder); assertThatInheritedAccessAuthorizations().containsOnly( AuthorizationVO.forUsers(alice).givingReadWriteAccess().on(zeConcept), AuthorizationVO.forGroups(legends).givingReadWriteDeleteAccess().on(zeConcept)); assertThatOwnAccessAuthorizations().containsOnly( AuthorizationVO.forUsers(alice).givingReadAccess().on(zeFolder), AuthorizationVO.forGroups(legends).givingReadWriteDeleteAccess().on(zeFolder)); assertThatInheritedRoleAuthorizations().containsOnly( AuthorizationVO.forUsers(alice).giving(RMRoles.USER).on(zeConcept), AuthorizationVO.forGroups(legends).giving(RMRoles.MANAGER).on(zeConcept)); assertThatOwnRoleAuthorizations().containsOnly( AuthorizationVO.forUsers(alice).giving(RMRoles.USER).on(zeFolder), AuthorizationVO.forGroups(legends).giving(RMRoles.MANAGER).on(zeFolder)); } // ------------------------------------------------------------------------- @Before public void setUp() throws Exception { prepareSystem(withZeCollection().withConstellioRMModule().withAllTest(users).withRMTest(records) .withFoldersAndContainersOfEveryStatus()); when(accessView.getSessionContext()).thenReturn(sessionContext); when(roleView.getSessionContext()).thenReturn(sessionContext); when(sessionContext.getCurrentCollection()).thenReturn(zeCollection); accessPresenter = new ListContentAccessAuthorizationsPresenter(accessView); rolePresenter = new ListContentRoleAuthorizationsPresenter(roleView); new SDKViewNavigation(accessView); new SDKViewNavigation(roleView); alice = users.aliceIn(zeCollection).getId(); legends = users.legendsIn(zeCollection).getId(); rumors = users.rumorsIn(zeCollection).getId(); rm = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory()); Transaction transaction = new Transaction(); transaction.add(rm.newAdministrativeUnitWithId(zeRootConcept).setCode("Ze root unit").setTitle("Ze root unit!")); transaction .add(rm.newAdministrativeUnitWithId(zeConcept).setCode("Ze unit").setTitle("Ze unit!").setParent(zeRootConcept)); transaction.add(rm.newFolderWithId(zeFolder).setTitle("Ze folder!").setAdministrativeUnitEntered(zeConcept) .setCategoryEntered(records.categoryId_ZE42).setRetentionRuleEntered(records.ruleId_1) .setOpenDate(new LocalDate())); getModelLayerFactory().newRecordServices().execute(transaction); waitForBatchProcess(); // givenLegendsGroupHasAuthorizations(); } // private void givenLegendsGroupHasAuthorizations() { // // AuthorizationsServices authorizationsServices = getModelLayerFactory().newAuthorizationsServices(); // // authorizationsServices.add(new Authorization()) // // BatchProcessesManager batchProcessesManager = getModelLayerFactory().getBatchProcessesManager(); // batchProcessesManager.waitUntilAllFinished(); // } private org.assertj.core.api.ListAssert<AuthorizationVO> assertThatInheritedAccessAuthorizations() { return assertThat(accessPresenter.getInheritedAuthorizations()) .usingElementComparatorIgnoringFields("authId", "userRolesTitles"); } private org.assertj.core.api.ListAssert<AuthorizationVO> assertThatOwnAccessAuthorizations() { return assertThat(accessPresenter.getOwnAuthorizations()) .usingElementComparatorIgnoringFields("authId", "userRolesTitles"); } private org.assertj.core.api.ListAssert<AuthorizationVO> assertThatInheritedRoleAuthorizations() { return assertThat(rolePresenter.getInheritedAuthorizations()) .usingElementComparatorIgnoringFields("authId", "userRolesTitles"); } private org.assertj.core.api.ListAssert<AuthorizationVO> assertThatOwnRoleAuthorizations() { return assertThat(rolePresenter.getOwnAuthorizations()) .usingElementComparatorIgnoringFields("authId", "userRolesTitles"); } private void add(AuthorizationAddRequest authorization) { getModelLayerFactory().newAuthorizationsServices().add(authorization, User.GOD); } private AuthorizationAddRequest givenAuthorizationFor(String principalId) { return authorizationInCollection(zeCollection).forPrincipalsIds(asList(principalId)); } private void givenAliceIsInLegendsGroup() { UserServices userServices = getModelLayerFactory().newUserServices(); userServices.addUpdateUserCredential(users.alice().withNewGlobalGroup(users.legends().getCode())); } }