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.Session; import org.assertj.core.api.Condition; 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.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.annotations.DriverTest; import com.constellio.sdk.tests.setups.Users; @DriverTest public class GetObjectByPathRequestAcceptTest 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()); 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); cmisSession = givenAdminSessionOnZeCollection(); CmisAcceptanceTestSetup.giveUseCMISPermissionToUsers(getModelLayerFactory()); } @Test public void givenRootPathThenReturnTheCollectionRecord() throws Exception { CmisObject objectData = cmisSession.getObjectByPath("/"); assertThat(objectData).has(property("cmis:path", "/")); } @Test public void givenTaxoPathThenReturnTheTaxoObject() throws Exception { CmisObject objectData = cmisSession.getObjectByPath("/taxo_taxo1"); assertThat(objectData).has(property("cmis:path", "/taxo_taxo1")); } @Test public void givenRecordPathThenReturnTheRecordObject() throws Exception { recordServices.update(users.chuckNorrisIn(zeCollection).setCollectionReadAccess(true).getWrappedRecord()); CmisObject objectData = cmisSession.getObjectByPath("/taxo_taxo1/zetaxo1_fond1/zetaxo1_category2"); assertThat(objectData).has(property("cmis:path", "/taxo_taxo1/zetaxo1_fond1/zetaxo1_category2")); } private Condition<? super CmisObject> property(final String key, final String value) { return new Condition<CmisObject>() { @Override public boolean matches(CmisObject objectData) { return objectData.getProperty(key).getFirstValue().equals(value); } }; } private Session givenAdminSessionOnZeCollection() throws RecordServicesException { return newCmisSessionBuilder().authenticatedBy(chuckNorrisKey, chuckNorrisToken).onCollection(zeCollection) .build(); } }