From 71a180997c65b0b5d23453e1985ecc6225bb4a42 Mon Sep 17 00:00:00 2001
From: Guy Paddock <guy@rosieapp.com>
Date: Fri, 27 Oct 2017 05:00:00 +0000
Subject: [PATCH] Extends configurator for search filter support
---
opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/Rest2LdapJsonConfiguratorTest.java | 105 +++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 98 insertions(+), 7 deletions(-)
diff --git a/opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/Rest2LdapJsonConfiguratorTest.java b/opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/Rest2LdapJsonConfiguratorTest.java
index 2a74a2d..e4bda7b 100644
--- a/opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/Rest2LdapJsonConfiguratorTest.java
+++ b/opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/Rest2LdapJsonConfiguratorTest.java
@@ -41,6 +41,7 @@
import org.forgerock.json.JsonValue;
import org.forgerock.json.resource.Request;
import org.forgerock.json.resource.RequestHandler;
+import org.forgerock.opendj.ldap.Filter;
import org.forgerock.services.context.Context;
import org.forgerock.services.context.RootContext;
import org.forgerock.testng.ForgeRockTestCase;
@@ -136,7 +137,7 @@
}
@DataProvider
- public Object[][] invalidSubResourceConfigurations() {
+ public Object[][] invalidSubResourceSubtreeFlatteningConfigurations() {
// @Checkstyle:off
return new Object[][] {
{
@@ -187,6 +188,48 @@
{
false,
false,
+ null,
+ "{"
+ + "'example-v1': {"
+ + "'subResources': {"
+ + "'all-users': {"
+ + "'type': 'collection',"
+ + "'dnTemplate': 'ou=people,dc=example,dc=com',"
+ + "'resource': 'frapi:opendj:rest2ldap:user:1.0',"
+ + "'namingStrategy': {"
+ + "'type': 'clientDnNaming',"
+ + "'dnAttribute': 'uid'"
+ + "}"
+ + "}"
+ + "}"
+ + "}"
+ + "}"
+ },
+ {
+ false,
+ false,
+ "(objectClass=person)",
+ "{"
+ + "'example-v1': {"
+ + "'subResources': {"
+ + "'all-users': {"
+ + "'type': 'collection',"
+ + "'dnTemplate': 'ou=people,dc=example,dc=com',"
+ + "'resource': 'frapi:opendj:rest2ldap:user:1.0',"
+ + "'namingStrategy': {"
+ + "'type': 'clientDnNaming',"
+ + "'dnAttribute': 'uid'"
+ + "},"
+ + "'baseSearchFilter': '(objectClass=person)'"
+ + "}"
+ + "}"
+ + "}"
+ + "}"
+ },
+ {
+ false,
+ false,
+ null,
"{"
+ "'example-v1': {"
+ "'subResources': {"
@@ -207,6 +250,7 @@
{
true,
false,
+ null,
"{"
+ "'example-v1': {"
+ "'subResources': {"
@@ -227,6 +271,7 @@
{
true,
false,
+ null,
"{"
+ "'example-v1': {"
+ "'subResources': {"
@@ -248,6 +293,7 @@
{
false,
false,
+ null,
"{"
+ "'example-v1': {"
+ "'subResources': {"
@@ -269,6 +315,7 @@
{
true,
true,
+ null,
"{"
+ "'example-v1': {"
+ "'subResources': {"
@@ -291,8 +338,9 @@
// @Checkstyle:on
}
- @Test(dataProvider = "invalidSubResourceConfigurations")
- public void testInvalidSubResourceConfigurations(final String rawJson) throws Exception {
+ @Test(dataProvider = "invalidSubResourceSubtreeFlatteningConfigurations")
+ public void testInvalidSubResourceSubtreeFlatteningConfigurations(final String rawJson)
+ throws Exception {
try {
Rest2LdapJsonConfigurator.configureResources(parseJson(rawJson));
@@ -304,9 +352,44 @@
}
}
+ @Test
+ public void testInvalidSubResourceSearchFilterConfigurations()
+ throws Exception {
+ final String rawJson =
+ "{"
+ + "'example-v1': {"
+ + "'subResources': {"
+ + "'all-users': {"
+ + "'type': 'collection',"
+ + "'dnTemplate': 'ou=people,dc=example,dc=com',"
+ + "'resource': 'frapi:opendj:rest2ldap:user:1.0',"
+ + "'namingStrategy': {"
+ + "'type': 'clientDnNaming',"
+ + "'dnAttribute': 'uid'"
+ + "},"
+ + "'baseSearchFilter': 'badFilter'"
+ + "}"
+ + "}"
+ + "}"
+ + "}";
+
+ try {
+ Rest2LdapJsonConfigurator.configureResources(parseJson(rawJson));
+
+ fail("Expected an IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ex) {
+ assertThat(ex.getMessage())
+ .isEqualTo(
+ "The provided search filter \"badFilter\" was missing an equal sign in the " +
+ "suspected simple filter component between positions 0 and 9");
+ }
+ }
+
@Test(dataProvider = "validSubResourceConfigurations")
- public void testValidSubResourceConfigurations(final boolean expectingReadOnly,
- final boolean expectingSubtreeFlattened,
+ public void testValidSubResourceConfigurations(final boolean expectedReadOnly,
+ final boolean expectedSubtreeFlattened,
+ final String expectedSearchFilter,
final String rawJson) throws Exception {
final List<org.forgerock.opendj.rest2ldap.Resource> resources =
Rest2LdapJsonConfigurator.configureResources(parseJson(rawJson));
@@ -326,8 +409,16 @@
allUsersSubResource = (SubResourceCollection)subResources.get("all-users");
- assertThat(allUsersSubResource.isReadOnly()).isEqualTo(expectingReadOnly);
- assertThat(allUsersSubResource.shouldFlattenSubtree()).isEqualTo(expectingSubtreeFlattened);
+ assertThat(allUsersSubResource.isReadOnly()).isEqualTo(expectedReadOnly);
+ assertThat(allUsersSubResource.shouldFlattenSubtree()).isEqualTo(expectedSubtreeFlattened);
+
+ if (expectedSearchFilter == null) {
+ assertThat(allUsersSubResource.getBaseSearchFilter()).isNull();
+ }
+ else {
+ assertThat(allUsersSubResource.getBaseSearchFilter().toString())
+ .isEqualTo(expectedSearchFilter);
+ }
}
private RequestHandler createRequestHandler(final File endpointsDir) throws IOException {
--
Gitblit v1.10.0