diff options
author | Stefan Seelmann <mail@stefan-seelmann.de> | 2021-02-06 18:09:19 +0300 |
---|---|---|
committer | Stefan Seelmann <mail@stefan-seelmann.de> | 2021-02-06 18:09:19 +0300 |
commit | 020b4a00090b3ec088f29e9aea9c21b1cf7e673c (patch) | |
tree | 38b426e6fb130e7800f31e1dd9b497924aae1fba | |
parent | b8b7d52e0bc29de327da2c7e6b89d0c3c016721c (diff) |
Cleanup save/load of connections and folders, add connection view tests
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 ); + } + +} |