Merge branch 'master' into TAS-2048

This commit is contained in:
Valentin Popa
2016-12-08 17:12:51 +02:00
15 changed files with 822 additions and 155 deletions
@@ -0,0 +1,29 @@
package org.alfresco.rest.auth;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.exception.JsonToModelConversionException;
import org.alfresco.rest.model.RestTicketBodyModel;
import org.alfresco.rest.model.RestTicketModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.http.HttpStatus;
import org.testng.annotations.Test;
public class AuthTests extends RestTest
{
@TestRail(section = { TestGroup.REST_API }, executionType = ExecutionType.SANITY, description = "Verify TICKET is returned on admin user")
@Test
public void adminShouldGetTicketBody() throws JsonToModelConversionException, Exception
{
RestTicketBodyModel ticketBody = new RestTicketBodyModel();
ticketBody.setUserId("admin");
ticketBody.setPassword("admin");
RestTicketModel ticketReturned = restClient.withAuthAPI().createTicket(ticketBody);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
ticketReturned.assertThat().field("id").contains("TICKET_");
}
}
@@ -4,10 +4,10 @@ import org.alfresco.dataprep.CMISUtil.DocumentType;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.exception.JsonToModelConversionException;
import org.alfresco.rest.model.RestCommentModelsCollection;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.data.DataUser.ListUserWithRoles;
import org.alfresco.utility.model.*;
import org.alfresco.utility.report.Bug;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.http.HttpStatus;
@@ -90,14 +90,13 @@ public class GetCommentsSanityTests extends RestTest
@TestRail(section={TestGroup.REST_API, TestGroup.SANITY}, executionType= ExecutionType.SANITY,
description= "Verify Manager user gets status code 401 if authentication call fails")
@Bug(id="MNT-16904")
public void managerIsNotAbleToRetrieveCommentIfAuthenticationFails() throws JsonToModelConversionException, Exception
{
UserModel nonexistentModel = new UserModel("nonexistentUser", "nonexistentPassword");
restClient.authenticateUser(nonexistentModel).withCoreAPI()
.usingResource(document).getNodeComments();
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED)
.assertLastException().hasName(StatusModel.UNAUTHORIZED);
.assertLastError().containsSummary(RestErrorModel.AUTHENTICATION_FAILED);
}
@TestRail(section={TestGroup.REST_API, TestGroup.SANITY}, executionType= ExecutionType.SANITY,
@@ -1,80 +0,0 @@
//package org.alfresco.rest.demo;
//
//import org.alfresco.rest.RestTest;
//import org.alfresco.rest.exception.JsonToModelConversionException;
//import org.alfresco.rest.requests.RestSitesApi;
//import org.alfresco.utility.exception.DataPreparationException;
//import org.alfresco.utility.exception.TestConfigurationException;
//import org.alfresco.utility.model.SiteModel;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.social.alfresco.api.entities.Site.Visibility;
//import org.testng.annotations.BeforeClass;
//import org.testng.annotations.Test;
//
//@Test(groups = { "demo" })
//public class RMDemoTest extends RestTest {
// @Autowired
// RestSitesApi sitesApi;
//
// private SiteModel siteModel;
//
// @BeforeClass(alwaysRun = true)
// public void dataPreparation() throws DataPreparationException {
// siteModel = dataSite.usingAdmin().createPublicRandomSite();
// restClient.authenticateUser(dataUser.getAdminUser());
//
// sitesApi.useRestClient(restClient);
// }
//
// @Test
// public void adminCanSeeDetailsOfARandomSiteCreated() throws JsonToModelConversionException, Exception
// {
// restClient.usingSite(siteModel).getSite()
// .assertThat().field("id").isNotNull()
// .and().field("description").is(siteModel.getDescription())
// .and().field("title").is(siteModel.getTitle());
// }
//
// @Test
// public void adminCanSeeSiteDetailsOfCustomSite() throws JsonToModelConversionException, Exception
// {
// siteModel = dataSite.usingAdmin().createPublicRandomSite();
// siteModel.setDescription("my description");
// siteModel.setVisibility(Visibility.PUBLIC);
//
// // here we create the custom siteModel defined above
// dataSite.usingAdmin().createSite(siteModel);
//
// siteModel
// .assertThat().field("id").isNotNull()
// .and().field("description").is("my description")
// .and().field("title").is("MyTitle")
// .and().field("visibility").is(Visibility.PUBLIC);
// }
//
// /**
// * This will throw this error message:
// * "You missed some configuration settings in your tests: You try to assert field [fieldA] that
// * doesn't exist in class: [org.alfresco.rest.model.RestSiteModel]. Please check your code!"
// */
// @Test(expectedExceptions = TestConfigurationException.class)
// public void assertingWithFieldsThatDoesNotExist() throws JsonToModelConversionException, Exception {
// siteModel = dataSite.createPublicRandomSite();
//
// sitesApi.getSite(siteModel).assertThat().field("fieldA").isNotNull();
// }
//
// @Test
// public void assertingPaginationAndUsingParameters() throws Exception
// {
// /*
// * ~ each API has the possibility to pass parameters to httpMethod call
// * you can use withParams(String... parameters) method before calling the http method.
// */
// sitesApi.withParams("maxItems=2", "orderyBy=name").getSites()
// .assertThat().paginationExist();
//// .and().paginationField("maxItems").is("2");
//
// }
//
//}
@@ -7,6 +7,7 @@ import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestSiteMemberModel;
import org.alfresco.utility.constants.UserRole;
import org.alfresco.utility.data.DataUser.ListUserWithRoles;
import org.alfresco.utility.exception.DataPreparationException;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
@@ -15,18 +16,21 @@ import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.CORE })
public class AddSiteMemberCoreTests extends RestTest
{
private UserModel adminUserModel;
private UserModel testUser;
private SiteModel publicSiteModel;
private SiteModel moderatedSiteModel;
private SiteModel privateSiteModel;
private ListUserWithRoles usersWithRolesToMoedratedSite;
private ListUserWithRoles usersWithRolesToModeratedSite;
private ListUserWithRoles usersWithRolesToPrivateSite;
private String addMembersJson;
private RestSiteMemberModel memberModel;
@BeforeClass(alwaysRun=true)
public void dataPreparation() throws Exception
@@ -35,57 +39,57 @@ public class AddSiteMemberCoreTests extends RestTest
publicSiteModel = dataSite.usingUser(adminUserModel).createPublicRandomSite();
moderatedSiteModel = dataSite.usingUser(adminUserModel).createModeratedRandomSite();
privateSiteModel = dataSite.usingUser(adminUserModel).createPrivateRandomSite();
usersWithRolesToMoedratedSite = dataUser.addUsersWithRolesToSite(moderatedSiteModel, UserRole.SiteManager, UserRole.SiteCollaborator,
usersWithRolesToModeratedSite = dataUser.addUsersWithRolesToSite(moderatedSiteModel, UserRole.SiteManager, UserRole.SiteCollaborator,
UserRole.SiteConsumer,UserRole.SiteContributor);
usersWithRolesToPrivateSite = dataUser.addUsersWithRolesToSite(privateSiteModel, UserRole.SiteManager, UserRole.SiteCollaborator,
UserRole.SiteConsumer,UserRole.SiteContributor);
addMembersJson = "{\"role\":\"%s\",\"id\":\"%s\"}, {\"role\":\"%s\",\"id\":\"%s\"}";
}
@BeforeMethod
public void setUp() throws DataPreparationException {
testUser = dataUser.createRandomTestUser("testUser");
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that manager can add another user as manager to a public site and gets status code CREATED (201)")
public void addManagerToPublicSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteManager);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(publicSiteModel).addPerson(testUser)
.assertThat().field("id").is(testUser.getUsername())
memberModel = restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(publicSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
memberModel.assertThat().field("id").is(testUser.getUsername())
.and().field("role").is(testUser.getUserRole());
restClient.assertStatusCodeIs(HttpStatus.CREATED);
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that manager can add another user as manager to a moderated site and gets status code CREATED (201)")
public void addManagerToModeratedSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteManager);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser)
.assertThat().field("id").is(testUser.getUsername())
memberModel = restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
memberModel.assertThat().field("id").is(testUser.getUsername())
.and().field("role").is(testUser.getUserRole());
restClient.assertStatusCodeIs(HttpStatus.CREATED);
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that manager can add another user as manager to a private site and gets status code CREATED (201)")
public void addManagerToPrivateSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteManager);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(privateSiteModel).addPerson(testUser)
.assertThat().field("id").is(testUser.getUsername())
memberModel = restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(privateSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
memberModel.assertThat().field("id").is(testUser.getUsername())
.and().field("role").is(testUser.getUserRole());
restClient.assertStatusCodeIs(HttpStatus.CREATED);
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that consumer role is not able to add another user to a moderated site and gets status code 403")
public void addUserByConsumerToModeratedSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteConsumer);
restClient.authenticateUser(usersWithRolesToMoedratedSite.getOneUserWithRole(UserRole.SiteConsumer)).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser);
restClient.authenticateUser(usersWithRolesToModeratedSite.getOneUserWithRole(UserRole.SiteConsumer)).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
}
@@ -93,7 +97,6 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that consumer role is not able to add another user to a private site and gets status code 403")
public void addUserByConsumerToPrivateSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteConsumer);
restClient.authenticateUser(usersWithRolesToPrivateSite.getOneUserWithRole(UserRole.SiteConsumer)).withCoreAPI().usingSite(privateSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
@@ -103,9 +106,8 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that collaborator role is not able to add another user to a moderated site and gets status code 403")
public void addUserByCollaboratorToModeratedSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteConsumer);
restClient.authenticateUser(usersWithRolesToMoedratedSite.getOneUserWithRole(UserRole.SiteCollaborator)).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser);
restClient.authenticateUser(usersWithRolesToModeratedSite.getOneUserWithRole(UserRole.SiteCollaborator)).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
}
@@ -113,7 +115,6 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that collaborator role is not able to add another user to a private site and gets status code 403")
public void addUserByCollaboratorToPrivateSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteConsumer);
restClient.authenticateUser(usersWithRolesToPrivateSite.getOneUserWithRole(UserRole.SiteCollaborator)).withCoreAPI().usingSite(privateSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
@@ -123,9 +124,8 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that contributor role is not able to add another user to a moderated site and gets status code 403")
public void addUserByContributorToModeratedSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteConsumer);
restClient.authenticateUser(usersWithRolesToMoedratedSite.getOneUserWithRole(UserRole.SiteContributor)).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser);
restClient.authenticateUser(usersWithRolesToModeratedSite.getOneUserWithRole(UserRole.SiteContributor)).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
}
@@ -133,7 +133,6 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that contributor role is not able to add another user to a private site and gets status code 403")
public void addUserByContributorToPrivateSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteConsumer);
restClient.authenticateUser(usersWithRolesToPrivateSite.getOneUserWithRole(UserRole.SiteContributor)).withCoreAPI().usingSite(privateSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
@@ -143,9 +142,8 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that a user without specified role can not be added to a site and gets status code 400")
public void canNotAddUserWithoutSpecifyingRoleToSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
restClient.authenticateUser(adminUserModel).withCoreAPI();
String json = JsonBodyGenerator.keyValueJson("id",testUser.getUsername());
String json = JsonBodyGenerator.keyValueJson("id", testUser.getUsername());
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, json, "sites/{siteId}/members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteMemberModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary(RestErrorModel.MUST_PROVIDE_ROLE);
@@ -155,7 +153,6 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that a user with inexistent role can not be added to a site and gets status code 400")
public void canNotAddUserWithInexistentRoleToSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
restClient.authenticateUser(adminUserModel).withCoreAPI();
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, String.format("{\"role\":\"inexistentRole\",\"id\":\"%s\"}", testUser.getUsername()), "sites/{siteId}/members?{parameters}", publicSiteModel.getId(), restClient.getParameters());
restClient.processModel(RestSiteMemberModel.class, request);
@@ -164,9 +161,8 @@ public class AddSiteMemberCoreTests extends RestTest
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that user can not add himself as a manager to a public site and gets status code 403")
public void userAddHimselfToPublicSite() throws Exception
public void userAddHimselfAsManagerToPublicSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteManager);
restClient.authenticateUser(testUser).withCoreAPI().usingSite(publicSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
@@ -174,9 +170,8 @@ public class AddSiteMemberCoreTests extends RestTest
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that user can not add himself as a manager to a moderated site and gets status code 403")
public void userAddHimselfToModeratedSite() throws Exception
public void userAddHimselfAsManagerToModeratedSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteManager);
restClient.authenticateUser(testUser).withCoreAPI().usingSite(moderatedSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
@@ -184,9 +179,8 @@ public class AddSiteMemberCoreTests extends RestTest
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that user can not add himself as a manager to a private site and gets status code 404")
public void userAddHimselfToPrivateSite() throws Exception
public void userAddHimselfAsManagerToPrivateSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteManager);
restClient.authenticateUser(testUser).withCoreAPI().usingSite(privateSiteModel).addPerson(testUser);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, privateSiteModel.getId()));
@@ -196,7 +190,6 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that user can not be added to an inexistent site and gets status code 404")
public void userIsNotAbleToAddUserToAnInexistentSite() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteManager);
SiteModel inexistentSite = new SiteModel("inexistentSite");
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(inexistentSite).addPerson(testUser);
@@ -204,10 +197,9 @@ public class AddSiteMemberCoreTests extends RestTest
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that user can not be added to an empty site id and gets status code 404")
public void userIsNotAbleToAddUserToEmptySiteId() throws Exception
description = "Verify that user can not be added to a site if an empty site id is provided and gets status code 404")
public void userIsNotAbleToAddAnotherUserUsingEmptySiteId() throws Exception
{
UserModel testUser = dataUser.createRandomTestUser("testUser");
testUser.setUserRole(UserRole.SiteManager);
SiteModel inexistentSite = new SiteModel("");
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(inexistentSite).addPerson(testUser);
@@ -225,7 +217,7 @@ public class AddSiteMemberCoreTests extends RestTest
}
@TestRail(section = {TestGroup.REST_API, TestGroup.SITES }, executionType = ExecutionType.REGRESSION,
description = "Verify that inexistet user can not be added to site and gets status code 400")
description = "Verify that empty username can not be added to site and gets status code 400")
public void userIsNotAbleToAddEmptyUserIdToSite() throws Exception
{
UserModel testUser = new UserModel("", "password");
@@ -238,7 +230,7 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that user can not add another user that is already a memeber and gets status code 409")
public void userIsNotAbleToAddUserThatIsAlreadyAMember() throws Exception
{
UserModel collaborator = usersWithRolesToMoedratedSite.getOneUserWithRole(UserRole.SiteCollaborator);
UserModel collaborator = usersWithRolesToModeratedSite.getOneUserWithRole(UserRole.SiteCollaborator);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingSite(moderatedSiteModel).addPerson(collaborator);
restClient.assertStatusCodeIs(HttpStatus.CONFLICT).assertLastError().containsSummary(String.format(RestErrorModel.ALREADY_Site_MEMBER, collaborator.getUsername(), moderatedSiteModel.getId()));
}
@@ -277,8 +269,8 @@ public class AddSiteMemberCoreTests extends RestTest
description = "Verify that several users that are already added to the site can not be added once in a row and gets status code 400")
public void addSeveralUsersThatAreAlreadyAddedToASite() throws Exception
{
UserModel collaborator = usersWithRolesToMoedratedSite.getOneUserWithRole(UserRole.SiteCollaborator);
UserModel consumer = usersWithRolesToMoedratedSite.getOneUserWithRole(UserRole.SiteConsumer);
UserModel collaborator = usersWithRolesToModeratedSite.getOneUserWithRole(UserRole.SiteCollaborator);
UserModel consumer = usersWithRolesToModeratedSite.getOneUserWithRole(UserRole.SiteConsumer);
restClient.authenticateUser(adminUserModel).withCoreAPI();
String json = String.format(addMembersJson, collaborator.getUserRole(), collaborator.getUsername(), consumer.getUserRole(), consumer.getUsername());
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, json, "sites/{siteId}/members?{parameters}", moderatedSiteModel.getId(), restClient.getParameters());
@@ -286,4 +278,4 @@ public class AddSiteMemberCoreTests extends RestTest
restClient.assertStatusCodeIs(HttpStatus.CONFLICT).assertLastError().containsSummary(String.format(RestErrorModel.ALREADY_Site_MEMBER, collaborator.getUsername(), moderatedSiteModel.getId()));
}
}
}
@@ -0,0 +1,105 @@
package org.alfresco.rest.sites;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.utility.constants.ContainerName;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = { TestGroup.REST_API, TestGroup.SITES, TestGroup.CORE })
public class GetSiteContainerCoreTests extends RestTest{
private UserModel adminUserModel, testUserModel;
private SiteModel publicSiteModel, moderatedSiteModel, privateSiteModel;
@BeforeClass(alwaysRun=true)
public void dataPreparation() throws Exception
{
adminUserModel = dataUser.getAdminUser();
testUserModel = dataUser.createRandomTestUser();
publicSiteModel = dataSite.usingAdmin().createPublicRandomSite();
moderatedSiteModel = dataSite.usingAdmin().createModeratedRandomSite();
privateSiteModel = dataSite.usingAdmin().createPrivateRandomSite();
dataLink.usingAdmin().usingSite(publicSiteModel).createRandomLink();
dataDiscussion.usingAdmin().usingSite(publicSiteModel).createRandomDiscussion();
dataLink.usingAdmin().usingSite(moderatedSiteModel).createRandomLink();
dataDiscussion.usingAdmin().usingSite(moderatedSiteModel).createRandomDiscussion();
dataLink.usingAdmin().usingSite(privateSiteModel).createRandomLink();
dataDiscussion.usingAdmin().usingSite(privateSiteModel).createRandomDiscussion();
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if get container request returns status code 400 when site doesn't exist")
public void getContainerWithNonExistentSite() throws Exception
{
restClient.authenticateUser(testUserModel)
.withCoreAPI().usingSite("NonExistentSiteId").getSiteContainer(ContainerName.discussions.toString());
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.RELATIONSHIP_NOT_FOUND, "NonExistentSiteId", ContainerName.discussions.toString()));
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if get container request returns status code 400 when container item doesn't exist")
public void getContainerWithNonExistentItem() throws Exception
{
restClient.authenticateUser(testUserModel)
.withCoreAPI().usingSite(publicSiteModel).getSiteContainer("NonExistentFolder");
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.RELATIONSHIP_NOT_FOUND, publicSiteModel.getId(), "NonExistentFolder"));
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get container request returns status 200 for public site")
public void getContainerForPublicSite() throws Exception
{
restClient.authenticateUser(testUserModel)
.withCoreAPI().usingSite(publicSiteModel).getSiteContainer(ContainerName.discussions.toString())
.assertThat().field("folderId").is(ContainerName.discussions.toString());
restClient.assertStatusCodeIs(HttpStatus.OK);
restClient.authenticateUser(testUserModel)
.withCoreAPI().usingSite(publicSiteModel).getSiteContainer(ContainerName.links.toString())
.assertThat().field("folderId").is(ContainerName.links.toString());
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get container request returns status 200 for private site")
public void getContainerForPrivateSite() throws Exception
{
restClient.authenticateUser(adminUserModel)
.withCoreAPI().usingSite(privateSiteModel).getSiteContainer(ContainerName.discussions.toString())
.assertThat().field("folderId").is(ContainerName.discussions.toString());
restClient.assertStatusCodeIs(HttpStatus.OK);
restClient.withCoreAPI().usingSite(privateSiteModel).getSiteContainer(ContainerName.links.toString())
.assertThat().field("folderId").is(ContainerName.links.toString());
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get container request returns status 200 for moderated site")
public void getContainerForModeratedSite() throws Exception
{
restClient.authenticateUser(adminUserModel)
.withCoreAPI().usingSite(moderatedSiteModel).getSiteContainer(ContainerName.discussions.toString())
.assertThat().field("folderId").is(ContainerName.discussions.toString());
restClient.assertStatusCodeIs(HttpStatus.OK);
restClient.withCoreAPI().usingSite(moderatedSiteModel).getSiteContainer(ContainerName.links.toString())
.assertThat().field("folderId").is(ContainerName.links.toString());
restClient.assertStatusCodeIs(HttpStatus.OK);
}
}
@@ -108,8 +108,8 @@ public class GetSiteContainersCoreTests extends RestTest
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if get site container request returns status code 200 when valid skipCount parameter is used")
public void getSitesWithValidSkipCount() throws Exception
description= "Verify if get site containers request returns status code 200 when valid skipCount parameter is used")
public void getSiteContainersWithValidSkipCount() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteManager)).withParams("skipCount=1")
.withCoreAPI().usingSite(publicSiteModel).getSiteContainers()
@@ -133,8 +133,8 @@ public class GetSiteContainersCoreTests extends RestTest
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if get site container request returns status code 400 when invalid skipCount parameter is used")
public void getSitesWithSkipCountCharacter() throws Exception
description= "Verify if get site containers request returns status code 400 when invalid skipCount parameter is used")
public void getSiteContainersWithSkipCountCharacter() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator)).withParams("skipCount=abc")
.withCoreAPI().usingSite(publicSiteModel).getSiteContainers();
@@ -143,8 +143,8 @@ public class GetSiteContainersCoreTests extends RestTest
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if get site container request returns status code 200 when skipCount parameter starts with multiple zero")
public void getSitesWithSkipCountMultipleZero() throws Exception
description= "Verify if get site containers request returns status code 200 when skipCount parameter starts with multiple zero")
public void getSiteContainersWithSkipCountMultipleZero() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator)).withParams("skipCount=00002")
.withCoreAPI().usingSite(publicSiteWithContainers).getSiteContainers()
@@ -154,8 +154,8 @@ public class GetSiteContainersCoreTests extends RestTest
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify if get site container request returns status code 400 when invalid skipCount parameter is used")
public void getSiteContainerWithNonExistentSite() throws Exception
description= "Verify if get site containers request returns status code 400 when site doesn't exist")
public void getSiteContainersWithNonExistentSite() throws Exception
{
restClient.authenticateUser(publicSiteUsers.getOneUserWithRole(UserRole.SiteCollaborator))
.withCoreAPI().usingSite("NonExistentSiteId").getSiteContainers();
@@ -164,8 +164,8 @@ public class GetSiteContainersCoreTests extends RestTest
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get site container request returns status 200 for private site")
public void getSiteContainerForPrivateSite() throws Exception
description= "Verify get site containers request returns status 200 for private site")
public void getSiteContainersForPrivateSite() throws Exception
{
restClient.authenticateUser(adminUserModel)
.withCoreAPI().usingSite(privateSiteModel).getSiteContainers()
@@ -174,8 +174,8 @@ public class GetSiteContainersCoreTests extends RestTest
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get site container request returns status 200 for moderated site")
public void getSiteContainerForModeratedSite() throws Exception
description= "Verify get site containers request returns status 200 for moderated site")
public void getSiteContainersForModeratedSite() throws Exception
{
restClient.authenticateUser(adminUserModel)
.withCoreAPI().usingSite(moderatedSiteModel).getSiteContainers()
@@ -184,8 +184,8 @@ public class GetSiteContainersCoreTests extends RestTest
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get site container request returns status 200 for several containers")
public void getSiteContainerForSeveralItems() throws Exception
description= "Verify get site containers request returns status 200 for several containers")
public void getSiteContainersForSeveralItems() throws Exception
{
restClient.authenticateUser(adminUserModel)
.withCoreAPI().usingSite(publicSiteWithContainers).getSiteContainers()
@@ -197,8 +197,8 @@ public class GetSiteContainersCoreTests extends RestTest
}
@TestRail(section={TestGroup.REST_API, TestGroup.CORE, TestGroup.SITES}, executionType= ExecutionType.REGRESSION,
description= "Verify get site container request returns status 200 for one container")
public void getSiteContainerWithOneItem() throws Exception
description= "Verify get site containers request returns status 200 for one container")
public void getSiteContainersWithOneItem() throws Exception
{
restClient.authenticateUser(adminUserModel)
.withCoreAPI().usingSite(publicSiteModel).getSiteContainers()
@@ -0,0 +1,130 @@
package org.alfresco.rest.tags;
import org.alfresco.dataprep.CMISUtil;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.exception.JsonToModelConversionException;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.utility.data.RandomData;
import org.alfresco.utility.model.FileModel;
import org.alfresco.utility.model.FolderModel;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.apache.commons.lang.RandomStringUtils;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = { TestGroup.REST_API, TestGroup.TAGS, TestGroup.CORE })
public class GetNodeTagsCoreTests extends RestTest
{
private UserModel adminUserModel, userModel;
private SiteModel siteModel;
private FileModel document;
private String tagValue;
private String tagValue2;
@BeforeClass(alwaysRun=true)
public void dataPreparation() throws Exception
{
userModel = dataUser.createRandomTestUser();
adminUserModel = dataUser.getAdminUser();
restClient.authenticateUser(adminUserModel);
siteModel = dataSite.usingUser(adminUserModel).createPublicRandomSite();
document = dataContent.usingSite(siteModel).usingUser(adminUserModel).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
tagValue = RandomData.getRandomName("tag");
restClient.withCoreAPI().usingResource(document).addTag(tagValue);
tagValue2 = RandomData.getRandomName("tag");
restClient.withCoreAPI().usingResource(document).addTag(tagValue2);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.TAGS }, executionType = ExecutionType.REGRESSION,
description = "Verify that using invalid value for skipCount parameter returns status code 400")
public void invalidSkipCountTest() throws JsonToModelConversionException, Exception
{
restClient.withParams("skipCount=abc").withCoreAPI().usingResource(document).getNodeTags();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary(String.format(RestErrorModel.INVALID_SKIPCOUNT, "abc"));
restClient.withParams("skipCount=-1").withCoreAPI().usingResource(document).getNodeTags();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary(RestErrorModel.NEGATIVE_VALUES_SKIPCOUNT);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.TAGS }, executionType = ExecutionType.REGRESSION,
description = "Verify that using invalid value for maxItems parameter returns status code 400")
public void invalidMaxItemsTest() throws JsonToModelConversionException, Exception
{
restClient.withParams("maxItems=abc").withCoreAPI().usingResource(document).getNodeTags();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary(String.format(RestErrorModel.INVALID_MAXITEMS, "abc"));
restClient.withParams("maxItems=-1").withCoreAPI().usingResource(document).getNodeTags();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary(RestErrorModel.ONLY_POSITIVE_VALUES_MAXITEMS);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.TAGS }, executionType = ExecutionType.REGRESSION,
description = "Verify that user without permissions returns status code 403")
public void userWithoutPermissionsTest() throws JsonToModelConversionException, Exception
{
SiteModel site = dataSite.usingUser(adminUserModel).createModeratedRandomSite();
FileModel document = dataContent.usingSite(site).usingUser(adminUserModel).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
String tagValue = RandomData.getRandomName("tag");
restClient.authenticateUser(adminUserModel).withCoreAPI().usingResource(document).addTag(tagValue);
restClient.authenticateUser(userModel).withCoreAPI().usingResource(document).getNodeTags();
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.TAGS }, executionType = ExecutionType.REGRESSION,
description = "Verify that if node does not exist returns status code 403")
public void inexistentNodeTest() throws JsonToModelConversionException, Exception
{
FileModel document = dataContent.usingSite(siteModel).usingUser(adminUserModel).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
String nodeRef = RandomStringUtils.randomAlphanumeric(10);
document.setNodeRef(nodeRef);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingResource(document).getNodeTags();
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, nodeRef));
}
@TestRail(section = { TestGroup.REST_API, TestGroup.TAGS }, executionType = ExecutionType.REGRESSION,
description = "Verify that if node id is empty returns status code 403")
public void emptyNodeIdTest() throws JsonToModelConversionException, Exception
{
FileModel document = dataContent.usingSite(siteModel).usingUser(adminUserModel).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
document.setNodeRef("");
restClient.authenticateUser(adminUserModel).withCoreAPI().usingResource(document).getNodeTags();
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, ""));
}
@TestRail(section = { TestGroup.REST_API, TestGroup.TAGS }, executionType = ExecutionType.REGRESSION,
description = "Verify file tags")
public void fileTagsTest() throws JsonToModelConversionException, Exception
{
restClient.authenticateUser(adminUserModel).withCoreAPI().usingResource(document).getNodeTags()
.assertThat()
.entriesListContains("tag", tagValue.toLowerCase())
.and().entriesListContains("tag", tagValue2.toLowerCase());
}
@TestRail(section = { TestGroup.REST_API, TestGroup.TAGS }, executionType = ExecutionType.REGRESSION,
description = "Verify folder tags")
public void folderTagsTest() throws JsonToModelConversionException, Exception
{
FolderModel folder = dataContent.usingUser(adminUserModel).usingSite(siteModel).createFolder();
tagValue = RandomData.getRandomName("tag");
restClient.withCoreAPI().usingResource(folder).addTag(tagValue);
tagValue2 = RandomData.getRandomName("tag");
restClient.withCoreAPI().usingResource(folder).addTag(tagValue2);
restClient.authenticateUser(adminUserModel).withCoreAPI().usingResource(folder).getNodeTags()
.assertThat()
.entriesListContains("tag", tagValue.toLowerCase())
.and().entriesListContains("tag", tagValue2.toLowerCase());
}
}
@@ -0,0 +1,82 @@
package org.alfresco.rest.workflow.processDefinitions;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestProcessDefinitionModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.report.Bug;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* Created by Claudia Agache on 12/6/2016.
*/
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESS_DEFINITION, TestGroup.CORE })
public class GetProcessDefinitionImageCoreTests extends RestTest
{
private UserModel adminUser, adminTenantUser;
private RestProcessDefinitionModel randomProcessDefinition;
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws Exception
{
adminUser = dataUser.getAdminUser();
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESS_DEFINITION },
executionType = ExecutionType.REGRESSION,
description = "Verify if get process definition image returns status code 404 when invalid processDefinitionId is used")
public void getProcessDefinitionImageUsingInvalidProcessDefinitionId() throws Exception
{
restClient.authenticateUser(adminUser);
randomProcessDefinition = restClient.withWorkflowAPI().getAllProcessDefinitions().getOneRandomEntry();
randomProcessDefinition.onModel().setId("invalidID");
restClient.withWorkflowAPI()
.usingProcessDefinitions(randomProcessDefinition).getProcessDefinitionImage();
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, "invalidID"));
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESS_DEFINITION },
executionType = ExecutionType.REGRESSION,
description = "Verify network admin is able to get a process definition image using REST API and status code is OK (200)")
@Test(groups = { TestGroup.NETWORKS })
@Bug(id = "MNT-17243")
public void networkAdminGetProcessDefinitionImage() throws Exception
{
adminTenantUser = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser)
.usingTenant().createTenant(adminTenantUser);
randomProcessDefinition = restClient.authenticateUser(adminTenantUser).withWorkflowAPI().getAllProcessDefinitions().getOneRandomEntry();
restClient.withWorkflowAPI().usingProcessDefinitions(randomProcessDefinition).getProcessDefinitionImage()
.assertResponseContainsImage();
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESS_DEFINITION },
executionType = ExecutionType.REGRESSION,
description = "Verify network user is able to get a process definition image using REST API and status code is OK (200)")
@Test(groups = { TestGroup.NETWORKS })
@Bug(id = "MNT-17243")
public void networkUserGetProcessDefinitionImage() throws Exception
{
adminTenantUser = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser)
.usingTenant().createTenant(adminTenantUser);
UserModel tenantUser = dataUser.usingUser(adminTenantUser).createUserWithTenant("uTenant");
randomProcessDefinition = restClient.authenticateUser(adminTenantUser).withWorkflowAPI()
.getAllProcessDefinitions().getOneRandomEntry();
restClient.authenticateUser(tenantUser).withWorkflowAPI()
.usingProcessDefinitions(randomProcessDefinition).getProcessDefinitionImage()
.assertResponseContainsImage();
restClient.assertStatusCodeIs(HttpStatus.OK);
}
}
@@ -2,12 +2,10 @@ package org.alfresco.rest.workflow.processDefinitions;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestProcessDefinitionModel;
import org.alfresco.utility.data.DataUser;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -18,9 +16,6 @@ import org.testng.annotations.Test;
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESS_DEFINITION, TestGroup.SANITY })
public class GetProcessDefinitionImageSanityTests extends RestTest
{
@Autowired
private DataUser dataUser;
private UserModel testUser;
private RestProcessDefinitionModel randomProcessDefinition;
@@ -2,12 +2,10 @@ package org.alfresco.rest.workflow.processDefinitions;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestProcessDefinitionModel;
import org.alfresco.utility.data.DataUser;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@@ -0,0 +1,79 @@
package org.alfresco.rest.workflow.processDefinitions;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESS_DEFINITION, TestGroup.CORE })
public class GetProcessDefinitionsCoreTests extends RestTest
{
private UserModel adminUserModel;
private UserModel userModel;
private UserModel adminTenantUser;
private UserModel tenantUser;
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws Exception
{
adminUserModel = dataUser.getAdminUser();
userModel = dataUser.createRandomTestUser();
adminTenantUser = UserModel.getAdminTenantUser();
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESS_DEFINITION }, executionType = ExecutionType.REGRESSION,
description = "Verify any user gets process definitions for non-network deployments using REST API and status code is OK (200)")
public void nonNetworkUserGetsProcessDefinitions() throws Exception
{
restClient.authenticateUser(userModel)
.withWorkflowAPI()
.getAllProcessDefinitions()
.assertThat().entriesListIsNotEmpty();
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESS_DEFINITION }, executionType = ExecutionType.REGRESSION,
description = "Verify get process definitions using any network user for network enabled deployments with REST API status code is OK (200)")
@Test(groups = { TestGroup.NETWORKS })
public void networkUserGetsProcessDefinitions() throws Exception
{
restClient.authenticateUser(adminUserModel).usingTenant().createTenant(adminTenantUser);
tenantUser = dataUser.usingUser(adminTenantUser).createUserWithTenant("uTenant");
restClient.authenticateUser(tenantUser)
.withWorkflowAPI()
.getAllProcessDefinitions()
.assertThat().entriesListIsNotEmpty();
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESS_DEFINITION }, executionType = ExecutionType.REGRESSION,
description = "Verify call to get process definitions with invalid orderBy parameter with REST API and status code is BAD_REQUEST (400)")
public void userGetProcessDefinitionsWithInvalidOrderBy() throws Exception
{
restClient.authenticateUser(userModel)
.withParams("orderBy=test")
.withWorkflowAPI()
.getAllProcessDefinitions()
.assertThat().entriesListIsEmpty();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary(String.format(RestErrorModel.PROCESS_DEFINITIONS_INVALID_ORDERBY, "test"));
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESS_DEFINITION }, executionType = ExecutionType.REGRESSION,
description = "Verify call to get process definitions with invalid where parameter with REST API and status code is BAD_REQUEST (400)")
public void userGetProcessDefinitionsWithInvalidWhere() throws Exception
{
restClient.authenticateUser(userModel)
.withParams("where=test")
.withWorkflowAPI()
.getAllProcessDefinitions()
.assertThat().entriesListIsEmpty();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST)
.assertLastError().containsSummary(String.format(RestErrorModel.PROCESS_DEFINITIONS_INVALID_WHERE, "test"));
}
}
@@ -0,0 +1,101 @@
package org.alfresco.rest.workflow.processes;
import org.alfresco.dataprep.CMISUtil;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestProcessModel;
import org.alfresco.rest.model.RestProcessVariableModel;
import org.alfresco.utility.model.FileModel;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.SANITY })
public class AddProcessVariableCoreTests extends RestTest
{
private FileModel document;
private SiteModel siteModel;
private UserModel userWhoStartsTask, assignee, adminUser, adminTenantUser, secondAdminTenantUser, tenantUser;
private RestProcessModel processModel;
private RestProcessVariableModel variableModel, processVariable;
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws Exception
{
adminUser = dataUser.getAdminUser();
userWhoStartsTask = dataUser.createRandomTestUser();
assignee = dataUser.createRandomTestUser();
siteModel = dataSite.usingUser(userWhoStartsTask).createPublicRandomSite();
document = dataContent.usingSite(siteModel).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
dataWorkflow.usingUser(userWhoStartsTask).usingSite(siteModel).usingResource(document).createNewTaskAndAssignTo(assignee);
}
@TestRail(section = {TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Verify addProcessVariable by admin in other network with REST API and status code is FORBIDDEN (403)")
@Test(groups = { TestGroup.NETWORKS })
public void addProcessVariableByAdminInOtherNetworkIsForbidden() throws Exception
{
adminTenantUser = UserModel.getAdminTenantUser();
secondAdminTenantUser = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser).usingTenant().createTenant(adminTenantUser);
restClient.authenticateUser(adminUser).usingTenant().createTenant(secondAdminTenantUser);
tenantUser = dataUser.usingUser(adminTenantUser).createUserWithTenant("uTenant");
restClient.authenticateUser(adminTenantUser).withWorkflowAPI()
.addProcess("activitiAdhoc", tenantUser, false, CMISUtil.Priority.Normal);
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
processModel = restClient.authenticateUser(adminTenantUser).withWorkflowAPI().getProcesses().getOneRandomEntry().onModel();
restClient.authenticateUser(secondAdminTenantUser).withWorkflowAPI().usingProcess(processModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN)
.assertLastError().containsSummary(RestErrorModel.PROCESS_RUNNING_IN_ANOTHER_TENANT);
}
@TestRail(section = {TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Verify addProcessVariable by any user with REST API and status code is CREATED (201)")
public void addProcessVariableByAnyUser() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
processModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().getProcesses().getOneRandomEntry().onModel();
processVariable = restClient.authenticateUser(assignee).withWorkflowAPI().usingProcess(processModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
processVariable.assertThat().field("name").is(variableModel.getName())
.and().field("type").is(variableModel.getType())
.and().field("value").is(variableModel.getValue());
restClient.withWorkflowAPI().usingProcess(processModel).getProcessVariables()
.assertThat().entriesListContains("name", processVariable.getName());
}
@TestRail(section = {TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Verify addProcessVariable by any user for invalid processID with REST API and status code is NOT_FOUND (404)")
public void addProcessVariableForInvalidProcessIdIsNotFound() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
processModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().getProcesses().getOneRandomEntry().onModel();
processModel.setId("invalidProcessID");
processVariable = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().usingProcess(processModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, "invalidProcessID"));
}
@TestRail(section = {TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Verify addProcessVariable by any user for empty processID with REST API and status code is NOT_FOUND (404)")
public void addProcessVariableForInvalidProcessIdIsEmpty() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
processModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().getProcesses().getOneRandomEntry().onModel();
processModel.setId("");
processVariable = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().usingProcess(processModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, ""));
}
}
@@ -0,0 +1,96 @@
package org.alfresco.rest.workflow.processes;
import org.alfresco.dataprep.CMISUtil;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestProcessModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.report.Bug;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.apache.commons.lang.RandomStringUtils;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class GetProcessCoreTests extends RestTest
{
private UserModel userWhoStartsProcess, assignee, adminUser;
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws Exception
{
adminUser = dataUser.getAdminUser();
userWhoStartsProcess = dataUser.createRandomTestUser();
assignee = dataUser.createRandomTestUser();
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Verify that using invalid process ID returns status code 404")
@Test(groups = { TestGroup.WORKFLOW, TestGroup.CORE})
public void invalidProcessIdTest() throws Exception
{
RestProcessModel newProcess = restClient.authenticateUser(userWhoStartsProcess).withWorkflowAPI().addProcess("activitiAdhoc", assignee, false, CMISUtil.Priority.High);
String processId = RandomStringUtils.randomAlphanumeric(10);
newProcess.setId(processId);
restClient.authenticateUser(dataUser.getAdminUser())
.withWorkflowAPI().usingProcess(newProcess).getProcess();
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, processId));
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES, TestGroup.NETWORKS}, executionType = ExecutionType.REGRESSION,
description = "Verify that tenant user cannot get process from another network")
@Test(groups = { TestGroup.WORKFLOW, TestGroup.CORE, TestGroup.NETWORKS })
@Bug(id = "MNT-17238")
public void tenantUserCannotGetProcessFromAnotherNetwork() throws Exception
{
UserModel adminTenantUser1 = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser).usingTenant().createTenant(adminTenantUser1);
UserModel adminTenantUser2 = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser).usingTenant().createTenant(adminTenantUser2);
UserModel tenantUser1 = dataUser.usingUser(adminTenantUser1).createUserWithTenant("uTenant1");
UserModel tenantUser2 = dataUser.usingUser(adminTenantUser2).createUserWithTenant("uTenant2");
RestProcessModel networkProcess1 = restClient.authenticateUser(adminTenantUser1).withWorkflowAPI().addProcess("activitiReview", tenantUser1, false, CMISUtil.Priority.High);
restClient.authenticateUser(tenantUser2).withWorkflowAPI().usingProcess(networkProcess1).getProcess();
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Verify that tenant user can get process from the same network")
@Test(groups = { TestGroup.WORKFLOW, TestGroup.CORE, TestGroup.NETWORKS })
public void tenantUserCanGetProcessFromTheSameNetwork() throws Exception
{
UserModel adminTenantUser1 = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser).usingTenant().createTenant(adminTenantUser1);
UserModel tenantUser1 = dataUser.usingUser(adminTenantUser1).createUserWithTenant("uTenant1");
RestProcessModel networkProcess1 = restClient.authenticateUser(adminTenantUser1).withWorkflowAPI().addProcess("activitiReview", tenantUser1, false, CMISUtil.Priority.High);
restClient.authenticateUser(tenantUser1).withWorkflowAPI().usingProcess(networkProcess1).getProcess();
restClient.assertStatusCodeIs(HttpStatus.OK);
networkProcess1.assertThat().field("id").is(networkProcess1.getId())
.and().field("startUserId").is(networkProcess1.getStartUserId());;
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES, TestGroup.NETWORKS}, executionType = ExecutionType.REGRESSION,
description = "Verify that non network user cannot get process from a network")
@Test(groups = { TestGroup.WORKFLOW, TestGroup.CORE, TestGroup.NETWORKS })
@Bug(id = "MNT-17238")
public void nonNetworkUserCannotAccessNetworkprocess() throws Exception
{
UserModel adminTenantUser1 = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser).usingTenant().createTenant(adminTenantUser1);
UserModel tenantUser1 = dataUser.usingUser(adminTenantUser1).createUserWithTenant("uTenant1");
RestProcessModel networkProcess1 = restClient.authenticateUser(adminTenantUser1).withWorkflowAPI().addProcess("activitiReview", tenantUser1, false, CMISUtil.Priority.High);
restClient.authenticateUser(adminUser).withWorkflowAPI().usingProcess(networkProcess1).getProcess();
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED);
}
}
@@ -0,0 +1,146 @@
package org.alfresco.rest.workflow.tasks;
import org.alfresco.dataprep.CMISUtil.DocumentType;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.core.RestRequest;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestVariableModel;
import org.alfresco.utility.model.FileModel;
import org.alfresco.utility.model.SiteModel;
import org.alfresco.utility.model.TaskModel;
import org.alfresco.utility.model.TestGroup;
import org.alfresco.utility.model.UserModel;
import org.alfresco.utility.report.Bug;
import org.alfresco.utility.testrail.ExecutionType;
import org.alfresco.utility.testrail.annotation.TestRail;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.CORE })
public class AddTaskVariablesCoreTests extends RestTest
{
private UserModel userWhoStartsTask, adminUser;
private SiteModel siteModel;
private FileModel fileModel;
private UserModel assigneeUser;
private TaskModel taskModel;
private String taskId;
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws Exception
{
adminUser = dataUser.getAdminUser();
userWhoStartsTask = dataUser.createRandomTestUser();
assigneeUser = dataUser.createRandomTestUser();
siteModel = dataSite.usingUser(adminUser).createPublicRandomSite();
fileModel = dataContent.usingSite(siteModel).createContent(DocumentType.TEXT_PLAIN);
taskModel = dataWorkflow.usingUser(userWhoStartsTask).usingSite(siteModel).usingResource(fileModel).createNewTaskAndAssignTo(assigneeUser);
taskId = taskModel.getId();
restClient.authenticateUser(adminUser);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case invalid variableBody is provided")
public void failedAddingTaskVariableIfInvalidBodyIsProvided() throws Exception
{
RestVariableModel invalidVariableModel = RestVariableModel.getRandomTaskVariableModel("instance", "d:char");
restClient.withWorkflowAPI().usingTask(taskModel).addTaskVariable(invalidVariableModel);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary("Illegal value for variable scope: 'instance'.");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case empty body type is provided")
public void failedAddingTaskVariableIfEmptyBodyIsProvided() throws Exception
{
RestVariableModel invalidVariableModel = RestVariableModel.getRandomTaskVariableModel("", "");
restClient.withWorkflowAPI().usingTask(taskModel).addTaskVariable(invalidVariableModel);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsSummary("Variable scope is required and can only be 'local' or 'global'.");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case incomplete body type is provided")
public void failedAddingTaskVariableIfIncompleteBodyIsProvided() throws Exception
{
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, "{\"name\": \"missingVariableScope\",\"value\": \"test\",\"type\": \"d:text\"}",
"tasks/{taskId}/variables", taskId);
restClient.processModel(RestVariableModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsSummary("Variable scope is required and can only be 'local' or 'global'.");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case incomplete body - missing required: name type is provided")
public void failedAddingTaskVariableIfIncompleteRequiredBodyIsProvided() throws Exception
{
RestRequest request = RestRequest.requestWithBody(HttpMethod.POST, "{\"scope\": \"local\",\"value\": \"missingVariableName\",\"type\": \"d:text\"}",
"tasks/{taskId}/variables", taskId);
restClient.processModel(RestVariableModel.class, request);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary("Variable name is required.");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case invalid type is provided")
public void failedAddingTaskVariableIfInvalidTypeIsProvided() throws Exception
{
RestVariableModel invalidVariableModel = RestVariableModel.getRandomTaskVariableModel("local", "d:char");
taskModel.setId(taskId);
restClient.withWorkflowAPI().usingTask(taskModel).addTaskVariable(invalidVariableModel);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary("Unsupported type of variable: 'd:char'.");
}
@Bug(id = "ACE-5674")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case invalid type prefix is provided")
public void failedAddingTaskVariableIfInvalidTypePrefixIsProvided() throws Exception
{
RestVariableModel invalidVariableModel = RestVariableModel.getRandomTaskVariableModel("local", "ddm:text");
taskModel.setId(taskId);
restClient.withWorkflowAPI().usingTask(taskModel).addTaskVariable(invalidVariableModel);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary("Namespace prefix ddm is not mapped to a namespace URI");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case invalid scope is provided")
public void failedAddingTaskVariableIfInvalidScopeIsProvided() throws Exception
{
RestVariableModel invalidVariableModel = RestVariableModel.getRandomTaskVariableModel("instance", "d:text");
taskModel.setId(taskId);
restClient.withWorkflowAPI().usingTask(taskModel).addTaskVariable(invalidVariableModel);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary("Illegal value for variable scope: 'instance'.");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case invalid task id is provided")
public void failedAddingTaskVariableIfInvalidTaskIdIsProvided() throws Exception
{
RestVariableModel variableModel = RestVariableModel.getRandomTaskVariableModel("local", "d:text");
taskModel.setId(taskModel.getId() + "TEST");
restClient.withWorkflowAPI().usingTask(taskModel).addTaskVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND).assertLastError()
.containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, taskModel.getId()));
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION, description = "Adding task variable is falling in case invalid task id is provided")
public void failedAddingTaskVariableIfInvalidValueIsProvided() throws Exception
{
RestVariableModel variableModel = RestVariableModel.getRandomTaskVariableModel("local", "d:int");
variableModel.setValue("invalidValue");
restClient.withWorkflowAPI().usingTask(taskModel).addTaskVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError().containsSummary("For input string: \"invalidValue\"");
}
}
+2 -7
View File
@@ -1,17 +1,12 @@
# dataprep related
alfresco.scheme=http
alfresco.server=172.29.100.215
alfresco.port=8080
alfresco.server=vsphered3.qa.internal.alfresco.com
alfresco.port=8070
# credentials
admin.user=admin
admin.password=admin
# rest related
rest.basePath=alfresco/api/-default-/public/alfresco/versions/1
rest.workflowPath=alfresco/api/-default-/public/workflow/versions/1
# TEST MANAGEMENT SECTION - Test Rail
#
# (currently supporting Test Rail v5.2.1.3472 integration)