package org.alfresco.rest; import java.io.File; import org.alfresco.dataprep.CMISUtil.DocumentType; import org.alfresco.dataprep.ContentService; import org.alfresco.rest.exception.JsonToModelConversionException; import org.alfresco.rest.model.RestCommentModel; import org.alfresco.rest.model.SiteMember; import org.alfresco.utility.data.DataSite; import org.alfresco.utility.data.DataUser; import org.alfresco.utility.exception.DataPreparationException; import org.alfresco.utility.model.SiteModel; import org.alfresco.utility.model.UserModel; import org.apache.chemistry.opencmis.client.api.Document; 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 DataUser dataUser; @Autowired DataSite dataSite; @Autowired ContentService content; @Autowired RestCommentsApi commentsAPI; private UserModel userModel; private SiteModel siteModel; @BeforeClass public void setUp() throws DataPreparationException { userModel = dataUser.getAdminUser(); siteModel = dataSite.createPublicRandomSite(); restClient.authenticateUser(userModel); } /** * 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 sitesTest() throws JsonToModelConversionException, Exception { sitesApi.useRestClient(restClient); sitesApi.getAllSites().assertThatResponseHasSite(siteModel.getId()).getSite(siteModel.getId()) .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 JsonToModelConversionException */ @Test public void commentsTest() throws JsonToModelConversionException { commentsAPI.useRestClient(restClient); File file = new File("textDocument-" + System.currentTimeMillis()); Document document = content.createDocumentInRepository(userModel.getUsername(), userModel.getPassword(), "Shared", DocumentType.TEXT_PLAIN, file, "This is a text file"); // add new comment RestCommentModel commentEntry = commentsAPI.addComment(document.getId(), "This is a new comment"); commentsAPI.getNodeComments(document.getId()).assertThatResponseIsNotEmpty() .assertThatCommentWithIdExists(commentEntry.getId()) .assertThatCommentWithContentExists("This is a new comment"); // update comment commentEntry = commentsAPI.updateComment(document.getId(), commentEntry.getId(), "This is the updated comment"); commentsAPI.getNodeComments(document.getId()).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 siteMembersTest() throws DataPreparationException, JsonToModelConversionException { sitesApi.useRestClient(restClient); 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()); } }