diff options
Diffstat (limited to 'tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ExtendedOperationsTest.java')
-rw-r--r-- | tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ExtendedOperationsTest.java | 215 |
1 files changed, 141 insertions, 74 deletions
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ExtendedOperationsTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ExtendedOperationsTest.java index ea9e09b6b..926845086 100644 --- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ExtendedOperationsTest.java +++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ExtendedOperationsTest.java @@ -21,31 +21,25 @@ package org.apache.directory.studio.test.integration.ui; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; +import static org.apache.directory.studio.test.integration.junit5.TestFixture.USER1_DN; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.apache.commons.lang3.RandomStringUtils; -import org.apache.directory.server.annotations.CreateLdapServer; -import org.apache.directory.server.annotations.CreateTransport; -import org.apache.directory.server.core.annotations.ApplyLdifFiles; -import org.apache.directory.server.core.integ.AbstractLdapTestUnit; -import org.apache.directory.server.ldap.handlers.extended.PwdModifyHandler; -import org.apache.directory.studio.test.integration.ui.bots.BotUtils; -import org.apache.directory.studio.test.integration.ui.bots.BrowserViewBot; -import org.apache.directory.studio.test.integration.ui.bots.ConnectionsViewBot; +import org.apache.directory.studio.test.integration.junit5.LdapServerType; +import org.apache.directory.studio.test.integration.junit5.LdapServersSource; +import org.apache.directory.studio.test.integration.junit5.LdapServersSource.Mode; +import org.apache.directory.studio.test.integration.junit5.TestLdapServer; import org.apache.directory.studio.test.integration.ui.bots.EntryEditorBot; import org.apache.directory.studio.test.integration.ui.bots.ErrorDialogBot; +import org.apache.directory.studio.test.integration.ui.bots.GeneratedPasswordDialogBot; import org.apache.directory.studio.test.integration.ui.bots.PasswordEditorDialogBot; import org.apache.directory.studio.test.integration.ui.bots.PasswordModifyExtendedOperationDialogBot; -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.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.params.ParameterizedTest; /** @@ -54,48 +48,22 @@ import org.junit.runner.RunWith; * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> * @version $Rev$, $Date$ */ -@RunWith(FrameworkRunnerWithScreenshotCaptureListener.class) -@CreateLdapServer(transports = - { @CreateTransport(protocol = "LDAP") }, extendedOpHandlers = - { PwdModifyHandler.class }) -@ApplyLdifFiles(clazz = ExtendedOperationsTest.class, value = "org/apache/directory/studio/test/integration/ui/BrowserTest.ldif") -public class ExtendedOperationsTest extends AbstractLdapTestUnit +public class ExtendedOperationsTest extends AbstractTestBase { - private StudioBot studioBot; - private ConnectionsViewBot connectionsViewBot; - private BrowserViewBot browserViewBot; - - @Before - public void setUp() throws Exception - { - studioBot = new StudioBot(); - studioBot.resetLdapPerspective(); - connectionsViewBot = studioBot.getConnectionView(); - connectionsViewBot.createTestConnection( "BrowserTest", ldapServer.getPort() ); - browserViewBot = studioBot.getBrowserView(); - } - - - @After - public void tearDown() throws Exception - { - connectionsViewBot.deleteTestConnections(); - Assertions.genericTearDownAssertions(); - } - - - @Test - public void testPasswordModifyExtendedOperationDialogValidation() + @ParameterizedTest + @LdapServersSource + public void testPasswordModifyExtendedOperationDialogValidation( TestLdapServer server ) throws Exception { - browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.1" ); + connectionsViewBot.createTestConnection( server ); + browserViewBot.selectEntry( path( USER1_DN ) ); // Open dialog PasswordModifyExtendedOperationDialogBot dialogBot = browserViewBot.openPasswordModifyExtendedOperationDialog(); assertTrue( dialogBot.isVisible() ); // Verify default UI state - assertEquals( "uid=user.1,ou=users,ou=system", dialogBot.getUserIdentity() ); + assertEquals( USER1_DN.getName(), dialogBot.getUserIdentity() ); assertFalse( dialogBot.useBindUserIdentity() ); assertEquals( "", dialogBot.getOldPassword() ); assertFalse( dialogBot.noOldPassword() ); @@ -151,17 +119,18 @@ public class ExtendedOperationsTest extends AbstractLdapTestUnit } - @Test - public void testPasswordModifyExtendedOperationDialogOk() + @ParameterizedTest + @LdapServersSource(mode=Mode.All, except = LdapServerType.Fedora389ds, reason = "389ds requires secure connection") + public void testPasswordModifyExtendedOperationDialogSetNewPassword( TestLdapServer server ) throws Exception { + connectionsViewBot.createTestConnection( server ); String random = RandomStringUtils.random( 20 ); - browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.1" ); - String dn = "uid=user.1,ou=users,ou=system"; + browserViewBot.selectEntry( path( USER1_DN ) ); // Open dialog PasswordModifyExtendedOperationDialogBot dialogBot = browserViewBot.openPasswordModifyExtendedOperationDialog(); assertTrue( dialogBot.isVisible() ); - assertEquals( dn, dialogBot.getUserIdentity() ); + assertEquals( USER1_DN.getName(), dialogBot.getUserIdentity() ); // Change password dialogBot.noOldPassword( true ); @@ -170,25 +139,98 @@ public class ExtendedOperationsTest extends AbstractLdapTestUnit // Verify and bind with the correct password browserViewBot.refresh(); - BotUtils.sleep( 1000L ); - EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( dn ); + EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( USER1_DN.getName() ); entryEditorBot.activate(); - PasswordEditorDialogBot pwdEditorBot = entryEditorBot.editValueExpectingPasswordEditor( "userPassword", - "Plain text password" ); + PasswordEditorDialogBot pwdEditorBot = entryEditorBot.editValueExpectingPasswordEditor( "userPassword", null ); pwdEditorBot.activateCurrentPasswordTab(); pwdEditorBot.setVerifyPassword( random ); assertNull( pwdEditorBot.clickVerifyButton() ); assertNull( pwdEditorBot.clickBindButton() ); + pwdEditorBot.clickCancelButton(); } + @ParameterizedTest + @LdapServersSource(mode=Mode.All, except = LdapServerType.Fedora389ds, reason = "389ds requires secure connection") + public void testPasswordModifyExtendedOperationDialogGenerateNewPassword( TestLdapServer server ) throws Exception + { + connectionsViewBot.createTestConnection( server ); + browserViewBot.selectEntry( path( USER1_DN ) ); + + // Open dialog + PasswordModifyExtendedOperationDialogBot dialogBot = browserViewBot.openPasswordModifyExtendedOperationDialog(); + assertTrue( dialogBot.isVisible() ); + assertEquals( USER1_DN.getName(), dialogBot.getUserIdentity() ); + + // Generate password + dialogBot.noOldPassword( true ); + dialogBot.generateNewPassword( true ); + + // ApacheDS does not support password generation + if ( server.getType() == LdapServerType.ApacheDS ) + { + ErrorDialogBot errorBot = dialogBot.clickOkButtonExpectingErrorDialog(); + assertThat( errorBot.getErrorMessage(), containsString( "null new password" ) ); + errorBot.clickOkButton(); + dialogBot.activate(); + dialogBot.clickCancelButton(); + } + else + { + dialogBot.clickOkButton(); + GeneratedPasswordDialogBot generatedPasswordDialogBot = new GeneratedPasswordDialogBot(); + String generatedPassword = generatedPasswordDialogBot.getGeneratedPassword(); + generatedPasswordDialogBot.clickOkButton(); + + // Verify and bind with the correct password + browserViewBot.refresh(); + EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( USER1_DN.getName() ); + entryEditorBot.activate(); + PasswordEditorDialogBot pwdEditorBot = entryEditorBot.editValueExpectingPasswordEditor( "userPassword", + null ); + pwdEditorBot.activateCurrentPasswordTab(); + pwdEditorBot.setVerifyPassword( generatedPassword ); + assertNull( pwdEditorBot.clickVerifyButton() ); + assertNull( pwdEditorBot.clickBindButton() ); + pwdEditorBot.clickCancelButton(); + } + + } + - @Test - public void testPasswordModifyExtendedOperationDialogError() + @ParameterizedTest + @LdapServersSource(only = LdapServerType.Fedora389ds, reason = "389ds requires secure connection") + public void testPasswordModifyExtendedOperationRequiresSecureConnection( TestLdapServer server ) throws Exception { + connectionsViewBot.createTestConnection( server ); String random = RandomStringUtils.random( 20 ); - browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.1" ); - String dn = "uid=user.1,ou=users,ou=system"; + browserViewBot.selectEntry( path( USER1_DN ) ); + + // Open dialog + PasswordModifyExtendedOperationDialogBot dialogBot = browserViewBot.openPasswordModifyExtendedOperationDialog(); + assertTrue( dialogBot.isVisible() ); + assertEquals( USER1_DN.getName(), dialogBot.getUserIdentity() ); + + // Change password + dialogBot.noOldPassword( true ); + dialogBot.setNewPassword( random ); + ErrorDialogBot errorBot = dialogBot.clickOkButtonExpectingErrorDialog(); + assertThat( errorBot.getErrorMessage(), containsString( "Operation requires a secure connection" ) ); + errorBot.clickOkButton(); + + dialogBot.activate(); + dialogBot.clickCancelButton(); + } + + + @ParameterizedTest + @LdapServersSource(mode=Mode.All) + public void testPasswordModifyExtendedOperationDialogError( TestLdapServer server ) throws Exception + { + connectionsViewBot.createTestConnection( server ); + String random = RandomStringUtils.random( 20 ); + browserViewBot.selectEntry( path( USER1_DN ) ); + String dn = USER1_DN.getName(); // Open dialog PasswordModifyExtendedOperationDialogBot dialogBot = browserViewBot.openPasswordModifyExtendedOperationDialog(); @@ -201,7 +243,18 @@ public class ExtendedOperationsTest extends AbstractLdapTestUnit dialogBot.setOldPassword( "wrong password" ); dialogBot.setNewPassword( random ); ErrorDialogBot errorBot = dialogBot.clickOkButtonExpectingErrorDialog(); - assertTrue( errorBot.getErrorMessage().contains( "invalid credentials" ) ); + if ( server.getType() == LdapServerType.OpenLdap ) + { + assertThat( errorBot.getErrorMessage(), containsString( "unwilling to verify old password" ) ); + } + else if ( server.getType() == LdapServerType.Fedora389ds ) + { + assertThat( errorBot.getErrorMessage(), containsString( "Operation requires a secure connection" ) ); + } + else + { + assertThat( errorBot.getErrorMessage(), containsString( "invalid credentials" ) ); + } errorBot.clickOkButton(); // Not existing entry @@ -210,17 +263,31 @@ public class ExtendedOperationsTest extends AbstractLdapTestUnit dialogBot.noOldPassword( true ); dialogBot.setNewPassword( random ); errorBot = dialogBot.clickOkButtonExpectingErrorDialog(); - assertTrue( errorBot.getErrorMessage().contains( "The entry does not exist" ) ); + if ( server.getType() == LdapServerType.OpenLdap ) + { + assertThat( errorBot.getErrorMessage(), containsString( "unable to retrieve SASL username" ) ); + } + else if ( server.getType() == LdapServerType.Fedora389ds ) + { + assertThat( errorBot.getErrorMessage(), containsString( "Operation requires a secure connection" ) ); + } + else + { + assertThat( errorBot.getErrorMessage(), containsString( "The entry does not exist" ) ); + } errorBot.clickOkButton(); // ApacheDS does not support password generation - dialogBot.activate(); - dialogBot.setUserIdentity( dn ); - dialogBot.noOldPassword( true ); - dialogBot.generateNewPassword( true ); - errorBot = dialogBot.clickOkButtonExpectingErrorDialog(); - assertTrue( errorBot.getErrorMessage().contains( "null new password" ) ); - errorBot.clickOkButton(); + if ( server.getType() == LdapServerType.ApacheDS ) + { + dialogBot.activate(); + dialogBot.setUserIdentity( dn ); + dialogBot.noOldPassword( true ); + dialogBot.generateNewPassword( true ); + errorBot = dialogBot.clickOkButtonExpectingErrorDialog(); + assertThat( errorBot.getErrorMessage(), containsString( "null new password" ) ); + errorBot.clickOkButton(); + } dialogBot.activate(); dialogBot.clickCancelButton(); |