package com.constellio.app.api.cmis.requests.navigation;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
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.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 GetFolderParentRequestAcceptTest extends ConstellioTest {
UserServices userServices;
TaxonomiesManager taxonomiesManager;
MetadataSchemasManager schemasManager;
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();
schemasManager = getModelLayerFactory().getMetadataSchemasManager();
recordServices = getModelLayerFactory().newRecordServices();
taxonomiesSearchServices = getModelLayerFactory().newTaxonomiesSearchService();
users.setUp(userServices);
defineSchemasManager().using(zeCollectionSchemas);
CmisAcceptanceTestSetup.allSchemaTypesSupported(getAppLayerFactory());
taxonomiesManager.addTaxonomy(zeCollectionSchemas.getTaxonomy1(), schemasManager);
taxonomiesManager.setPrincipalTaxonomy(zeCollectionSchemas.getTaxonomy1(), schemasManager);
zeCollectionRecords = zeCollectionSchemas.givenRecords(recordServices);
userServices.addUpdateUserCredential(
userServices.getUserCredential(chuckNorris).withServiceKey(chuckNorrisKey).withSystemAdminPermission());
chuckNorrisToken = userServices.generateToken(chuckNorris);
userServices.addUserToCollection(users.chuckNorris(), zeCollection);
cmisSession = givenAdminSessionOnZeCollection();
recordServices.update(users.chuckNorrisIn(zeCollection).setCollectionWriteAccess(true).getWrappedRecord());
CmisAcceptanceTestSetup.giveUseCMISPermissionToUsers(getModelLayerFactory());
}
@Test
public void whenGetParentOfSubFolderThenItIsReturned()
throws Exception {
Record record = zeCollectionRecords.folder2_1;
ObjectData objectDataParent = cmisSession.getBinding().getNavigationService()
.getFolderParent(cmisSession.getRepositoryInfo().getId(), record.getId(), null, null);
assertThat(objectDataParent.getId()).isEqualTo(zeCollectionRecords.folder2.getId());
}
@Test
public void whenGetParentOfSubCategoryThenItIsReturned()
throws Exception {
Record record = zeCollectionRecords.taxo1_category2_1;
ObjectData objectDataParent = cmisSession.getBinding().getNavigationService()
.getFolderParent(cmisSession.getRepositoryInfo().getId(), record.getId(), null, null);
assertThat(objectDataParent.getId()).isEqualTo(zeCollectionRecords.taxo1_category2.getId());
}
@Test
public void whenGetParentOfTaxonomyThenRootIsReturned()
throws Exception {
Record record = zeCollectionRecords.taxo1_category2;
ObjectData objectDataParent = cmisSession.getBinding().getNavigationService()
.getFolderParent(cmisSession.getRepositoryInfo().getId(), "taxo_taxo1", null, null);
assertThat(objectDataParent.getId()).isEqualTo("zeCollection");
}
@Test
public void whenGetParentOfCategoryThenItIsReturned()
throws Exception {
Record record = zeCollectionRecords.taxo1_category2;
ObjectData objectDataParent = cmisSession.getBinding().getNavigationService()
.getFolderParent(cmisSession.getRepositoryInfo().getId(), record.getId(), null, null);
assertThat(objectDataParent.getId()).isEqualTo(zeCollectionRecords.taxo1_fond1.getId());
}
@Test
public void whenGetParentOfFolderThenItIsReturned()
throws Exception {
Record record = zeCollectionRecords.folder4;
ObjectData objectDataParent = cmisSession.getBinding().getNavigationService()
.getFolderParent(cmisSession.getRepositoryInfo().getId(), record.getId(), null, null);
assertThat(objectDataParent.getId()).isEqualTo(zeCollectionRecords.taxo1_category2.getId());
}
private Session givenAdminSessionOnZeCollection()
throws RecordServicesException {
return newCmisSessionBuilder().authenticatedBy(chuckNorrisKey, chuckNorrisToken).onCollection(zeCollection)
.build();
}
}