package com.constellio.app.modules.es.connectors.smb.service;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import com.constellio.app.modules.es.connectors.smb.cache.SmbConnectorContext;
import com.constellio.app.modules.es.connectors.smb.cache.SmbConnectorContextServices;
import org.joda.time.LocalDateTime;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.modules.es.connectors.smb.testutils.SmbTestParams;
import com.constellio.app.modules.es.model.connectors.smb.ConnectorSmbDocument;
import com.constellio.app.modules.es.model.connectors.smb.ConnectorSmbFolder;
import com.constellio.app.modules.es.model.connectors.smb.ConnectorSmbInstance;
import com.constellio.app.modules.es.services.ESSchemasRecordsServices;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.records.RecordServicesException;
import com.constellio.sdk.tests.ConstellioTest;
public class SmbRecordServiceAcceptanceTest extends ConstellioTest {
private ESSchemasRecordsServices es;
private ConnectorSmbInstance connectorInstance;
private RecordServices recordService;
private SmbConnectorContext context;
@Before
public void setup()
throws RecordServicesException {
prepareSystem(withZeCollection().withConstellioESModule()
.withAllTestUsers());
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
recordService = es.getRecordServices();
connectorInstance = es.newConnectorSmbInstance()
.setDomain(SmbTestParams.DOMAIN)
.setUsername(SmbTestParams.USERNAME)
.setPassword(SmbTestParams.PASSWORD)
.setSeeds(asList(SmbTestParams.EXISTING_SHARE))
.setCode(SmbTestParams.INSTANCE_CODE)
.setTraversalCode(SmbTestParams.TRAVERSAL_CODE)
.setInclusions(asList(SmbTestParams.EXISTING_SHARE))
.setExclusions(asList(""))
.setTitle(SmbTestParams.CONNECTOR_TITLE);
recordService.update(connectorInstance);
recordService.flush();
es.getConnectorManager()
.createConnector(connectorInstance);
SmbConnectorContextServices contextServices = new SmbConnectorContextServices(es);
context = contextServices.createContext(connectorInstance.getId());
}
@Test
public void givenNewDocumentWhenVerifyingIfNewThenTrue() {
SmbRecordService smbRecordService = new SmbRecordService(es, connectorInstance);
assertThat(smbRecordService.getDocument(SmbTestParams.EXISTING_SHARE + SmbTestParams.EXISTING_FILE)).isNull();
}
@Test
public void givenExistingDocumentWhenVerifyingIfNewThenFalse()
throws RecordServicesException {
SmbRecordService smbRecordService = new SmbRecordService(es, connectorInstance);
ConnectorSmbDocument document = es.newConnectorSmbDocument(connectorInstance);
document.setUrl(SmbTestParams.EXISTING_SHARE + SmbTestParams.EXISTING_FILE);
recordService.update(document.getWrappedRecord());
recordService.flush();
assertThat(smbRecordService.getDocument(SmbTestParams.EXISTING_SHARE + SmbTestParams.EXISTING_FILE)).isNotNull();
}
@Test
public void givenUrlWithNonCachedNonExistingRecordWhenGettingRecordThenGetNull() {
SmbRecordService smbRecordService = new SmbRecordService(es, connectorInstance);
ConnectorSmbFolder folder = smbRecordService.getFolder(SmbTestParams.EXISTING_SHARE);
assertThat(folder).isNull();
}
@Test
public void givenUrlWithNonCachedExistingRecordWhenGettingRecordIdThenGetId()
throws RecordServicesException {
SmbRecordService smbRecordService = new SmbRecordService(es, connectorInstance);
ConnectorSmbFolder folder = es.newConnectorSmbFolder(connectorInstance)
.setUrl(SmbTestParams.EXISTING_SHARE);
recordService.update(folder);
recordService.flush();
String id = smbRecordService.getFolder(SmbTestParams.EXISTING_SHARE).getId();
assertThat(id).isEqualTo(folder.getId());
}
@Test
public void givenUrlNonExistingRecordWhenGettingRecordIdThen()
throws RecordServicesException {
SmbRecordService smbRecordService = new SmbRecordService(es, connectorInstance);
ConnectorSmbFolder folder = smbRecordService.newConnectorSmbFolder(SmbTestParams.EXISTING_SHARE)
.setUrl(SmbTestParams.EXISTING_SHARE);
recordService.update(folder);
recordService.flush();
recordService.logicallyDelete(folder.getWrappedRecord(), User.GOD);
recordService.physicallyDelete(folder.getWrappedRecord(), User.GOD);
ConnectorSmbFolder connectorSmbFolder = smbRecordService.getFolder(SmbTestParams.EXISTING_SHARE);
assertThat(connectorSmbFolder).isNull();
}
@Test
public void whenUpdatingResumeUrlThenResumeUrlIsUpdated() {
SmbRecordService smbRecordService = new SmbRecordService(es, connectorInstance);
String resumeUrl = "resumeUrl";
smbRecordService.updateResumeUrl(resumeUrl);
assertThat(connectorInstance.getResumeUrl()).isEqualTo(resumeUrl);
}
}