You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dh...@apache.org on 2014/06/28 01:22:22 UTC

[4/5] Intial version of Camel support for Box.com, it's also a POC for the awesome Camel API component framework

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxCollaborationsManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxCollaborationsManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxCollaborationsManagerIntegrationTest.java
new file mode 100644
index 0000000..eea80af
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxCollaborationsManagerIntegrationTest.java
@@ -0,0 +1,154 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Camel Api Route test generated by camel-component-util-maven-plugin
+ * Generated on: Tue Jun 24 22:42:08 PDT 2014
+ */
+package org.apache.camel.component.box;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.box.boxjavalibv2.dao.BoxCollaboration;
+import com.box.boxjavalibv2.dao.BoxCollaborationRole;
+import com.box.boxjavalibv2.requests.requestobjects.BoxCollabRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxGetAllCollabsRequestObject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiCollection;
+import org.apache.camel.component.box.internal.IBoxCollaborationsManagerApiMethod;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxCollaborationsManager APIs.
+ */
+public class IBoxCollaborationsManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxCollaborationsManagerIntegrationTest.class);
+    private static final String PATH_PREFIX = BoxApiCollection.getCollection().getApiName(IBoxCollaborationsManagerApiMethod.class).getName();
+
+    private BoxCollaboration createCollaboration() throws InterruptedException {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.folderId", testFolderId);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxCollabRequestObject
+        final BoxCollabRequestObject collabObject = BoxCollabRequestObject.createCollabObject(testFolderId, null,
+            "camel.test@localhost.com", BoxCollaborationRole.VIEWER);
+        headers.put("CamelBox.collabRequest", collabObject);
+
+        BoxCollaboration result = requestBodyAndHeaders("direct://CREATECOLLABORATION",
+            null, headers);
+        assertNotNull("createCollaboration result", result);
+        // wait a moment for collaboration to register
+        Thread.sleep(2000);
+        return result;
+    }
+
+    private void deleteCollaboration(String collabId) throws Exception {
+
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.collabId", collabId);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+        requestBodyAndHeaders("direct://DELETECOLLABORATION", null, headers);
+    }
+
+    @Test
+    public void testGetAllCollaborations() throws Exception {
+        // using com.box.boxjavalibv2.requests.requestobjects.BoxGetAllCollabsRequestObject message body for single parameter "getAllCollabsRequest"
+        final BoxGetAllCollabsRequestObject collabRequest =
+            BoxGetAllCollabsRequestObject.getAllCollaborationsRequestObject(BoxCollaboration.STATUS_PENDING);
+
+        List result = requestBody("direct://GETALLCOLLABORATIONS", collabRequest);
+        assertNotNull("getAllCollaborations: " + result);
+        LOG.debug("getAllCollaborations: " + result);
+    }
+
+    @Test
+    public void testGetCollaboration() throws Exception {
+        final BoxCollaboration collaboration = createCollaboration();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.collabId", collaboration.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+            headers.put("CamelBox.defaultRequest", null);
+            
+            BoxCollaboration result = requestBodyAndHeaders("direct://GETCOLLABORATION", null, headers);
+            assertNotNull("getCollaboration result", result);
+            LOG.debug("getCollaboration: " + result);
+        } finally {
+            deleteCollaboration(collaboration.getId());
+        }
+    }
+
+    @Ignore("BoxClient SDK has a bug in UpdateCollaborationRequest.java, the URI constant should be collaborations")
+    @Test
+    public void testUpdateCollaboration() throws Exception {
+        final BoxCollaboration collaboration = createCollaboration();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.collabId", collaboration.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxCollabRequestObject
+            final BoxCollabRequestObject requestObject = BoxCollabRequestObject.updateCollabObjects(
+                BoxCollaborationRole.EDITOR);
+            headers.put("CamelBox.collabRequest", requestObject);
+
+            BoxCollaboration result = requestBodyAndHeaders("direct://UPDATECOLLABORATION", null, headers);
+            assertNotNull("updateCollaboration result", result);
+            LOG.debug("updateCollaboration: " + result);
+        } finally {
+            deleteCollaboration(collaboration.getId());
+        }
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for createCollaboration
+                from("direct://CREATECOLLABORATION")
+                  .to("box://" + PATH_PREFIX + "/createCollaboration");
+
+                // test route for deleteCollaboration
+                from("direct://DELETECOLLABORATION")
+                  .to("box://" + PATH_PREFIX + "/deleteCollaboration");
+
+                // test route for getAllCollaborations
+                from("direct://GETALLCOLLABORATIONS")
+                  .to("box://" + PATH_PREFIX + "/getAllCollaborations?inBody=getAllCollabsRequest");
+
+                // test route for getCollaboration
+                from("direct://GETCOLLABORATION")
+                  .to("box://" + PATH_PREFIX + "/getCollaboration");
+
+                // test route for updateCollaboration
+                from("direct://UPDATECOLLABORATION")
+                  .to("box://" + PATH_PREFIX + "/updateCollaboration");
+
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxCommentsManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxCommentsManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxCommentsManagerIntegrationTest.java
new file mode 100644
index 0000000..178852a
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxCommentsManagerIntegrationTest.java
@@ -0,0 +1,143 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Camel Api Route test generated by camel-component-util-maven-plugin
+ * Generated on: Tue Jun 24 22:42:08 PDT 2014
+ */
+package org.apache.camel.component.box;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.box.boxjavalibv2.dao.BoxComment;
+import com.box.boxjavalibv2.dao.BoxResourceType;
+import com.box.boxjavalibv2.requests.requestobjects.BoxCommentRequestObject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiName;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxCommentsManager APIs.
+ */
+public class IBoxCommentsManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxCommentsManagerIntegrationTest.class);
+    private static final String PATH_PREFIX = BoxApiName.COMMENTS.getName();
+
+    private BoxComment addComment() throws InterruptedException {
+        final BoxCommentRequestObject requestObject =
+            BoxCommentRequestObject.addCommentRequestObject(BoxResourceType.FILE, testFileId, "Camel was here!");
+
+        BoxComment result = requestBody("direct://ADDCOMMENT", requestObject);
+        assertNotNull("addComment result", result);
+        Thread.sleep(2000);
+        return result;
+    }
+
+    @Test
+    public void testAddComment_1() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.commentedItemId", testFileId);
+        // parameter type is com.box.boxjavalibv2.dao.IBoxType
+        headers.put("CamelBox.commentedItemType", BoxResourceType.FILE);
+        // parameter type is String
+        headers.put("CamelBox.message", "Camel was here!");
+
+        BoxComment result = requestBodyAndHeaders("direct://ADDCOMMENT_1", null, headers);
+        assertNotNull("addComment result", result);
+        LOG.debug("addComment: " + result);
+
+        deleteComment(result.getId());
+    }
+
+    public void deleteComment(String commentId) throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.commentId", commentId);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+        requestBodyAndHeaders("direct://DELETECOMMENT", null, headers);
+    }
+
+    @Test
+    public void testGetComment() throws Exception {
+        final BoxComment comment = addComment();
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.commentId", comment.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+            headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+            BoxComment result = requestBodyAndHeaders("direct://GETCOMMENT", null, headers);
+
+            LOG.debug("getComment: " + result);
+        } finally {
+            deleteComment(comment.getId());
+        }
+    }
+
+    @Test
+    public void testUpdateComment() throws Exception {
+        final BoxComment comment = addComment();
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.commentId", comment.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxCommentRequestObject
+            final BoxCommentRequestObject requestObject =
+                BoxCommentRequestObject.updateCommentRequestObject("Camel was here, again!");
+            headers.put("CamelBox.commentRequest", requestObject);
+            BoxComment result = requestBodyAndHeaders("direct://UPDATECOMMENT", null, headers);
+
+            LOG.debug("updateComment: " + result);
+        } finally {
+            deleteComment(comment.getId());
+        }
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for addComment
+                from("direct://ADDCOMMENT")
+                  .to("box://" + PATH_PREFIX + "/addComment?inBody=commentRequest");
+
+                // test route for addComment
+                from("direct://ADDCOMMENT_1")
+                  .to("box://" + PATH_PREFIX + "/addComment");
+
+                // test route for deleteComment
+                from("direct://DELETECOMMENT")
+                  .to("box://" + PATH_PREFIX + "/deleteComment");
+
+                // test route for getComment
+                from("direct://GETCOMMENT")
+                  .to("box://" + PATH_PREFIX + "/getComment");
+
+                // test route for updateComment
+                from("direct://UPDATECOMMENT")
+                  .to("box://" + PATH_PREFIX + "/updateComment");
+
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxEventsManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxEventsManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxEventsManagerIntegrationTest.java
new file mode 100644
index 0000000..b86ed4b
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxEventsManagerIntegrationTest.java
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Camel Api Route test generated by camel-component-util-maven-plugin
+ * Generated on: Tue Jun 24 22:42:08 PDT 2014
+ */
+package org.apache.camel.component.box;
+
+import com.box.boxjavalibv2.dao.BoxCollection;
+import com.box.boxjavalibv2.dao.BoxEventCollection;
+import com.box.boxjavalibv2.requests.requestobjects.BoxEventRequestObject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiCollection;
+import org.apache.camel.component.box.internal.IBoxEventsManagerApiMethod;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxEventsManager APIs.
+ */
+public class IBoxEventsManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxEventsManagerIntegrationTest.class);
+    private static final String PATH_PREFIX = BoxApiCollection.getCollection().getApiName(IBoxEventsManagerApiMethod.class).getName();
+
+    @Test
+    public void testGetEventOptions() throws Exception {
+        // using com.box.restclientv2.requestsbase.BoxDefaultRequestObject message body for single parameter "defaultRequest"
+        BoxCollection result = requestBody("direct://GETEVENTOPTIONS", BOX_DEFAULT_REQUEST_OBJECT);
+
+        assertNotNull("getEventOptions result", result);
+        LOG.debug("getEventOptions: " + result);
+    }
+
+    @Test
+    public void testGetEvents() throws Exception {
+        // using com.box.boxjavalibv2.requests.requestobjects.BoxEventRequestObject message body for single parameter "eventRequest"
+        final BoxEventRequestObject requestObject =
+            BoxEventRequestObject.getEventsRequestObject(BoxEventRequestObject.STREAM_POSITION_NOW);
+        BoxEventCollection result = requestBody("direct://GETEVENTS", requestObject);
+
+        assertNotNull("getEvents result", result);
+        LOG.debug("getEvents: " + result);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for getEventOptions
+                from("direct://GETEVENTOPTIONS")
+                  .to("box://" + PATH_PREFIX + "/getEventOptions?inBody=defaultRequest");
+
+                // test route for getEvents
+                from("direct://GETEVENTS")
+                  .to("box://" + PATH_PREFIX + "/getEvents?inBody=eventRequest");
+
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxFilesManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxFilesManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxFilesManagerIntegrationTest.java
new file mode 100644
index 0000000..03f483d
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxFilesManagerIntegrationTest.java
@@ -0,0 +1,449 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Camel Api Route test generated by camel-component-util-maven-plugin
+ * Generated on: Tue Jun 24 22:42:08 PDT 2014
+ */
+package org.apache.camel.component.box;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.box.boxjavalibv2.dao.BoxFile;
+import com.box.boxjavalibv2.dao.BoxPreview;
+import com.box.boxjavalibv2.dao.BoxSharedLinkAccess;
+import com.box.boxjavalibv2.exceptions.BoxServerException;
+import com.box.boxjavalibv2.filetransfer.IFileTransferListener;
+import com.box.boxjavalibv2.jsonentities.BoxSharedLinkRequestEntity;
+import com.box.boxjavalibv2.requests.requestobjects.BoxFileRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxImageRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxItemCopyRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxSharedLinkRequestObject;
+import com.box.restclientv2.requestsbase.BoxFileUploadRequestObject;
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiName;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxFilesManager APIs.
+ */
+public class IBoxFilesManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxFilesManagerIntegrationTest.class);
+    private static final String PATH_PREFIX = BoxApiName.FILES.getName();
+    private static final String CAMEL_TEST_FILE = "CamelTestFile";
+    private static final BoxImageRequestObject BOX_IMAGE_REQUEST_OBJECT = BoxImageRequestObject.previewRequestObject();
+    private static final String PNG_EXTENSION = "png";
+    private static final String TEST_UPLOAD_FILE = "/log4j.properties";
+    private static final String PREVIEW_UNAVAILABLE = "Requested preview unavailable";
+
+    public BoxFile copyFile() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxItemCopyRequestObject
+        final BoxItemCopyRequestObject requestObject =
+            BoxItemCopyRequestObject.copyItemRequestObject("0");
+        requestObject.setName(CAMEL_TEST_FILE);
+        headers.put("CamelBox.itemCopyRequest", requestObject);
+        BoxFile result = requestBodyAndHeaders("direct://COPYFILE", null, headers);
+
+        assertNotNull("copyFile result", result);
+        LOG.debug("copyFile: " + result);
+
+        return result;
+    }
+
+    @Test
+    public void testCreateSharedLink() throws Exception {
+        final BoxFile boxFile = copyFile();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.fileId", boxFile.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxSharedLinkRequestObject
+            final BoxSharedLinkRequestEntity sharedLink = new BoxSharedLinkRequestEntity(BoxSharedLinkAccess.OPEN);
+            final BoxSharedLinkRequestObject requestObject =
+                BoxSharedLinkRequestObject.createSharedLinkRequestObject(sharedLink);
+            headers.put("CamelBox.sharedLinkRequest", requestObject);
+
+            BoxFile result = requestBodyAndHeaders("direct://CREATESHAREDLINK", null, headers);
+
+            assertNotNull("createSharedLink result", result);
+            LOG.debug("createSharedLink: " + result);
+        } finally {
+            deleteFile(boxFile.getId());
+        }
+    }
+
+    public void deleteFile(String fileId) throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", fileId);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", null);
+        requestBodyAndHeaders("direct://DELETEFILE", null, headers);
+    }
+
+    @Test
+    public void testDownloadFile() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+        InputStream result = requestBodyAndHeaders("direct://DOWNLOADFILE", null, headers);
+
+        assertNotNull("downloadFile result", result);
+        LOG.debug("downloadFile: " + result);
+        result.close();
+    }
+
+    @Test
+    public void testDownloadFile_1() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is java.io.File
+        final File tempFile = File.createTempFile("CamelTest", "download");
+        headers.put("CamelBox.destination", tempFile);
+        // parameter type is com.box.boxjavalibv2.filetransfer.IFileTransferListener
+        final FileTransferListener fileTransferListener = new FileTransferListener();
+        headers.put("CamelBox.listener", fileTransferListener);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+        requestBodyAndHeaders("direct://DOWNLOADFILE_1", null, headers);
+
+        assertTransferSuccess(fileTransferListener);
+        assertTrue("downloadFile file", tempFile.exists());
+    }
+
+    private void assertTransferSuccess(FileTransferListener fileTransferListener) throws InterruptedException {
+        long bytesTransferred;
+        do {
+            bytesTransferred = fileTransferListener.getBytesTransferred();
+            Thread.sleep(2000);
+        } while(fileTransferListener.getBytesTransferred() != bytesTransferred);
+//        assertEquals("downloadFile status", "success", fileTransferListener.getStatus());
+        assertNull("downloadFile exception", fileTransferListener.getException());
+    }
+
+    @Test
+    public void testDownloadFile_2() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is java.io.OutputStream[]
+        final OutputStream[] outputStreams = new OutputStream[] { new ByteArrayOutputStream() } ;
+        headers.put("CamelBox.outputStreams", outputStreams);
+        // parameter type is com.box.boxjavalibv2.filetransfer.IFileTransferListener
+        final FileTransferListener fileTransferListener = new FileTransferListener();
+        headers.put("CamelBox.listener", fileTransferListener);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+        requestBodyAndHeaders("direct://DOWNLOADFILE_2", null, headers);
+
+        assertTransferSuccess(fileTransferListener);
+        assertNotNull("downloadFile OutputStream", outputStreams[0].toString());
+    }
+
+    @Test
+    public void testDownloadThumbnail() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is String
+        headers.put("CamelBox.extension", PNG_EXTENSION);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxImageRequestObject
+        headers.put("CamelBox.imageRequest", BOX_IMAGE_REQUEST_OBJECT);
+
+        InputStream result = requestBodyAndHeaders("direct://DOWNLOADTHUMBNAIL", null, headers);
+
+        assertNotNull("downloadThumbnail result", result);
+        LOG.debug("downloadThumbnail: " + result);
+        result.close();
+    }
+
+    @Test
+    public void testGetFile() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+//        BoxFile result = requestBodyAndHeaders("direct://GETFILE", null, headers);
+        BoxFile result = requestBodyAndHeaders("direct://GETFILE", null, headers);
+
+        assertNotNull("getFile result", result);
+        LOG.debug("getFile: " + result);
+    }
+
+    @Test
+    public void testGetFileComments() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+        com.box.boxjavalibv2.dao.BoxCollection result = requestBodyAndHeaders("direct://GETFILECOMMENTS", null, headers);
+
+        assertNotNull("getFileComments result", result);
+        LOG.debug("getFileComments: " + result);
+    }
+
+    @Test
+    public void testGetFileVersions() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+        java.util.List result = requestBodyAndHeaders("direct://GETFILEVERSIONS", null, headers);
+
+        assertNotNull("getFileVersions result", result);
+        LOG.debug("getFileVersions: " + result);
+    }
+
+    @Test
+    public void testGetPreview() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is String
+        headers.put("CamelBox.extension", PNG_EXTENSION);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxImageRequestObject
+        headers.put("CamelBox.imageRequest", BOX_IMAGE_REQUEST_OBJECT);
+        com.box.boxjavalibv2.dao.BoxPreview result = null;
+        try {
+            result = requestBodyAndHeaders("direct://GETPREVIEW", null, headers);
+        } catch (CamelExecutionException e) {
+            boolean ignore = false;
+            if (e.getCause().getCause() instanceof BoxServerException) {
+                BoxServerException exception = (BoxServerException) e.getCause().getCause();
+                if (PREVIEW_UNAVAILABLE.equals(exception.getMessage())) {
+                    // ignore unavailable preview errors
+                    result = new BoxPreview();
+                    ignore = true;
+                }
+            }
+            if (!ignore) {
+                throw e;
+            }
+        }
+
+        assertNotNull("getPreview result", result);
+        LOG.debug("getPreview: " + result);
+    }
+
+    @Test
+    public void testGetThumbnail() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is String
+        headers.put("CamelBox.extension", PNG_EXTENSION);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxImageRequestObject
+        headers.put("CamelBox.imageRequest", BOX_IMAGE_REQUEST_OBJECT);
+        com.box.boxjavalibv2.dao.BoxThumbnail result = requestBodyAndHeaders("direct://GETTHUMBNAIL", null, headers);
+
+        LOG.debug("getThumbnail: " + result);
+    }
+
+    @Test
+    public void testUpdateFileInfo() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.fileId", testFileId);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxFileRequestObject
+        final BoxFileRequestObject requestObject = BoxFileRequestObject.getRequestObject();
+        requestObject.setTags(new String[] { CAMEL_TEST_TAG });
+        headers.put("CamelBox.fileRequest", requestObject);
+        BoxFile result = requestBodyAndHeaders("direct://UPDATEFILEINFO", null, headers);
+
+        assertNotNull("updateFileInfo result", result);
+        LOG.debug("updateFileInfo: " + result);
+    }
+
+    public BoxFile uploadFile() throws Exception {
+        // using com.box.restclientv2.requestsbase.BoxFileUploadRequestObject message body for single parameter "fileUploadRequest"
+        final BoxFileUploadRequestObject requestObject =
+            BoxFileUploadRequestObject.uploadFileRequestObject("0", CAMEL_TEST_FILE,
+                getClass().getResourceAsStream(TEST_UPLOAD_FILE));
+        final FileTransferListener fileTransferListener = new FileTransferListener();
+        requestObject.setListener(fileTransferListener);
+
+        BoxFile result = requestBody("direct://UPLOADFILE", requestObject);
+
+        assertTransferSuccess(fileTransferListener);
+        assertNotNull("uploadFile result", result);
+        LOG.debug("uploadFile: " + result);
+
+        // wait a moment for the file to show up in subsequent calls
+        Thread.sleep(2000);
+        return result;
+    }
+
+    @Test
+    public void testUploadNewVersion() throws Exception {
+        final BoxFile boxFile = uploadFile();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.fileId", boxFile.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxFileUploadRequestObject
+            final BoxFileUploadRequestObject requestObject =
+                BoxFileUploadRequestObject.uploadNewVersionRequestObject(CAMEL_TEST_FILE,
+                    getClass().getResourceAsStream(TEST_UPLOAD_FILE));
+            final FileTransferListener fileTransferListener = new FileTransferListener();
+            requestObject.setListener(fileTransferListener);
+
+            headers.put("CamelBox.fileUploadRequest", requestObject);
+            BoxFile result = requestBodyAndHeaders("direct://UPLOADNEWVERSION", null, headers);
+
+            assertTransferSuccess(fileTransferListener);
+            assertNotNull("uploadNewVersion result", result);
+            LOG.debug("uploadNewVersion: " + result);
+        } finally {
+            deleteFile(boxFile.getId());
+        }
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for copyFile
+                from("direct://COPYFILE")
+                  .to("box://" + PATH_PREFIX + "/copyFile");
+
+                // test route for createSharedLink
+                from("direct://CREATESHAREDLINK")
+                  .to("box://" + PATH_PREFIX + "/createSharedLink");
+
+                // test route for deleteFile
+                from("direct://DELETEFILE")
+                  .to("box://" + PATH_PREFIX + "/deleteFile");
+
+                // test route for downloadFile
+                from("direct://DOWNLOADFILE")
+                  .to("box://" + PATH_PREFIX + "/downloadFile");
+
+                // test route for downloadFile
+                from("direct://DOWNLOADFILE_1")
+                  .to("box://" + PATH_PREFIX + "/downloadFile");
+
+                // test route for downloadFile
+                from("direct://DOWNLOADFILE_2")
+                  .to("box://" + PATH_PREFIX + "/downloadFile");
+
+                // test route for downloadThumbnail
+                from("direct://DOWNLOADTHUMBNAIL")
+                  .to("box://" + PATH_PREFIX + "/downloadThumbnail");
+
+                // test route for getFile
+                from("direct://GETFILE")
+                  .to("box://" + PATH_PREFIX + "/getFile");
+
+                // test route for getFileComments
+                from("direct://GETFILECOMMENTS")
+                  .to("box://" + PATH_PREFIX + "/getFileComments");
+
+                // test route for getFileVersions
+                from("direct://GETFILEVERSIONS")
+                  .to("box://" + PATH_PREFIX + "/getFileVersions");
+
+                // test route for getPreview
+                from("direct://GETPREVIEW")
+                  .to("box://" + PATH_PREFIX + "/getPreview");
+
+                // test route for getThumbnail
+                from("direct://GETTHUMBNAIL")
+                  .to("box://" + PATH_PREFIX + "/getThumbnail");
+
+                // test route for updateFileInfo
+                from("direct://UPDATEFILEINFO")
+                  .to("box://" + PATH_PREFIX + "/updateFileInfo");
+
+                // test route for uploadFile
+                from("direct://UPLOADFILE")
+                  .to("box://" + PATH_PREFIX + "/uploadFile?inBody=fileUploadRequest");
+
+                // test route for uploadNewVersion
+                from("direct://UPLOADNEWVERSION")
+                  .to("box://" + PATH_PREFIX + "/uploadNewVersion");
+
+            }
+        };
+    }
+
+    private static class FileTransferListener implements IFileTransferListener {
+        private String status;
+        private long bytesTransferred;
+        private IOException exception;
+
+        public String getStatus() {
+            return status;
+        }
+
+        public long getBytesTransferred() {
+            return bytesTransferred;
+        }
+
+        private IOException getException() {
+            return exception;
+        }
+
+        @Override
+        public void onComplete(String status) {
+            LOG.debug("Download completed with status " + status);
+            this.status = status;
+        }
+
+        @Override
+        public void onCanceled() {
+            LOG.debug("Download canceled");
+        }
+
+        @Override
+        public void onProgress(long bytesTransferred) {
+            LOG.debug("Downloaded bytes " + bytesTransferred);
+            this.bytesTransferred = bytesTransferred;
+        }
+
+        @Override
+        public void onIOException(IOException e) {
+            LOG.debug("Download exception " + e.getMessage(), e);
+            this.exception = e;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxFoldersManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxFoldersManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxFoldersManagerIntegrationTest.java
new file mode 100644
index 0000000..fc46361
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxFoldersManagerIntegrationTest.java
@@ -0,0 +1,236 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Camel Api Route test generated by camel-component-util-maven-plugin
+ * Generated on: Tue Jun 24 22:42:08 PDT 2014
+ */
+package org.apache.camel.component.box;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.box.boxjavalibv2.dao.BoxCollection;
+import com.box.boxjavalibv2.dao.BoxFolder;
+import com.box.boxjavalibv2.dao.BoxSharedLinkAccess;
+import com.box.boxjavalibv2.jsonentities.BoxSharedLinkRequestEntity;
+import com.box.boxjavalibv2.requests.requestobjects.BoxFolderDeleteRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxFolderRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxItemCopyRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxSharedLinkRequestObject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiName;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxFoldersManager APIs.
+ */
+public class IBoxFoldersManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxFoldersManagerIntegrationTest.class);
+    private static final String CAMEL_TEST_FOLDER = "CamelTestFolder";
+    private static final String CAMEL_TEST_COPY_FOLDER = IBoxFoldersManagerIntegrationTest.CAMEL_TEST_FOLDER + "_Copy";
+    private static final String PATH_PREFIX = BoxApiName.FOLDERS.getName();
+
+    @Test
+    // also tests create folder, and delete folder
+    public void testCopyFolder() throws Exception {
+        // create a test folder to copy
+        final BoxFolder testFolder = createFolder();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.folderId", testFolder.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxItemCopyRequestObject
+            final BoxItemCopyRequestObject requestObject = BoxItemCopyRequestObject.copyItemRequestObject("0");
+            requestObject.setName(CAMEL_TEST_COPY_FOLDER);
+            headers.put("CamelBox.itemCopyRequest", requestObject);
+
+            BoxFolder result = requestBodyAndHeaders("direct://COPYFOLDER", null, headers);
+            assertNotNull("copyFolder result", result);
+            assertEquals("copyFolder folder name", CAMEL_TEST_COPY_FOLDER, result.getName());
+            LOG.debug("copyFolder: " + result);
+
+            // delete the copy
+            deleteFolder(result.getId());
+        } finally {
+            deleteFolder(testFolder.getId());
+        }
+    }
+
+    private BoxFolder createFolder() {
+        // using com.box.boxjavalibv2.requests.requestobjects.BoxFolderRequestObject message body for single parameter "folderRequest"
+        final BoxFolderRequestObject camelTestFolder = BoxFolderRequestObject.createFolderRequestObject(CAMEL_TEST_FOLDER, "0");
+
+        BoxFolder result = requestBody("direct://CREATEFOLDER", camelTestFolder);
+        assertNotNull("createFolder result", result);
+        assertNotNull("createFolder folder id", result.getId());
+        return result;
+    }
+
+    @Test
+    public void testCreateSharedLink() throws Exception {
+        final BoxFolder testFolder = createFolder();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.folderId", testFolder.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxSharedLinkRequestObject
+            final BoxSharedLinkRequestEntity sharedLink = new BoxSharedLinkRequestEntity(
+                BoxSharedLinkAccess.COLLABORATORS);
+            headers.put("CamelBox.sharedLinkRequest",
+                BoxSharedLinkRequestObject.createSharedLinkRequestObject(sharedLink));
+
+            BoxFolder result = requestBodyAndHeaders("direct://CREATESHAREDLINK", null, headers);
+            assertNotNull("createSharedLink result", result);
+            assertNotNull("createSharedLink result", result.getSharedLink());
+            LOG.debug("createSharedLink: " + result);
+        } finally {
+            deleteFolder(testFolder.getId());
+        }
+    }
+
+    public void deleteFolder(String folderId) throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.folderId", folderId);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxFolderDeleteRequestObject
+        headers.put("CamelBox.folderDeleteRequest", BoxFolderDeleteRequestObject.deleteFolderRequestObject(true));
+
+        requestBodyAndHeaders("direct://DELETEFOLDER", null, headers);
+
+        // wait for the delete to happen
+        Thread.sleep(2000);
+    }
+
+    @Test
+    public void testGetFolder() {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.folderId", "0");
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+        final BoxFolder result = (BoxFolder) requestBodyAndHeaders("direct://GETFOLDER", null, headers);
+        assertNotNull("getFolder result", result);
+        assertEquals("getFolder folder id", "0", result.getId());
+        LOG.debug("getFolder: " + result);
+    }
+
+    @Test
+    public void testGetFolderCollaborations() throws Exception {
+        final BoxFolder testFolder = createFolder();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.folderId", testFolder.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+            headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+            List result = requestBodyAndHeaders("direct://GETFOLDERCOLLABORATIONS", null, headers);
+            assertNotNull("getFolderCollaborations result", result);
+            LOG.debug("getFolderCollaborations: " + result);
+        } finally {
+            deleteFolder(testFolder.getId());
+        }
+    }
+
+    @Test
+    public void testGetFolderItems() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.folderId", "0");
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxPagingRequestObject
+        headers.put("CamelBox.pagingRequest", BOX_PAGING_REQUEST_OBJECT);
+
+        BoxCollection result = requestBodyAndHeaders("direct://GETFOLDERITEMS", null, headers);
+        assertNotNull(result);
+        LOG.debug("getFolderItems: " + result);
+    }
+
+    @Test
+    public void testUpdateFolderInfo() throws Exception {
+        // create test folder
+        final BoxFolder testFolder = createFolder();
+
+        try {
+
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.folderId", testFolder.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxFolderRequestObject
+            final BoxFolderRequestObject folderRequestObject = BoxFolderRequestObject.getRequestObject();
+            folderRequestObject.setTags(new String[] {CAMEL_TEST_TAG} );
+            folderRequestObject.setName(CAMEL_TEST_COPY_FOLDER);
+            headers.put("CamelBox.folderRequest", folderRequestObject);
+
+            BoxFolder result = requestBodyAndHeaders("direct://UPDATEFOLDERINFO", null, headers);
+            assertNotNull("updateFolderInfo result", result);
+            assertEquals("updateFolderInfo folder name", CAMEL_TEST_COPY_FOLDER, result.getName());
+//            assertEquals("updateFolderInfo result", "["+ CAMEL_TEST_TAG + "]", Arrays.toString(result.getTags()));
+            LOG.debug("updateFolderInfo: " + result);
+        } finally {
+            deleteFolder(testFolder.getId());
+        }
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for copyFolder
+                from("direct://COPYFOLDER")
+                  .to("box://" + PATH_PREFIX + "/copyFolder");
+
+                // test route for createFolder
+                from("direct://CREATEFOLDER")
+                  .to("box://" + PATH_PREFIX + "/createFolder?inBody=folderRequest");
+
+                // test route for createSharedLink
+                from("direct://CREATESHAREDLINK")
+                  .to("box://" + PATH_PREFIX + "/createSharedLink");
+
+                // test route for deleteFolder
+                from("direct://DELETEFOLDER")
+                  .to("box://" + PATH_PREFIX + "/deleteFolder");
+
+                // test route for getFolder
+                from("direct://GETFOLDER")
+                  .to("box://" + PATH_PREFIX + "/getFolder");
+
+                // test route for getFolderCollaborations
+                from("direct://GETFOLDERCOLLABORATIONS")
+                  .to("box://" + PATH_PREFIX + "/getFolderCollaborations");
+
+                // test route for getFolderItems
+                from("direct://GETFOLDERITEMS")
+                  .to("box://" + PATH_PREFIX + "/getFolderItems");
+
+                // test route for updateFolderInfo
+                from("direct://UPDATEFOLDERINFO")
+                  .to("box://" + PATH_PREFIX + "/updateFolderInfo");
+
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxGroupsManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxGroupsManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxGroupsManagerIntegrationTest.java
new file mode 100644
index 0000000..14e8ad4
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxGroupsManagerIntegrationTest.java
@@ -0,0 +1,326 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Camel Api Route test generated by camel-component-util-maven-plugin
+ * Generated on: Tue Jun 24 22:42:08 PDT 2014
+ */
+package org.apache.camel.component.box;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import com.box.boxjavalibv2.dao.BoxCollection;
+import com.box.boxjavalibv2.dao.BoxGroup;
+import com.box.boxjavalibv2.dao.BoxGroupMembership;
+import com.box.boxjavalibv2.requests.requestobjects.BoxGroupMembershipRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxGroupRequestObject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiCollection;
+import org.apache.camel.component.box.internal.IBoxGroupsManagerApiMethod;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxGroupsManager APIs.
+ */
+public class IBoxGroupsManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxGroupsManagerIntegrationTest.class);
+    private static final String PATH_PREFIX = BoxApiCollection.getCollection().getApiName(IBoxGroupsManagerApiMethod.class).getName();
+
+    private static final String CAMEL_TEST_GROUP = "CamelTestGroup";
+
+    public BoxGroup createGroup() throws Exception {
+        // using com.box.boxjavalibv2.requests.requestobjects.BoxGroupRequestObject message body for single parameter "groupRequest"
+        final BoxGroupRequestObject requestObject = BoxGroupRequestObject.createGroupRequestObject(CAMEL_TEST_GROUP);
+        BoxGroup result = requestBody("direct://CREATEGROUP", requestObject);
+
+        assertNotNull("createGroup result", result);
+        return result;
+    }
+
+    @Test
+    public void testCreateGroup_1() throws Exception {
+        // using String message body for single parameter "name"
+        BoxGroup result = requestBody("direct://CREATEGROUP_1", CAMEL_TEST_GROUP);
+
+        assertNotNull("createGroup result", result);
+        LOG.debug("createGroup: " + result);
+
+        deleteGroup(result.getId());
+    }
+
+    public BoxGroupMembership createMembership(String groupId) throws Exception {
+        // using com.box.boxjavalibv2.requests.requestobjects.BoxGroupMembershipRequestObject message body for single parameter "groupMembershipRequest"
+        final BoxGroupMembershipRequestObject requestObject =
+            BoxGroupMembershipRequestObject.addMembershipRequestObject(groupId, testUserId, BoxGroupMembership.ROLE_MEMBER);
+        BoxGroupMembership result = requestBody("direct://CREATEMEMBERSHIP", requestObject);
+
+        assertNotNull("createMembership result", result);
+        return result;
+    }
+
+    @Test
+    public void testCreateMembership_1() throws Exception {
+        final BoxGroup group = createGroup();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.groupId", group.getId());
+            // parameter type is String
+            headers.put("CamelBox.userId", testUserId);
+            // parameter type is String
+            headers.put("CamelBox.role", BoxGroupMembership.ROLE_MEMBER);
+
+            BoxGroupMembership result = requestBodyAndHeaders("direct://CREATEMEMBERSHIP_1", null, headers);
+
+            assertNotNull("createMembership result", result);
+            LOG.debug("createMembership: " + result);
+        } finally {
+            deleteGroup(group.getId());
+        }
+    }
+
+    public void deleteGroup(String groupId) throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.groupId", groupId);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+        requestBodyAndHeaders("direct://DELETEGROUP", null, headers);
+    }
+
+    @Test
+    public void testDeleteMembership() throws Exception {
+        final BoxGroup group = createGroup();
+
+        try {
+            final BoxGroupMembership membership = createMembership(group.getId());
+
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.membershipId", membership.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+            headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+            requestBodyAndHeaders("direct://DELETEMEMBERSHIP", null, headers);
+        } finally {
+            deleteGroup(group.getId());
+        }
+    }
+
+    @Test
+    public void testGetAllCollaborations() throws Exception {
+        final BoxGroup group = createGroup();
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.groupId", group.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+            headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+            BoxCollection result = requestBodyAndHeaders("direct://GETALLCOLLABORATIONS", null, headers);
+
+            assertNotNull("getAllCollaborations result", result);
+            LOG.debug("getAllCollaborations: " + result);
+        } finally {
+            deleteGroup(group.getId());
+        }
+    }
+
+    @Test
+    public void testGetAllGroups() throws Exception {
+        // using com.box.restclientv2.requestsbase.BoxDefaultRequestObject message body for single parameter "defaultRequest"
+        BoxCollection result = requestBody("direct://GETALLGROUPS", BOX_DEFAULT_REQUEST_OBJECT);
+
+        assertNotNull("getAllGroups result", result);
+        LOG.debug("getAllGroups: " + result);
+    }
+
+    @Test
+    public void testGetMembership() throws Exception {
+        final BoxGroup group = createGroup();
+
+        try {
+            final BoxGroupMembership membership = createMembership(group.getId());
+
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.membershipId", membership.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+            headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+            BoxGroupMembership result = requestBodyAndHeaders("direct://GETMEMBERSHIP", null, headers);
+
+            assertNotNull("getMembership result", result);
+            LOG.debug("getMembership: " + result);
+        } finally {
+            deleteGroup(group.getId());
+        }
+    }
+
+    @Test
+    public void testGetMemberships() throws Exception {
+        final BoxGroup group = createGroup();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.groupId", group.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+            headers.put("CamelBox.defaultRequest", null);
+
+            BoxCollection result = requestBodyAndHeaders("direct://GETMEMBERSHIPS", null, headers);
+
+            assertNotNull("getMemberships result", result);
+            LOG.debug("getMemberships: " + result);
+        } finally {
+            deleteGroup(group.getId());
+        }
+    }
+
+    @Test
+    public void testUpdateGroup() throws Exception {
+        final BoxGroup group = createGroup();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.groupId", group.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxGroupRequestObject
+            final BoxGroupRequestObject requestObject =
+                BoxGroupRequestObject.updateGroupRequestObject(CAMEL_TEST_GROUP + "_Updated");
+            headers.put("CamelBox.groupRequest", requestObject);
+
+            BoxGroup result = requestBodyAndHeaders("direct://UPDATEGROUP", null, headers);
+
+            assertNotNull("updateGroup result", result);
+            LOG.debug("updateGroup: " + result);
+        } finally {
+            deleteGroup(group.getId());
+        }
+    }
+
+    @Test
+    public void testUpdateMembership() throws Exception {
+        final BoxGroup group = createGroup();
+
+        try {
+            final BoxGroupMembership membership = createMembership(group.getId());
+
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.membershipId", membership.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxGroupMembershipRequestObject
+            final BoxGroupMembershipRequestObject requestObject =
+                BoxGroupMembershipRequestObject.updateMembershipRequestObject(BoxGroupMembership.ROLE_ADMIN);
+            headers.put("CamelBox.groupMembershipRequest", requestObject);
+
+            BoxGroupMembership result = requestBodyAndHeaders("direct://UPDATEMEMBERSHIP", null, headers);
+
+            assertNotNull("updateMembership result", result);
+            LOG.debug("updateMembership: " + result);
+        } finally {
+            deleteGroup(group.getId());
+        }
+    }
+
+    @Test
+    public void testUpdateMembership_1() throws Exception {
+        final BoxGroup group = createGroup();
+
+        try {
+            final BoxGroupMembership membership = createMembership(group.getId());
+
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.membershipId", membership.getId());
+            // parameter type is String
+            headers.put("CamelBox.role", BoxGroupMembership.ROLE_ADMIN);
+
+            BoxGroupMembership result = requestBodyAndHeaders("direct://UPDATEMEMBERSHIP_1", null, headers);
+
+            assertNotNull("updateMembership result", result);
+            LOG.debug("updateMembership: " + result);
+        } finally {
+            deleteGroup(group.getId());
+        }
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for createGroup
+                from("direct://CREATEGROUP")
+                  .to("box://" + PATH_PREFIX + "/createGroup?inBody=groupRequest");
+
+                // test route for createGroup
+                from("direct://CREATEGROUP_1")
+                  .to("box://" + PATH_PREFIX + "/createGroup?inBody=name");
+
+                // test route for createMembership
+                from("direct://CREATEMEMBERSHIP")
+                  .to("box://" + PATH_PREFIX + "/createMembership?inBody=groupMembershipRequest");
+
+                // test route for createMembership
+                from("direct://CREATEMEMBERSHIP_1")
+                  .to("box://" + PATH_PREFIX + "/createMembership");
+
+                // test route for deleteGroup
+                from("direct://DELETEGROUP")
+                  .to("box://" + PATH_PREFIX + "/deleteGroup");
+
+                // test route for deleteMembership
+                from("direct://DELETEMEMBERSHIP")
+                  .to("box://" + PATH_PREFIX + "/deleteMembership");
+
+                // test route for getAllCollaborations
+                from("direct://GETALLCOLLABORATIONS")
+                  .to("box://" + PATH_PREFIX + "/getAllCollaborations");
+
+                // test route for getAllGroups
+                from("direct://GETALLGROUPS")
+                  .to("box://" + PATH_PREFIX + "/getAllGroups?inBody=defaultRequest");
+
+                // test route for getMembership
+                from("direct://GETMEMBERSHIP")
+                  .to("box://" + PATH_PREFIX + "/getMembership");
+
+                // test route for getMemberships
+                from("direct://GETMEMBERSHIPS")
+                  .to("box://" + PATH_PREFIX + "/getMemberships");
+
+                // test route for updateGroup
+                from("direct://UPDATEGROUP")
+                  .to("box://" + PATH_PREFIX + "/updateGroup");
+
+                // test route for updateMembership
+                from("direct://UPDATEMEMBERSHIP")
+                  .to("box://" + PATH_PREFIX + "/updateMembership");
+
+                // test route for updateMembership
+                from("direct://UPDATEMEMBERSHIP_1")
+                  .to("box://" + PATH_PREFIX + "/updateMembership");
+
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxSearchManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxSearchManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxSearchManagerIntegrationTest.java
new file mode 100644
index 0000000..8648787
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxSearchManagerIntegrationTest.java
@@ -0,0 +1,66 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Camel Api Route test generated by camel-component-util-maven-plugin
+ * Generated on: Tue Jun 24 22:42:08 PDT 2014
+ */
+package org.apache.camel.component.box;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiCollection;
+import org.apache.camel.component.box.internal.IBoxSearchManagerApiMethod;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxSearchManager APIs.
+ */
+public class IBoxSearchManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxSearchManagerIntegrationTest.class);
+    private static final String PATH_PREFIX = BoxApiCollection.getCollection().getApiName(IBoxSearchManagerApiMethod.class).getName();
+
+    @Test
+    public void testSearch() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.searchQuery", "Test");
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+        com.box.boxjavalibv2.dao.BoxCollection result = requestBodyAndHeaders("direct://SEARCH", null, headers);
+        assertNotNull("search result", result);
+        LOG.debug("search: " + result);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for search
+                from("direct://SEARCH")
+                  .to("box://" + PATH_PREFIX + "/search");
+
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxSharedItemsManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxSharedItemsManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxSharedItemsManagerIntegrationTest.java
new file mode 100644
index 0000000..a9e0443
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxSharedItemsManagerIntegrationTest.java
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.box;
+
+import com.box.boxjavalibv2.dao.BoxItem;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiCollection;
+import org.apache.camel.component.box.internal.IBoxSharedItemsManagerApiMethod;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxSharedItemsManager APIs.
+ */
+public class IBoxSharedItemsManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxSharedItemsManagerIntegrationTest.class);
+    private static final String PATH_PREFIX = BoxApiCollection.getCollection().getApiName(IBoxSharedItemsManagerApiMethod.class).getName();
+
+    @Test
+    public void testGetSharedItem() throws Exception {
+        // using com.box.restclientv2.requestsbase.BoxDefaultRequestObject message body for single parameter "defaultRequest"
+        BoxItem result = requestBody("direct://GETSHAREDITEM", BOX_DEFAULT_REQUEST_OBJECT);
+
+        assertNotNull("getSharedItem result", result);
+        LOG.debug("getSharedItem: " + result);
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for getSharedItem
+                from("direct://GETSHAREDITEM")
+                  .to("box://" + PATH_PREFIX + "/getSharedItem?inBody=defaultRequest");
+
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxUsersManagerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxUsersManagerIntegrationTest.java b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxUsersManagerIntegrationTest.java
new file mode 100644
index 0000000..a2f473c
--- /dev/null
+++ b/components/camel-box/src/test/java/org/apache/camel/component/box/IBoxUsersManagerIntegrationTest.java
@@ -0,0 +1,280 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Camel Api Route test generated by camel-component-util-maven-plugin
+ * Generated on: Tue Jun 24 22:42:08 PDT 2014
+ */
+package org.apache.camel.component.box;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.box.boxjavalibv2.dao.BoxEmailAlias;
+import com.box.boxjavalibv2.dao.BoxFolder;
+import com.box.boxjavalibv2.dao.BoxUser;
+import com.box.boxjavalibv2.requests.requestobjects.BoxEmailAliasRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxSimpleUserRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxUserDeleteRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxUserRequestObject;
+import com.box.boxjavalibv2.requests.requestobjects.BoxUserUpdateLoginRequestObject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.box.internal.BoxApiCollection;
+import org.apache.camel.component.box.internal.IBoxUsersManagerApiMethod;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Test class for com.box.boxjavalibv2.resourcemanagers.IBoxUsersManager APIs.
+ */
+public class IBoxUsersManagerIntegrationTest extends AbstractBoxTestSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(IBoxUsersManagerIntegrationTest.class);
+    private static final String PATH_PREFIX = BoxApiCollection.getCollection().getApiName(IBoxUsersManagerApiMethod.class).getName();
+    private static final String CAMEL_EMAIL_ALIAS = "camel.test@localhost.com";
+    private static final String UPDATED_EMAIL_ALIAS = "Updated." + CAMEL_EMAIL_ALIAS;
+    private static final String CAMEL_USER_NAME = "Camel User";
+    private static final String CAMEL_JOB_TITLE = "Extreme Camel Rider";
+
+    @Ignore("Causes error Bad Request from SDK")
+    @Test
+    public void testAddEmailAlias() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.userId", testUserId);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxEmailAliasRequestObject
+        final BoxEmailAliasRequestObject requestObject =
+            BoxEmailAliasRequestObject.addEmailAliasRequestObject(CAMEL_EMAIL_ALIAS);
+        headers.put("CamelBox.emailAliasRequest", requestObject);
+
+        BoxEmailAlias result = requestBodyAndHeaders("direct://ADDEMAILALIAS", null, headers);
+
+        assertNotNull("addEmailAlias result", result);
+        LOG.debug("addEmailAlias: " + result);
+
+        deleteEmailAlias();
+    }
+
+    public BoxUser createEnterpriseUser() throws Exception {
+        // using com.box.boxjavalibv2.requests.requestobjects.BoxUserRequestObject message body for single parameter "userRequest"
+        final BoxUserRequestObject enterpriseUserRequestObject =
+            BoxUserRequestObject.createEnterpriseUserRequestObject(CAMEL_EMAIL_ALIAS, CAMEL_USER_NAME);
+        BoxUser result = requestBody("direct://CREATEENTERPRISEUSER", enterpriseUserRequestObject);
+
+        assertNotNull("createEnterpriseUser result", result);
+        return result;
+    }
+
+    public void deleteEmailAlias() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.userId", testUserId);
+        // parameter type is String
+        headers.put("CamelBox.emailId", CAMEL_EMAIL_ALIAS);
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+        requestBodyAndHeaders("direct://DELETEEMAILALIAS", null, headers);
+    }
+
+    public void deleteEnterpriseUser(String userId) throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.userId", userId);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxUserDeleteRequestObject
+        final BoxUserDeleteRequestObject requestObject =
+            BoxUserDeleteRequestObject.deleteEnterpriseUserRequestObject(false, true);
+        headers.put("CamelBox.userDeleteRequest", requestObject);
+
+        requestBodyAndHeaders("direct://DELETEENTERPRISEUSER", null, headers);
+        // pause for user to be deleted completely
+        Thread.sleep(2000);
+    }
+
+    @Test
+    public void testGetAllEnterpriseUser() throws Exception {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+        headers.put("CamelBox.defaultRequest", null);
+        // parameter type is String
+        headers.put("CamelBox.filterTerm", null);
+
+        List result = requestBodyAndHeaders("direct://GETALLENTERPRISEUSER", null, headers);
+
+        assertNotNull("getAllEnterpriseUser result", result);
+        LOG.debug("getAllEnterpriseUser: " + result);
+    }
+
+    @Test
+    public void testGetCurrentUser() throws Exception {
+        // using com.box.restclientv2.requestsbase.BoxDefaultRequestObject message body for single parameter "defaultRequest"
+        BoxUser result = requestBody("direct://GETCURRENTUSER", BOX_DEFAULT_REQUEST_OBJECT);
+
+        assertNotNull("getCurrentUser result", result);
+        LOG.debug("getCurrentUser: " + result);
+    }
+
+    @Test
+    public void testGetEmailAliases() throws Exception {
+        final BoxUser enterpriseUser = createEnterpriseUser();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.userId", enterpriseUser.getId());
+            // parameter type is com.box.restclientv2.requestsbase.BoxDefaultRequestObject
+            headers.put("CamelBox.defaultRequest", BOX_DEFAULT_REQUEST_OBJECT);
+
+            List result = requestBodyAndHeaders("direct://GETEMAILALIASES", null, headers);
+
+            assertNotNull("getEmailAliases result", result);
+            LOG.debug("getEmailAliases: " + result);
+        } finally {
+            deleteEnterpriseUser(enterpriseUser.getId());
+        }
+    }
+
+    @Ignore("Developer account errors out with 'This does not currently support moving content into non-root folders'")
+    @Test
+    public void testMoveFolderToAnotherUser() throws Exception {
+        final BoxUser enterpriseUser = createEnterpriseUser();
+
+        try {
+            final String toUserId = enterpriseUser.getId();
+            moveTestFolder(testUserId, toUserId);
+            moveTestFolder(toUserId, testUserId);
+        } finally {
+            deleteEnterpriseUser(enterpriseUser.getId());
+        }
+    }
+
+    private void moveTestFolder(String fromUserId, String toUserId) {
+        final Map<String, Object> headers = new HashMap<String, Object>();
+        // parameter type is String
+        headers.put("CamelBox.userId", fromUserId);
+        // parameter type is String
+        headers.put("CamelBox.folderId", testFolderId);
+        // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxSimpleUserRequestObject
+        final BoxSimpleUserRequestObject requestObject =
+            BoxSimpleUserRequestObject.moveFolderToAnotherUserRequestEntity(toUserId, false);
+        headers.put("CamelBox.simpleUserRequest", requestObject);
+
+        BoxFolder result = requestBodyAndHeaders("direct://MOVEFOLDERTOANOTHERUSER", null, headers);
+
+        assertNotNull("moveFolderToAnotherUser result", result);
+        LOG.debug("moveFolderToAnotherUser: " + result);
+    }
+
+    @Test
+    public void testUpdateUserInformaiton() throws Exception {
+        final BoxUser enterpriseUser = createEnterpriseUser();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.userId", enterpriseUser.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxUserRequestObject
+            final BoxUserRequestObject requestObject =
+                BoxUserRequestObject.updateUserInfoRequestObject(false);
+            requestObject.setJobTitle(CAMEL_JOB_TITLE);
+            headers.put("CamelBox.userRequest", requestObject);
+
+            BoxUser result = requestBodyAndHeaders("direct://UPDATEUSERINFORMAITON", null, headers);
+
+            assertNotNull("updateUserInformaiton result", result);
+            assertEquals("updateUserInformaiton job title", CAMEL_JOB_TITLE, result.getJobTitle());
+            LOG.debug("updateUserInformaiton: " + result);
+        } finally {
+            deleteEnterpriseUser(enterpriseUser.getId());
+        }
+    }
+
+    @Ignore("Requires multiple confirmed email aliases, do disabled by default")
+    @Test
+    public void testUpdateUserPrimaryLogin() throws Exception {
+        final BoxUser enterpriseUser = createEnterpriseUser();
+
+        try {
+            final Map<String, Object> headers = new HashMap<String, Object>();
+            // parameter type is String
+            headers.put("CamelBox.userId", enterpriseUser.getId());
+            // parameter type is com.box.boxjavalibv2.requests.requestobjects.BoxUserUpdateLoginRequestObject
+            final BoxUserUpdateLoginRequestObject requestObject =
+                BoxUserUpdateLoginRequestObject.updateUserPrimaryLoginRequestObject(UPDATED_EMAIL_ALIAS);
+            headers.put("CamelBox.userUpdateLoginRequest", requestObject);
+
+            BoxUser result = requestBodyAndHeaders("direct://UPDATEUSERPRIMARYLOGIN", null, headers);
+
+            assertNotNull("updateUserPrimaryLogin result", result);
+            assertEquals("updateUserPrimaryLogin primary login", UPDATED_EMAIL_ALIAS, result.getLogin());
+            LOG.debug("updateUserPrimaryLogin: " + result);
+        } finally {
+            deleteEnterpriseUser(enterpriseUser.getId());
+        }
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // test route for addEmailAlias
+                from("direct://ADDEMAILALIAS")
+                  .to("box://" + PATH_PREFIX + "/addEmailAlias");
+
+                // test route for createEnterpriseUser
+                from("direct://CREATEENTERPRISEUSER")
+                  .to("box://" + PATH_PREFIX + "/createEnterpriseUser?inBody=userRequest");
+
+                // test route for deleteEmailAlias
+                from("direct://DELETEEMAILALIAS")
+                  .to("box://" + PATH_PREFIX + "/deleteEmailAlias");
+
+                // test route for deleteEnterpriseUser
+                from("direct://DELETEENTERPRISEUSER")
+                  .to("box://" + PATH_PREFIX + "/deleteEnterpriseUser");
+
+                // test route for getAllEnterpriseUser
+                from("direct://GETALLENTERPRISEUSER")
+                  .to("box://" + PATH_PREFIX + "/getAllEnterpriseUser");
+
+                // test route for getCurrentUser
+                from("direct://GETCURRENTUSER")
+                  .to("box://" + PATH_PREFIX + "/getCurrentUser?inBody=defaultRequest");
+
+                // test route for getEmailAliases
+                from("direct://GETEMAILALIASES")
+                  .to("box://" + PATH_PREFIX + "/getEmailAliases");
+
+                // test route for moveFolderToAnotherUser
+                from("direct://MOVEFOLDERTOANOTHERUSER")
+                  .to("box://" + PATH_PREFIX + "/moveFolderToAnotherUser");
+
+                // test route for updateUserInformaiton
+                from("direct://UPDATEUSERINFORMAITON")
+                  .to("box://" + PATH_PREFIX + "/updateUserInformaiton");
+
+                // test route for updateUserPrimaryLogin
+                from("direct://UPDATEUSERPRIMARYLOGIN")
+                  .to("box://" + PATH_PREFIX + "/updateUserPrimaryLogin");
+
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/resources/log4j.properties b/components/camel-box/src/test/resources/log4j.properties
new file mode 100644
index 0000000..59ebc7b
--- /dev/null
+++ b/components/camel-box/src/test/resources/log4j.properties
@@ -0,0 +1,36 @@
+## ------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ------------------------------------------------------------------------
+
+#
+# The logging properties used for testing.
+#
+log4j.rootLogger=INFO, file
+
+# uncomment the following to enable camel debugging
+#log4j.logger.org.apache.camel.component.salesforce=DEBUG
+
+# CONSOLE appender not used by default
+log4j.appender.out=org.apache.log4j.ConsoleAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+#log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n
+log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+# File appender
+log4j.appender.file=org.apache.log4j.FileAppender
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+log4j.appender.file.file=target/camel-box-test.log

http://git-wip-us.apache.org/repos/asf/camel/blob/a4c8f76c/components/camel-box/src/test/resources/test-options.properties
----------------------------------------------------------------------
diff --git a/components/camel-box/src/test/resources/test-options.properties b/components/camel-box/src/test/resources/test-options.properties
new file mode 100644
index 0000000..966cee4
--- /dev/null
+++ b/components/camel-box/src/test/resources/test-options.properties
@@ -0,0 +1,45 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#####################################
+## Login properties for Box Component
+#####################################
+## User name and password
+## Create a free developer account on http://developers.box.com/ and provide user name password
+userName=
+userPassword=
+## Application client id and secret
+## Create a test Box.com application and provide its clientId and clientSecret
+clientId=
+clientSecret=
+## Shared link and password for shared resources
+## Create a shared link and password for a Test Folder or File
+sharedLink=
+sharedPassword=
+##############
+## Test values
+##############
+## OAuth refresh token to avoid authorizing every time
+## This can either be provided manually or will be generated under target/test-classes/test-options.properties
+refreshToken=
+## Create a test folder and a test file
+## These ids can be obtained by running the test IBoxFoldersManagerIntegrationTest.testGetFolderItems()
+testFolderId=
+testFileId=
+## Test user id
+## This can be obtained by running the test IBoxUsersManagerIntegrationTest.testGetCurrentUser()
+testUserId=