package com.constellio.app.modules.rm.model;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.constants.RMRoles;
import com.constellio.app.modules.rm.constants.RMTaxonomies;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.security.global.UserCredential;
import com.constellio.model.entities.security.global.UserCredentialStatus;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.users.UserServices;
import com.constellio.sdk.tests.ConstellioTest;
public class RMUserAcceptanceTest extends ConstellioTest {
RMSchemasRecordsServices rm;
RMTestRecords records = new RMTestRecords(zeCollection);
RecordServices recordServices;
UserServices userServices;
@Before
public void setUp()
throws Exception {
prepareSystem(
withZeCollection().withConstellioRMModule().withRMTest(records)
);
assertThat(getModelLayerFactory().getTaxonomiesManager().getPrincipalTaxonomy(zeCollection).getCode())
.isEqualTo(RMTaxonomies.ADMINISTRATIVE_UNITS);
rm = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory());
recordServices = getModelLayerFactory().newRecordServices();
userServices = getModelLayerFactory().newUserServices();
}
private UserCredential newJackBauerUserCredential() {
return userServices.createUserCredential("jack.bauer", "Jack", "Bauer", "jack.bauer@constellio.com",
new ArrayList<String>(), asList(zeCollection), UserCredentialStatus.ACTIVE);
}
@Test
public void whenAddUpdatingUserWithoutRolesThenAddDefaultUserRole()
throws Exception {
userServices.addUpdateUserCredential(newJackBauerUserCredential());
assertThat(jackBauerInZeCollection().getAllRoles()).containsOnly(RMRoles.USER);
recordServices.update(jackBauerInZeCollection().setUserRoles(asList(RMRoles.MANAGER)));
assertThat(jackBauerInZeCollection().getAllRoles()).containsOnly(RMRoles.MANAGER);
recordServices.update(jackBauerInZeCollection().setUserRoles(new ArrayList<String>()));
assertThat(jackBauerInZeCollection().getAllRoles()).containsOnly(RMRoles.USER);
}
private User jackBauerInZeCollection() {
return userServices.getUserInCollection("jack.bauer", zeCollection);
}
}