/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at legal-notices/CDDLv1_0.txt.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
*
* Copyright 2008 Sun Microsystems, Inc.
* Portions Copyright 2014-2015 ForgeRock AS
*/
/**
* Administration framework LDAP client unit tests.
*/
@Test(sequential=true)
/** Test LDIF. */
// Base entries.
"dn: cn=config",
"objectclass: top",
"objectclass: ds-cfg-branch",
"cn: config",
"",
"dn: cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-branch",
"cn: test-parents",
"",
// Parent 1 - uses default values for
// optional-multi-valued-dn-property.
"dn: cn=test parent 1,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-test-parent-dummy",
"cn: test parent 1",
"ds-cfg-enabled: true",
"ds-cfg-java-class: org.opends.server.extensions.UserDefinedVirtualAttributeProvider",
"ds-cfg-attribute-type: description",
"",
// Parent 2 - overrides default values for
// optional-multi-valued-dn-property.
"dn: cn=test parent 2,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-test-parent-dummy",
"cn: test parent 2",
"ds-cfg-enabled: true",
"ds-cfg-java-class: org.opends.server.extensions.UserDefinedVirtualAttributeProvider",
"ds-cfg-attribute-type: description",
"ds-cfg-base-dn: dc=default value p2v1,dc=com",
"ds-cfg-base-dn: dc=default value p2v2,dc=com",
"",
// Parent 3 - overrides default values for
// optional-multi-valued-dn-property.
"dn: cn=test parent 3,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-test-parent-dummy",
"cn: test parent 3",
"ds-cfg-enabled: true",
"ds-cfg-java-class: org.opends.server.extensions.UserDefinedVirtualAttributeProvider",
"ds-cfg-attribute-type: description",
"ds-cfg-base-dn: dc=default value p3v1,dc=com",
"ds-cfg-base-dn: dc=default value p3v2,dc=com",
"",
// Child base entries.
"dn:cn=test children,cn=test parent 1,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-branch",
"cn: multiple children",
"",
"dn:cn=test children,cn=test parent 2,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-branch",
"cn: multiple children",
"",
// Child 1 inherits defaults for both
// optional-multi-valued-dn-property1 and
// optional-multi-valued-dn-property2.
"dn: cn=test child 1,cn=test children,cn=test parent 1,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-test-child-dummy",
"cn: test child 1",
"ds-cfg-enabled: true",
"ds-cfg-java-class: org.opends.server.extensions.UserDefinedVirtualAttributeProvider",
"ds-cfg-attribute-type: description",
"",
// Child 2 inherits defaults for
// optional-multi-valued-dn-property2.
"dn: cn=test child 2,cn=test children,cn=test parent 1,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-test-child-dummy",
"cn: test child 2",
"ds-cfg-enabled: true",
"ds-cfg-java-class: org.opends.server.extensions.UserDefinedVirtualAttributeProvider",
"ds-cfg-attribute-type: description",
"ds-cfg-base-dn: dc=default value c2v1,dc=com",
"ds-cfg-base-dn: dc=default value c2v2,dc=com",
"",
// Child 3 overrides defaults for
// optional-multi-valued-dn-property1 and
// optional-multi-valued-dn-property2.
"dn: cn=test child 3,cn=test children,cn=test parent 1,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-test-child-dummy",
"cn: test child 3",
"ds-cfg-enabled: true",
"ds-cfg-java-class: org.opends.server.extensions.UserDefinedVirtualAttributeProvider",
"ds-cfg-attribute-type: description",
"ds-cfg-base-dn: dc=default value c3v1,dc=com",
"ds-cfg-base-dn: dc=default value c3v2,dc=com",
"ds-cfg-group-dn: dc=default value c3v3,dc=com",
"ds-cfg-group-dn: dc=default value c3v4,dc=com",
"",
// Child 4 inherits overridden defaults for both
// optional-multi-valued-dn-property1 and
// optional-multi-valued-dn-property2.
"dn: cn=test child 1,cn=test children,cn=test parent 2,cn=test parents,cn=config",
"objectclass: top",
"objectclass: ds-cfg-test-child-dummy",
"cn: test child 1",
"ds-cfg-enabled: true",
"ds-cfg-java-class: org.opends.server.extensions.UserDefinedVirtualAttributeProvider",
"ds-cfg-attribute-type: description",
"",
};
/**
* Provide valid naming exception to client API exception mappings.
*
* @return Returns valid naming exception to client API exception
* mappings.
*/
return new Object[][] {
{
CommunicationException.class
},
{
CommunicationException.class
},
{
CommunicationException.class
},
{
},
{
AuthorizationException.class
},
{
}
};
}
/**
* Provide valid naming exception to client API exception mappings.
*
* @return Returns valid naming exception to client API exception
* mappings.
*/
return new Object[][] {
{
CommunicationException.class
},
{
CommunicationException.class
},
{
CommunicationException.class
},
{
},
{
AuthorizationException.class
},
{
new OperationNotSupportedException(), CommunicationException.class
}
};
}
/**
* Sets up tests
*
* @throws Exception
* If the server could not be initialized.
*/
// This test suite depends on having the schema available, so
// we'll start the server.
}
/**
* Tears down test environment.
*/
public void tearDown() {
}
/**
* Tests creation of a child managed object.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test child new,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedAttribute("ds-cfg-java-class",
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
TestChildCfgClient child = parent.createTestChild(TestChildCfgDefn.getInstance(), "test child new", null);
child.setMandatoryBooleanProperty(true);
child.setMandatoryReadOnlyAttributeTypeProperty(DirectoryServer.getAttributeTypeOrNull("description"));
c.assertEntryIsCreated();
}
/**
* Tests creation of a top-level managed object using fails when an
* underlying NamingException occurs.
*
* @param cause
* The NamingException cause of the failure.
* @param expected
* The expected client API exception class.
*/
MockLDAPConnection c = new MockLDAPConnection() {
throw cause;
}
};
c.importLDIF(TEST_LDIF);
try {
parent.setMandatoryReadOnlyAttributeTypeProperty(DirectoryServer.getAttributeTypeOrNull("description"));
} catch (Exception e) {
}
}
/**
* Tests creation of a top-level managed object.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test parent new,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedAttribute("ds-cfg-java-class",
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
parent.setMandatoryReadOnlyAttributeTypeProperty(DirectoryServer.getAttributeTypeOrNull("description"));
c.assertEntryIsCreated();
}
/**
* Tests retrieval of a child managed object with non-default
* values.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
MockLDAPConnection c = new MockLDAPConnection();
c.importLDIF(TEST_LDIF);
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
"dc=default value c3v1,dc=com", "dc=default value c3v2,dc=com");
"dc=default value c3v3,dc=com", "dc=default value c3v4,dc=com");
}
/**
* Tests retrieval of a child managed object with default values.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
MockLDAPConnection c = new MockLDAPConnection();
c.importLDIF(TEST_LDIF);
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
"dc=domain1,dc=com", "dc=domain2,dc=com", "dc=domain3,dc=com");
"dc=domain1,dc=com", "dc=domain2,dc=com", "dc=domain3,dc=com");
}
/**
* Tests retrieval of a top-level managed object fails when an
* underlying NamingException occurs.
*
* @param cause
* The NamingException cause of the failure.
* @param expected
* The expected client API exception class.
*/
MockLDAPConnection c = new MockLDAPConnection() {
/** {@inheritDoc} */
throws NamingException {
throw cause;
}
};
c.importLDIF(TEST_LDIF);
try {
} catch (Exception e) {
}
}
/**
* Tests retrieval of a top-level managed object with non-default
* values.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
MockLDAPConnection c = new MockLDAPConnection();
c.importLDIF(TEST_LDIF);
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
"dc=default value p2v1,dc=com", "dc=default value p2v2,dc=com");
}
/**
* Tests retrieval of a top-level managed object with default
* values.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
MockLDAPConnection c = new MockLDAPConnection();
c.importLDIF(TEST_LDIF);
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
"dc=domain1,dc=com", "dc=domain2,dc=com", "dc=domain3,dc=com");
}
/**
* Tests retrieval of relative inherited default values.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test child new,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedAttribute("ds-cfg-java-class",
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
// Check pre-commit values.
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
"dc=domain1,dc=com", "dc=domain2,dc=com", "dc=domain3,dc=com");
"dc=domain1,dc=com", "dc=domain2,dc=com", "dc=domain3,dc=com");
// Check that the default values are not committed.
child.setMandatoryBooleanProperty(true);
child.setMandatoryReadOnlyAttributeTypeProperty(DirectoryServer.getAttributeTypeOrNull("description"));
c.assertEntryIsCreated();
}
/**
* Tests retrieval of relative inherited default values.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test child new,cn=test children,cn=test parent 2,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedAttribute("ds-cfg-java-class",
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
// Check pre-commit values.
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
"dc=default value p2v1,dc=com", "dc=default value p2v2,dc=com");
"dc=default value p2v1,dc=com", "dc=default value p2v2,dc=com");
// Check that the default values are not committed.
child.setMandatoryBooleanProperty(true);
child.setMandatoryReadOnlyAttributeTypeProperty(DirectoryServer.getAttributeTypeOrNull("description"));
c.assertEntryIsCreated();
}
/**
* Tests listing of child managed objects.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
MockLDAPConnection c = new MockLDAPConnection();
c.importLDIF(TEST_LDIF);
"test child 1", "test child 2", "test child 3"
};
}
/**
* Tests listing of child managed objects when their are not any.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
MockLDAPConnection c = new MockLDAPConnection();
c.importLDIF(TEST_LDIF);
}
/**
* Tests listing of top level managed objects.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
MockLDAPConnection c = new MockLDAPConnection();
c.importLDIF(TEST_LDIF);
"test parent 1", "test parent 2", "test parent 3"
};
}
/**
* Tests listing of top level managed objects when their are not
* any.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
MockLDAPConnection c = new MockLDAPConnection();
c.importLDIF(ldif);
}
/**
* Tests modification of a child managed object.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test child 2,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedModification("ds-cfg-base-dn");
}
/**
* Tests modification of a top-level managed object.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
}
/**
* Tests modification of a top-level managed object.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedModification("ds-cfg-base-dn",
"dc=mod1,dc=com", "dc=mod2,dc=com");
parent.setMandatoryBooleanProperty(false);
}
/**
* Tests removal of a child managed object.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test child 1,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
}
/**
* Tests removal of a top-level managed object.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
"cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
}
/**
* Tests creation of a child managed object succeeds when registered
* add constraints succeed.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
try {
"cn=test child new,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedAttribute("ds-cfg-java-class",
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
TestChildCfgClient child = parent.createTestChild(TestChildCfgDefn.getInstance(), "test child new", null);
child.setMandatoryBooleanProperty(true);
child.setMandatoryReadOnlyAttributeTypeProperty(DirectoryServer.getAttributeTypeOrNull("description"));
c.assertEntryIsCreated();
} finally {
// Clean up.
}
}
/**
* Tests creation of a child managed object fails when registered
* add constraints fail.
*
* @throws Exception
* If an unexpected error occurred.
*/
try {
"cn=test child new,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedAttribute("ds-cfg-java-class",
"org.opends.server.extensions.UserDefinedVirtualAttributeProvider");
TestChildCfgClient child = parent.createTestChild(TestChildCfgDefn.getInstance(), "test child new", null);
child.setMandatoryBooleanProperty(true);
child.setMandatoryReadOnlyAttributeTypeProperty(DirectoryServer.getAttributeTypeOrNull("description"));
} finally {
// Clean up.
}
}
/**
* Tests removal of a child managed object succeeds when registered
* remove constraints succeed.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
try {
"cn=test child 1,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
} finally {
// Clean up.
}
}
/**
* Tests removal of a child managed object fails when registered
* remove constraints fails.
*
* @throws Exception
* If an unexpected error occurred.
*/
try {
"cn=test child 1,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
} finally {
// Clean up.
}
}
/**
* Tests modification of a child managed object succeeds when
* registered remove constraints succeed.
*
* @throws Exception
* If an unexpected error occurred.
*/
@Test
try {
"cn=test child 2,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedModification("ds-cfg-base-dn");
} finally {
// Clean up.
}
}
/**
* Tests modification of a child managed object fails when
* registered remove constraints fails.
*
* @throws Exception
* If an unexpected error occurred.
*/
try {
"cn=test child 2,cn=test children,cn=test parent 1,cn=test parents,cn=config");
c.importLDIF(TEST_LDIF);
c.addExpectedModification("ds-cfg-base-dn");
.fail("The modify constraint failed to prevent modification of the managed object");
} finally {
// Clean up.
}
}
/** Asserts that the actual set of DNs contains the expected values. */
int i = 0;
i++;
}
}
/** Create the named test parent managed object. */
}
/** Retrieve the named test parent managed object. */
name).getConfiguration();
}
/** List test parent managed objects. */
}
/** Remove the named test parent managed object. */
}
}