package com.constellio.app.services.schemas.bulkImport.authorization; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import java.util.List; import org.junit.Before; import org.junit.Test; import com.constellio.app.modules.rm.RMTestRecords; import com.constellio.app.modules.rm.wrappers.AdministrativeUnit; import com.constellio.app.modules.rm.wrappers.Document; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.app.modules.tasks.model.wrappers.Task; import com.constellio.app.modules.tasks.services.TasksSchemasRecordsServices; import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorization.ImportedAuthorizationPrincipal; import com.constellio.app.services.schemas.bulkImport.authorization.ImportedAuthorization.ImportedAuthorizationTarget; import com.constellio.model.entities.records.Transaction; import com.constellio.model.entities.records.wrappers.Group; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.security.Authorization; import com.constellio.model.entities.security.global.AuthorizationDetails; import com.constellio.model.entities.security.Role; import com.constellio.model.entities.security.global.AuthorizationAddRequest; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.records.RecordServicesException; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.setups.Users; public class ImportedAuthorizationToAuthorizationBuilderAcceptTest extends ConstellioTest { RMTestRecords records = new RMTestRecords(zeCollection); Users users = new Users(); ImportedAuthorizationToAuthorizationBuilder builder; ImportedAuthorization validAuthorization; User aliceHavingLegacyId; Group heroes; Folder folderHavingLegacyId; Document documentHavingLegacyId; AdministrativeUnit administrativeUnitHavingLegacyId; Task userTaskHavingLegacyId; @Before public void setUp() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule().withRMTest(records) .withFoldersAndContainersOfEveryStatus().withAllTestUsers().withDocumentsHavingContent() ); users.setUp(getModelLayerFactory().newUserServices()); builder = new ImportedAuthorizationToAuthorizationBuilder(zeCollection, getModelLayerFactory()); initTestRecords(); initValidAuthorization(); } private void initTestRecords() throws RecordServicesException { aliceHavingLegacyId = users.aliceIn(zeCollection); heroes = users.heroesIn(zeCollection); folderHavingLegacyId = records.getFolder_A01(); documentHavingLegacyId = records.getDocumentWithContent_A19(); administrativeUnitHavingLegacyId = records.getUnit10(); TasksSchemasRecordsServices tasksSchemas = new TasksSchemasRecordsServices(zeCollection, getAppLayerFactory()); userTaskHavingLegacyId = tasksSchemas.newTask(); RecordServices recordServices = getModelLayerFactory().newRecordServices(); Transaction transaction = new Transaction(); recordServices.add(userTaskHavingLegacyId.setTitle("taskTitle")); transaction.add(folderHavingLegacyId.setLegacyId("folderLegacyId")); transaction.add(documentHavingLegacyId.setLegacyId("documentLegacyId")); transaction.add(administrativeUnitHavingLegacyId.setLegacyId("administrativeUnitLegacyId")); transaction.add(userTaskHavingLegacyId.setLegacyId("userTaskLegacyId")); recordServices.execute(transaction); } private void initValidAuthorization() { List<ImportedAuthorizationPrincipal> validPrincipals = asList( new ImportedAuthorizationPrincipal("user", "alice"), new ImportedAuthorizationPrincipal("group", "heroes")); List<ImportedAuthorizationTarget> validTargets = asList( new ImportedAuthorizationTarget("folder", "folderLegacyId")); validAuthorization = new ImportedAuthorization().setId("id").setPrincipals(validPrincipals) .setTargets(validTargets).setAccess("rwd"); } @Test public void givenValidAuthorizationWithAccessWhenBuildThenBuiltCorrectly() throws Exception { AuthorizationAddRequest authorization = builder.buildAddRequest(validAuthorization); assertThat(authorization.getPrincipals()) .containsExactly(aliceHavingLegacyId.getId(), heroes.getId()); assertThat(authorization.getTarget()).isEqualTo(folderHavingLegacyId.getId()); assertThat(authorization.getId()).isNull(); assertThat(authorization.getStart()).isNull(); assertThat(authorization.getEnd()).isNull(); assertThat(authorization.getCollection()).isEqualTo(zeCollection); assertThat(authorization.getRoles()).containsOnly(Role.READ, Role.WRITE, Role.DELETE); } @Test public void givenValidAuthorizationWithRolesWhenBuildThenBuiltCorrectly() throws Exception { validAuthorization.setAccess(null).setRoles(asList("u", "rgd")); AuthorizationAddRequest authorization = builder.buildAddRequest(validAuthorization); assertThat(authorization.getRoles()).containsExactly("u", "rgd"); } }