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:
Diffstat (limited to 'tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ErrorHandlingTest.java')
-rw-r--r--tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ErrorHandlingTest.java212
1 files changed, 212 insertions, 0 deletions
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ErrorHandlingTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ErrorHandlingTest.java
new file mode 100644
index 000000000..29a8a64cf
--- /dev/null
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/ErrorHandlingTest.java
@@ -0,0 +1,212 @@
+/*
+ * 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.junit5.TestFixture.USER1_DN;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+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.TestLdapServer;
+import org.apache.directory.studio.test.integration.junit5.LdapServersSource.Mode;
+import org.apache.directory.studio.test.integration.ui.bots.DeleteDialogBot;
+import org.apache.directory.studio.test.integration.ui.bots.EntryEditorBot;
+import org.apache.directory.studio.test.integration.ui.bots.ErrorDialogBot;
+import org.eclipse.swtbot.swt.finder.utils.SWTUtils;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.params.ParameterizedTest;
+
+
+/**
+ * Tests error handling
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ErrorHandlingTest extends AbstractTestBase
+{
+
+ @ParameterizedTest
+ @LdapServersSource(only = LdapServerType.ApacheDS, reason = "ApacheDS specific test")
+ public void testDeleteObjectClassTopSchemaEntryShouldFail( TestLdapServer server ) throws Exception
+ {
+ connectionsViewBot.createTestConnection( server );
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=schema", "cn=system", "ou=objectClasses", "m-oid=2.5.6.0" );
+ browserViewBot.expandEntry( "DIT", "Root DSE", "ou=schema", "cn=system", "ou=objectClasses", "m-oid=2.5.6.0" );
+ DeleteDialogBot deleteDialog = browserViewBot.openDeleteDialog();
+ ErrorDialogBot errorDialog = deleteDialog.clickOkButtonExpectingErrorDialog();
+
+ // verify message in error dialog
+ assertThat( errorDialog.getErrorDetails(), containsString( "[LDAP result code 53 - unwillingToPerform]" ) );
+ errorDialog.clickOkButton();
+
+ // verify in modification logs
+ modificationLogsViewBot.assertContainsError( "[LDAP result code 53 - unwillingToPerform]",
+ "dn: m-oid=2.5.6.0,ou=objectClasses,cn=system,ou=schema", "changetype: delete" );
+ }
+
+
+ @ParameterizedTest
+ @LdapServersSource(mode = Mode.All)
+ public void testDeleteObjectClassAttributeShouldFail( TestLdapServer server ) throws Exception
+ {
+ connectionsViewBot.createTestConnection( server );
+ browserViewBot.selectEntry( path( ( USER1_DN ) ) );
+ EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( USER1_DN.getName() );
+ entryEditorBot.activate();
+ ErrorDialogBot errorDialog = entryEditorBot.deleteValueExpectingErrorDialog( "objectClass",
+ "inetOrgPerson (structural)" );
+
+ String expectedError = "65 - objectClassViolation";
+ if ( server.getType() == LdapServerType.OpenLdap )
+ {
+ expectedError = "69 - objectClassModsProhibited";
+ }
+
+ // verify message in error dialog
+ assertThat( errorDialog.getErrorMessage(), containsString( "[LDAP result code " + expectedError + "]" ) );
+ errorDialog.clickOkButton();
+
+ modificationLogsViewBot.assertContainsError( "[LDAP result code " + expectedError + "]",
+ "dn: " + USER1_DN.getName(), "changetype: modify" );
+ }
+
+
+ @ParameterizedTest
+ @LdapServersSource(mode = Mode.All)
+ public void testDeleteRdnAttributeShouldFail( TestLdapServer server ) throws Exception
+ {
+ connectionsViewBot.createTestConnection( server );
+ browserViewBot.selectEntry( path( ( USER1_DN ) ) );
+ EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( USER1_DN.getName() );
+ entryEditorBot.activate();
+ ErrorDialogBot errorDialog = entryEditorBot.deleteValueExpectingErrorDialog( "uid", "user.1" );
+
+ String expectedError = "67 - notAllowedOnRDN";
+ if ( server.getType() == LdapServerType.OpenLdap )
+ {
+ expectedError = "64 - namingViolation";
+ }
+
+ // verify message in error dialog
+ assertThat( errorDialog.getErrorMessage(), containsString( "[LDAP result code " + expectedError + "]" ) );
+ errorDialog.clickOkButton();
+
+ // verify in modification logs
+ modificationLogsViewBot.assertContainsError( "[LDAP result code " + expectedError + "]",
+ "dn: " + USER1_DN.getName(), "changetype: modify", "delete: uid" );
+ }
+
+
+ @ParameterizedTest
+ @LdapServersSource
+ public void testDeleteMustAttributeShouldFail( TestLdapServer server ) throws Exception
+ {
+ connectionsViewBot.createTestConnection( server );
+ browserViewBot.selectEntry( path( ( USER1_DN ) ) );
+ EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( USER1_DN.getName() );
+ entryEditorBot.activate();
+ ErrorDialogBot errorDialog = entryEditorBot.deleteValueExpectingErrorDialog( "sn", "Amar" );
+
+ // verify message in error dialog
+ assertThat( errorDialog.getErrorMessage(), containsString( "[LDAP result code 65 - objectClassViolation]" ) );
+ errorDialog.clickOkButton();
+
+ // verify in modification logs
+ modificationLogsViewBot.assertContainsError( "[LDAP result code 65 - objectClassViolation]",
+ "dn: " + USER1_DN.getName(), "changetype: modify", "delete: sn" );
+ }
+
+
+ @ParameterizedTest
+ @LdapServersSource(mode = Mode.All)
+ public void testDeleteOperationalAttributeShouldFail( TestLdapServer server ) throws Exception
+ {
+ connectionsViewBot.createTestConnection( server );
+ browserViewBot.selectEntry( path( ( USER1_DN ) ) );
+ EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( USER1_DN.getName() );
+ entryEditorBot.activate();
+ entryEditorBot.fetchOperationalAttributes();
+ SWTUtils.sleep( 1000 );
+ entryEditorBot.activate();
+ ErrorDialogBot errorDialog = entryEditorBot.deleteValueExpectingErrorDialog( "creatorsName", null );
+
+ String expectedError = "50 - insufficientAccessRights";
+ if ( server.getType() == LdapServerType.OpenLdap )
+ {
+ expectedError = "19 - constraintViolation";
+ }
+ if ( server.getType() == LdapServerType.Fedora389ds )
+ {
+ expectedError = "53 - unwillingToPerform";
+ }
+
+ // verify message in error dialog
+ assertThat( errorDialog.getErrorMessage(),
+ containsString( "[LDAP result code " + expectedError + "]" ) );
+ errorDialog.clickOkButton();
+
+ // verify in modification logs
+ modificationLogsViewBot.assertContainsError( "[LDAP result code " + expectedError + "]",
+ "dn: " + USER1_DN.getName(), "changetype: modify", "delete: creatorsName" );
+ }
+
+
+ @ParameterizedTest
+ @LdapServersSource
+ public void testModifyInvalidSyntaxShouldFail( TestLdapServer server ) throws Exception
+ {
+ connectionsViewBot.createTestConnection( server );
+ browserViewBot.selectEntry( path( ( USER1_DN ) ) );
+ EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( USER1_DN.getName() );
+ entryEditorBot.activate();
+ entryEditorBot.editValue( "mail", null );
+ ErrorDialogBot errorDialog = entryEditorBot.typeValueAndFinishAndExpectErrorDialog( "äöüß" );
+
+ // verify message in error dialog
+ assertThat( errorDialog.getErrorMessage(),
+ containsString( "[LDAP result code 21 - invalidAttributeSyntax]" ) );
+ errorDialog.clickOkButton();
+
+ // verify in modification logs
+ modificationLogsViewBot.assertContainsError( "[LDAP result code 21 - invalidAttributeSyntax]",
+ "dn: " + USER1_DN.getName(), "changetype: modify", "delete: mail" );
+ }
+
+
+ @Disabled("Until DIRSERVER-2308 is fixed")
+ @ParameterizedTest
+ @LdapServersSource
+ public void testRenameAlreadyExistingEntry( TestLdapServer server ) throws Exception
+ {
+ }
+
+
+ @Disabled("Until DIRSERVER-2308 is fixed")
+ @ParameterizedTest
+ @LdapServersSource
+ public void testMoveAlreadyExistingEntry( TestLdapServer server ) throws Exception
+ {
+ }
+
+}