diff --git a/source/java/org/alfresco/repo/webdav/MoveMethod.java b/source/java/org/alfresco/repo/webdav/MoveMethod.java index 87ebd0560a..71e9371714 100644 --- a/source/java/org/alfresco/repo/webdav/MoveMethod.java +++ b/source/java/org/alfresco/repo/webdav/MoveMethod.java @@ -198,7 +198,7 @@ public class MoveMethod extends HierarchicalMethod } // ALF-7079 fix, if destination exists then its content is updated with source content and source is deleted if // this is a move - if (!sourceFileInfo.isFolder() && destFileInfo != null && !sourceParentNodeRef.equals(destParentNodeRef)) + if (destFileInfo != null && !sourceParentNodeRef.equals(destParentNodeRef)) { copyContentOnly(sourceFileInfo, destFileInfo, fileFolderService); fileFolderService.setHidden(destFileInfo.getNodeRef(), false); diff --git a/source/test-java/org/alfresco/repo/webdav/MoveMethodTest.java b/source/test-java/org/alfresco/repo/webdav/MoveMethodTest.java index f4f7fe0ab2..0135013144 100644 --- a/source/test-java/org/alfresco/repo/webdav/MoveMethodTest.java +++ b/source/test-java/org/alfresco/repo/webdav/MoveMethodTest.java @@ -18,10 +18,6 @@ */ package org.alfresco.repo.webdav; -import static org.junit.Assert.fail; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertEquals; - import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -30,27 +26,15 @@ import java.util.Arrays; import java.util.List; import org.alfresco.model.ContentModel; -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.cmr.repository.NodeService; -import org.alfresco.service.cmr.repository.StoreRef; -import org.alfresco.service.cmr.search.ResultSet; -import org.alfresco.service.cmr.search.SearchService; -import org.alfresco.service.transaction.TransactionService; -import org.alfresco.util.ApplicationContextHelper; -import org.alfresco.util.GUID; -import org.junit.After; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; -import org.springframework.context.ApplicationContext; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; @@ -62,14 +46,12 @@ import org.springframework.mock.web.MockHttpServletResponse; @RunWith(MockitoJUnitRunner.class) public class MoveMethodTest { - private static ApplicationContext ctx; - private MoveMethod moveMethod; private @Mock WebDAVHelper davHelper; private MockHttpServletRequest req; private MockHttpServletResponse resp; private NodeRef rootNode; - private @Mock FileFolderService mockFileFolderService; + private @Mock FileFolderService fileFolderService; private @Mock WebDAVLockService davLockService; private String destPath; private String sourcePath; @@ -77,35 +59,7 @@ public class MoveMethodTest private NodeRef sourceParentNodeRef; private NodeRef destParentNodeRef; private NodeRef sourceNodeRef; - - private SearchService searchService; - private FileFolderService fileFolderService; - private NodeService nodeService; - private TransactionService transactionService; - private WebDAVHelper webDAVHelper; - - private NodeRef companyHomeNodeRef; - - @BeforeClass - public static void setUpBeforeClass() throws Exception - { - ctx = ApplicationContextHelper.getApplicationContext(new String[] - { - "classpath:alfresco/application-context.xml", "classpath:alfresco/web-scripts-application-context.xml", - "classpath:alfresco/remote-api-context.xml" - }); - } - - @After - public void tearDown() - { - moveMethod = null; - req = null; - resp = null; - - AuthenticationUtil.clearCurrentSecurityContext(); - } - + @Before public void setUp() throws Exception { @@ -138,7 +92,7 @@ public class MoveMethodTest sourcePath = "/path/to/source.doc"; moveMethod.m_strPath = sourcePath; - when(davHelper.getFileFolderService()).thenReturn(mockFileFolderService); + when(davHelper.getFileFolderService()).thenReturn(fileFolderService); List sourcePathSplit = Arrays.asList("path", "to", "source.doc"); when(davHelper.splitAllPaths(sourcePath)).thenReturn(sourcePathSplit); @@ -148,10 +102,10 @@ public class MoveMethodTest when(davHelper.splitAllPaths(destPath)).thenReturn(destPathSplit); - when(mockFileFolderService.resolveNamePath(rootNode, sourcePathSplit)).thenReturn(sourceFileInfo); + when(fileFolderService.resolveNamePath(rootNode, sourcePathSplit)).thenReturn(sourceFileInfo); FileInfo destFileInfo = Mockito.mock(FileInfo.class); - when(mockFileFolderService.resolveNamePath(rootNode, destPathSplit)).thenReturn(destFileInfo); + when(fileFolderService.resolveNamePath(rootNode, destPathSplit)).thenReturn(destFileInfo); sourceParentNodeRef = new NodeRef("workspace://SpacesStore/parent"); destParentNodeRef = new NodeRef("workspace://SpacesStore/parent"); @@ -160,29 +114,6 @@ public class MoveMethodTest sourceNodeRef = new NodeRef("workspace://SpacesStore/sourcefile"); when(davHelper.getLockService()).thenReturn(davLockService); - - searchService = ctx.getBean("SearchService", SearchService.class); - fileFolderService = ctx.getBean("FileFolderService", FileFolderService.class); - nodeService = ctx.getBean("NodeService", NodeService.class); - transactionService = ctx.getBean("transactionService", TransactionService.class); - webDAVHelper = ctx.getBean("webDAVHelper", WebDAVHelper.class); - - AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); - - companyHomeNodeRef = transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() - { - @Override - public NodeRef execute() throws Throwable - { - // find "Company Home" - StoreRef storeRef = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SpacesStore"); - ResultSet resultSet = searchService.query(storeRef, SearchService.LANGUAGE_LUCENE, "PATH:\"/app:company_home\""); - NodeRef result = resultSet.getNodeRef(0); - resultSet.close(); - - return result; - } - }); } @@ -191,9 +122,9 @@ public class MoveMethodTest { moveMethod.moveOrCopy(sourceNodeRef, sourceParentNodeRef, destParentNodeRef, "dest.doc"); - verify(mockFileFolderService).rename(sourceNodeRef, "dest.doc"); + verify(fileFolderService).rename(sourceNodeRef, "dest.doc"); verify(davLockService).unlock(sourceNodeRef); - verify(mockFileFolderService, never()).create(destParentNodeRef, "dest.doc", ContentModel.TYPE_CONTENT); + verify(fileFolderService, never()).create(destParentNodeRef, "dest.doc", ContentModel.TYPE_CONTENT); } @@ -207,51 +138,8 @@ public class MoveMethodTest moveMethod.moveOrCopy(sourceNodeRef, sourceParentNodeRef, destParentNodeRef, "dest.doc"); - verify(mockFileFolderService).rename(sourceNodeRef, "dest.doc"); + verify(fileFolderService).rename(sourceNodeRef, "dest.doc"); verify(davLockService).unlock(sourceNodeRef); - verify(mockFileFolderService, never()).create(destParentNodeRef, "dest.doc", ContentModel.TYPE_CONTENT); - } - - @Test - public void testMNT_9662() - { - transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback() - { - @Override - public Object execute() throws Throwable - { - // create test folder with name that doesn't match getDAVHelper().isRenameShuffle() - FileInfo testFileInfo = fileFolderService.create(companyHomeNodeRef, "folder-" + GUID.generate().substring(29), ContentModel.TYPE_FOLDER); - - req = new MockHttpServletRequest(WebDAV.METHOD_MOVE, "/alfresco/webdav/" + testFileInfo.getName()); - resp = new MockHttpServletResponse(); - req.setServerPort(8080); - req.setServletPath("/webdav"); - - moveMethod = new MoveMethod(); - moveMethod.setDetails(req, resp, webDAVHelper, companyHomeNodeRef); - - // generate new name that matches getDAVHelper().isRenameShuffle() - String newName = GUID.generate().substring(28); - req.addHeader(WebDAV.HEADER_DESTINATION, "http://localhost:8080/alfresco/webdav/" + newName); - - try - { - moveMethod.execute(); - - assertTrue(nodeService.exists(testFileInfo.getNodeRef())); - assertEquals(newName, nodeService.getProperty(testFileInfo.getNodeRef(), ContentModel.PROP_NAME)); - } - catch (WebDAVServerException e) - { - fail("Fail to rename folder: " + (e.getCause() != null ? e.getCause().getMessage() : e.getMessage())); - } - finally - { - nodeService.deleteNode(testFileInfo.getNodeRef()); - } - return null; - } - }); + verify(fileFolderService, never()).create(destParentNodeRef, "dest.doc", ContentModel.TYPE_CONTENT); } }