From b092ba85131000627f16a15abc8203f1982f81d1 Mon Sep 17 00:00:00 2001
From: Guy Paddock <guy@rosieapp.com>
Date: Fri, 27 Oct 2017 04:48:50 +0000
Subject: [PATCH] Add OUs to `BasicRequestsTest`

---
 opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/BasicRequestsTest.java |  125 +++++++++++++++++++++++++++++++++++------
 1 files changed, 106 insertions(+), 19 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 080979a..7b9c3ac 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 testQueryAll() throws Exception {
+    public void testQueryAllWithNoSubtree() throws Exception {
         final Connection connection = newConnection();
         final List<ResourceResponse> resources = new LinkedList<>();
         final QueryResponse result =
@@ -102,11 +102,26 @@
                 newQueryRequest("").setQueryFilter(NO_FILTER),
                 resources);
 
-        assertThat(resources).hasSize(5);
+        assertThat(resources).hasSize(7);
         assertThat(result.getPagedResultsCookie()).isNull();
         assertThat(result.getTotalPagedResults()).isEqualTo(-1);
     }
 
+//    @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 testQueryNone() throws Exception {
         final Connection connection = newConnection();
@@ -128,12 +143,22 @@
         QueryResponse result =
             connection.query(
                 newAuthConnectionContext(),
-                newQueryRequest("").setQueryFilter(NO_FILTER).setPageSize(2), resources);
+                newQueryRequest("")
+                    .setQueryFilter(NO_FILTER)
+                    .setPageSize(3),
+                resources);
 
         assertThat(result.getPagedResultsCookie()).isNotNull();
-        assertThat(resources).hasSize(2);
-        assertThat(resources.get(0).getId()).isEqualTo("test1");
-        assertThat(resources.get(1).getId()).isEqualTo("test2");
+        assertThat(resources).hasSize(3);
+
+        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");
 
         String cookie = result.getPagedResultsCookie();
 
@@ -145,15 +170,22 @@
                 newAuthConnectionContext(),
                 newQueryRequest("")
                     .setQueryFilter(NO_FILTER)
-                    .setPageSize(2)
+                    .setPageSize(3)
                     .setPagedResultsCookie(cookie),
                 resources);
 
         assertThat(result.getPagedResultsCookie()).isNotNull();
-        assertThat(resources).hasSize(2);
+        assertThat(resources).hasSize(3);
+
+        assertThat(resources.get(0).getContent().get("_ou").isNull());
         assertThat(resources.get(0).getId()).isEqualTo("test3");
+
+        assertThat(resources.get(1).getContent().get("_ou").isNull());
         assertThat(resources.get(1).getId()).isEqualTo("test4");
 
+        assertThat(resources.get(2).getContent().get("_ou").isNull());
+        assertThat(resources.get(2).getId()).isEqualTo("test5");
+
         cookie = result.getPagedResultsCookie();
 
         resources.clear();
@@ -164,13 +196,15 @@
                 newAuthConnectionContext(),
                 newQueryRequest("")
                     .setQueryFilter(NO_FILTER)
-                    .setPageSize(2)
+                    .setPageSize(3)
                     .setPagedResultsCookie(cookie),
                 resources);
 
         assertThat(result.getPagedResultsCookie()).isNull();
         assertThat(resources).hasSize(1);
-        assertThat(resources.get(0).getId()).isEqualTo("test5");
+
+        assertThat(resources.get(0).getContent().get("_ou").isNull());
+        assertThat(resources.get(0).getId()).isEqualTo("test6");
     }
 
     @Test
@@ -189,8 +223,8 @@
 
         assertThat(result.getPagedResultsCookie()).isNotNull();
         assertThat(resources).hasSize(2);
-        assertThat(resources.get(0).getId()).isEqualTo("test3");
-        assertThat(resources.get(1).getId()).isEqualTo("test4");
+        assertThat(resources.get(0).getId()).isEqualTo("test2");
+        assertThat(resources.get(1).getId()).isEqualTo("test3");
     }
 
     @Test(expectedExceptions = NotFoundException.class)
@@ -775,6 +809,9 @@
                         "_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))
@@ -799,18 +836,24 @@
 
         assertThat(actual.getId()).isEqualTo(expectedResource.getId());
         assertThat(actual.getRevision()).isEqualTo(expectedResource.getRevision());
-        assertThat(actual.getContent().getObject()).isEqualTo(expectedResource.getContent().getObject());
+
+        assertThat(actual.getContent().getObject())
+            .isEqualTo(expectedResource.getContent().getObject());
     }
 
     private AuthenticatedConnectionContext newAuthConnectionContext() throws IOException {
         return newAuthConnectionContext(new ArrayList<Request>());
     }
 
-    private AuthenticatedConnectionContext newAuthConnectionContext(List<Request> requests) throws IOException {
-        return new AuthenticatedConnectionContext(ctx(), getConnectionFactory(requests).getConnection());
+    private AuthenticatedConnectionContext newAuthConnectionContext(List<Request> requests)
+    throws IOException {
+        return new AuthenticatedConnectionContext(
+            ctx(),
+            getConnectionFactory(requests).getConnection());
     }
 
-    private ConnectionFactory getConnectionFactory(final List<Request> requests) throws IOException {
+    private ConnectionFactory getConnectionFactory(final List<Request> requests)
+    throws IOException {
         // @formatter:off
         final MemoryBackend backend =
                 new MemoryBackend(new LDIFEntryReader(
@@ -862,7 +905,46 @@
                         "userpassword: password",
                         "cn: test user 5",
                         "sn: user 5",
-                        "etag: 55555"
+                        "etag: 55555",
+                        "",
+                        "dn: uid=test6,dc=test",
+                        "objectClass: top",
+                        "objectClass: person",
+                        "uid: test6",
+                        "userpassword: password",
+                        "cn: test user 6",
+                        "sn: user 6",
+                        "etag: 66666",
+                        "",
+                        "dn: ou=level1,dc=test",
+                        "objectClass: top",
+                        "objectClass: organizationalUnit",
+                        "ou: level1",
+                        "etag: 77777",
+                        "",
+                        "dn: uid=sub1,ou=level1,dc=test",
+                        "objectClass: top",
+                        "objectClass: person",
+                        "uid: sub1",
+                        "userpassword: password",
+                        "cn: test user level 1",
+                        "sn: user 7",
+                        "etag: 88888",
+                        "",
+                        "dn: ou=level2,ou=level1,dc=test",
+                        "objectClass: top",
+                        "objectClass: organizationalUnit",
+                        "ou: level2",
+                        "etag: 99999",
+                        "",
+                        "dn: uid=sub2,ou=level2,ou=level1,dc=test",
+                        "objectClass: top",
+                        "objectClass: person",
+                        "uid: sub2",
+                        "userpassword: password",
+                        "cn: test user level 2",
+                        "sn: user 8",
+                        "etag: 86753"
                 ));
         // @formatter:on
 
@@ -938,10 +1020,15 @@
 
             @Override
             public void handleSearch(RequestContext requestContext, SearchRequest request,
-                IntermediateResponseHandler intermediateResponseHandler, SearchResultHandler entryHandler,
+                IntermediateResponseHandler intermediateResponseHandler,
+                SearchResultHandler entryHandler,
                 LdapResultHandler<Result> resultHandler) {
                 requests.add(request);
-                handler.handleSearch(requestContext, request, intermediateResponseHandler, entryHandler,
+                handler.handleSearch(
+                    requestContext,
+                    request,
+                    intermediateResponseHandler,
+                    entryHandler,
                     resultHandler);
             }
 

--
Gitblit v1.10.0