From a08c81f677247ec9eb7721a86250c663065e9930 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 22 Jun 2016 22:12:03 +0000
Subject: [PATCH] OPENDJ-2871 Add support for sub-resources and inheritance
---
opendj-rest2ldap/src/test/java/org/forgerock/opendj/rest2ldap/BasicRequestsTest.java | 72 +++++++++++++++---------------------
1 files changed, 30 insertions(+), 42 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 0602c63..343ed60 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
@@ -24,21 +24,22 @@
import static org.forgerock.json.resource.PatchOperation.increment;
import static org.forgerock.json.resource.PatchOperation.remove;
import static org.forgerock.json.resource.PatchOperation.replace;
-import static org.forgerock.json.resource.Requests.newDeleteRequest;
-import static org.forgerock.json.resource.Requests.newPatchRequest;
-import static org.forgerock.json.resource.Requests.newQueryRequest;
-import static org.forgerock.json.resource.Requests.newReadRequest;
-import static org.forgerock.json.resource.Requests.newUpdateRequest;
-import static org.forgerock.json.resource.Resources.newCollection;
+import static org.forgerock.json.resource.Requests.*;
import static org.forgerock.json.resource.Resources.newInternalConnection;
import static org.forgerock.opendj.ldap.Connections.newInternalConnectionFactory;
import static org.forgerock.opendj.ldap.Functions.byteStringToInteger;
+import static org.forgerock.opendj.rest2ldap.Rest2Ldap.collectionOf;
import static org.forgerock.opendj.rest2ldap.Rest2Ldap.constant;
+import static org.forgerock.opendj.rest2ldap.Rest2Ldap.rest2Ldap;
import static org.forgerock.opendj.rest2ldap.Rest2Ldap.object;
+import static org.forgerock.opendj.rest2ldap.Rest2Ldap.resource;
import static org.forgerock.opendj.rest2ldap.Rest2Ldap.simple;
import static org.forgerock.opendj.rest2ldap.TestUtils.asResource;
import static org.forgerock.opendj.rest2ldap.TestUtils.content;
import static org.forgerock.opendj.rest2ldap.TestUtils.ctx;
+import static org.forgerock.opendj.rest2ldap.WritabilityPolicy.CREATE_ONLY;
+import static org.forgerock.opendj.rest2ldap.WritabilityPolicy.READ_ONLY;
+import static org.forgerock.util.Options.defaultOptions;
import java.io.IOException;
import java.util.ArrayList;
@@ -56,7 +57,6 @@
import org.forgerock.json.resource.ResourceResponse;
import org.forgerock.opendj.ldap.ConnectionFactory;
import org.forgerock.opendj.ldap.IntermediateResponseHandler;
-import org.forgerock.opendj.ldap.LdapException;
import org.forgerock.opendj.ldap.LdapResultHandler;
import org.forgerock.opendj.ldap.MemoryBackend;
import org.forgerock.opendj.ldap.RequestContext;
@@ -76,7 +76,6 @@
import org.forgerock.opendj.ldap.responses.ExtendedResult;
import org.forgerock.opendj.ldap.responses.Result;
import org.forgerock.opendj.ldif.LDIFEntryReader;
-import org.forgerock.opendj.rest2ldap.Rest2Ldap.Builder;
import org.forgerock.services.context.Context;
import org.forgerock.testng.ForgeRockTestCase;
import org.forgerock.util.query.QueryFilter;
@@ -208,7 +207,7 @@
public void testPatchEmpty() throws Exception {
final List<Request> requests = new LinkedList<>();
final Context context = newAuthConnectionContext(requests);
- final Connection connection = newConnection(requests);
+ final Connection connection = newConnection();
final ResourceResponse resource1 = connection.patch(context, newPatchRequest("/test1"));
checkResourcesAreEqual(resource1, getTestUser1(12345));
@@ -486,7 +485,7 @@
@Test
public void testUpdateNoChange() throws Exception {
final List<Request> requests = new LinkedList<>();
- final Connection connection = newConnection(requests);
+ final Connection connection = newConnection();
final Context context = newAuthConnectionContext(requests);
final ResourceResponse resource1 = connection.update(context, newUpdateRequest("/test1", getTestUser1(12345)));
@@ -604,51 +603,40 @@
}
private Connection newConnection() throws IOException {
- return newConnection(new LinkedList<Request>());
+ return newInternalConnection(usersApi().newRequestHandlerFor("api"));
}
- private Connection newConnection(final List<Request> requests) throws IOException {
- return newInternalConnection(newCollection(builder(requests).build()));
- }
-
- private Builder builder(final List<Request> requests) throws IOException {
- return Rest2Ldap.builder()
- .baseDN("dc=test")
- .useEtagAttribute()
- .useClientDNNaming("uid")
- .readOnUpdatePolicy(ReadOnUpdatePolicy.CONTROLS)
- .additionalLDAPAttribute("objectClass", "top", "person")
- .mapper(object()
- .attribute("schemas", constant(asList("urn:scim:schemas:core:1.0")))
- .attribute("_id", simple("uid").isSingleValued()
- .isRequired()
- .writability(WritabilityPolicy.CREATE_ONLY))
- .attribute("name", object().attribute("displayName", simple("cn").isSingleValued()
- .isRequired())
- .attribute("surname", simple("sn").isSingleValued().isRequired()))
- .attribute("_rev", simple("etag").isSingleValued()
- .isRequired()
- .writability(WritabilityPolicy.READ_ONLY))
- .attribute("description", simple("description"))
- .attribute("singleNumber", simple("singleNumber").decoder(byteStringToInteger())
- .isSingleValued())
- .attribute("multiNumber", simple("multiNumber").decoder(byteStringToInteger())));
+ 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("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())));
}
private void checkResourcesAreEqual(final ResourceResponse actual, final JsonValue expected) {
final ResourceResponse expectedResource = asResource(expected);
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 LdapException, IOException {
+ private AuthenticatedConnectionContext newAuthConnectionContext() throws IOException {
return newAuthConnectionContext(new ArrayList<Request>());
}
- private AuthenticatedConnectionContext newAuthConnectionContext(List<Request> requests)
- throws LdapException, IOException {
+ private AuthenticatedConnectionContext newAuthConnectionContext(List<Request> requests) throws IOException {
return new AuthenticatedConnectionContext(ctx(), getConnectionFactory(requests).getConnection());
}
--
Gitblit v1.10.0