package com.constellio.app.modules.es.connectors.smb.jobmanagement;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Arrays;
import java.util.List;
import org.joda.time.LocalDateTime;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.modules.es.connectors.smb.LastFetchedStatus;
import com.constellio.app.modules.es.connectors.smb.service.SmbFileDTO;
import com.constellio.app.modules.es.connectors.smb.service.SmbFileDTO.SmbFileDTOStatus;
import com.constellio.app.modules.es.connectors.smb.service.SmbRecordService;
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.schemas.Schemas;
import com.constellio.sdk.tests.ConstellioTest;
public class SmbDocumentOrFolderUpdaterAcceptanceTest extends ConstellioTest {
private ESSchemasRecordsServices es;
private ConnectorSmbInstance connectorInstance;
private SmbRecordService smbRecordService;
private ConnectorSmbDocument document;
private ConnectorSmbFolder folder;
private String FILE_URL = SmbTestParams.EXISTING_SHARE + SmbTestParams.EXISTING_FILE;
private String FOLDER_URL = SmbTestParams.EXISTING_SHARE + SmbTestParams.EXISTING_FOLDER;
private long LAST_MODIFIED = System.currentTimeMillis();
private String PARENT_ID = "parentId";
// private LocalDateTime LAST_FETCHED = new LocalDateTime();
String URL = "a";
LocalDateTime LAST_MODIFIED2 = new LocalDateTime(LAST_MODIFIED);
LocalDateTime LAST_FETCHED = new LocalDateTime();
long SIZE = 11;
String PERMISSIONS_HASH = "hash to replace";
String TITLE = "title to replace";
String PARSED_CONTENT = "content to replace";
String LANGUAGE = "language to repplace";
String EXTENSION = "extension to replace";
List<String> TOKENS = Arrays.asList("t");
String CONNECTOR = "connector id to replace";
String TRAVERSAL_CODE = "traversal code to replace";
@Before
public void setup() {
prepareSystem(withZeCollection().withConstellioESModule()
.withAllTestUsers());
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
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);
es.getConnectorManager()
.createConnector(connectorInstance);
smbRecordService = new SmbRecordService(es, connectorInstance);
}
@Test
public void givenFullDocumentDTOWhenUpdatingNewRecordThenUpdateEverything() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FILE_URL);
smbFileDTO.setLastModified(LAST_MODIFIED);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setLength(SmbTestParams.EXISTING_FILE_LENGTH);
smbFileDTO.setPermissionsHash(SmbTestParams.EXISTING_FILE_PERMISSION_HASH);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(true);
smbFileDTO.setIsDirectory(false);
smbFileDTO.setStatus(SmbFileDTOStatus.FULL_DTO);
smbFileDTO.setParsedContent(SmbTestParams.EXISTING_FILE_CONTENT);
smbFileDTO.setLanguage(SmbTestParams.EXISTING_FILE_LANG);
smbFileDTO.setExtension(SmbTestParams.EXISTING_FILE_EXT);
smbFileDTO.setAllowTokens(SmbTestParams.ALLOW_TOKENS);
smbFileDTO.setAllowShareTokens(SmbTestParams.ALLOW_SHARE_TOKENS);
smbFileDTO.setDenyTokens(SmbTestParams.DENY_TOKENS);
smbFileDTO.setDenyShareTokens(SmbTestParams.DENY_SHARE_TOKENS);
document = es.newConnectorSmbDocument(connectorInstance);
documentOrFolderUpdater.updateDocumentOrFolder(smbFileDTO, document, PARENT_ID);
assertThat(document.getUrl()).isEqualTo(smbFileDTO.getUrl())
.isNotEmpty();
assertThat(document.getLastModified()).isEqualTo(new LocalDateTime(smbFileDTO.getLastModified()))
.isNotNull();
assertThat(document.getLastFetched()).isEqualTo(smbFileDTO.getLastFetchAttempt())
.isNotNull();
assertThat(document.getSize()).isEqualTo(smbFileDTO.getLength())
.isNotNull();
assertThat(document.getPermissionsHash()).isEqualTo(smbFileDTO.getPermissionsHash())
.isNotNull();
assertThat(document.getTitle()).isEqualTo(smbFileDTO.getName())
.isNotNull();
assertThat(document.getParsedContent()).isEqualTo(smbFileDTO.getParsedContent())
.isNotNull();
assertThat(document.getLanguage()).isEqualTo(smbFileDTO.getLanguage())
.isNotNull();
assertThat(document.getExtension()).isEqualTo(smbFileDTO.getExtension())
.isNotNull();
assertThat(document.getManualTokens()).isEqualTo(smbFileDTO.getAllowTokens())
.isNotNull();
assertThat(document.get(Schemas.SHARE_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getAllowShareTokens())
.isNotNull();
assertThat(document.get(Schemas.DENY_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getDenyTokens())
.isNotNull();
assertThat(document.get(Schemas.SHARE_DENY_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getDenyShareTokens())
.isNotNull();
assertThat(document.getLastFetchAttemptStatus()).isEqualTo(LastFetchedStatus.OK);
assertThat(document.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(document.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(document.isFetched()).isTrue();
assertThat(document.getLastFetchAttemptDetails()).isNull();
assertThat(document.getErrorCode()).isNull();
assertThat(document.getErrorMessage()).isNull();
assertThat(document.getErrorsCount()).isZero();
assertThat(document.getErrorStackTrace()).isNull();
assertThat(document.getParent()).isEqualTo(PARENT_ID);
}
@Test
public void givenFullDocumentDTOWhenUpdatingExistingRecordThenUpdateEverything() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FILE_URL);
smbFileDTO.setLastModified(LAST_MODIFIED);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setLength(SmbTestParams.EXISTING_FILE_LENGTH);
smbFileDTO.setPermissionsHash(SmbTestParams.EXISTING_FILE_PERMISSION_HASH);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(true);
smbFileDTO.setIsDirectory(false);
smbFileDTO.setStatus(SmbFileDTOStatus.FULL_DTO);
smbFileDTO.setParsedContent(SmbTestParams.EXISTING_FILE_CONTENT);
smbFileDTO.setLanguage(SmbTestParams.EXISTING_FILE_LANG);
smbFileDTO.setExtension(SmbTestParams.EXISTING_FILE_EXT);
smbFileDTO.setAllowTokens(SmbTestParams.ALLOW_TOKENS);
smbFileDTO.setAllowShareTokens(SmbTestParams.ALLOW_SHARE_TOKENS);
smbFileDTO.setDenyTokens(SmbTestParams.DENY_TOKENS);
smbFileDTO.setDenyShareTokens(SmbTestParams.DENY_SHARE_TOKENS);
document = es.newConnectorSmbDocument(connectorInstance)
.setUrl("a")
.setLastModified(new LocalDateTime())
.setLastFetched(new LocalDateTime())
.setSize(11)
.setPermissionsHash("hash to replace")
.setTitle("title to replace")
.setParsedContent("content to replace")
.setLanguage("es")
.setExtension("no ext");
document.setManualTokens("t")
.set(Schemas.SHARE_TOKENS.getLocalCode(), Arrays.asList("t"))
.set(Schemas.DENY_TOKENS.getLocalCode(), Arrays.asList("t"))
.set(Schemas.SHARE_DENY_TOKENS.getLocalCode(), Arrays.asList("t"));
document.setLastFetchAttemptStatus(LastFetchedStatus.PARTIAL);
document.setConnector("id to replace")
.setTraversalCode("traversal code to replace")
.setFetched(false)
.setLastFetchAttemptDetails("");
documentOrFolderUpdater.updateDocumentOrFolder(smbFileDTO, document, PARENT_ID);
assertThat(document.getUrl()).isEqualTo(smbFileDTO.getUrl())
.isNotEmpty();
assertThat(document.getLastModified()).isEqualTo(new LocalDateTime(smbFileDTO.getLastModified()))
.isNotNull();
assertThat(document.getLastFetched()).isEqualTo(smbFileDTO.getLastFetchAttempt())
.isNotNull();
assertThat(document.getSize()).isEqualTo(smbFileDTO.getLength())
.isNotNull();
assertThat(document.getPermissionsHash()).isEqualTo(smbFileDTO.getPermissionsHash())
.isNotNull();
assertThat(document.getTitle()).isEqualTo(smbFileDTO.getName())
.isNotNull();
assertThat(document.getParsedContent()).isEqualTo(smbFileDTO.getParsedContent())
.isNotNull();
assertThat(document.getLanguage()).isEqualTo(smbFileDTO.getLanguage())
.isNotNull();
assertThat(document.getExtension()).isEqualTo(smbFileDTO.getExtension())
.isNotNull();
assertThat(document.getManualTokens()).isEqualTo(smbFileDTO.getAllowTokens())
.isNotNull();
assertThat(document.get(Schemas.SHARE_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getAllowShareTokens())
.isNotNull();
assertThat(document.get(Schemas.DENY_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getDenyTokens())
.isNotNull();
assertThat(document.get(Schemas.SHARE_DENY_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getDenyShareTokens())
.isNotNull();
assertThat(document.getLastFetchAttemptStatus()).isEqualTo(LastFetchedStatus.OK);
assertThat(document.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(document.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(document.isFetched()).isTrue();
assertThat(document.getLastFetchAttemptDetails()).isNull();
assertThat(document.getErrorCode()).isNull();
assertThat(document.getErrorMessage()).isNull();
assertThat(document.getErrorsCount()).isZero();
assertThat(document.getErrorStackTrace()).isNull();
assertThat(document.getParent()).isEqualTo(PARENT_ID);
}
@Test
public void givenFailedDocumentDTOWhenUpdatingExistingRecordThenUpdateErrors() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FILE_URL);
smbFileDTO.setLastModified(LAST_MODIFIED);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setPermissionsHash(SmbTestParams.EXISTING_FILE_PERMISSION_HASH);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(true);
smbFileDTO.setIsDirectory(false);
smbFileDTO.setStatus(SmbFileDTOStatus.FAILED_DTO);
smbFileDTO.setParsedContent(SmbTestParams.EXISTING_FILE_CONTENT);
smbFileDTO.setLanguage(SmbTestParams.EXISTING_FILE_LANG);
smbFileDTO.setExtension(SmbTestParams.EXISTING_FILE_EXT);
smbFileDTO.setAllowTokens(SmbTestParams.ALLOW_TOKENS);
smbFileDTO.setAllowShareTokens(SmbTestParams.ALLOW_SHARE_TOKENS);
smbFileDTO.setDenyTokens(SmbTestParams.DENY_TOKENS);
smbFileDTO.setDenyShareTokens(SmbTestParams.DENY_SHARE_TOKENS);
smbFileDTO.setErrorMessage("Error message");
document = es.newConnectorSmbDocument(connectorInstance)
.setUrl(URL)
.setLastModified(LAST_MODIFIED2)
.setLastFetched(LAST_MODIFIED2)
.setSize(SIZE)
.setPermissionsHash(PERMISSIONS_HASH)
.setTitle(TITLE)
.setParsedContent(PARSED_CONTENT)
.setLanguage(LANGUAGE)
.setExtension(EXTENSION);
document.setManualTokens(TOKENS)
.set(Schemas.SHARE_TOKENS.getLocalCode(), TOKENS)
.set(Schemas.DENY_TOKENS.getLocalCode(), TOKENS)
.set(Schemas.SHARE_DENY_TOKENS.getLocalCode(), TOKENS);
document.setLastFetchAttemptStatus(LastFetchedStatus.PARTIAL);
document.setConnector(CONNECTOR)
.setTraversalCode(TRAVERSAL_CODE)
.setFetched(false)
.setLastFetchAttemptDetails("");
documentOrFolderUpdater.updateFailedDocumentOrFolder(smbFileDTO, document, PARENT_ID);
// Unchanged
assertThat(document.getLastModified()).isEqualTo(LAST_MODIFIED2);
assertThat(document.getSize()).isEqualTo(SIZE);
assertThat(document.getPermissionsHash()).isEqualTo(PERMISSIONS_HASH);
assertThat(document.getTitle()).isEqualTo(TITLE);
assertThat(document.getParsedContent()).isEqualTo(PARSED_CONTENT);
assertThat(document.getLanguage()).isEqualTo(LANGUAGE);
assertThat(document.getExtension()).isEqualTo(EXTENSION);
assertThat(document.getManualTokens()).isEqualTo(TOKENS);
assertThat(document.get(Schemas.SHARE_TOKENS.getLocalCode())).isEqualTo(TOKENS);
assertThat(document.get(Schemas.DENY_TOKENS.getLocalCode())).isEqualTo(TOKENS);
assertThat(document.get(Schemas.SHARE_DENY_TOKENS.getLocalCode())).isEqualTo(TOKENS);
// Changed
assertThat(document.getUrl()).isEqualTo(FILE_URL);
assertThat(document.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(document.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(document.isFetched()).isTrue();
assertThat(document.getLastFetchAttemptStatus()).isEqualTo(LastFetchedStatus.FAILED);
assertThat(document.getLastFetched()).isEqualTo(LAST_FETCHED);
assertThat(document.getLastFetchAttemptDetails()).isNotEmpty();
assertThat(document.getErrorCode()).isNotEmpty();
assertThat(document.getErrorMessage()).isNotEmpty();
assertThat(document.getErrorsCount()).isNotZero();
assertThat(document.getErrorStackTrace()).isNotEmpty();
assertThat(document.getParent()).isEqualTo(PARENT_ID);
}
@Test
public void givenFailedDocumentDTOWhenUpdatingNewRecordThenUpdateErrors() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FILE_URL);
smbFileDTO.setLastModified(LAST_MODIFIED);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setPermissionsHash(SmbTestParams.EXISTING_FILE_PERMISSION_HASH);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(true);
smbFileDTO.setIsDirectory(false);
smbFileDTO.setStatus(SmbFileDTOStatus.FAILED_DTO);
smbFileDTO.setParsedContent(SmbTestParams.EXISTING_FILE_CONTENT);
smbFileDTO.setLanguage(SmbTestParams.EXISTING_FILE_LANG);
smbFileDTO.setExtension(SmbTestParams.EXISTING_FILE_EXT);
smbFileDTO.setAllowTokens(SmbTestParams.ALLOW_TOKENS);
smbFileDTO.setAllowShareTokens(SmbTestParams.ALLOW_SHARE_TOKENS);
smbFileDTO.setDenyTokens(SmbTestParams.DENY_TOKENS);
smbFileDTO.setDenyShareTokens(SmbTestParams.DENY_SHARE_TOKENS);
smbFileDTO.setErrorMessage("Error message");
document = es.newConnectorSmbDocument(connectorInstance);
documentOrFolderUpdater.updateFailedDocumentOrFolder(smbFileDTO, document, PARENT_ID);
// Initial state
assertThat(document.getLastModified()).isNull();
assertThat(document.getSize()).isEqualTo(-3);
assertThat(document.getPermissionsHash()).isNull();
assertThat(document.getTitle()).isNull();
assertThat(document.getParsedContent()).isNull();
assertThat(document.getLanguage()).isNull();
assertThat(document.getExtension()).isNull();
assertThat(document.getManualTokens()).isEmpty();
List<String> shareTokens = document.get(Schemas.SHARE_TOKENS.getLocalCode());
assertThat(shareTokens).isEmpty();
List<String> denyTokens = document.get(Schemas.DENY_TOKENS.getLocalCode());
assertThat(denyTokens).isEmpty();
List<String> denyShareTokens = document.get(Schemas.SHARE_DENY_TOKENS.getLocalCode());
assertThat(denyShareTokens).isEmpty();
// Changed
assertThat(document.getUrl()).isEqualTo(FILE_URL);
assertThat(document.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(document.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(document.isFetched()).isTrue();
assertThat(document.getLastFetchAttemptStatus()).isEqualTo(LastFetchedStatus.FAILED);
assertThat(document.getLastFetched()).isEqualTo(LAST_FETCHED);
assertThat(document.getLastFetchAttemptDetails()).isNotEmpty();
assertThat(document.getErrorCode()).isNotEmpty();
assertThat(document.getErrorMessage()).isNotEmpty();
assertThat(document.getErrorsCount()).isNotZero();
assertThat(document.getErrorStackTrace()).isNotEmpty();
assertThat(document.getParent()).isEqualTo(PARENT_ID);
}
@Test
public void givenFullFolderDTOWhenUpdatingNewRecordThenUpdateEverything() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FOLDER_URL);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(false);
smbFileDTO.setIsDirectory(true);
smbFileDTO.setStatus(SmbFileDTOStatus.FULL_DTO);
folder = es.newConnectorSmbFolder(connectorInstance);
documentOrFolderUpdater.updateDocumentOrFolder(smbFileDTO, folder, PARENT_ID);
assertThat(folder.getUrl()).isEqualTo(smbFileDTO.getUrl())
.isNotEmpty();
assertThat(folder.getLastFetched()).isEqualTo(smbFileDTO.getLastFetchAttempt())
.isNotNull();
assertThat(folder.getTitle()).isEqualTo(smbFileDTO.getName())
.isNotNull();
assertThat(folder.getLastFetchedStatus()).isEqualTo(LastFetchedStatus.OK);
assertThat(folder.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(folder.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(folder.isFetched()).isTrue();
assertThat(folder.getErrorCode()).isNull();
assertThat(folder.getErrorMessage()).isNull();
assertThat(folder.getErrorsCount()).isZero();
assertThat(folder.getErrorStackTrace()).isNull();
assertThat(folder.getParent()).isEqualTo(PARENT_ID);
}
@Test
public void givenFullFolderDTOWhenUpdatingExistingRecordThenUpdateEverything() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FOLDER_URL);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(false);
smbFileDTO.setIsDirectory(true);
smbFileDTO.setStatus(SmbFileDTOStatus.FULL_DTO);
folder = es.newConnectorSmbFolder(connectorInstance)
.setUrl(URL)
.setLastFetched(LAST_FETCHED)
.setTitle(TITLE)
.setLastFetchedStatus(LastFetchedStatus.FAILED)
.setConnector(CONNECTOR)
.setTraversalCode(TRAVERSAL_CODE)
.setFetched(false);
documentOrFolderUpdater.updateDocumentOrFolder(smbFileDTO, folder, PARENT_ID);
assertThat(folder.getUrl()).isEqualTo(smbFileDTO.getUrl())
.isNotEmpty();
assertThat(folder.getLastFetched()).isEqualTo(smbFileDTO.getLastFetchAttempt())
.isNotNull();
assertThat(folder.getTitle()).isEqualTo(smbFileDTO.getName())
.isNotNull();
assertThat(folder.getLastFetchedStatus()).isEqualTo(LastFetchedStatus.OK);
assertThat(folder.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(folder.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(folder.isFetched()).isTrue();
assertThat(folder.getErrorCode()).isNull();
assertThat(folder.getErrorMessage()).isNull();
assertThat(folder.getErrorsCount()).isZero();
assertThat(folder.getErrorStackTrace()).isNull();
assertThat(folder.getParent()).isEqualTo(PARENT_ID);
}
@Test
public void givenFailedFolderDTOWhenUpdatingNewRecordThen() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FOLDER_URL);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(false);
smbFileDTO.setIsDirectory(true);
smbFileDTO.setStatus(SmbFileDTOStatus.FAILED_DTO);
smbFileDTO.setErrorMessage("Failed to connect: 0.0.0.0<00>/192.168.1.207");
folder = es.newConnectorSmbFolder(connectorInstance);
documentOrFolderUpdater.updateFailedDocumentOrFolder(smbFileDTO, folder, PARENT_ID);
assertThat(folder.getUrl()).isEqualTo(smbFileDTO.getUrl())
.isNotEmpty();
assertThat(folder.getLastFetched()).isEqualTo(smbFileDTO.getLastFetchAttempt())
.isNotNull();
assertThat(folder.getTitle()).isNull();
assertThat(folder.getLastFetchedStatus()).isEqualTo(LastFetchedStatus.FAILED);
assertThat(folder.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(folder.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(folder.isFetched()).isTrue();
assertThat(folder.getErrorCode()).isEqualTo("ErrorCode");
assertThat(folder.getErrorMessage()).isEqualTo("Failed to connect: 0.0.0.0<00>/192.168.1.207");
assertThat(folder.getErrorsCount()).isNotZero();
assertThat(folder.getErrorStackTrace()).isEqualTo("Failed to connect: 0.0.0.0<00>/192.168.1.207");
assertThat(folder.getParent()).isEqualTo(PARENT_ID);
}
@Test
public void givenFailedFolderDTOWhenUpdatingExistingRecordThen() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FOLDER_URL);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(false);
smbFileDTO.setIsDirectory(true);
smbFileDTO.setStatus(SmbFileDTOStatus.FAILED_DTO);
smbFileDTO.setErrorMessage("Failed to connect: 0.0.0.0<00>/192.168.1.207");
folder = es.newConnectorSmbFolder(connectorInstance)
.setUrl(URL)
.setLastFetched(LAST_FETCHED)
.setTitle(TITLE)
.setLastFetchedStatus(LastFetchedStatus.FAILED)
.setConnector(CONNECTOR)
.setTraversalCode(TRAVERSAL_CODE)
.setFetched(false);
documentOrFolderUpdater.updateFailedDocumentOrFolder(smbFileDTO, folder, PARENT_ID);
assertThat(folder.getUrl()).isEqualTo(smbFileDTO.getUrl())
.isNotEmpty();
assertThat(folder.getLastFetched()).isEqualTo(smbFileDTO.getLastFetchAttempt())
.isNotNull();
assertThat(folder.getTitle()).isEqualTo(TITLE);
assertThat(folder.getLastFetchedStatus()).isEqualTo(LastFetchedStatus.FAILED);
assertThat(folder.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(folder.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(folder.isFetched()).isTrue();
assertThat(folder.getErrorCode()).isEqualTo("ErrorCode");
assertThat(folder.getErrorMessage()).isEqualTo("Failed to connect: 0.0.0.0<00>/192.168.1.207");
assertThat(folder.getErrorsCount()).isNotZero();
assertThat(folder.getErrorStackTrace()).isEqualTo("Failed to connect: 0.0.0.0<00>/192.168.1.207");
assertThat(folder.getParent()).isEqualTo(PARENT_ID);
}
@Test
public void givenUnmodifiedDocumentWhenUpdatingRecordThenMinimalUpdate() {
SmbDocumentOrFolderUpdater documentOrFolderUpdater = new SmbDocumentOrFolderUpdater(connectorInstance, smbRecordService);
SmbFileDTO smbFileDTO = new SmbFileDTO();
smbFileDTO.setUrl(FILE_URL);
smbFileDTO.setLastModified(LAST_MODIFIED);
smbFileDTO.setLastFetchAttempt(LAST_FETCHED);
smbFileDTO.setLength(SmbTestParams.EXISTING_FILE_LENGTH);
smbFileDTO.setPermissionsHash(SmbTestParams.EXISTING_FILE_PERMISSION_HASH);
smbFileDTO.setName(SmbTestParams.EXISTING_FILE);
smbFileDTO.setIsFile(true);
smbFileDTO.setIsDirectory(false);
smbFileDTO.setStatus(SmbFileDTOStatus.FULL_DTO);
smbFileDTO.setParsedContent(SmbTestParams.EXISTING_FILE_CONTENT);
smbFileDTO.setLanguage(SmbTestParams.EXISTING_FILE_LANG);
smbFileDTO.setExtension(SmbTestParams.EXISTING_FILE_EXT);
smbFileDTO.setAllowTokens(SmbTestParams.ALLOW_TOKENS);
smbFileDTO.setAllowShareTokens(SmbTestParams.ALLOW_SHARE_TOKENS);
smbFileDTO.setDenyTokens(SmbTestParams.DENY_TOKENS);
smbFileDTO.setDenyShareTokens(SmbTestParams.DENY_SHARE_TOKENS);
document = es.newConnectorSmbDocument(connectorInstance)
.setUrl(FILE_URL)
.setLastModified(LAST_MODIFIED2)
.setLastFetched(LAST_FETCHED)
.setSize(SmbTestParams.EXISTING_FILE_LENGTH)
.setPermissionsHash(SmbTestParams.EXISTING_FILE_PERMISSION_HASH)
.setTitle(SmbTestParams.EXISTING_FILE)
.setParsedContent(SmbTestParams.EXISTING_FILE_CONTENT)
.setLanguage(SmbTestParams.EXISTING_FILE_LANG)
.setExtension(SmbTestParams.EXISTING_FILE_EXT);
document.setManualTokens(SmbTestParams.ALLOW_TOKENS)
.set(Schemas.SHARE_TOKENS.getLocalCode(), SmbTestParams.ALLOW_SHARE_TOKENS)
.set(Schemas.DENY_TOKENS.getLocalCode(), SmbTestParams.DENY_TOKENS)
.set(Schemas.SHARE_DENY_TOKENS.getLocalCode(), SmbTestParams.DENY_SHARE_TOKENS);
document.setLastFetchAttemptStatus(LastFetchedStatus.PARTIAL);
document.setConnector(connectorInstance.getId())
.setTraversalCode(connectorInstance.getTraversalCode())
.setFetched(false)
.setLastFetchAttemptDetails("");
documentOrFolderUpdater.updateUnmodifiedDocument(smbFileDTO, document, PARENT_ID);
assertThat(document.getUrl()).isEqualTo(smbFileDTO.getUrl())
.isNotEmpty();
assertThat(document.getLastModified()).isEqualTo(new LocalDateTime(smbFileDTO.getLastModified()))
.isNotNull();
assertThat(document.getLastFetched()).isEqualTo(smbFileDTO.getLastFetchAttempt())
.isNotNull();
assertThat(document.getSize()).isEqualTo(smbFileDTO.getLength())
.isNotNull();
assertThat(document.getPermissionsHash()).isEqualTo(smbFileDTO.getPermissionsHash())
.isNotNull();
assertThat(document.getTitle()).isEqualTo(smbFileDTO.getName())
.isNotNull();
assertThat(document.getParsedContent()).isEqualTo(smbFileDTO.getParsedContent())
.isNotNull();
assertThat(document.getLanguage()).isEqualTo(smbFileDTO.getLanguage())
.isNotNull();
assertThat(document.getExtension()).isEqualTo(smbFileDTO.getExtension())
.isNotNull();
assertThat(document.getManualTokens()).isEqualTo(smbFileDTO.getAllowTokens())
.isNotNull();
assertThat(document.get(Schemas.SHARE_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getAllowShareTokens())
.isNotNull();
assertThat(document.get(Schemas.DENY_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getDenyTokens())
.isNotNull();
assertThat(document.get(Schemas.SHARE_DENY_TOKENS.getLocalCode())).isEqualTo(smbFileDTO.getDenyShareTokens())
.isNotNull();
assertThat(document.getLastFetchAttemptStatus()).isEqualTo(LastFetchedStatus.OK);
assertThat(document.getConnector()).isEqualTo(connectorInstance.getId());
assertThat(document.getTraversalCode()).isEqualTo(connectorInstance.getTraversalCode());
assertThat(document.isFetched()).isFalse();
assertThat(document.getLastFetchAttemptDetails()).isNull();
assertThat(document.getErrorCode()).isNull();
assertThat(document.getErrorMessage()).isNull();
assertThat(document.getErrorsCount()).isZero();
assertThat(document.getErrorStackTrace()).isNull();
assertThat(document.getParent()).isEqualTo(PARENT_ID);
}
}