package com.constellio.app.api.cmis.requests.navigation; import static org.assertj.core.api.Assertions.assertThat; import org.apache.chemistry.opencmis.client.api.CmisObject; import org.apache.chemistry.opencmis.client.api.Folder; import org.apache.chemistry.opencmis.client.api.Session; import org.apache.chemistry.opencmis.commons.PropertyIds; import org.apache.chemistry.opencmis.commons.enums.Action; import org.junit.Before; import org.junit.Test; import com.constellio.app.api.cmis.accept.CmisAcceptanceTestSetup; import com.constellio.app.api.cmis.accept.CmisAcceptanceTestSetup.Records; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.records.Transaction; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.records.RecordServicesException; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.services.taxonomies.TaxonomiesManager; import com.constellio.model.services.taxonomies.TaxonomiesSearchServices; import com.constellio.model.services.users.UserServices; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.TestRecord; import com.constellio.sdk.tests.annotations.DriverTest; import com.constellio.sdk.tests.setups.Users; @DriverTest public class GetObjectRequestAcceptTest extends ConstellioTest { UserServices userServices; TaxonomiesManager taxonomiesManager; MetadataSchemasManager metadataSchemasManager; RecordServices recordServices; Users users = new Users(); CmisAcceptanceTestSetup zeCollectionSchemas = new CmisAcceptanceTestSetup(zeCollection); Records zeCollectionRecords; TaxonomiesSearchServices taxonomiesSearchServices; // Session cmisSession; String chuckNorrisKey = "chuckNorris-key"; String chuckNorrisToken; @Before public void setUp() throws Exception { userServices = getModelLayerFactory().newUserServices(); taxonomiesManager = getModelLayerFactory().getTaxonomiesManager(); metadataSchemasManager = getModelLayerFactory().getMetadataSchemasManager(); recordServices = getModelLayerFactory().newRecordServices(); taxonomiesSearchServices = getModelLayerFactory().newTaxonomiesSearchService(); users.setUp(userServices); defineSchemasManager().using(zeCollectionSchemas); CmisAcceptanceTestSetup.allSchemaTypesSupported(getAppLayerFactory()); inCollection(zeCollection).setCollectionTitleTo("Collection de test"); taxonomiesManager.addTaxonomy(zeCollectionSchemas.getTaxonomy1(), metadataSchemasManager); taxonomiesManager.setPrincipalTaxonomy(zeCollectionSchemas.getTaxonomy1(), metadataSchemasManager); zeCollectionRecords = zeCollectionSchemas.givenRecords(recordServices); userServices.addUpdateUserCredential( userServices.getUserCredential(chuckNorris).withServiceKey(chuckNorrisKey).withSystemAdminPermission()); chuckNorrisToken = userServices.generateToken(chuckNorris); userServices.addUserToCollection(users.chuckNorris(), zeCollection); CmisAcceptanceTestSetup.giveUseCMISPermissionToUsers(getModelLayerFactory()); } @Test public void givenObjectCreatedThenObjectCanBeObtainedByRequestAndFieldsAreCorrect() throws Exception { recordServices.update(users.chuckNorrisIn(zeCollection).setCollectionReadAccess(true).getWrappedRecord()); Session cmisSession = givenAdminSessionOnZeCollection(); recordServices.update(zeCollectionRecords.folder1.set(Schemas.CREATED_BY, users.chuckNorrisIn(zeCollection).getId())); CmisObject object = cmisSession.getObject(zeCollectionRecords.folder1.getId()); thenFolderOneObjectHasCorrectFields(object); } @Test public void givenObjectCreatedWithUserThenObjectHasCorrectCreatedByValue() throws Exception { recordServices.update(users.chuckNorrisIn(zeCollection).setCollectionReadAccess(true).setCollectionWriteAccess(true) .getWrappedRecord()); Session cmisSession = givenAdminSessionOnZeCollection(); Record record = new TestRecord(zeCollectionSchemas.getSchema("folder_default"), "aTestFolder"); recordServices.execute(new Transaction(record).setUser(users.chuckNorrisIn(zeCollection))); CmisObject object = cmisSession.getObject(record.getId()); assertThat(object.getCreatedBy()).isEqualTo(users.chuckNorrisIn(zeCollection).getId()); } @Test public void givenTaxoCreatedThenTaxoCanBeObtainedByRequestAndFieldsAreCorrect() throws Exception { recordServices.update(users.chuckNorrisIn(zeCollection).setCollectionReadAccess(true).getWrappedRecord()); Session cmisSession = givenAdminSessionOnZeCollection(); CmisObject object = cmisSession.getObject("taxo_" + zeCollectionSchemas.getTaxonomy1().getCode()); thenTaxoOneObjectHasCorrectFields(object); } @Test public void givenConceptCreatedThenConceptCanBeObtainedByRequestAndFieldsAreCorrect() throws Exception { recordServices.update(users.chuckNorrisIn(zeCollection).setCollectionReadAccess(true).getWrappedRecord()); Session cmisSession = givenAdminSessionOnZeCollection(); CmisObject object = cmisSession.getObject(zeCollectionRecords.taxo1_category2.getId()); thenCategoryTwoObjectHasCorrectFields(object); } @Test public void whenGetRootFolderThenValidActionsAndProperties() throws Exception { recordServices.update(users.chuckNorrisIn(zeCollection).setCollectionReadAccess(true).getWrappedRecord()); Session cmisSession = givenAdminSessionOnZeCollection(); Folder rootFolder = cmisSession.getRootFolder(); assertThat(rootFolder.getAllowableActions().getAllowableActions()).containsOnly( Action.CAN_GET_CHILDREN, Action.CAN_GET_PROPERTIES ); assertThat(rootFolder.getPropertyValue(PropertyIds.NAME)).isEqualTo("Collection de test"); } private void thenFolderOneObjectHasCorrectFields(CmisObject object) { assertThat(object).isNotNull(); assertThat(object.getId()).isEqualTo("folder1"); assertThat(object.getProperty("id").getValue()).isEqualTo("folder1"); assertThat(object.getProperty("title").getValue()).isEqualTo("folder1"); assertThat(object.getProperty("schema").getValue()).isEqualTo("folder_default"); assertThat(object.getProperty("path").getFirstValue()).isEqualTo( "/taxo1/zetaxo1_fond1/zetaxo1_fond1_1/zetaxo1_category1/folder1"); assertThat(object.getProperty(PropertyIds.PARENT_ID).getValue()).isEqualTo("zetaxo1_category1"); assertThat(object.getProperty(PropertyIds.PATH).getValue()).isNotNull(); } private void thenCategoryTwoObjectHasCorrectFields(CmisObject object) { assertThat(object).isNotNull(); assertThat(object.getId()).isEqualTo("zetaxo1_category2"); //assertThat(object.getProperty("id").getValue()).isEqualTo("taxo1_category2"); assertThat(object.getProperty("title").getValue()).isEqualTo("zetaxo1_category2"); assertThat(object.getProperty("schema").getValue()).isEqualTo("category_default"); assertThat(object.getProperty("path").getFirstValue()) .isEqualTo("/taxo1/zetaxo1_fond1/zetaxo1_category2"); assertThat(object.getProperty(PropertyIds.PARENT_ID).getValue()).isEqualTo("zetaxo1_fond1"); } private void thenTaxoOneObjectHasCorrectFields(CmisObject object) { assertThat(object).isNotNull(); assertThat(object.getId()).isEqualTo("taxo_taxo1"); assertThat(object.getName()).isEqualTo("taxo1"); assertThat(object.getProperty(PropertyIds.PARENT_ID).getValue()).isEqualTo(zeCollection); assertThat(object.getProperty(PropertyIds.PATH).getValue()).isEqualTo("/taxo_taxo1"); } private Session givenAdminSessionOnZeCollection() throws RecordServicesException { return newCmisSessionBuilder().authenticatedBy(chuckNorrisKey, chuckNorrisToken).onCollection(zeCollection) .build(); } }