Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/apache/directory-studio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Seelmann <mail@stefan-seelmann.de>2021-02-06 18:09:19 +0300
committerStefan Seelmann <mail@stefan-seelmann.de>2021-02-06 18:09:19 +0300
commit020b4a00090b3ec088f29e9aea9c21b1cf7e673c (patch)
tree38b426e6fb130e7800f31e1dd9b497924aae1fba
parentb8b7d52e0bc29de327da2c7e6b89d0c3c016721c (diff)
Cleanup save/load of connections and folders, add connection view tests
-rw-r--r--plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionFolderManager.java47
-rw-r--r--plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java41
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ApacheDSPluginTest.java8
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ConnectionViewTest.java221
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java2
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreferencesTest.java6
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SchemaBrowserTest.java2
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SearchTest.java4
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ConnectionsViewBot.java87
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java4
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportConnectionsWizardBot.java36
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportConnectionsWizardBot.java36
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/NewConnectionFolderDialogBot.java36
13 files changed, 447 insertions, 83 deletions
diff --git a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionFolderManager.java b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionFolderManager.java
index 84f4216a2..942ebad42 100644
--- a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionFolderManager.java
+++ b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionFolderManager.java
@@ -23,7 +23,6 @@ package org.apache.directory.studio.connection.core;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
@@ -35,7 +34,8 @@ import org.apache.directory.api.util.FileUtils;
import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
import org.apache.directory.studio.connection.core.event.ConnectionUpdateListener;
import org.apache.directory.studio.connection.core.io.ConnectionIO;
-import org.apache.directory.studio.connection.core.io.ConnectionIOException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
/**
@@ -365,21 +365,23 @@ public class ConnectionFolderManager implements ConnectionUpdateListener
*/
private synchronized void saveConnectionFolders()
{
+ File file = new File( getConnectionFolderStoreFileName() );
+ File tempFile = new File( getConnectionFolderStoreFileName() + ConnectionManager.TEMP_SUFFIX );
+
// To avoid a corrupt file, save object to a temp file first
- try
+ try ( FileOutputStream fileOutputStream = new FileOutputStream( tempFile ) )
{
- ConnectionIO.saveConnectionFolders( folderList, new FileOutputStream( getConnectionFolderStoreFileName()
- + ConnectionManager.TEMP_SUFFIX ) );
+ ConnectionIO.saveConnectionFolders( folderList, fileOutputStream );
}
catch ( IOException e )
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+ Status status = new Status( IStatus.ERROR, ConnectionCoreConstants.PLUGIN_ID,
+ Messages.error__saving_connections + e.getMessage(), e );
+ ConnectionCorePlugin.getDefault().getLog().log( status );
+ return;
}
// move temp file to good file
- File file = new File( getConnectionFolderStoreFileName() );
- File tempFile = new File( getConnectionFolderStoreFileName() + ConnectionManager.TEMP_SUFFIX );
if ( file.exists() )
{
file.delete();
@@ -392,8 +394,10 @@ public class ConnectionFolderManager implements ConnectionUpdateListener
}
catch ( IOException e )
{
- // TODO Auto-generated catch block
- e.printStackTrace();
+ Status status = new Status( IStatus.ERROR, ConnectionCoreConstants.PLUGIN_ID,
+ Messages.error__saving_connections + e.getMessage(), e );
+ ConnectionCorePlugin.getDefault().getLog().log( status );
+ return;
}
}
@@ -405,26 +409,15 @@ public class ConnectionFolderManager implements ConnectionUpdateListener
{
ConnectionEventRegistry.suspendEventFiringInCurrentThread();
- try
+ try ( FileInputStream fileInputStream = new FileInputStream( getConnectionFolderStoreFileName() ) )
{
- folderList = ConnectionIO.loadConnectionFolders( new FileInputStream( getConnectionFolderStoreFileName() ) );
+ folderList = ConnectionIO.loadConnectionFolders( fileInputStream );
}
catch ( Exception e )
{
- // If loading failed, try with temp file
- try
- {
- folderList = ConnectionIO.loadConnectionFolders( new FileInputStream(
- getConnectionFolderStoreFileName() + ConnectionManager.TEMP_SUFFIX ) );
- }
- catch ( FileNotFoundException e1 )
- {
- // TODO Auto-generated catch block
- }
- catch ( ConnectionIOException e1 )
- {
- // TODO Auto-generated catch block
- }
+ Status status = new Status( IStatus.ERROR, ConnectionCoreConstants.PLUGIN_ID,
+ Messages.error__saving_connections + e.getMessage(), e );
+ ConnectionCorePlugin.getDefault().getLog().log( status );
}
if ( !folderList.isEmpty() )
diff --git a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java
index af283625e..a1fddb173 100644
--- a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java
+++ b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ConnectionManager.java
@@ -23,7 +23,6 @@ package org.apache.directory.studio.connection.core;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashSet;
@@ -33,7 +32,6 @@ import org.apache.directory.api.util.FileUtils;
import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
import org.apache.directory.studio.connection.core.event.ConnectionUpdateListener;
import org.apache.directory.studio.connection.core.io.ConnectionIO;
-import org.apache.directory.studio.connection.core.io.ConnectionIOException;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionPoint;
@@ -360,29 +358,29 @@ public class ConnectionManager implements ConnectionUpdateListener
public synchronized void saveConnections()
{
Set<ConnectionParameter> connectionParameters = new HashSet<>();
-
+
for ( Connection connection : connectionList )
{
connectionParameters.add( connection.getConnectionParameter() );
}
+ File file = new File( getConnectionStoreFileName() );
+ File tempFile = new File( getConnectionStoreFileName() + TEMP_SUFFIX );
+
// To avoid a corrupt file, save object to a temp file first
- try
+ try ( FileOutputStream fileOutputStream = new FileOutputStream( tempFile ) )
{
- ConnectionIO
- .save( connectionParameters, new FileOutputStream( getConnectionStoreFileName() + TEMP_SUFFIX ) );
+ ConnectionIO.save( connectionParameters, fileOutputStream );
}
catch ( IOException e )
{
Status status = new Status( IStatus.ERROR, ConnectionCoreConstants.PLUGIN_ID,
Messages.error__saving_connections + e.getMessage(), e );
ConnectionCorePlugin.getDefault().getLog().log( status );
+ return;
}
// move temp file to good file
- File file = new File( getConnectionStoreFileName() );
- File tempFile = new File( getConnectionStoreFileName() + TEMP_SUFFIX );
-
if ( file.exists() )
{
file.delete();
@@ -398,6 +396,7 @@ public class ConnectionManager implements ConnectionUpdateListener
Status status = new Status( IStatus.ERROR, ConnectionCoreConstants.PLUGIN_ID,
Messages.error__saving_connections + e.getMessage(), e );
ConnectionCorePlugin.getDefault().getLog().log( status );
+ return;
}
}
@@ -409,29 +408,15 @@ public class ConnectionManager implements ConnectionUpdateListener
{
Set<ConnectionParameter> connectionParameters = null;
- try
+ try ( FileInputStream fileInputStream = new FileInputStream( getConnectionStoreFileName() ) )
{
- connectionParameters = ConnectionIO.load( new FileInputStream( getConnectionStoreFileName() ) );
+ connectionParameters = ConnectionIO.load( fileInputStream );
}
catch ( Exception e )
{
- // If loading failed, try with temp file
- try
- {
- connectionParameters = ConnectionIO.load( new FileInputStream( getConnectionStoreFileName()
- + TEMP_SUFFIX ) );
- }
- catch ( FileNotFoundException e1 )
- {
- // ignore, this is a fresh workspace
- return;
- }
- catch ( ConnectionIOException e1 )
- {
- Status status = new Status( IStatus.ERROR, ConnectionCoreConstants.PLUGIN_ID,
- Messages.error__loading_connections + e.getMessage(), e );
- ConnectionCorePlugin.getDefault().getLog().log( status );
- }
+ Status status = new Status( IStatus.ERROR, ConnectionCoreConstants.PLUGIN_ID,
+ Messages.error__loading_connections + e.getMessage(), e );
+ ConnectionCorePlugin.getDefault().getLog().log( status );
}
if ( connectionParameters != null )
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ApacheDSPluginTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ApacheDSPluginTest.java
index e6c30c623..019199ebf 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ApacheDSPluginTest.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ApacheDSPluginTest.java
@@ -124,7 +124,7 @@ public class ApacheDSPluginTest
assertEquals( 1, getBrowserConnectionsCount() );
// Opening the connection
- connectionsViewBot.selectConnection( serverName );
+ connectionsViewBot.select( serverName );
connectionsViewBot.openSelectedConnection();
// Getting the associated connection object
@@ -134,7 +134,7 @@ public class ApacheDSPluginTest
assertTrue( connection.getConnectionWrapper().isConnected() );
// Closing the connection
- connectionsViewBot.selectConnection( serverName );
+ connectionsViewBot.select( serverName );
connectionsViewBot.closeSelectedConnections();
// Checking if the connection is closed
@@ -350,7 +350,7 @@ public class ApacheDSPluginTest
connectionFromServerDialogBot.clickOkButton();
// Open the connection
- connectionsViewBot.selectConnection( serverName );
+ connectionsViewBot.select( serverName );
connectionsViewBot.openSelectedConnection();
// Open the config editor and load remote config
@@ -389,7 +389,7 @@ public class ApacheDSPluginTest
localEditorBot.close();
// Close the connection
- connectionsViewBot.selectConnection( serverName );
+ connectionsViewBot.select( serverName );
connectionsViewBot.closeSelectedConnections();
// Delete the connection
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ConnectionViewTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ConnectionViewTest.java
new file mode 100644
index 000000000..44642673e
--- /dev/null
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ConnectionViewTest.java
@@ -0,0 +1,221 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.studio.test.integration.ui;
+
+
+import static org.apache.directory.studio.test.integration.ui.Constants.LOCALHOST;
+import static org.junit.Assert.assertEquals;
+
+import java.net.URL;
+
+import org.apache.directory.server.annotations.CreateLdapServer;
+import org.apache.directory.server.annotations.CreateTransport;
+import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
+import org.apache.directory.studio.test.integration.ui.bots.ConnectionsViewBot;
+import org.apache.directory.studio.test.integration.ui.bots.ExportConnectionsWizardBot;
+import org.apache.directory.studio.test.integration.ui.bots.ImportConnectionsWizardBot;
+import org.apache.directory.studio.test.integration.ui.bots.NewConnectionFolderDialogBot;
+import org.apache.directory.studio.test.integration.ui.bots.NewConnectionWizardBot;
+import org.apache.directory.studio.test.integration.ui.bots.StudioBot;
+import org.apache.directory.studio.test.integration.ui.bots.utils.Assertions;
+import org.apache.directory.studio.test.integration.ui.bots.utils.FrameworkRunnerWithScreenshotCaptureListener;
+import org.eclipse.core.runtime.Platform;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+
+/**
+ * Tests the LDAP browser.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+@RunWith(FrameworkRunnerWithScreenshotCaptureListener.class)
+@CreateLdapServer(transports =
+ { @CreateTransport(protocol = "LDAP") })
+public class ConnectionViewTest extends AbstractLdapTestUnit
+{
+ private StudioBot studioBot;
+ private ConnectionsViewBot connectionsViewBot;
+
+ @Before
+ public void setUp() throws Exception
+ {
+ studioBot = new StudioBot();
+ studioBot.resetLdapPerspective();
+ connectionsViewBot = studioBot.getConnectionView();
+ }
+
+
+ @After
+ public void tearDown() throws Exception
+ {
+ connectionsViewBot.deleteTestConnections();
+ Assertions.genericTearDownAssertions();
+ }
+
+
+ @Test
+ public void testCreateAndDeleteConnections()
+ {
+ String connectionName = "Test connection 1";
+ createConnection( connectionName );
+
+ // ensure connection is visible in Connections view
+ assertEquals( 1, connectionsViewBot.getCount() );
+
+ // delete connection
+ connectionsViewBot.select( connectionName );
+ connectionsViewBot.openDeleteConnectionDialog().clickOkButton();
+
+ // ensure connection is no longer visible in Connections view
+ assertEquals( 0, connectionsViewBot.getCount() );
+ }
+
+
+ @Test
+ public void testCreateAndDeleteConnectionFolders()
+ {
+ String folderName = "Connection folder 1";
+ String subFolder1Name = "Connection folder 2";
+ String subFolder2Name = "Connection folder 3";
+
+ // create one folder
+ createConnectionFolder( folderName );
+
+ // ensure folder is visible
+ assertEquals( 1, connectionsViewBot.getCount() );
+
+ // create two sub folders
+ connectionsViewBot.select( folderName );
+ createConnectionFolder( subFolder1Name );
+ connectionsViewBot.select( folderName );
+ createConnectionFolder( subFolder2Name );
+
+ // ensure connection folders are visible
+ assertEquals( 3, connectionsViewBot.getCount() );
+
+ // delete one sub folder
+ connectionsViewBot.select( folderName, subFolder1Name );
+ connectionsViewBot.openDeleteConnectionFolderDialog().clickOkButton();
+
+ // ensure connection folders are visible
+ assertEquals( 2, connectionsViewBot.getCount() );
+
+ // delete connection folder
+ connectionsViewBot.select( folderName );
+ connectionsViewBot.openDeleteConnectionFolderDialog().clickOkButton();
+
+ // ensure folders no longer exist
+ assertEquals( 0, connectionsViewBot.getCount() );
+ }
+
+
+ @Test
+ public void testExportImportConnections() throws Exception
+ {
+ String connection1Name = "Test connection 1";
+ String connection2Name = "Test connection 2";
+ String connection3Name = "Test connection 3";
+ String folderName = "Connection folder 1";
+ String subFolder1Name = "Connection folder 2";
+ String subFolder2Name = "Connection folder 3";
+
+ // create connections and folders
+ createConnection( connection1Name );
+ createConnectionFolder( folderName );
+ connectionsViewBot.select( folderName );
+ createConnection( connection2Name );
+ connectionsViewBot.select( folderName );
+ createConnectionFolder( subFolder1Name );
+ connectionsViewBot.select( folderName, subFolder1Name );
+ createConnection( connection3Name );
+ connectionsViewBot.select( folderName );
+ createConnectionFolder( subFolder2Name );
+
+ // verify connections and folders exist
+ assertEquals( 6, connectionsViewBot.getCount() );
+ connectionsViewBot.select( folderName );
+ connectionsViewBot.select( folderName, subFolder1Name );
+ connectionsViewBot.select( folderName, subFolder2Name );
+ connectionsViewBot.select( connection1Name );
+ connectionsViewBot.select( folderName, connection2Name );
+ connectionsViewBot.select( folderName, subFolder1Name, connection3Name );
+
+ // export connections and folders
+ URL url = Platform.getInstanceLocation().getURL();
+ final String file = url.getFile() + "ImportExportConnections.zip";
+ ExportConnectionsWizardBot exportConnectionsWizardBot = connectionsViewBot.openExportConnectionsWizard();
+ exportConnectionsWizardBot.typeFile( file );
+ exportConnectionsWizardBot.clickFinishButton();
+
+ // delete connections and folders
+ connectionsViewBot.deleteTestConnections();
+ assertEquals( 0, connectionsViewBot.getCount() );
+
+ // import connections and folders
+ ImportConnectionsWizardBot importConnectionsWizardBot = connectionsViewBot.openImportConnectionsWizard();
+ importConnectionsWizardBot.typeFile( file );
+ importConnectionsWizardBot.clickFinishButton();
+
+ // verify connections and folders exist
+ assertEquals( 6, connectionsViewBot.getCount() );
+ connectionsViewBot.select( folderName );
+ connectionsViewBot.select( folderName, subFolder1Name );
+ connectionsViewBot.select( folderName, subFolder2Name );
+ connectionsViewBot.select( connection1Name );
+ connectionsViewBot.select( folderName, connection2Name );
+ connectionsViewBot.select( folderName, subFolder1Name, connection3Name );
+ }
+
+
+ private void createConnection( String connectionName )
+ {
+ NewConnectionWizardBot wizardBot = connectionsViewBot.openNewConnectionWizard();
+
+ // enter connection parameter
+ wizardBot.typeConnectionName( connectionName );
+ wizardBot.typeHost( LOCALHOST );
+ wizardBot.typePort( ldapServer.getPort() );
+
+ // jump to auth page
+ wizardBot.clickNextButton();
+
+ // enter authentication parameters
+ wizardBot.typeUser( "uid=admin,ou=system" );
+ wizardBot.typePassword( "secret" );
+
+ // finish dialog
+ wizardBot.clickFinishButton( true );
+ // connectionsViewBot.waitForConnection( connectionName );
+ }
+
+
+ private void createConnectionFolder( String folderName )
+ {
+ NewConnectionFolderDialogBot newConnectionFolderDialog = connectionsViewBot.openNewConnectionFolderDialog();
+ newConnectionFolderDialog.setConnectionFoldername( folderName );
+ newConnectionFolderDialog.clickOkButton();
+ }
+
+}
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java
index cb31bee8c..b99ba396b 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/NewConnectionWizardTest.java
@@ -357,7 +357,7 @@ public class NewConnectionWizardTest extends AbstractLdapTestUnit
assertEquals( "secret", connection.getBindPassword() );
// ensure connection is visible in Connections view
- assertEquals( 1, connectionsViewBot.getConnectionCount() );
+ assertEquals( 1, connectionsViewBot.getCount() );
// close connection
connectionsViewBot.closeSelectedConnections();
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreferencesTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreferencesTest.java
index 205929346..cf6c22455 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreferencesTest.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/PreferencesTest.java
@@ -233,7 +233,7 @@ public class PreferencesTest extends AbstractLdapTestUnit
assertTrue( passwordsKeyStoreManager.isLoaded() );
// verify connection can be opened because keystore is already loaded
- connectionsViewBot.selectConnection( connection.getName() );
+ connectionsViewBot.select( connection.getName() );
connectionsViewBot.openSelectedConnection();
connectionsViewBot.closeSelectedConnections();
@@ -242,7 +242,7 @@ public class PreferencesTest extends AbstractLdapTestUnit
assertFalse( passwordsKeyStoreManager.isLoaded() );
// verify master password prompt when opening the connection
- connectionsViewBot.selectConnection( connection.getName() );
+ connectionsViewBot.select( connection.getName() );
connectionsViewBot.openSelectedConnectionExpectingVerifyMasterPasswordDialog( "secret12" );
connectionsViewBot.closeSelectedConnections();
@@ -264,7 +264,7 @@ public class PreferencesTest extends AbstractLdapTestUnit
assertFalse( passwordsKeyStoreManager.isLoaded() );
// verify connection can be opened and connections password was kept
- connectionsViewBot.selectConnection( connection.getName() );
+ connectionsViewBot.select( connection.getName() );
connectionsViewBot.openSelectedConnection();
connectionsViewBot.closeSelectedConnections();
}
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SchemaBrowserTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SchemaBrowserTest.java
index d6064a123..2a9aea6db 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SchemaBrowserTest.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SchemaBrowserTest.java
@@ -79,7 +79,7 @@ public class SchemaBrowserTest extends AbstractLdapTestUnit
@Test
public void testRawSchemaDefinitionIsFilled() throws Exception
{
- connectionsViewBot.selectConnection( connection.getName() );
+ connectionsViewBot.select( connection.getName() );
SchemaBrowserBot schemaBrowser = connectionsViewBot.openSchemaBrowser();
//schemaBrowser.activateObjectClassesTab();
schemaBrowser.selectObjectClass( "account" );
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SearchTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SearchTest.java
index 68ff60f55..aa908e068 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SearchTest.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/SearchTest.java
@@ -112,7 +112,7 @@ public class SearchTest extends AbstractLdapTestUnit
assertEquals( 0, browserConnection2.getSearchManager().getSearches().size() );
// create a search for in connection 1
- connectionsViewBot.selectConnection( connection1.getName() );
+ connectionsViewBot.select( connection1.getName() );
browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system" );
SearchDialogBot dialogBot = browserViewBot.openSearchDialog();
assertTrue( dialogBot.isVisible() );
@@ -129,7 +129,7 @@ public class SearchTest extends AbstractLdapTestUnit
// copy/paste the created search from connection 1 to connection 2
browserViewBot.copy();
- connectionsViewBot.selectConnection( connection2.getName() );
+ connectionsViewBot.select( connection2.getName() );
browserViewBot.selectEntry( "Searches" );
SearchPropertiesDialogBot searchPropertiesDialogBot = browserViewBot.pasteSearch();
assertTrue( searchPropertiesDialogBot.isVisible() );
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ConnectionsViewBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ConnectionsViewBot.java
index 92687ccff..1a7b2c949 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ConnectionsViewBot.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ConnectionsViewBot.java
@@ -22,6 +22,10 @@ package org.apache.directory.studio.test.integration.ui.bots;
import static org.apache.directory.studio.test.integration.ui.Constants.LOCALHOST;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
import org.apache.directory.studio.connection.core.Connection;
import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
import org.apache.directory.studio.connection.core.ConnectionFolder;
@@ -56,10 +60,10 @@ public class ConnectionsViewBot
}
- public SchemaBrowserBot openSchemaBrowser()
+ public NewConnectionFolderDialogBot openNewConnectionFolderDialog()
{
- ContextMenuHelper.clickContextMenu( getConnectionsTree(), "Open Schema Browser" );
- return new SchemaBrowserBot();
+ ContextMenuHelper.clickContextMenu( getConnectionsTree(), "New Connection Folder..." );
+ return new NewConnectionFolderDialogBot();
}
@@ -101,13 +105,62 @@ public class ConnectionsViewBot
}
- public void selectConnection( String connectionName )
+ public SchemaBrowserBot openSchemaBrowser()
+ {
+ ContextMenuHelper.clickContextMenu( getConnectionsTree(), "Open Schema Browser" );
+ return new SchemaBrowserBot();
+ }
+
+
+ public DeleteDialogBot openDeleteConnectionDialog()
+ {
+ getConnectionsTree().contextMenu( "Delete Connection" ).click();
+ return new DeleteDialogBot( DeleteDialogBot.DELETE_CONNECTION );
+ }
+
+
+ public DeleteDialogBot openDeleteConnectionFolderDialog()
+ {
+ getConnectionsTree().contextMenu( DeleteDialogBot.DELETE_CONNECTION_FOLDER ).click();
+ return new DeleteDialogBot( DeleteDialogBot.DELETE_CONNECTION_FOLDER );
+ }
+
+
+ public ExportConnectionsWizardBot openExportConnectionsWizard()
+ {
+ getConnectionsTree().contextMenu( "Export" ).contextMenu( "Export Connections..." ).click();
+ return new ExportConnectionsWizardBot();
+ }
+
+
+ public ImportConnectionsWizardBot openImportConnectionsWizard()
{
- getConnectionsTree().select( connectionName );
+ getConnectionsTree().contextMenu( "Import" ).contextMenu( "Import Connections..." ).click();
+ return new ImportConnectionsWizardBot();
}
- public String getSelectedConnection()
+ public ApacheDSConfigurationEditorBot openApacheDSConfiguration()
+ {
+ getConnectionsTree().contextMenu( "Open Configuration" ).click();
+ String title = getSelection() + " - Configuration";
+ return new ApacheDSConfigurationEditorBot( title );
+ }
+
+
+ public void select( String... path )
+ {
+ List<String> pathList = new ArrayList<String>( Arrays.asList( path ) );
+ SWTBotTreeItem item = getConnectionsTree().getTreeItem( pathList.remove( 0 ) );
+ while ( !pathList.isEmpty() )
+ {
+ item = item.getNode( pathList.remove( 0 ) );
+ }
+ item.select();
+ }
+
+
+ public String getSelection()
{
TableCollection selection = getConnectionsTree().selection();
if ( selection != null && selection.rowCount() == 1 )
@@ -119,9 +172,9 @@ public class ConnectionsViewBot
}
- public int getConnectionCount()
+ public int getCount()
{
- return getConnectionsTree().rowCount();
+ return getConnectionsTree().visibleRowCount();
}
@@ -177,7 +230,8 @@ public class ConnectionsViewBot
}
- public Connection createTestConnection( String name, String host, int port, String bindDn, String bindPassword ) throws Exception
+ public Connection createTestConnection( String name, String host, int port, String bindDn, String bindPassword )
+ throws Exception
{
name = name + "_" + System.currentTimeMillis();
@@ -198,7 +252,7 @@ public class ConnectionsViewBot
ConnectionFolder rootConnectionFolder = connectionFolderManager.getRootConnectionFolder();
rootConnectionFolder.addConnectionId( connection.getId() );
- selectConnection( name );
+ select( name );
StudioConnectionJob job = new StudioConnectionJob( new OpenConnectionsRunnable( connection ) );
job.execute();
job.join();
@@ -217,14 +271,13 @@ public class ConnectionsViewBot
{
connectionManager.removeConnection( connection );
}
- }
-
- public ApacheDSConfigurationEditorBot openApacheDSConfiguration()
- {
- getConnectionsTree().contextMenu( "Open Configuration" ).click();
- String title = getSelectedConnection() + " - Configuration";
- return new ApacheDSConfigurationEditorBot( title );
+ ConnectionFolderManager connectionFolderManager = ConnectionCorePlugin.getDefault()
+ .getConnectionFolderManager();
+ for ( ConnectionFolder connectionFolder : connectionFolderManager.getConnectionFolders() )
+ {
+ connectionFolderManager.removeConnectionFolder( connectionFolder );
+ }
}
}
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java
index 722f875c2..6c6cdc26b 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java
@@ -26,6 +26,8 @@ import org.apache.directory.studio.test.integration.ui.bots.utils.JobWatcher;
public class DeleteDialogBot extends DialogBot
{
+ public static final String DELETE_CONNECTION = "Delete Connection";
+ public static final String DELETE_CONNECTION_FOLDER = "Delete Connection Folder";
public static final String DELETE_ENTRY_TITLE = "Delete Entry";
public static final String DELETE_ENTRIES_TITLE = "Delete Entries";
public static final String DELETE_VALUE_TITLE = "Delete Value";
@@ -61,6 +63,8 @@ public class DeleteDialogBot extends DialogBot
{
case DELETE_VALUE_TITLE:
return BrowserCoreMessages.jobs__execute_ldif_name;
+ case DELETE_CONNECTION:
+ case DELETE_CONNECTION_FOLDER:
case DELETE_PROJECT:
return null;
default:
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportConnectionsWizardBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportConnectionsWizardBot.java
new file mode 100644
index 000000000..2a329e57c
--- /dev/null
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportConnectionsWizardBot.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.studio.test.integration.ui.bots;
+
+
+public class ExportConnectionsWizardBot extends WizardBot
+{
+ public ExportConnectionsWizardBot()
+ {
+ super( "Connections Export" );
+ }
+
+
+ public void typeFile( String file )
+ {
+ bot.comboBox().setText( file );
+ }
+
+}
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportConnectionsWizardBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportConnectionsWizardBot.java
new file mode 100644
index 000000000..7f0f6da42
--- /dev/null
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportConnectionsWizardBot.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.studio.test.integration.ui.bots;
+
+
+public class ImportConnectionsWizardBot extends WizardBot
+{
+ public ImportConnectionsWizardBot()
+ {
+ super( "Connections Import" );
+ }
+
+
+ public void typeFile( String file )
+ {
+ bot.comboBox().setText( file );
+ }
+
+}
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/NewConnectionFolderDialogBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/NewConnectionFolderDialogBot.java
new file mode 100644
index 000000000..29c00f4bf
--- /dev/null
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/NewConnectionFolderDialogBot.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.studio.test.integration.ui.bots;
+
+public class NewConnectionFolderDialogBot extends DialogBot
+{
+
+ public NewConnectionFolderDialogBot()
+ {
+ super( "New Connection Folder" );
+ }
+
+
+ public void setConnectionFoldername( String name )
+ {
+ bot.text().setText( name );
+ }
+
+}