package com.constellio.app.modules.es.services.mapping.connectors;
import static com.constellio.model.entities.schemas.MetadataValueType.DATE;
import static com.constellio.model.entities.schemas.MetadataValueType.STRING;
import static java.util.Arrays.asList;
import static org.assertj.core.api.Assertions.assertThat;
import org.assertj.core.api.ListAssert;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.modules.es.model.connectors.ConnectorInstance;
import com.constellio.app.modules.es.model.connectors.ldap.ConnectorLDAPUserDocument;
import com.constellio.app.modules.es.services.ConnectorManager;
import com.constellio.app.modules.es.services.ESSchemasRecordsServices;
import com.constellio.app.modules.es.services.mapping.ConnectorField;
import com.constellio.app.modules.es.services.mapping.ConnectorMappingService;
import com.constellio.sdk.tests.ConstellioTest;
import com.constellio.sdk.tests.setups.Users;
public class ConnectorLdapMappingServiceAcceptanceTest extends ConstellioTest {
ConnectorInstance<?> ldapConnectorInstance;
Users users = new Users();
ConnectorManager connectorManager;
ESSchemasRecordsServices es;
ConnectorMappingService service;
@Before
public void setUp()
throws Exception {
prepareSystem(withZeCollection().withConstellioESModule().withAllTest(users));
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
service = new ConnectorMappingService(es);
connectorManager = es.getConnectorManager();
ldapConnectorInstance = connectorManager.createConnector(es.newConnectorLDAPInstance()
.setUsername("bob").setPassword("marley").setUrls(asList("url")).setConnectionUsername("user")
.setUsersBaseContextList(asList("user1"))
.setCode("http").setTitle("Http connector").setEnabled(false));
ldapConnectorInstance = es.wrapConnectorInstance(ldapConnectorInstance.getWrappedRecord());
}
@Test
public void whenGetConnectorSchemaTypesThenReturnAllTypes()
throws Exception {
assertThat(service.getDocumentTypes(ldapConnectorInstance)).containsOnly(
ConnectorLDAPUserDocument.SCHEMA_TYPE);
}
@Test
public void givenAConnectorHasFetchedNothingThenReturnDefaultDeclaredFields()
throws Exception {
String userDocument = ConnectorLDAPUserDocument.SCHEMA_TYPE;
assertThatConnectorFields(ldapConnectorInstance, ConnectorLDAPUserDocument.SCHEMA_TYPE).containsOnly(
new ConnectorField(userDocument + ":userAccountControl", "userAccountControl", STRING),
new ConnectorField(userDocument + ":sAMAccountType", "sAMAccountType", STRING),
new ConnectorField(userDocument + ":primaryGroupID", "primaryGroupID", STRING),
new ConnectorField(userDocument + ":objectSid", "objectSid", STRING),
new ConnectorField(userDocument + ":objectGUID", "objectGUID", STRING),
new ConnectorField(userDocument + ":uSNChanged", "uSNChanged", STRING),
new ConnectorField(userDocument + ":uSNCreated", "uSNCreated", STRING),
new ConnectorField(userDocument + ":userPrincipalName", "userPrincipalName", STRING),
new ConnectorField(userDocument + ":primaryGroupID", "primaryGroupID", STRING),
new ConnectorField(userDocument + ":name", "name", STRING),
new ConnectorField(userDocument + ":displayName", "displayName", STRING),
new ConnectorField(userDocument + ":whenChanged", "whenChanged", DATE),
new ConnectorField(userDocument + ":whenCreated", "whenCreated", DATE)
);
}
private ListAssert<ConnectorField> assertThatConnectorFields(ConnectorInstance<?> connectorInstance,
String connectorDocumentSchemaType) {
return assertThat(service.getConnectorFields(connectorInstance, connectorDocumentSchemaType))
.usingFieldByFieldElementComparator();
}
}