mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD (5.2) to 5.2.N (5.2.1)
126636 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 126201 jkaabimofrad: SFS-558: Added test for the move/copy between sites. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126987 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -47,8 +47,10 @@ import org.alfresco.rest.api.tests.client.data.Document;
|
|||||||
import org.alfresco.rest.api.tests.client.data.Folder;
|
import org.alfresco.rest.api.tests.client.data.Folder;
|
||||||
import org.alfresco.rest.api.tests.client.data.Node;
|
import org.alfresco.rest.api.tests.client.data.Node;
|
||||||
import org.alfresco.rest.api.tests.client.data.Rendition;
|
import org.alfresco.rest.api.tests.client.data.Rendition;
|
||||||
|
import org.alfresco.rest.api.tests.client.data.SiteRole;
|
||||||
import org.alfresco.rest.api.tests.util.MultiPartBuilder;
|
import org.alfresco.rest.api.tests.util.MultiPartBuilder;
|
||||||
import org.alfresco.rest.api.tests.util.RestApiUtil;
|
import org.alfresco.rest.api.tests.util.RestApiUtil;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.site.SiteVisibility;
|
import org.alfresco.service.cmr.site.SiteVisibility;
|
||||||
import org.alfresco.util.TempFileProvider;
|
import org.alfresco.util.TempFileProvider;
|
||||||
import org.springframework.util.ResourceUtils;
|
import org.springframework.util.ResourceUtils;
|
||||||
@@ -308,6 +310,31 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi
|
|||||||
return site;
|
return site;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void inviteToSite(final TestSite testSite, final TestPerson invitee, final SiteRole siteRole)
|
||||||
|
{
|
||||||
|
TenantUtil.runAsTenant(new TenantUtil.TenantRunAsWork<Void>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public Void doWork() throws Exception
|
||||||
|
{
|
||||||
|
testSite.inviteToSite(invitee.getId(), siteRole);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}, testSite.getNetworkId());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected NodeRef getSiteDocLib(final TestSite testSite)
|
||||||
|
{
|
||||||
|
return TenantUtil.runAsTenant(new TenantUtil.TenantRunAsWork<NodeRef>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public NodeRef doWork() throws Exception
|
||||||
|
{
|
||||||
|
return testSite.getContainerNodeRef(("documentLibrary"));
|
||||||
|
}
|
||||||
|
}, testSite.getNetworkId());
|
||||||
|
}
|
||||||
|
|
||||||
protected void checkStatus(int expectedStatus, int actualStatus)
|
protected void checkStatus(int expectedStatus, int actualStatus)
|
||||||
{
|
{
|
||||||
if (expectedStatus > 0 && expectedStatus != actualStatus)
|
if (expectedStatus > 0 && expectedStatus != actualStatus)
|
||||||
|
@@ -1535,6 +1535,98 @@ public class NodeApiTest extends AbstractBaseApiTest
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests move and copy folder between sites.
|
||||||
|
*
|
||||||
|
* <p>POST:</p>
|
||||||
|
* {@literal <host>:<port>/alfresco/api/<networkId>/public/alfresco/versions/1/nodes/<nodeId>/move}
|
||||||
|
*
|
||||||
|
* <p>POST:</p>
|
||||||
|
* {@literal <host>:<port>/alfresco/api/<networkId>/public/alfresco/versions/1/nodes/<nodeId>/copy}
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testMoveCopyBetweenSites() throws Exception
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Precondition - create two sites, invite users, create folders
|
||||||
|
*/
|
||||||
|
AuthenticationUtil.setFullyAuthenticatedUser(userOneN1.getId());
|
||||||
|
// userOneN1 creates a public site and adds userTwoN1 as a site collaborator
|
||||||
|
TestSite user1Site = createSite(userOneN1.getDefaultAccount(), userOneN1, SiteVisibility.PUBLIC);
|
||||||
|
inviteToSite(user1Site, userTwoN1, SiteRole.SiteCollaborator);
|
||||||
|
|
||||||
|
// Get user1Site's docLib node id
|
||||||
|
final String user1SiteDocLibNodeId = getSiteDocLib(user1Site).getId();
|
||||||
|
|
||||||
|
// userOneN1 creates a folder in the docLib of his site (user1Site)
|
||||||
|
String user1Folder = "folder" + System.currentTimeMillis() + "_user1";
|
||||||
|
String user1FolderNodeId = createFolder(userOneN1.getId(), user1SiteDocLibNodeId, user1Folder, null).getId();
|
||||||
|
|
||||||
|
AuthenticationUtil.setFullyAuthenticatedUser(userTwoN1.getId());
|
||||||
|
// userTwoN1 creates a public site and adds userOneN1 as a site collaborator
|
||||||
|
TestSite user2Site = createSite(userTwoN1.getDefaultAccount(), userTwoN1, SiteVisibility.PUBLIC);
|
||||||
|
inviteToSite(user2Site, userOneN1, SiteRole.SiteCollaborator);
|
||||||
|
|
||||||
|
// Get user2Site's docLib node id
|
||||||
|
final String user2SiteDocLibNodeId = getSiteDocLib(user2Site).getId();
|
||||||
|
|
||||||
|
// userTwoN1 creates 2 folders within the docLib of the user1Site
|
||||||
|
String user2Folder1 = "folder1" + System.currentTimeMillis() + "_user2";
|
||||||
|
String user2FolderNodeId = createFolder(userTwoN1.getId(), user1SiteDocLibNodeId, user2Folder1, null).getId();
|
||||||
|
|
||||||
|
String user2Folder2 = "folder2" + System.currentTimeMillis() + "_user2";
|
||||||
|
String user2Folder2NodeId = createFolder(userTwoN1.getId(), user1SiteDocLibNodeId, user2Folder2, null).getId();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test move between sites
|
||||||
|
*/
|
||||||
|
// userOneN1 moves the folder created by userTwoN1 to the user2Site's docLib
|
||||||
|
AuthenticationUtil.setFullyAuthenticatedUser(userOneN1.getId());
|
||||||
|
NodeTarget target = new NodeTarget();
|
||||||
|
target.setTargetParentId(user2SiteDocLibNodeId);
|
||||||
|
HttpResponse response = post("nodes/" + user2FolderNodeId + "/move", userOneN1.getId(), toJsonAsStringNonNull(target), null, 200);
|
||||||
|
Folder moveFolderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class);
|
||||||
|
assertEquals(user2SiteDocLibNodeId, moveFolderResp.getParentId());
|
||||||
|
|
||||||
|
// userOneN1 tries to undo the move (moves back the folder to its original place)
|
||||||
|
// as userOneN1 is just a SiteCollaborator in the user2Site, he can't move the folder which he doesn't own - ACL access permission.
|
||||||
|
target = new NodeTarget();
|
||||||
|
target.setTargetParentId(user1SiteDocLibNodeId);
|
||||||
|
post("nodes/" + user2FolderNodeId + "/move", userOneN1.getId(), toJsonAsStringNonNull(target), null, 403);
|
||||||
|
|
||||||
|
// userOneN1 moves the folder created by himself to the docLib of the user2Site
|
||||||
|
target = new NodeTarget();
|
||||||
|
target.setTargetParentId(user2SiteDocLibNodeId);
|
||||||
|
response = post("nodes/" + user1FolderNodeId + "/move", userOneN1.getId(), toJsonAsStringNonNull(target), null, 200);
|
||||||
|
moveFolderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class);
|
||||||
|
assertEquals(user2SiteDocLibNodeId, moveFolderResp.getParentId());
|
||||||
|
|
||||||
|
// userOneN1 tries to undo the move (moves back the folder to its original place)
|
||||||
|
// The undo should be successful as userOneN1 owns the folder
|
||||||
|
target = new NodeTarget();
|
||||||
|
target.setTargetParentId(user1SiteDocLibNodeId);
|
||||||
|
response = post("nodes/" + user1FolderNodeId + "/move", userOneN1.getId(), toJsonAsStringNonNull(target), null, 200);
|
||||||
|
moveFolderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class);
|
||||||
|
assertEquals(user1SiteDocLibNodeId, moveFolderResp.getParentId());
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test copy between sites
|
||||||
|
*/
|
||||||
|
// userOneN1 copies the folder created by userTwoN1 to the user2Site's docLib
|
||||||
|
target = new NodeTarget();
|
||||||
|
target.setTargetParentId(user2SiteDocLibNodeId);
|
||||||
|
response = post("nodes/" + user2Folder2NodeId + "/copy", userOneN1.getId(), toJsonAsStringNonNull(target), null, 201);
|
||||||
|
Folder copyFolderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class);
|
||||||
|
assertEquals(user2SiteDocLibNodeId, copyFolderResp.getParentId());
|
||||||
|
|
||||||
|
// userOneN1 tries to undo the copy (hard deletes the created copy)
|
||||||
|
Map<String, String> params = Collections.singletonMap("permanent", "true");
|
||||||
|
delete("nodes", userOneN1.getId(), copyFolderResp.getId(), params, 204);
|
||||||
|
// Check it's deleted
|
||||||
|
getSingle("nodes", userOneN1.getId(), copyFolderResp.getId(), 404);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests create folder.
|
* Tests create folder.
|
||||||
* <p>POST:</p>
|
* <p>POST:</p>
|
||||||
|
Reference in New Issue
Block a user