From 2be681a57d022e204b8d66cbcf3643c57c60cc20 Mon Sep 17 00:00:00 2001
From: Guy Paddock <guy@rosieapp.com>
Date: Fri, 27 Oct 2017 04:49:12 +0000
Subject: [PATCH] Adds subtree flattening to collections
---
opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/BasicRequestsTest.java | 164 +++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 119 insertions(+), 45 deletions(-)
diff --git a/opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/BasicRequestsTest.java b/opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/BasicRequestsTest.java
index 7b9c3ac..208023f 100644
--- a/opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/BasicRequestsTest.java
+++ b/opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/BasicRequestsTest.java
@@ -93,7 +93,7 @@
private static final QueryFilter<JsonPointer> NO_FILTER = QueryFilter.alwaysTrue();
@Test
- public void testQueryAllWithNoSubtree() throws Exception {
+ public void testQueryAllWithNoSubtreeFlattening() throws Exception {
final Connection connection = newConnection();
final List<ResourceResponse> resources = new LinkedList<>();
final QueryResponse result =
@@ -105,25 +105,76 @@
assertThat(resources).hasSize(7);
assertThat(result.getPagedResultsCookie()).isNull();
assertThat(result.getTotalPagedResults()).isEqualTo(-1);
+
+ assertThat(resources.get(0).getContent().get("_ou").isNotNull());
+ assertThat(resources.get(0).getContent().get("_ou").asString()).isEqualTo("level1");
+
+ assertThat(resources.get(1).getContent().get("_ou").isNull());
+ assertThat(resources.get(1).getId()).isEqualTo("test1");
+
+ assertThat(resources.get(2).getContent().get("_ou").isNull());
+ assertThat(resources.get(2).getId()).isEqualTo("test2");
+
+ assertThat(resources.get(3).getContent().get("_ou").isNull());
+ assertThat(resources.get(3).getId()).isEqualTo("test3");
+
+ assertThat(resources.get(4).getContent().get("_ou").isNull());
+ assertThat(resources.get(4).getId()).isEqualTo("test4");
+
+ assertThat(resources.get(5).getContent().get("_ou").isNull());
+ assertThat(resources.get(5).getId()).isEqualTo("test5");
+
+ assertThat(resources.get(6).getContent().get("_ou").isNull());
+ assertThat(resources.get(6).getId()).isEqualTo("test6");
}
-// @Test
-// public void testQueryAllWithSubtree() throws Exception {
-// final Connection connection = newConnection();
-// final List<ResourceResponse> resources = new LinkedList<>();
-// final QueryResponse result =
-// connection.query(
-// newAuthConnectionContext(),
-// newQueryRequest("").setQueryFilter(NO_FILTER),
-// resources);
-//
-// assertThat(resources).hasSize(7);
-// assertThat(result.getPagedResultsCookie()).isNull();
-// assertThat(result.getTotalPagedResults()).isEqualTo(-1);
-// }
+ @Test
+ public void testQueryAllWithSubtreeFlattening() throws Exception {
+ final Connection connection = newConnection();
+ final List<ResourceResponse> resources = new LinkedList<>();
+ final QueryResponse result =
+ connection.query(
+ newAuthConnectionContext(),
+ newQueryRequest("all-users").setQueryFilter(NO_FILTER),
+ resources);
+
+ assertThat(resources).hasSize(10);
+ assertThat(result.getPagedResultsCookie()).isNull();
+ assertThat(result.getTotalPagedResults()).isEqualTo(-1);
+
+ assertThat(resources.get(0).getContent().get("_ou").isNotNull());
+ assertThat(resources.get(0).getContent().get("_ou").asString()).isEqualTo("level1");
+
+ assertThat(resources.get(1).getContent().get("_ou").isNotNull());
+ assertThat(resources.get(1).getContent().get("_ou").asString()).isEqualTo("level2");
+
+ assertThat(resources.get(2).getContent().get("_ou").isNull());
+ assertThat(resources.get(2).getId()).isEqualTo("sub2");
+
+ assertThat(resources.get(3).getContent().get("_ou").isNull());
+ assertThat(resources.get(3).getId()).isEqualTo("sub1");
+
+ assertThat(resources.get(4).getContent().get("_ou").isNull());
+ assertThat(resources.get(4).getId()).isEqualTo("test1");
+
+ assertThat(resources.get(5).getContent().get("_ou").isNull());
+ assertThat(resources.get(5).getId()).isEqualTo("test2");
+
+ assertThat(resources.get(6).getContent().get("_ou").isNull());
+ assertThat(resources.get(6).getId()).isEqualTo("test3");
+
+ assertThat(resources.get(7).getContent().get("_ou").isNull());
+ assertThat(resources.get(7).getId()).isEqualTo("test4");
+
+ assertThat(resources.get(8).getContent().get("_ou").isNull());
+ assertThat(resources.get(8).getId()).isEqualTo("test5");
+
+ assertThat(resources.get(9).getContent().get("_ou").isNull());
+ assertThat(resources.get(9).getId()).isEqualTo("test6");
+ }
@Test
- public void testQueryNone() throws Exception {
+ public void testQueryNoneWithNoSubtreeFlattening() throws Exception {
final Connection connection = newConnection();
final List<ResourceResponse> resources = new LinkedList<>();
final QueryResponse result = connection.query(newAuthConnectionContext(),
@@ -135,6 +186,18 @@
}
@Test
+ public void testQueryNoneWithSubtreeFlattening() throws Exception {
+ final Connection connection = newConnection();
+ final List<ResourceResponse> resources = new LinkedList<>();
+ final QueryResponse result = connection.query(newAuthConnectionContext(),
+ newQueryRequest("all-users").setQueryFilter(QueryFilter.<JsonPointer> alwaysFalse()), resources);
+
+ assertThat(resources).hasSize(0);
+ assertThat(result.getPagedResultsCookie()).isNull();
+ assertThat(result.getTotalPagedResults()).isEqualTo(-1);
+ }
+
+ @Test
public void testQueryPageResultsCookie() throws Exception {
final Connection connection = newConnection();
final List<ResourceResponse> resources = new ArrayList<>();
@@ -799,35 +862,46 @@
private Rest2Ldap usersApi() throws IOException {
return rest2Ldap(
defaultOptions(),
- resource("api").subResource(
- collectionOf("user").dnTemplate("dc=test").useClientDnNaming("uid")),
- resource("user").objectClasses("top", "person")
- .property(
- "schemas",
- constant(asList("urn:scim:schemas:core:1.0")))
- .property(
- "_id",
- simple("uid").isRequired(true).writability(CREATE_ONLY))
- .property(
- "_ou",
- simple("ou").isRequired(false).writability(CREATE_ONLY))
- .property(
- "name",
- object()
- .property("displayName", simple("cn").isRequired(true))
- .property("surname", simple("sn").isRequired(true)))
- .property(
- "_rev",
- simple("etag").isRequired(true).writability(READ_ONLY))
- .property(
- "description",
- simple("description").isMultiValued(true))
- .property(
- "singleNumber",
- simple("singleNumber").decoder(byteStringToInteger()))
- .property(
- "multiNumber",
- simple("multiNumber").isMultiValued(true).decoder(byteStringToInteger()))
+ resource("api")
+ .subResource(
+ collectionOf("user")
+ .dnTemplate("dc=test")
+ .useClientDnNaming("uid"))
+ .subResource(
+ collectionOf("user")
+ .urlTemplate("all-users")
+ .dnTemplate("dc=test")
+ .useClientDnNaming("uid")
+ .isReadOnly(true)
+ .flattenSubtree(true)),
+ resource("user")
+ .objectClasses("top", "person")
+ .property(
+ "schemas",
+ constant(asList("urn:scim:schemas:core:1.0")))
+ .property(
+ "_id",
+ simple("uid").isRequired(true).writability(CREATE_ONLY))
+ .property(
+ "_ou",
+ simple("ou").isRequired(false).writability(CREATE_ONLY))
+ .property(
+ "name",
+ object()
+ .property("displayName", simple("cn").isRequired(true))
+ .property("surname", simple("sn").isRequired(true)))
+ .property(
+ "_rev",
+ simple("etag").isRequired(true).writability(READ_ONLY))
+ .property(
+ "description",
+ simple("description").isMultiValued(true))
+ .property(
+ "singleNumber",
+ simple("singleNumber").decoder(byteStringToInteger()))
+ .property(
+ "multiNumber",
+ simple("multiNumber").isMultiValued(true).decoder(byteStringToInteger()))
);
}
--
Gitblit v1.10.0