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:
Ancuta Morarasu
2016-05-11 12:41:41 +00:00
parent 4383e6017b
commit 8aacfd1b1f
2 changed files with 119 additions and 0 deletions

View File

@@ -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)

View File

@@ -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>