blob: c5f0383165efb87bd36b94e6d224f8b92726e152 [file] [log] [blame]
/*
* 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 java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import com.box.sdk.BoxAPIConnection;
import com.box.sdk.BoxFolder;
import com.box.sdk.BoxItem;
import com.box.sdk.BoxSharedLink;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.box.api.BoxFoldersManager;
import org.apache.camel.component.box.internal.BoxApiCollection;
import org.apache.camel.component.box.internal.BoxFoldersManagerApiMethod;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Test class for {@link BoxFoldersManager}
* APIs.
*/
public class BoxFoldersManagerIntegrationTest extends AbstractBoxTestSupport {
private static final Logger LOG = LoggerFactory.getLogger(BoxFoldersManagerIntegrationTest.class);
private static final String PATH_PREFIX = BoxApiCollection.getCollection()
.getApiName(BoxFoldersManagerApiMethod.class).getName();
private static final String CAMEL_TEST_FOLDER = "CamelTestFolder";
private static final String CAMEL_TEST_FOLDER_DESCRIPTION = "This is a description of CamelTestFolder";
private static final String CAMEL_TEST_COPY_FOLDER = BoxFoldersManagerIntegrationTest.CAMEL_TEST_FOLDER + "_Copy";
private static final String CAMEL_TEST_MOVE_FOLDER = BoxFoldersManagerIntegrationTest.CAMEL_TEST_FOLDER + "_Move";
private static final String CAMEL_TEST_RENAME_FOLDER = BoxFoldersManagerIntegrationTest.CAMEL_TEST_FOLDER
+ "_Rename";
private static final String CAMEL_TEST_ROOT_FOLDER_ID = "0";
private static final String CAMEL_TEST_DESTINATION_FOLDER_ID = "0";
@Test
public void testCreateFolder() throws Exception {
// delete folder created in test setup.
deleteTestFolder();
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.parentFolderId", "0");
// parameter type is String
headers.put("CamelBox.folderName", CAMEL_TEST_FOLDER);
testFolder = requestBodyAndHeaders("direct://CREATEFOLDER", null, headers);
assertNotNull("createFolder result", testFolder);
assertEquals("createFolder folder name", CAMEL_TEST_FOLDER, testFolder.getInfo().getName());
LOG.debug("createFolder: " + testFolder);
}
@Test
public void testCreateFolderByPath() throws Exception {
// delete folder created in test setup.
deleteTestFolder();
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.parentFolderId", "0");
// parameter type is String[]
headers.put("CamelBox.path", new String[] {CAMEL_TEST_FOLDER});
testFolder = requestBodyAndHeaders("direct://CREATEFOLDER", null, headers);
assertNotNull("createFolder result", testFolder);
assertEquals("createFolder folder name", CAMEL_TEST_FOLDER, testFolder.getInfo().getName());
LOG.debug("createFolder: " + testFolder);
}
@Test
public void testDeleteFolder() throws Exception {
// using String message body for single parameter "folderId"
requestBody("direct://DELETEFOLDER", testFolder.getID());
BoxFolder rootFolder = BoxFolder.getRootFolder(getConnection());
Iterable<BoxItem.Info> it = rootFolder.search("^" + CAMEL_TEST_FOLDER + "$");
int searchResults = sizeOfIterable(it);
boolean exists = searchResults > 0 ? true : false;
assertEquals("deleteFolder exists", false, exists);
LOG.debug("deleteFolder: exists? " + exists);
}
@Test
public void testCopyFolder() throws Exception {
com.box.sdk.BoxFolder result = null;
try {
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.folderId", testFolder.getID());
// parameter type is String
headers.put("CamelBox.destinationFolderId", CAMEL_TEST_DESTINATION_FOLDER_ID);
// parameter type is String
headers.put("CamelBox.newName", CAMEL_TEST_COPY_FOLDER);
result = requestBodyAndHeaders("direct://COPYFOLDER", null, headers);
assertNotNull("copyFolder result", result);
assertEquals("copyFolder folder name", CAMEL_TEST_COPY_FOLDER, result.getInfo().getName());
LOG.debug("copyFolder: " + result);
} finally {
if (result != null) {
try {
result.delete(true);
} catch (Throwable t) {
}
}
}
}
@Test
public void testCreateSharedLink() throws Exception {
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.folderId", testFolder.getID());
// parameter type is com.box.sdk.BoxSharedLink.Access
headers.put("CamelBox.access", BoxSharedLink.Access.COLLABORATORS);
// parameter type is java.util.Date
headers.put("CamelBox.unshareDate", null);
// parameter type is com.box.sdk.BoxSharedLink.Permissions
headers.put("CamelBox.permissions", new BoxSharedLink.Permissions());
final com.box.sdk.BoxSharedLink result = requestBodyAndHeaders("direct://CREATEFOLDERSHAREDLINK", null,
headers);
assertNotNull("createFolderSharedLink result", result);
LOG.debug("createFolderSharedLink: " + result);
}
@Test
public void testGetFolder() throws Exception {
// using String[] message body for single parameter "path"
final com.box.sdk.BoxFolder result = requestBody("direct://GETFOLDER", new String[] {CAMEL_TEST_FOLDER});
assertNotNull("getFolder result", result);
assertEquals("getFolder folder id", testFolder.getID(), result.getID());
LOG.debug("getFolder: " + result);
}
@Test
public void testGetFolderInfo() throws Exception {
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.folderId", testFolder.getID());
// parameter type is String[]
headers.put("CamelBox.fields", new String[] {"name"});
final com.box.sdk.BoxFolder.Info result = requestBodyAndHeaders("direct://GETFOLDERINFO", null, headers);
assertNotNull("getFolderInfo result", result);
assertNotNull("getFolderInfo result.getName()", result.getName());
assertEquals("getFolderInfo info name", CAMEL_TEST_FOLDER, result.getName());
LOG.debug("getFolderInfo: " + result);
}
@Test
public void testGetFolderItems() throws Exception {
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.folderId", CAMEL_TEST_ROOT_FOLDER_ID);
// parameter type is Long
headers.put("CamelBox.offset", null);
// parameter type is Long
headers.put("CamelBox.limit", null);
// parameter type is String[]
headers.put("CamelBox.fields", null);
@SuppressWarnings("rawtypes")
final java.util.Collection result = requestBodyAndHeaders("direct://GETFOLDERITEMS", null, headers);
assertNotNull("getFolderItems result", result);
LOG.debug("getFolderItems: " + result);
}
@Test
public void testGetRootFolder() throws Exception {
final com.box.sdk.BoxFolder result = requestBody("direct://GETROOTFOLDER", null);
assertNotNull("getRootFolder result", result);
LOG.debug("getRootFolder: " + result);
}
@Test
public void testMoveFolder() throws Exception {
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.folderId", testFolder.getID());
// parameter type is String
headers.put("CamelBox.destinationFolderId", CAMEL_TEST_DESTINATION_FOLDER_ID);
// parameter type is String
headers.put("CamelBox.newName", CAMEL_TEST_MOVE_FOLDER);
final com.box.sdk.BoxFolder result = requestBodyAndHeaders("direct://MOVEFOLDER", null, headers);
assertNotNull("moveFolder result", result);
assertEquals("moveFolder folder name", CAMEL_TEST_MOVE_FOLDER, result.getInfo().getName());
LOG.debug("moveFolder: " + result);
}
@Test
public void testRenameFolder() throws Exception {
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.folderId", testFolder.getID());
// parameter type is String
headers.put("CamelBox.newFolderName", CAMEL_TEST_RENAME_FOLDER);
final com.box.sdk.BoxFolder result = requestBodyAndHeaders("direct://RENAMEFOLDER", null, headers);
assertNotNull("renameFolder result", result);
assertEquals("moveFolder folder name", CAMEL_TEST_RENAME_FOLDER, result.getInfo().getName());
LOG.debug("renameFolder: " + result);
}
@Test
public void testUpdateInfo() throws Exception {
final BoxFolder.Info testFolderInfo = testFolder.getInfo();
final Map<String, Object> headers = new HashMap<>();
// parameter type is String
headers.put("CamelBox.folderId", testFolder.getID());
// parameter type is com.box.sdk.BoxFolder.Info
testFolderInfo.setDescription(CAMEL_TEST_FOLDER_DESCRIPTION);
headers.put("CamelBox.info", testFolderInfo);
final com.box.sdk.BoxFolder result = requestBodyAndHeaders("direct://UPDATEFOLDERINFO", null, headers);
assertNotNull("updateInfo result", result);
assertEquals("update folder info description", CAMEL_TEST_FOLDER_DESCRIPTION,
result.getInfo().getDescription());
LOG.debug("updateInfo: " + result);
}
@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");
// test route for createFolderSharedLink
from("direct://CREATEFOLDERSHAREDLINK").to("box://" + PATH_PREFIX + "/createFolderSharedLink");
// test route for deleteFolder
from("direct://DELETEFOLDER").to("box://" + PATH_PREFIX + "/deleteFolder?inBody=folderId");
// test route for getFolder
from("direct://GETFOLDER").to("box://" + PATH_PREFIX + "/getFolder?inBody=path");
// test route for getFolderInfo
from("direct://GETFOLDERINFO").to("box://" + PATH_PREFIX + "/getFolderInfo");
// test route for getFolderItems
from("direct://GETFOLDERITEMS").to("box://" + PATH_PREFIX + "/getFolderItems");
// test route for getRootFolder
from("direct://GETROOTFOLDER").to("box://" + PATH_PREFIX + "/getRootFolder");
// test route for moveFolder
from("direct://MOVEFOLDER").to("box://" + PATH_PREFIX + "/moveFolder");
// test route for renameFolder
from("direct://RENAMEFOLDER").to("box://" + PATH_PREFIX + "/renameFolder");
// test route for updateFolderInfo
from("direct://UPDATEFOLDERINFO").to("box://" + PATH_PREFIX + "/updateFolderInfo");
}
};
}
@Before
public void setupTest() throws Exception {
createTestFolder();
}
@After
public void teardownTest() {
deleteTestFolder();
}
public BoxAPIConnection getConnection() {
BoxEndpoint endpoint = (BoxEndpoint) context().getEndpoint("box://" + PATH_PREFIX + "/copyFolder");
return endpoint.getBoxConnection();
}
private void createTestFolder() {
BoxFolder rootFolder = BoxFolder.getRootFolder(getConnection());
testFolder = rootFolder.createFolder(CAMEL_TEST_FOLDER).getResource();
}
private int sizeOfIterable(Iterable<?> it) {
if (it instanceof Collection) {
return ((Collection<?>) it).size();
} else {
int i = 0;
for (@SuppressWarnings("unused")
Object obj : it) {
i++;
}
return i;
}
}
}