package com.constellio.app.ui;
import static com.constellio.app.modules.es.connectors.http.utils.WebsitesUtils.startWebsite;
import static com.constellio.sdk.tests.TestUtils.asList;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import com.constellio.model.entities.records.Transaction;
import org.eclipse.jetty.server.Server;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.modules.es.connectors.http.utils.WebsitesUtils;
import com.constellio.app.modules.es.model.connectors.ConnectorInstance;
import com.constellio.app.modules.es.services.ConnectorManager;
import com.constellio.app.modules.es.services.ESSchemasRecordsServices;
import com.constellio.app.modules.rm.DemoTestRecords;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.model.conf.LDAPTestConfig;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.users.UserServices;
import com.constellio.sdk.SDKPasswords;
import com.constellio.sdk.tests.ConstellioTest;
import com.constellio.sdk.tests.annotations.MainTest;
import com.constellio.sdk.tests.annotations.MainTestDefaultStart;
import com.constellio.sdk.tests.annotations.UiTest;
import com.constellio.sdk.tests.selenium.adapters.constellio.ConstellioWebDriver;
import com.constellio.sdk.tests.setups.Users;
@UiTest
@MainTest
public class StartDemoESConstellioAcceptTest extends ConstellioTest {
RecordServices recordServices;
ConstellioWebDriver driver;
RMTestRecords records = new RMTestRecords(zeCollection);
DemoTestRecords records2 = new DemoTestRecords("LaCollectionDeRida");
RMSchemasRecordsServices schemas;
Users users = new Users();
UserServices userServices;
ESSchemasRecordsServices es;
ConnectorManager connectorManager;
ConnectorInstance connectorInstance, anotherConnectorInstace;
@Before
public void setUp()
throws Exception {
givenBackgroundThreadsEnabled();
givenTransactionLogIsEnabled();
prepareSystem(
withZeCollection().withConstellioESModule().withConstellioRMModule().withRobotsModule().withAllTestUsers().withRMTest(records).withFoldersAndContainersOfEveryStatus()
);
inCollection(zeCollection).setCollectionTitleTo("Collection de test");
recordServices = getModelLayerFactory().newRecordServices();
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
users.setUp(getModelLayerFactory().newUserServices());
Transaction transaction = new Transaction();
transaction.add(users.adminIn(zeCollection).setCollectionReadAccess(true));
getModelLayerFactory().newRecordServices().execute(transaction);
}
@Test
@MainTestDefaultStart
public void startOnHomePageAsAdmin()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsAdminWithSmbConnectorAndPermissions()
throws Exception {
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
connectorManager = es.getConnectorManager();
connectorInstance = connectorManager.createConnector(es.newConnectorSmbInstance()
.setCode("zeConnectorCode")
.setEnabled(true)
.setSeeds(Arrays.asList(SDKPasswords.testSmbServer()))
.setUsername(SDKPasswords.testSmbUsername())
.setPassword(SDKPasswords.testSmbPassword())
.setDomain(SDKPasswords.testSmbDomain())
.setTraversalCode("")
.setInclusions(Arrays.asList(SDKPasswords.testSmbServer()))
.setTitle("New Smb Connector")
.setSkipShareAccessControl(true));
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
//
@Test
public void startWithConnectorInstanceOnHomePageAsAdmin()
throws Exception {
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
userServices = getModelLayerFactory().newUserServices();
users.setUp(userServices);
connectorManager = es.getConnectorManager();
configureConnectorsInstances();
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startWithHttpConnectorFetchingGouvQuebec()
throws Exception {
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
userServices = getModelLayerFactory().newUserServices();
users.setUp(userServices);
connectorManager = es.getConnectorManager();
connectorManager
.createConnector(es.newConnectorHttpInstance()
.setCode("wikipedia")
.setTitle("Wikipedia")
.setEnabled(true)
.setSeeds("http://www.servicecanada.gc.ca/")
.setDocumentsPerJobs(20)
.setNumberOfJobsInParallel(20)
.setIncludePatterns(".*"));
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startWithHttpConnectorFetchingWikipedia()
throws Exception {
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
userServices = getModelLayerFactory().newUserServices();
users.setUp(userServices);
connectorManager = es.getConnectorManager();
connectorManager
.createConnector(es.newConnectorHttpInstance()
.setCode("wikipedia")
.setTitle("Wikipedia")
.setEnabled(true)
.setSeeds("https://fr.wikipedia.org/wiki/Wikipédia:Accueil_principal")
.setIncludePatterns("https://fr.wikipedia.org/wiki/"));
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startWithThreeConnectors()
throws Exception {
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
userServices = getModelLayerFactory().newUserServices();
users.setUp(userServices);
connectorManager = es.getConnectorManager();
connectorManager
.createConnector(es.newConnectorLDAPInstance()
.setNumberOfJobsInParallel(15)
.setNumberOfJobsInParallel(30)
.setUrls(LDAPTestConfig.getUrls())
.setUsersBaseContextList(LDAPTestConfig.getUsersWithoutGroupsBaseContextList())
.setConnectionUsername(LDAPTestConfig.getUser() + "@" + LDAPTestConfig.getDomains().get(0))
.setPassword(LDAPTestConfig.getPassword())
.setCode("ldap")
.setTitle("users")
.setEnabled(true)
);
connectorManager
.createConnector(es.newConnectorHttpInstance()
.setCode("wikipedia")
.setTitle("Wikipedia")
.setEnabled(true)
.setSeeds("https://fr.wikipedia.org/wiki/Wikipédia:Accueil_principal")
.setIncludePatterns("https://fr.wikipedia.org/wiki/"));
String host = SDKPasswords.testSmbServer();
String share = SDKPasswords.testSmbShare();
String domain = SDKPasswords.testSmbDomain();
String username = SDKPasswords.testSmbUsername();
String password = SDKPasswords.testSmbPassword();
connectorInstance = connectorManager.createConnector(es.newConnectorSmbInstance()
.setCode("zeConnectorCode")
.setEnabled(true)
.setSeeds(asList(host + share))
.setUsername(username)
.setPassword(password)
.setDomain(domain)
.setInclusions(Arrays.asList("smb://127.0.0.1/"))
.setExclusions(new ArrayList<String>())
.setTitle("zeConnectorTitle"));
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startWithLDAPConnector()
throws Exception {
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
userServices = getModelLayerFactory().newUserServices();
users.setUp(userServices);
connectorManager = es.getConnectorManager();
connectorManager
.createConnector(es.newConnectorLDAPInstance()
.setNumberOfJobsInParallel(15)
.setNumberOfJobsInParallel(30)
.setUrls(LDAPTestConfig.getUrls())
.setUsersBaseContextList(LDAPTestConfig.getUsersWithoutGroupsBaseContextList())
.setConnectionUsername(LDAPTestConfig.getUser() + "@" + LDAPTestConfig.getDomains().get(0))
.setPassword(LDAPTestConfig.getPassword())
.setCode("ldap")
.setTitle("users")
.setEnabled(true)
);
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startWithHttpConnectorFetchingLocalWikipedia()
throws Exception {
Server server = startWebsite(new File("/Volumes/Raid 1/wiki-extract/en/"));
//Server server = startWebsite(new File("/Users/francisbaril/IdeaProjects/constellio-dev/sdk/sdk-resources/com/constellio/app/modules/es/connectors/http/utils/WebsitesUtils/animalsState1"));
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
userServices = getModelLayerFactory().newUserServices();
users.setUp(userServices);
connectorManager = es.getConnectorManager();
connectorManager
.createConnector(es.newConnectorHttpInstance()
.setCode("wikipedia")
.setTitle("Wikipedia")
.setEnabled(true)
.setDocumentsPerJobs(15)
.setNumberOfJobsInParallel(30)
.setSeeds("http://localhost:4242/index.html"));
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
//server.stop();
}
@Test
public void startWithHttpConnectorFetchingAnimalWebsite()
throws Exception {
Server server = WebsitesUtils.startWebsiteInState1();
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
userServices = getModelLayerFactory().newUserServices();
users.setUp(userServices);
connectorManager = es.getConnectorManager();
connectorManager
.createConnector(es.newConnectorHttpInstance()
.setCode("wikipedia")
.setTitle("Wikipedia")
.setEnabled(true)
.setSeeds("http://localhost:4242/index.html")
.setIncludePatterns("http://localhost:4242/"));
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
//server.stop();
}
@Test
public void withAnSmbConnector()
throws Exception {
es = new ESSchemasRecordsServices(zeCollection, getAppLayerFactory());
userServices = getModelLayerFactory().newUserServices();
users.setUp(userServices);
connectorManager = es.getConnectorManager();
String host = SDKPasswords.testSmbServer();
String share = SDKPasswords.testSmbShare();
String domain = SDKPasswords.testSmbDomain();
String username = SDKPasswords.testSmbUsername();
String password = SDKPasswords.testSmbPassword();
connectorInstance = connectorManager.createConnector(es.newConnectorSmbInstance()
.setCode("zeConnectorCode")
.setEnabled(true)
.setSeeds(asList(host + share))
.setUsername(username)
.setPassword(password)
.setDomain(domain)
.setInclusions(Arrays.asList("smb://127.0.0.1/"))
.setExclusions(new ArrayList<String>())
.setTitle("zeConnectorTitle"));
driver = newWebDriver(loggedAsUserInCollection(admin, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startApplicationWithSaveState()
throws Exception {
givenTransactionLogIsEnabled();
getCurrentTestSession().getFactoriesTestFeatures().givenSystemInState(
new File("/path/to/the/saveState.zip")).withPasswordsReset();
newWebDriver(loggedAsUserInCollection("zeUser", "myCollection"));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsChuckNorris()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(chuckNorris, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsDakota()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(dakota, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsRida()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(admin, "LaCollectionDeRida"));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsGandalf()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(gandalf, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsBob()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(bobGratton, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsCharles()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(charlesFrancoisXavier, zeCollection));
waitUntilICloseTheBrowsers();
}
@Test
public void startOnHomePageAsEdouard()
throws Exception {
driver = newWebDriver(loggedAsUserInCollection(edouard, zeCollection));
waitUntilICloseTheBrowsers();
}
//
private void configureConnectorsInstances() {
connectorInstance = connectorManager
.createConnector(es.newConnectorHttpInstance()
.setCode("zeConnector")
.setTitle("Ze Connector")
.setTraversalCode("traversalCode")
.setEnabled(true)
.setSeeds("http://constellio.com"));
anotherConnectorInstace = connectorManager
.createConnector(es.newConnectorHttpInstance()
.setCode("anotherConnector")
.setTitle("Another Connector")
.setTraversalCode("anotherTraversalCode")
.setEnabled(true)
.setSeeds("http://constellio.com"));
}
}