/* * Copyright (C) 2005-2014 Alfresco Software Limited. * * This file is part of Alfresco * * Alfresco is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Alfresco is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see <http://www.gnu.org/licenses/>. */ package org.alfresco.bm.dataload.rm.fileplan; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.UUID; import org.alfresco.bm.cm.FileFolderService; import org.alfresco.bm.cm.FolderData; import org.alfresco.bm.dataload.LoadFilePlan; import org.alfresco.bm.dataload.RMEventConstants; import org.alfresco.bm.event.Event; import org.alfresco.bm.event.EventResult; import org.alfresco.bm.restapi.RestAPIFactory; import org.alfresco.bm.session.SessionService; import org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponent; import org.alfresco.rest.rm.community.requests.FilePlanComponentAPI; import org.apache.commons.lang3.time.StopWatch; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import com.mongodb.DBObject; /** * Unit tests for LoadFilePlan * * @author Silviu Dinuta * @since 1.0 */ @RunWith(MockitoJUnitRunner.class) public class LoadFilePlanUnitTest implements RMEventConstants { @Mock private SessionService mockedSessionService; @Mock private FileFolderService mockedFileFolderService; @Mock private RestAPIFactory mockedRestAPIFactory; @Mock private FilePlanComponentAPI mockedFilePlanComponentAPI; @InjectMocks private LoadFilePlan loadFilePlan; @Test(expected=IllegalStateException.class) public void testWithNullEvent() throws Exception { loadFilePlan.processEvent(null, new StopWatch()); } @Test(expected=IllegalStateException.class) public void testWithNullData() throws Exception { Event mockedEvent = mock(Event.class); when(mockedEvent.getData()).thenReturn(null); loadFilePlan.processEvent(mockedEvent, new StopWatch()); } @Test public void testWithNullContext() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn(null); when(mockedEvent.getData()).thenReturn(mockedData); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); assertEquals(false, result.isSuccess()); assertEquals("Request data not complete for folder loading: " + mockedData, result.getData()); assertEquals(0, result.getNextEvents().size()); } @Test public void testWithNullPath() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn("someContext"); when(mockedData.get(FIELD_PATH)).thenReturn(null); when(mockedEvent.getData()).thenReturn(mockedData); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); assertEquals(false, result.isSuccess()); assertEquals("Request data not complete for folder loading: " + mockedData, result.getData()); assertEquals(0, result.getNextEvents().size()); } @Test public void testWithNullRootCategoriesToCreate() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn("someContext"); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(null); when(mockedEvent.getData()).thenReturn(mockedData); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); assertEquals(false, result.isSuccess()); assertEquals("Request data not complete for folder loading: " + mockedData, result.getData()); assertEquals(0, result.getNextEvents().size()); } @Test public void testWithNullChildCategoriesToCreate() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn("someContext"); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(null); when(mockedEvent.getData()).thenReturn(mockedData); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); assertEquals(false, result.isSuccess()); assertEquals("Request data not complete for folder loading: " + mockedData, result.getData()); assertEquals(0, result.getNextEvents().size()); } @Test public void testWithNullChildRecordFoldersToCreate() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn("someContext"); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(null); when(mockedEvent.getData()).thenReturn(mockedData); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); assertEquals(false, result.isSuccess()); assertEquals("Request data not complete for folder loading: " + mockedData, result.getData()); assertEquals(0, result.getNextEvents().size()); } @Test public void testWithNullSiteManager() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn("someContext"); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn(null); when(mockedEvent.getData()).thenReturn(mockedData); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); assertEquals(false, result.isSuccess()); assertEquals("Request data not complete for folder loading: " + mockedData, result.getData()); assertEquals(0, result.getNextEvents().size()); } @Test public void testWithBlankSiteManager() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn("someContext"); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn(""); when(mockedEvent.getData()).thenReturn(mockedData); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); assertEquals(false, result.isSuccess()); assertEquals("Request data not complete for folder loading: " + mockedData, result.getData()); assertEquals(0, result.getNextEvents().size()); } @Test(expected=IllegalStateException.class) public void testInexistentFolderForContextAndPath() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn("someContext"); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn("aUser"); when(mockedEvent.getData()).thenReturn(mockedData); when(mockedFileFolderService.getFolder("someContext", "/aPath")).thenReturn(null); loadFilePlan.setFileFolderService(mockedFileFolderService); loadFilePlan.processEvent(mockedEvent, new StopWatch()); } @Test public void testWithNullSessionID() throws Exception { Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn("someContext"); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(0)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn("aUser"); when(mockedEvent.getData()).thenReturn(mockedData); FolderData mockedFolder = mock(FolderData.class); when(mockedFileFolderService.getFolder("someContext", "/aPath")).thenReturn(mockedFolder); loadFilePlan.setFileFolderService(mockedFileFolderService); when(mockedEvent.getSessionId()).thenReturn(null); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); assertEquals(false, result.isSuccess()); assertEquals("Load scheduling should create a session for each loader.", result.getData()); assertEquals(0, result.getNextEvents().size()); } @Test public void testLoadNothingToCreate() throws Exception { int rootCategoriesNumber = 0; int childCategoriesNumber = 0; int childRecordFolderNumber = 0; Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn(""); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(rootCategoriesNumber)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(childCategoriesNumber)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(childRecordFolderNumber)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn("aUser"); when(mockedEvent.getData()).thenReturn(mockedData); FolderData mockedFolder = mock(FolderData.class); when(mockedFolder.getId()).thenReturn("folderId"); when(mockedFolder.getPath()).thenReturn("/aPath"); when(mockedFileFolderService.getFolder("", "/aPath")).thenReturn(mockedFolder); loadFilePlan.setEventNameRecordCategoryLoaded("recordCategoriesLoaded"); loadFilePlan.setFileFolderService(mockedFileFolderService); when(mockedEvent.getSessionId()).thenReturn("someId"); when(mockedRestAPIFactory.getFilePlanComponentAPI("aUser")).thenReturn(mockedFilePlanComponentAPI); FilePlanComponent mockedFilePlanComponent = mock(FilePlanComponent.class); when(mockedFilePlanComponent.getId()).thenReturn("folderId"); when(mockedFilePlanComponentAPI.getFilePlanComponent("folderId")).thenReturn(mockedFilePlanComponent); FilePlanComponent mockedChildFilePlanComponent = mock(FilePlanComponent.class); when(mockedChildFilePlanComponent.getId()).thenReturn(UUID.randomUUID().toString()); when(mockedFilePlanComponentAPI.createFilePlanComponent(any(FilePlanComponent.class), eq("folderId"))).thenReturn(mockedChildFilePlanComponent); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); verify(mockedFileFolderService, never()).createNewFolder(any(String.class), any(String.class), any(String.class)); verify(mockedFileFolderService, never()).incrementFolderCount(any(String.class), any(String.class), any(Long.class)); assertEquals(true, result.isSuccess()); DBObject data = (DBObject) result.getData(); assertEquals("Created " + rootCategoriesNumber + " root categories, " + childCategoriesNumber + " categories and " + childRecordFolderNumber + " record folders.", data.get("msg")); assertEquals("/aPath", data.get(FIELD_PATH)); assertEquals("aUser", data.get("username")); assertEquals(1, result.getNextEvents().size()); } @Test public void testLoadRootCategoriesWithExceptionOnRestApi() throws Exception { int rootCategoriesNumber = 3; int childCategoriesNumber = 0; int childRecordFolderNumber = 0; Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn(""); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(rootCategoriesNumber)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(childCategoriesNumber)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(childRecordFolderNumber)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn("aUser"); when(mockedEvent.getData()).thenReturn(mockedData); FolderData mockedFolder = mock(FolderData.class); when(mockedFolder.getId()).thenReturn("folderId"); when(mockedFolder.getPath()).thenReturn("/aPath"); when(mockedFileFolderService.getFolder("", "/aPath")).thenReturn(mockedFolder); loadFilePlan.setEventNameRecordCategoryLoaded("recordCategoriesLoaded"); loadFilePlan.setFileFolderService(mockedFileFolderService); when(mockedEvent.getSessionId()).thenReturn("someId"); when(mockedRestAPIFactory.getFilePlanComponentAPI("aUser")).thenReturn(mockedFilePlanComponentAPI); FilePlanComponent mockedFilePlanComponent = mock(FilePlanComponent.class); when(mockedFilePlanComponent.getId()).thenReturn("folderId"); when(mockedFilePlanComponentAPI.getFilePlanComponent("folderId")).thenReturn(mockedFilePlanComponent); Mockito.doThrow(new Exception("someError")).when(mockedFilePlanComponentAPI).createFilePlanComponent(any(FilePlanComponent.class), any(String.class)); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); verify(mockedFileFolderService, never()).createNewFolder(any(String.class), any(String.class), any(String.class)); verify(mockedFileFolderService, never()).incrementFolderCount(any(String.class), any(String.class), any(Long.class)); assertEquals(false, result.isSuccess()); DBObject data = (DBObject) result.getData(); assertNotNull(data.get("error")); assertEquals("aUser", data.get("username")); assertEquals(mockedFolder, data.get("folder")); assertNotNull(data.get("stack")); assertEquals(0, result.getNextEvents().size()); } @Test public void testLoadRootCategories() throws Exception { int rootCategoriesNumber = 3; int childCategoriesNumber = 0; int childRecordFolderNumber = 0; Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn(""); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(rootCategoriesNumber)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(childCategoriesNumber)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(childRecordFolderNumber)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn("aUser"); when(mockedEvent.getData()).thenReturn(mockedData); FolderData mockedFolder = mock(FolderData.class); when(mockedFolder.getId()).thenReturn("folderId"); when(mockedFolder.getPath()).thenReturn("/aPath"); when(mockedFileFolderService.getFolder("", "/aPath")).thenReturn(mockedFolder); loadFilePlan.setEventNameRecordCategoryLoaded("recordCategoriesLoaded"); loadFilePlan.setFileFolderService(mockedFileFolderService); when(mockedEvent.getSessionId()).thenReturn("someId"); when(mockedRestAPIFactory.getFilePlanComponentAPI("aUser")).thenReturn(mockedFilePlanComponentAPI); FilePlanComponent mockedFilePlanComponent = mock(FilePlanComponent.class); when(mockedFilePlanComponent.getId()).thenReturn("folderId"); when(mockedFilePlanComponentAPI.getFilePlanComponent("folderId")).thenReturn(mockedFilePlanComponent); FilePlanComponent mockedChildFilePlanComponent = mock(FilePlanComponent.class); when(mockedChildFilePlanComponent.getId()).thenReturn(UUID.randomUUID().toString()); when(mockedFilePlanComponentAPI.createFilePlanComponent(any(FilePlanComponent.class), eq("folderId"))).thenReturn(mockedChildFilePlanComponent); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); verify(mockedFileFolderService, times(rootCategoriesNumber)).createNewFolder(any(String.class), any(String.class), any(String.class)); verify(mockedFileFolderService, times(1)).incrementFolderCount(any(String.class), any(String.class), any(Long.class)); assertEquals(true, result.isSuccess()); DBObject data = (DBObject) result.getData(); assertEquals("Created " + rootCategoriesNumber + " root categories, " + childCategoriesNumber + " categories and " + childRecordFolderNumber + " record folders.", data.get("msg")); assertEquals("/aPath", data.get(FIELD_PATH)); assertEquals("aUser", data.get("username")); assertEquals(1, result.getNextEvents().size()); } @Test public void testLoadChildrenCategories() throws Exception { int rootCategoriesNumber = 0; int childCategoriesNumber = 4; int childRecordFolderNumber = 0; Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn(""); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(rootCategoriesNumber)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(childCategoriesNumber)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(childRecordFolderNumber)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn("aUser"); when(mockedEvent.getData()).thenReturn(mockedData); FolderData mockedFolder = mock(FolderData.class); when(mockedFolder.getId()).thenReturn("folderId"); when(mockedFolder.getPath()).thenReturn("/aPath"); when(mockedFileFolderService.getFolder("", "/aPath")).thenReturn(mockedFolder); loadFilePlan.setEventNameRecordCategoryLoaded("recordCategoriesLoaded"); loadFilePlan.setFileFolderService(mockedFileFolderService); when(mockedEvent.getSessionId()).thenReturn("someId"); when(mockedRestAPIFactory.getFilePlanComponentAPI("aUser")).thenReturn(mockedFilePlanComponentAPI); FilePlanComponent mockedFilePlanComponent = mock(FilePlanComponent.class); when(mockedFilePlanComponent.getId()).thenReturn("folderId"); when(mockedFilePlanComponentAPI.getFilePlanComponent("folderId")).thenReturn(mockedFilePlanComponent); FilePlanComponent mockedChildFilePlanComponent = mock(FilePlanComponent.class); when(mockedChildFilePlanComponent.getId()).thenReturn(UUID.randomUUID().toString()); when(mockedFilePlanComponentAPI.createFilePlanComponent(any(FilePlanComponent.class), eq("folderId"))).thenReturn(mockedChildFilePlanComponent); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); verify(mockedFileFolderService, times(childCategoriesNumber)).createNewFolder(any(String.class), any(String.class), any(String.class)); verify(mockedFileFolderService, times(1)).incrementFolderCount(any(String.class), any(String.class), any(Long.class)); assertEquals(true, result.isSuccess()); DBObject data = (DBObject) result.getData(); assertEquals("Created " + rootCategoriesNumber + " root categories, " + childCategoriesNumber + " categories and " + childRecordFolderNumber + " record folders.", data.get("msg")); assertEquals("/aPath", data.get(FIELD_PATH)); assertEquals("aUser", data.get("username")); assertEquals(1, result.getNextEvents().size()); } @Test public void testLoadChildrenRecordFolders() throws Exception { int rootCategoriesNumber = 0; int childCategoriesNumber = 0; int childRecordFolderNumber = 5; Event mockedEvent = mock(Event.class); DBObject mockedData = mock(DBObject.class); when(mockedData.get(FIELD_CONTEXT)).thenReturn(""); when(mockedData.get(FIELD_PATH)).thenReturn("/aPath"); when(mockedData.get(FIELD_ROOT_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(rootCategoriesNumber)); when(mockedData.get(FIELD_CATEGORIES_TO_CREATE)).thenReturn(Integer.valueOf(childCategoriesNumber)); when(mockedData.get(FIELD_FOLDERS_TO_CREATE)).thenReturn(Integer.valueOf(childRecordFolderNumber)); when(mockedData.get(FIELD_SITE_MANAGER)).thenReturn("aUser"); when(mockedEvent.getData()).thenReturn(mockedData); FolderData mockedFolder = mock(FolderData.class); when(mockedFolder.getId()).thenReturn("folderId"); when(mockedFolder.getPath()).thenReturn("/aPath"); when(mockedFileFolderService.getFolder("", "/aPath")).thenReturn(mockedFolder); loadFilePlan.setEventNameRecordCategoryLoaded("recordCategoriesLoaded"); loadFilePlan.setFileFolderService(mockedFileFolderService); when(mockedEvent.getSessionId()).thenReturn("someId"); when(mockedRestAPIFactory.getFilePlanComponentAPI("aUser")).thenReturn(mockedFilePlanComponentAPI); FilePlanComponent mockedFilePlanComponent = mock(FilePlanComponent.class); when(mockedFilePlanComponent.getId()).thenReturn("folderId"); when(mockedFilePlanComponentAPI.getFilePlanComponent("folderId")).thenReturn(mockedFilePlanComponent); FilePlanComponent mockedChildFilePlanComponent = mock(FilePlanComponent.class); when(mockedChildFilePlanComponent.getId()).thenReturn(UUID.randomUUID().toString()); when(mockedFilePlanComponentAPI.createFilePlanComponent(any(FilePlanComponent.class), eq("folderId"))).thenReturn(mockedChildFilePlanComponent); EventResult result = loadFilePlan.processEvent(mockedEvent, new StopWatch()); verify(mockedFileFolderService, times(childRecordFolderNumber)).createNewFolder(any(String.class), any(String.class), any(String.class)); verify(mockedFileFolderService, times(1)).incrementFolderCount(any(String.class), any(String.class), any(Long.class)); assertEquals(true, result.isSuccess()); DBObject data = (DBObject) result.getData(); assertEquals("Created " + rootCategoriesNumber + " root categories, " + childCategoriesNumber + " categories and " + childRecordFolderNumber + " record folders.", data.get("msg")); assertEquals("/aPath", data.get(FIELD_PATH)); assertEquals("aUser", data.get("username")); assertEquals(1, result.getNextEvents().size()); } }