You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2018/08/19 16:55:26 UTC

[directory-studio] branch master updated (6e9e6c2 -> 660c7f1)

This is an automated email from the ASF dual-hosted git repository.

seelmann pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/directory-studio.git.


    from 6e9e6c2  RSTUDIO-1190: Keystore change from JKS to PKCS12
     new a04da70  DIRSTUDIO-1179: Fix connection passwords keystore
     new 660c7f1  Update server version to released 2.0.0-AM25

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../connection/core/PasswordsKeyStoreManager.java  | 10 ++-
 .../PasswordsKeystorePreferencePage.java           |  7 +-
 pom.xml                                            |  2 +-
 .../test/integration/ui/PreferencesTest.java       | 91 ++++++++++++++++++++++
 .../integration/ui/bots/ConnectionsViewBot.java    | 11 +++
 ...java => KeepConnectionsPasswordsDialogBot.java} | 25 +++---
 ...ava => PasswordsKeystorePreferencePageBot.java} | 31 +++++---
 .../test/integration/ui/bots/PreferencesBot.java   |  9 +++
 ...gBot.java => SetupMasterPasswordDialogBot.java} | 23 +++---
 ...Bot.java => VerifyMasterPasswordDialogBot.java} | 25 +++---
 10 files changed, 174 insertions(+), 60 deletions(-)
 copy tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/{ErrorDialogBot.java => KeepConnectionsPasswordsDialogBot.java} (70%)
 copy tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/{ProgressViewBot.java => PasswordsKeystorePreferencePageBot.java} (59%)
 copy tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/{SelectDnDialogBot.java => SetupMasterPasswordDialogBot.java} (72%)
 copy tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/{ErrorDialogBot.java => VerifyMasterPasswordDialogBot.java} (74%)


[directory-studio] 02/02: Update server version to released 2.0.0-AM25

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

seelmann pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-studio.git

commit 660c7f1fc1dc775731ed20ce0e8fd3ac9ad0e836
Author: Stefan Seelmann <ma...@stefan-seelmann.de>
AuthorDate: Sun Aug 19 18:50:31 2018 +0200

    Update server version to released 2.0.0-AM25
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 0edcbb0..a386e94 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,7 +89,7 @@
     <org.apache.commons.pool.version>2.5.0</org.apache.commons.pool.version>
     <org.apache.commons.pool.bundleversion>2.5.0</org.apache.commons.pool.bundleversion>
     <org.apache.directory.api.version>2.0.0.AM1</org.apache.directory.api.version>
-    <org.apache.directory.server.version>2.0.0.AM25-SNAPSHOT</org.apache.directory.server.version>
+    <org.apache.directory.server.version>2.0.0.AM25</org.apache.directory.server.version>
     <org.apache.mina.version>2.0.18</org.apache.mina.version>
     <org.apache.mina.bundleversion>2.0.18</org.apache.mina.bundleversion>
     <org.apache.poi.version>3.9</org.apache.poi.version>


[directory-studio] 01/02: DIRSTUDIO-1179: Fix connection passwords keystore

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

seelmann pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/directory-studio.git

commit a04da70202572fb071b28846fadf01df0b9325a8
Author: Stefan Seelmann <ma...@stefan-seelmann.de>
AuthorDate: Sun Aug 19 18:49:26 2018 +0200

    DIRSTUDIO-1179: Fix connection passwords keystore
    
    * Switch password keystore type to PKCS12
    * Fix copy of keystore file, use JRE built-in function
    * Add a test
---
 .../connection/core/PasswordsKeyStoreManager.java  | 10 ++-
 .../PasswordsKeystorePreferencePage.java           |  7 +-
 .../test/integration/ui/PreferencesTest.java       | 91 ++++++++++++++++++++++
 .../integration/ui/bots/ConnectionsViewBot.java    | 11 +++
 ...java => KeepConnectionsPasswordsDialogBot.java} | 36 +++------
 ...ava => PasswordsKeystorePreferencePageBot.java} | 36 ++++-----
 .../test/integration/ui/bots/PreferencesBot.java   |  9 +++
 ...sBot.java => SetupMasterPasswordDialogBot.java} | 36 +++------
 ...Bot.java => VerifyMasterPasswordDialogBot.java} | 36 +++------
 9 files changed, 171 insertions(+), 101 deletions(-)

diff --git a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/PasswordsKeyStoreManager.java b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/PasswordsKeyStoreManager.java
index 6b948ab..7786af1 100644
--- a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/PasswordsKeyStoreManager.java
+++ b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/PasswordsKeyStoreManager.java
@@ -97,7 +97,7 @@ public class PasswordsKeyStoreManager
 
         try
         {
-            keystore = KeyStore.getInstance( "JCEKS" ); //$NON-NLS-1$
+            keystore = KeyStore.getInstance( "PKCS12" ); //$NON-NLS-1$
 
             // Getting the keystore file
             File keystoreFile = getKeyStoreFile();
@@ -482,11 +482,17 @@ public class PasswordsKeyStoreManager
     }
 
 
-    public void reload( String masterPassword ) throws KeyStoreException
+    public void unload()
     {
         // Reseting the fields
         this.keystore = null;
         this.masterPassword = null;
+    }
+
+
+    public void reload( String masterPassword ) throws KeyStoreException
+    {
+        unload();
 
         load( masterPassword );
     }
diff --git a/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/PasswordsKeystorePreferencePage.java b/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/PasswordsKeystorePreferencePage.java
index ec6c3db..99223e9 100644
--- a/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/PasswordsKeystorePreferencePage.java
+++ b/plugins/connection.ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/PasswordsKeystorePreferencePage.java
@@ -23,6 +23,7 @@ package org.apache.directory.studio.connection.ui.preferences;
 
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.security.KeyStoreException;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -166,7 +167,7 @@ public class PasswordsKeystorePreferencePage extends PreferencePage implements I
             try
             {
                 // Copying the file
-                FileUtils.copyFile( keystoreFile, getTemporaryKeystoreFile() );
+                Files.copy( keystoreFile.toPath(), getTemporaryKeystoreFile().toPath() );
             }
             catch ( IOException e )
             {
@@ -344,8 +345,8 @@ public class PasswordsKeystorePreferencePage extends PreferencePage implements I
                 // Now, let's copy the temporary keystore as the global keystore
                 try
                 {
-                    FileUtils.copyFile( getTemporaryKeystoreFile(), ConnectionCorePlugin.getDefault()
-                        .getPasswordsKeyStoreManager().getKeyStoreFile() );
+                    Files.copy( getTemporaryKeystoreFile().toPath(), ConnectionCorePlugin.getDefault()
+                        .getPasswordsKeyStoreManager().getKeyStoreFile().toPath() );
                 }
                 catch ( IOException e )
                 {
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 4817d19..f15e557 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
@@ -33,12 +33,21 @@ import java.util.Date;
 import java.util.List;
 
 import org.apache.directory.api.util.FileUtils;
+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.connection.core.Connection;
 import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
+import org.apache.directory.studio.connection.core.PasswordsKeyStoreManager;
 import org.apache.directory.studio.test.integration.ui.bots.CertificateValidationPreferencePageBot;
 import org.apache.directory.studio.test.integration.ui.bots.CertificateViewerDialogBot;
+import org.apache.directory.studio.test.integration.ui.bots.ConnectionsViewBot;
+import org.apache.directory.studio.test.integration.ui.bots.KeepConnectionsPasswordsDialogBot;
+import org.apache.directory.studio.test.integration.ui.bots.PasswordsKeystorePreferencePageBot;
 import org.apache.directory.studio.test.integration.ui.bots.PreferencesBot;
+import org.apache.directory.studio.test.integration.ui.bots.SetupMasterPasswordDialogBot;
 import org.apache.directory.studio.test.integration.ui.bots.StudioBot;
+import org.apache.directory.studio.test.integration.ui.bots.VerifyMasterPasswordDialogBot;
 import org.apache.directory.studio.test.integration.ui.bots.utils.FrameworkRunnerWithScreenshotCaptureListener;
 import org.eclipse.core.runtime.Platform;
 import org.junit.After;
@@ -54,9 +63,12 @@ import org.junit.runner.RunWith;
  * @version $Rev$, $Date$
  */
 @RunWith(FrameworkRunnerWithScreenshotCaptureListener.class)
+@CreateLdapServer(transports =
+    { @CreateTransport(protocol = "LDAP") })
 public class PreferencesTest extends AbstractLdapTestUnit
 {
     private StudioBot studioBot;
+    private ConnectionsViewBot connectionsViewBot;
 
 
     @Before
@@ -64,12 +76,14 @@ public class PreferencesTest extends AbstractLdapTestUnit
     {
         studioBot = new StudioBot();
         studioBot.resetLdapPerspective();
+        connectionsViewBot = studioBot.getConnectionView();
     }
 
 
     @After
     public void tearDown() throws Exception
     {
+        connectionsViewBot.deleteTestConnections();
     }
 
 
@@ -171,4 +185,81 @@ public class PreferencesTest extends AbstractLdapTestUnit
         preferencesBot.clickCancelButton();
     }
 
+
+    /**
+     * Test for DIRSTUDIO-1179
+     * (java.io.IOException: Invalid secret key format after Java update).
+     */
+    @Test
+    public void testConnectionPasswordsKeystore() throws Exception
+    {
+        Connection connection = connectionsViewBot.createTestConnection( "BrowserTest", ldapServer.getPort() );
+        connectionsViewBot.closeSelectedConnections();
+
+        // the global password keystore manager
+        PasswordsKeyStoreManager passwordsKeyStoreManager = ConnectionCorePlugin.getDefault()
+            .getPasswordsKeyStoreManager();
+
+        URL url = Platform.getInstanceLocation().getURL();
+        File file = new File( url.getFile()
+            + ".metadata/.plugins/org.apache.directory.studio.connection.core/passwords.jks" );
+
+        // verify usage of password keystore is disabled
+        assertFalse( file.exists() );
+        PreferencesBot preferencesBot = studioBot.openPreferences();
+        PasswordsKeystorePreferencePageBot pageBot = preferencesBot.openPasswordsKeystorePage();
+        assertFalse( pageBot.isPasswordsKeystoreEnabled() );
+
+        // enable password keystore
+        SetupMasterPasswordDialogBot setupMasterPasswordDialogBot = pageBot.enablePasswordsKeystore();
+        setupMasterPasswordDialogBot.setMasterPassword( "secret12" );
+        setupMasterPasswordDialogBot.clickOkButton();
+
+        // verify usage of password keystore is enabled
+        assertTrue( pageBot.isPasswordsKeystoreEnabled() );
+
+        // apply
+        preferencesBot.clickOkButton();
+
+        // verify passwords keystore file exists and is loaded
+        assertTrue( file.exists() );
+        assertTrue( passwordsKeyStoreManager.isLoaded() );
+
+        // verify connection can be opened because keystore is already loaded
+        connectionsViewBot.selectConnection( connection.getName() );
+        connectionsViewBot.openSelectedConnection();
+        connectionsViewBot.closeSelectedConnections();
+
+        // unload the keystore
+        passwordsKeyStoreManager.unload();
+        assertFalse( passwordsKeyStoreManager.isLoaded() );
+
+        // verify master password prompt when opening the connection
+        connectionsViewBot.selectConnection( connection.getName() );
+        connectionsViewBot.openSelectedConnectionExpectingVerifyMasterPasswordDialog( "secret12" );
+        connectionsViewBot.closeSelectedConnections();
+
+        // disable password keystore, keep connection password
+        preferencesBot = studioBot.openPreferences();
+        pageBot = preferencesBot.openPasswordsKeystorePage();
+        assertTrue( pageBot.isPasswordsKeystoreEnabled() );
+        KeepConnectionsPasswordsDialogBot keepConnectionsPasswordsDialogBot = pageBot.disablePasswordsKeystore();
+        VerifyMasterPasswordDialogBot verifyMasterPasswordDialog = keepConnectionsPasswordsDialogBot.clickYesButtonExpectingVerifyMasterPasswordDialog();
+        verifyMasterPasswordDialog.enterMasterPassword( "secret12" );
+        verifyMasterPasswordDialog.clickOkButton();
+        assertFalse( pageBot.isPasswordsKeystoreEnabled() );
+
+        // apply
+        preferencesBot.clickOkButton();
+
+        // verify passwords keystore file was deleted
+        assertFalse( file.exists() );
+        assertFalse( passwordsKeyStoreManager.isLoaded() );
+
+        // verify connection can be opened and connections password was kept
+        connectionsViewBot.selectConnection( connection.getName() );
+        connectionsViewBot.openSelectedConnection();
+        connectionsViewBot.closeSelectedConnections();
+    }
+
 }
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 5f3e508..74983c2 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
@@ -86,6 +86,17 @@ public class ConnectionsViewBot
     }
 
 
+    public void openSelectedConnectionExpectingVerifyMasterPasswordDialog( String masterPassword )
+    {
+        JobWatcher watcher = new JobWatcher( Messages.jobs__open_connections_name_1 );
+        getConnectionsTree().contextMenu( "Open Connection" ).click();
+        VerifyMasterPasswordDialogBot verifyMasterPasswordDialogBot = new VerifyMasterPasswordDialogBot();
+        verifyMasterPasswordDialogBot.enterMasterPassword( masterPassword );
+        verifyMasterPasswordDialogBot.clickOkButton();
+        watcher.waitUntilDone();
+    }
+
+
     public void closeSelectedConnections()
     {
         JobWatcher watcher = new JobWatcher( Messages.jobs__close_connections_name_1 );
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/KeepConnectionsPasswordsDialogBot.java
similarity index 52%
copy from tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
copy to tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/KeepConnectionsPasswordsDialogBot.java
index 910ab42..2e9d2e5 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/KeepConnectionsPasswordsDialogBot.java
@@ -6,49 +6,33 @@
  *  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. 
- *  
+ *  under the License.
+ *
  */
 package org.apache.directory.studio.test.integration.ui.bots;
 
-import org.apache.directory.studio.test.integration.ui.bots.utils.TreeBot;
 
-
-public class PreferencesBot extends DialogBot
+public class KeepConnectionsPasswordsDialogBot extends DialogBot
 {
 
-    public PreferencesBot()
-    {
-        super( "Preferences" );
-    }
-
-
-    public CertificateValidationPreferencePageBot openCertificatValidationPage()
+    public KeepConnectionsPasswordsDialogBot()
     {
-        bot.tree().getTreeItem( "Apache Directory Studio" ).select().expand().getNode( "Connections" ).select()
-            .expand().getNode( "Certificate Validation" ).select();
-        return new CertificateValidationPreferencePageBot();
+        super( "Keep Connections Passwords?" );
     }
 
 
-    public boolean pageExists( String... path )
+    public VerifyMasterPasswordDialogBot clickYesButtonExpectingVerifyMasterPasswordDialog()
     {
-        TreeBot treeBot = new TreeBot( bot.tree() );
-        return treeBot.exists( path );
+        clickButton( "Yes" );
+        return new VerifyMasterPasswordDialogBot();
     }
 
-
-    @Override
-    public void clickOkButton()
-    {
-        super.clickButton( "Apply and Close" );
-    }
 }
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PasswordsKeystorePreferencePageBot.java
similarity index 56%
copy from tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
copy to tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PasswordsKeystorePreferencePageBot.java
index 910ab42..9d7fcd2 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PasswordsKeystorePreferencePageBot.java
@@ -6,49 +6,49 @@
  *  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. 
- *  
+ *  under the License.
+ *
  */
 package org.apache.directory.studio.test.integration.ui.bots;
 
-import org.apache.directory.studio.test.integration.ui.bots.utils.TreeBot;
 
-
-public class PreferencesBot extends DialogBot
+public class PasswordsKeystorePreferencePageBot extends DialogBot
 {
 
-    public PreferencesBot()
+    public PasswordsKeystorePreferencePageBot()
     {
         super( "Preferences" );
     }
 
 
-    public CertificateValidationPreferencePageBot openCertificatValidationPage()
+    public boolean isPasswordsKeystoreEnabled()
     {
-        bot.tree().getTreeItem( "Apache Directory Studio" ).select().expand().getNode( "Connections" ).select()
-            .expand().getNode( "Certificate Validation" ).select();
-        return new CertificateValidationPreferencePageBot();
+        activate();
+        return bot.checkBox().isChecked();
     }
 
 
-    public boolean pageExists( String... path )
+    public SetupMasterPasswordDialogBot enablePasswordsKeystore()
     {
-        TreeBot treeBot = new TreeBot( bot.tree() );
-        return treeBot.exists( path );
+        activate();
+        bot.checkBox().click();
+        return new SetupMasterPasswordDialogBot();
     }
 
 
-    @Override
-    public void clickOkButton()
+    public KeepConnectionsPasswordsDialogBot disablePasswordsKeystore()
     {
-        super.clickButton( "Apply and Close" );
+        activate();
+        bot.checkBox().click();
+        return new KeepConnectionsPasswordsDialogBot();
     }
+
 }
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
index 910ab42..c65551a 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
@@ -51,4 +51,13 @@ public class PreferencesBot extends DialogBot
     {
         super.clickButton( "Apply and Close" );
     }
+
+
+    public PasswordsKeystorePreferencePageBot openPasswordsKeystorePage()
+    {
+        bot.tree().getTreeItem( "Apache Directory Studio" ).select().expand().getNode( "Connections" ).select()
+            .expand().getNode( "Passwords Keystore" ).select();
+        return new PasswordsKeystorePreferencePageBot();
+    }
+
 }
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/SetupMasterPasswordDialogBot.java
similarity index 52%
copy from tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
copy to tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/SetupMasterPasswordDialogBot.java
index 910ab42..e30bcf1 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/SetupMasterPasswordDialogBot.java
@@ -6,49 +6,33 @@
  *  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. 
- *  
+ *  under the License.
+ *
  */
 package org.apache.directory.studio.test.integration.ui.bots;
 
-import org.apache.directory.studio.test.integration.ui.bots.utils.TreeBot;
 
-
-public class PreferencesBot extends DialogBot
+public class SetupMasterPasswordDialogBot extends DialogBot
 {
 
-    public PreferencesBot()
-    {
-        super( "Preferences" );
-    }
-
-
-    public CertificateValidationPreferencePageBot openCertificatValidationPage()
+    public SetupMasterPasswordDialogBot()
     {
-        bot.tree().getTreeItem( "Apache Directory Studio" ).select().expand().getNode( "Connections" ).select()
-            .expand().getNode( "Certificate Validation" ).select();
-        return new CertificateValidationPreferencePageBot();
+        super( "Setup Master Password" );
     }
 
 
-    public boolean pageExists( String... path )
+    public void setMasterPassword( String masterPassword )
     {
-        TreeBot treeBot = new TreeBot( bot.tree() );
-        return treeBot.exists( path );
+        bot.text( 0 ).setText( masterPassword );
+        bot.text( 1 ).setText( masterPassword );
     }
 
-
-    @Override
-    public void clickOkButton()
-    {
-        super.clickButton( "Apply and Close" );
-    }
 }
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/VerifyMasterPasswordDialogBot.java
similarity index 52%
copy from tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
copy to tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/VerifyMasterPasswordDialogBot.java
index 910ab42..80932bb 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/PreferencesBot.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/VerifyMasterPasswordDialogBot.java
@@ -6,49 +6,33 @@
  *  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. 
- *  
+ *  under the License.
+ *
  */
 package org.apache.directory.studio.test.integration.ui.bots;
 
-import org.apache.directory.studio.test.integration.ui.bots.utils.TreeBot;
 
-
-public class PreferencesBot extends DialogBot
+public class VerifyMasterPasswordDialogBot extends DialogBot
 {
 
-    public PreferencesBot()
-    {
-        super( "Preferences" );
-    }
-
-
-    public CertificateValidationPreferencePageBot openCertificatValidationPage()
+    public VerifyMasterPasswordDialogBot()
     {
-        bot.tree().getTreeItem( "Apache Directory Studio" ).select().expand().getNode( "Connections" ).select()
-            .expand().getNode( "Certificate Validation" ).select();
-        return new CertificateValidationPreferencePageBot();
+        super( "Verify Master Password" );
     }
 
 
-    public boolean pageExists( String... path )
+    public void enterMasterPassword( String masterPassword )
     {
-        TreeBot treeBot = new TreeBot( bot.tree() );
-        return treeBot.exists( path );
+        activate();
+        bot.text().setText( masterPassword );
     }
 
-
-    @Override
-    public void clickOkButton()
-    {
-        super.clickButton( "Apply and Close" );
-    }
 }