package org.alfresco.rest.demo;
import org.alfresco.dataprep.CMISUtil.DocumentType;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.body.SiteMember;
import org.alfresco.rest.exception.JsonToModelConversionException;
import org.alfresco.rest.model.RestCommentModel;
import org.alfresco.rest.requests.RestCommentsApi;
import org.alfresco.rest.requests.RestSitesApi;
import org.alfresco.utility.exception.DataPreparationException;
import org.alfresco.utility.model.FileModel;
import org.alfresco.utility.model.FolderModel;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.UserModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.social.alfresco.api.entities.Role;
import org.springframework.social.alfresco.api.entities.Site.Visibility;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class RestDemoTest extends RestTest
{
@Autowired
RestSitesApi sitesApi;
@Autowired
RestCommentsApi commentsAPI;
private UserModel userModel;
private SiteModel siteModel;
@BeforeClass
public void setUp() throws DataPreparationException
{
userModel = dataUser.getAdminUser();
siteModel = dataSite.usingUser(userModel).createPublicRandomSite();
restClient.authenticateUser(userModel);
sitesApi.useRestClient(restClient);
commentsAPI.useRestClient(restClient);
}
/**
* Data preparation – create site with custom details
* Perform GET sites call using admin user
* Check that created site is included in response
* Perform GET site call, validate that site title, description and visibility are correct
*
* @throws JsonToModelConversionException
* @throws Exception
*/
@Test
public void adminRetrievesCorrectSiteDetails() throws JsonToModelConversionException, Exception
{
sitesApi.getAllSites()
.assertThatResponseHasSite(siteModel)
.getSite(siteModel)
.assertSiteHasVisibility(Visibility.PUBLIC)
.assertSiteHasTitle(siteModel.getTitle())
.assertSiteHasDescription(siteModel.getDescription());
}
/**
* Data preparation – create site and document on server
* POST one comment to file using admin user
* Perform GET comments, check the new one is listed
* Update existing comment using PUT call, check that comment content is updated
* @throws Exception
*/
@Test
public void adminCanPostAndUpdateComments() throws Exception
{
FileModel fileModel = dataContent.usingResource(new FolderModel("Shared"))
.usingUser(userModel)
.createContent(DocumentType.TEXT_PLAIN);
// add new comment
RestCommentModel commentEntry = commentsAPI.addComment(fileModel.getNodeRef(), "This is a new comment");
commentsAPI.getNodeComments(fileModel.getNodeRef())
.assertThatResponseIsNotEmpty()
.assertThatCommentWithIdExists(commentEntry.getId())
.assertThatCommentWithContentExists("This is a new comment");
// update comment
commentEntry = commentsAPI.updateComment(fileModel.getNodeRef(),
commentEntry.getId(),
"This is the updated comment");
commentsAPI.getNodeComments(fileModel.getNodeRef())
.assertThatResponseIsNotEmpty()
.assertThatCommentWithIdExists(commentEntry.getId())
.assertThatCommentWithContentExists("This is the updated comment");
}
/**
* Data preparation – create site and a new user
* As admin, add user as Consumer to site as a new site member using POST call
* Update site member role to Manager using PUT call
* Delete site member using DELETE call
*
* @throws DataPreparationException
* @throws JsonToModelConversionException
*/
@Test
public void adminCanAddAndUpdateSiteMemberDetails() throws Exception
{
UserModel newUser = dataUser.createRandomTestUser();
SiteMember siteMember = new SiteMember(Role.SiteConsumer.toString(),
newUser.getUsername());
// add user as Consumer to site
sitesApi.addPerson(siteModel.getId(), siteMember);
sitesApi.getSiteMembers(siteModel.getId())
.assertThatSiteHasMember(siteMember.getId())
.getSiteMember(siteMember.getId())
.assertSiteMemberHasRole(Role.SiteConsumer);
// update site member to Manager
siteMember.setRole(Role.SiteManager.toString());
sitesApi.updateSiteMember(siteModel.getId(),
newUser.getUsername(), siteMember);
sitesApi.getSiteMembers(siteModel.getId())
.assertThatSiteHasMember(siteMember.getId())
.getSiteMember(siteMember.getId())
.assertSiteMemberHasRole(Role.SiteManager);
// delete site member
sitesApi.deleteSiteMember(siteModel.getId(),
newUser.getUsername());
sitesApi.usingRestWrapper()
.assertStatusCodeIs(HttpStatus.NO_CONTENT.toString());
}
}