Merge branch 'master' into TAS-2919

This commit is contained in:
Cristina Axinte
2017-02-03 18:46:38 +02:00
6 changed files with 759 additions and 26 deletions
@@ -2,6 +2,7 @@ package org.alfresco.rest.workflow.processes;
import org.alfresco.dataprep.CMISUtil.DocumentType;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.exception.JsonToModelConversionException;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestProcessModel;
import org.alfresco.rest.model.RestProcessVariableModel;
@@ -25,7 +26,7 @@ public class DeleteProcessVariableCoreTests extends RestTest
{
private FileModel document;
private SiteModel siteModel;
private UserModel userWhoStartsTask, assignee;
private UserModel userWhoStartsTask, assignee, adminUser;
private RestProcessModel restProcessModel;
private ProcessModel processModel;
private RestProcessVariableModel variableModel;
@@ -33,8 +34,9 @@ public class DeleteProcessVariableCoreTests extends RestTest
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws Exception
{
adminUser = dataUser.getAdminUser();
userWhoStartsTask = dataUser.createRandomTestUser();
assignee = dataUser.createRandomTestUser();
assignee = dataUser.createRandomTestUser();
siteModel = dataSite.usingUser(userWhoStartsTask).createPublicRandomSite();
document = dataContent.usingSite(siteModel).createContent(DocumentType.TEXT_PLAIN);
processModel = dataWorkflow.usingUser(userWhoStartsTask).usingSite(siteModel).usingResource(document)
@@ -51,22 +53,12 @@ public class DeleteProcessVariableCoreTests extends RestTest
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, variableModel.getName()));
}
@TestRail(section = {TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete empty process variable")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.CORE })
public void deleteEmptyProcessVariable() throws Exception
{
variableModel = new RestProcessVariableModel("","", "d:text");
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.METHOD_NOT_ALLOWED)
.assertLastError().containsSummary(RestErrorModel.DELETE_EMPTY_ARGUMENT);
}
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, variableModel.getName()))
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.containsErrorKey(RestErrorModel.ENTITY_NOT_FOUND_ERRORKEY)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@TestRail(section = {TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete process variable twice")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.CORE })
@@ -83,4 +75,44 @@ public class DeleteProcessVariableCoreTests extends RestTest
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError().containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, variableModel.getName()));
}
@TestRail(section = {TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Remove process variables with empty processId")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.CORE })
public void deleteProcessVariableEmptyProcessId() throws JsonToModelConversionException, Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restProcessModel.setId("");
restClient.withWorkflowAPI().usingProcess(restProcessModel).deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError()
.containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, ""))
.containsErrorKey(RestErrorModel.ENTITY_NOT_FOUND_ERRORKEY)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete process variable with admin.")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.CORE })
public void deleteProcessVariableWithAdmin() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restClient.authenticateUser(adminUser).withWorkflowAPI().usingProcess(processModel)
.deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
restClient.withWorkflowAPI().usingProcess(processModel).getProcessVariables()
.assertThat().entriesListDoesNotContain("name", variableModel.getName());
}
}
@@ -0,0 +1,279 @@
package org.alfresco.rest.workflow.processes;
import org.alfresco.dataprep.CMISUtil.DocumentType;
import org.alfresco.dataprep.CMISUtil.Priority;
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.ProcessModel;
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;
public class DeleteProcessVariableFullTests extends RestTest
{
private FileModel document;
private SiteModel siteModel;
private UserModel userWhoStartsTask, assignee, adminUser;
private RestProcessModel restProcessModel;
private ProcessModel processModel;
private RestProcessVariableModel variableModel, updatedVariable;
@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(DocumentType.TEXT_PLAIN);
processModel = dataWorkflow.usingUser(userWhoStartsTask).usingSite(siteModel).usingResource(document).createSingleReviewerTaskAndAssignTo(assignee);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete empty process variable")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL })
public void deleteEmptyProcessVariable() throws Exception
{
variableModel = new RestProcessVariableModel("", "", "bpm:workflowPackage");
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().getProcesses()
.getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel)
.deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.METHOD_NOT_ALLOWED)
.assertLastError()
.containsSummary(RestErrorModel.DELETE_EMPTY_ARGUMENT)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.containsErrorKey(RestErrorModel.DELETE_EMPTY_ARGUMENT)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Add a new process varaiables, update the variable and then delete.")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL })
public void createUpdateDeleteProcessVariable() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().getProcesses()
.getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel)
.addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
variableModel.setValue("newValue");
updatedVariable = restClient.withWorkflowAPI().usingProcess(processModel)
.updateProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.OK);
updatedVariable.assertThat().field("value").is("newValue");
restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().usingProcess(processModel)
.deleteProcessVariable(updatedVariable);
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
restClient.withWorkflowAPI().usingProcess(processModel).getProcessVariables()
.assertThat()
.entriesListDoesNotContain("name", updatedVariable.getName());
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete process then delete process variables, status OK should be returned")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL })
public void deleteProcessVariablesForADeletedProcess() throws Exception
{
UserModel userWhoStartsTask = dataUser.createRandomTestUser();
UserModel assignee = dataUser.createRandomTestUser();
RestProcessModel processModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.addProcess("activitiAdhoc", assignee, false, Priority.Normal);
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI().usingProcess(processModel)
.deleteProcess();
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
restClient.withWorkflowAPI().usingProcess(processModel).deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NOT_FOUND)
.assertLastError()
.containsSummary(String.format(RestErrorModel.ENTITY_NOT_FOUND, processModel.getId()))
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.containsErrorKey(RestErrorModel.ENTITY_NOT_FOUND_ERRORKEY)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete process variable using by the user who started the process.")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL })
public void deleteProcessVariableByUserThatStartedTheProcess() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
processModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.addProcess("activitiAdhoc", assignee, false, Priority.Normal);
restProcessModel = restClient.withWorkflowAPI().getProcesses()
.getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restClient.withWorkflowAPI().usingProcess(processModel)
.deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
restClient.withWorkflowAPI().usingProcess(processModel).getProcessVariables()
.assertThat()
.entriesListDoesNotContain("name", variableModel.getName());
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete process variable using by the user involved in the process.")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL })
public void deleteProcessVariableByUserInvolvedInTheProcess() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
processModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.addProcess("activitiAdhoc", assignee, false, Priority.Normal);
restProcessModel = restClient.withWorkflowAPI().getProcesses()
.getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restClient.authenticateUser(assignee).withWorkflowAPI().usingProcess(processModel)
.deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
restClient.withWorkflowAPI().usingProcess(processModel).getProcessVariables()
.assertThat()
.entriesListDoesNotContain("name", variableModel.getName());
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete process variable with invalid type")
@Test(groups = {TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL })
public void deleteProcessVariableInvalidType() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
variableModel.setType("invalid-type");
restClient.withWorkflowAPI().usingProcess(restProcessModel).deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
restClient.withWorkflowAPI().usingProcess(processModel).getProcessVariables()
.assertThat()
.entriesListDoesNotContain("name", variableModel.getName());
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete process variable by non assigned user")
@Test(groups = {TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL })
public void deleteProcessVarialbleByNonAssignedUser() throws Exception
{
UserModel nonAssigned = dataUser.createRandomTestUser();
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restClient.authenticateUser(nonAssigned).withWorkflowAPI().usingProcess(restProcessModel)
.deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN)
.assertLastError()
.containsSummary(String.format(RestErrorModel.ACCESS_INFORMATION_NOT_ALLOWED, processModel.getId()))
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.containsErrorKey(String.format(RestErrorModel.ACCESS_INFORMATION_NOT_ALLOWED, processModel.getId()))
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES }, executionType = ExecutionType.REGRESSION,
description = "Delete process variable by inexistent user")
@Test(groups = {TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL })
public void deleteProcessVarialbleByInexistentUser() throws Exception
{
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
processModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.addProcess("activitiAdhoc", userWhoStartsTask, false, Priority.Normal);
restProcessModel = restClient.authenticateUser(userWhoStartsTask).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(restProcessModel).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restClient.authenticateUser(UserModel.getRandomUserModel()).withWorkflowAPI()
.usingProcess(restProcessModel)
.deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.UNAUTHORIZED)
.assertLastError()
.containsSummary(RestErrorModel.AUTHENTICATION_FAILED)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.containsErrorKey(RestErrorModel.API_DEFAULT_ERRORKEY)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES, TestGroup.NETWORKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that admin from the same network is able to delete network process variables")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL, TestGroup.NETWORKS })
public void deleteProcessVariablesWithAdminFromSameNetwork() throws Exception
{
UserModel adminTenantUser1 = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser).usingTenant().createTenant(adminTenantUser1);
UserModel tenantUser1 = dataUser.usingUser(adminTenantUser1).createUserWithTenant("uTenant1");
RestProcessModel processModel = restClient.authenticateUser(adminTenantUser1).withWorkflowAPI()
.addProcess("activitiAdhoc", tenantUser1, false, Priority.Normal);
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
RestProcessModel networkProcess1 = restClient.authenticateUser(tenantUser1).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(networkProcess1).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restClient.authenticateUser(adminTenantUser1).withWorkflowAPI().usingProcess(networkProcess1)
.deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.NO_CONTENT);
restClient.withWorkflowAPI().usingProcess(networkProcess1).getProcessVariables()
.assertThat()
.entriesListDoesNotContain("name", variableModel.getName());
}
@TestRail(section = { TestGroup.REST_API, TestGroup.PROCESSES, TestGroup.NETWORKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that admin from different network is not able to delete network process variables")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.PROCESSES, TestGroup.FULL, TestGroup.NETWORKS })
public void deleteProcessVariablesWithAdminFromDifferentNetwork() throws Exception
{
UserModel adminTenantUser1 = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser).usingTenant().createTenant(adminTenantUser1);
UserModel tenantUser1 = dataUser.usingUser(adminTenantUser1).createUserWithTenant("uTenant1");
RestProcessModel processModel = restClient.authenticateUser(adminTenantUser1).withWorkflowAPI()
.addProcess("activitiAdhoc", tenantUser1, false, Priority.Normal);
variableModel = RestProcessVariableModel.getRandomProcessVariableModel("d:text");
RestProcessModel networkProcess1 = restClient.authenticateUser(tenantUser1).withWorkflowAPI()
.getProcesses().getProcessModelByProcessDefId(processModel.getId());
restClient.withWorkflowAPI().usingProcess(networkProcess1).addProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.CREATED);
restClient.authenticateUser(adminUser).withWorkflowAPI().usingProcess(networkProcess1)
.deleteProcessVariable(variableModel);
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN);
restClient.assertLastError().containsSummary(RestErrorModel.PROCESS_RUNNING_IN_ANOTHER_TENANT)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.containsErrorKey(RestErrorModel.PROCESS_RUNNING_IN_ANOTHER_TENANT)
.stackTraceIs(RestErrorModel.STACKTRACE);
restClient.authenticateUser(tenantUser1).withWorkflowAPI().usingProcess(networkProcess1).getProcessVariables().assertThat()
.entriesListContains("name", variableModel.getName());
}
}
@@ -0,0 +1,166 @@
package org.alfresco.rest.workflow.tasks;
import org.alfresco.dataprep.CMISUtil;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.model.*;
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;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* Created by Claudia Agache on 2/3/2017.
*/
public class GetTaskFormModelFullTests extends RestTest
{
UserModel userModel, adminUser;
SiteModel siteModel;
FileModel fileModel;
TaskModel taskModel;
RestFormModelsCollection returnedCollection;
@BeforeClass(alwaysRun=true)
public void dataPreparation() throws Exception
{
adminUser = dataUser.getAdminUser();
userModel = dataUser.createRandomTestUser();
siteModel = dataSite.usingUser(userModel).createPublicRandomSite();
fileModel = dataContent.usingSite(siteModel).createContent(CMISUtil.DocumentType.TEXT_PLAIN);
taskModel = dataWorkflow.usingUser(userModel).usingSite(siteModel).usingResource(fileModel).createNewTaskAndAssignTo(userModel);
}
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS },
executionType = ExecutionType.REGRESSION, description = "Verify admin user gets all task form models with properties parameter applied and response is successful (200)")
public void adminGetsTaskFormModelsWithPropertiesParameter() throws Exception
{
returnedCollection = restClient.authenticateUser(adminUser).withParams("properties=qualifiedName,required").withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.OK);
returnedCollection.assertThat().entriesListIsNotEmpty();
returnedCollection.getOneRandomEntry().onModel()
.assertThat()
.field("qualifiedName").isNotEmpty().and()
.field("required").isNotEmpty().and()
.field("dataType").isNull().and()
.field("name").isNull().and()
.field("title").isNull().and()
.field("defaultValue").isNull().and()
.field("allowedValues").isNull().and()
.fieldsCount().is(2);
}
@Bug(id = "MNT-17438")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify admin gets task form model with valid skipCount parameter applied using REST API and status code is OK (200)")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void getTaskFormModelWithValidSkipCount() throws Exception
{
returnedCollection = restClient.authenticateUser(adminUser)
.withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.OK);
RestFormModel firstTaskFormModel = returnedCollection.getEntries().get(0).onModel();
RestFormModel secondTaskFormModel = returnedCollection.getEntries().get(1).onModel();
RestFormModelsCollection formModelsWithSkipCount = restClient.withParams("skipCount=2").withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.OK);
formModelsWithSkipCount
.assertThat().entriesListDoesNotContain("name", firstTaskFormModel.getName())
.assertThat().entriesListDoesNotContain("name", secondTaskFormModel.getName())
.assertThat().entriesListCountIs(returnedCollection.getEntries().size()-2);
formModelsWithSkipCount.assertThat().paginationField("skipCount").is("2");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify admin doesn't get task form model with negative skipCount parameter applied using REST API")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void getTaskFormModelWithNegativeSkipCount() throws Exception
{
restClient.authenticateUser(adminUser).withParams("skipCount=-1").withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsSummary(RestErrorModel.NEGATIVE_VALUES_SKIPCOUNT)
.containsErrorKey(RestErrorModel.NEGATIVE_VALUES_SKIPCOUNT)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE)
.statusCodeIs(HttpStatus.BAD_REQUEST);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify admin doesn't get task form model with non numeric skipCount parameter applied using REST API")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void getTaskFormModelWithNonNumericSkipCount() throws Exception
{
restClient.authenticateUser(adminUser).withParams("skipCount=A").withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsSummary(String.format(RestErrorModel.INVALID_SKIPCOUNT, "A"));
}
@Bug(id = "MNT-17438")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify admin gets task form model with valid maxItems parameter applied using REST API and status code is OK (200)")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void getTaskFormModelWithValidMaxItems() throws Exception
{
returnedCollection = restClient.authenticateUser(adminUser)
.withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.OK);
RestFormModel firstTaskFormModel = returnedCollection.getEntries().get(0).onModel();
RestFormModel secondTaskFormModel = returnedCollection.getEntries().get(1).onModel();
RestFormModelsCollection formModelsWithMaxItems = restClient.withParams("maxItems=2").withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.OK);
formModelsWithMaxItems
.assertThat().entriesListContains("name", firstTaskFormModel.getName())
.assertThat().entriesListContains("name", secondTaskFormModel.getName())
.assertThat().entriesListCountIs(2);
formModelsWithMaxItems.assertThat().paginationField("maxItems").is("2");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify admin doesn't get task form model with negative maxItems parameter applied using REST API")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void getTaskFormModelWithNegativeMaxItems() throws Exception
{
restClient.authenticateUser(adminUser).withParams("maxItems=-1").withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsSummary(RestErrorModel.ONLY_POSITIVE_VALUES_MAXITEMS)
.containsErrorKey(RestErrorModel.ONLY_POSITIVE_VALUES_MAXITEMS)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE)
.statusCodeIs(HttpStatus.BAD_REQUEST);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify admin doesn't get task form model with non numeric maxItems parameter applied using REST API")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void getTaskFormModelWithNonNumericMaxItems() throws Exception
{
restClient.authenticateUser(adminUser).withParams("maxItems=A").withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsSummary(String.format(RestErrorModel.INVALID_MAXITEMS, "A"));
}
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL, TestGroup.NETWORKS })
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS },
executionType = ExecutionType.REGRESSION, description = "Verify network admin user gets all task form models inside his network with Rest API and response is successful (200)")
public void networkAdminGetsTaskFormModels() throws Exception
{
UserModel adminTenantUser = UserModel.getAdminTenantUser();
restClient.authenticateUser(adminUser).usingTenant().createTenant(adminTenantUser);
UserModel tenantUser = dataUser.usingUser(adminTenantUser).createUserWithTenant("uTenant1");
RestProcessModel networkProcess = restClient.authenticateUser(adminTenantUser).withWorkflowAPI()
.addProcess("activitiReview", tenantUser, false, CMISUtil.Priority.High);
RestTaskModel networkTask = restClient.authenticateUser(adminTenantUser).withWorkflowAPI()
.usingProcess(networkProcess).getProcessTasks().getOneRandomEntry().onModel();
restClient.authenticateUser(adminUser).withWorkflowAPI().usingTask(networkTask).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError().containsSummary(RestErrorModel.PERMISSION_WAS_DENIED);
returnedCollection = restClient.authenticateUser(adminTenantUser).withWorkflowAPI().usingTask(networkTask).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.OK);
returnedCollection.assertThat().entriesListIsNotEmpty();
}
}
@@ -40,8 +40,7 @@ public class GetTaskFormModelSanityTests extends RestTest
executionType = ExecutionType.SANITY, description = "Verify admin user gets all task form models with Rest API and response is successful (200)")
public void adminGetsTaskFormModels() throws Exception
{
restClient.authenticateUser(dataUser.getAdminUser());
returnedCollection = restClient.withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
returnedCollection = restClient.authenticateUser(dataUser.getAdminUser()).withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.OK);
returnedCollection.assertThat().entriesListIsNotEmpty();
@@ -62,8 +61,6 @@ public class GetTaskFormModelSanityTests extends RestTest
{
returnedCollection.assertThat().entriesListContains("qualifiedName", formQualifiedName);
}
restClient.assertStatusCodeIs(HttpStatus.OK);
}
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.SANITY })
@@ -71,8 +68,7 @@ public class GetTaskFormModelSanityTests extends RestTest
executionType = ExecutionType.SANITY, description = "Verify user involved in task gets all the task form models with Rest API and response is successful (200)")
public void involvedUserGetsTaskFormModels() throws Exception
{
restClient.authenticateUser(userModel);
returnedCollection = restClient.withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
returnedCollection = restClient.authenticateUser(userModel).withWorkflowAPI().usingTask(taskModel).getTaskFormModel();
restClient.assertStatusCodeIs(HttpStatus.OK);
returnedCollection.assertThat().entriesListIsNotEmpty();
}
@@ -386,8 +386,8 @@ public class UpdateTaskFullTestsBulk1 extends RestTest
restTaskModel = restClient.authenticateUser(owner)
.withParams("select=state,assignee").withWorkflowAPI().usingTask(taskModel).updateTask("claimed");
restClient.assertStatusCodeIs(HttpStatus.CONFLICT).assertLastError()
.containsErrorKey(RestErrorModel.TAS_ALREADY_CLAIMED)
.containsSummary(RestErrorModel.TAS_ALREADY_CLAIMED)
.containsErrorKey(RestErrorModel.TASK_ALREADY_CLAIMED)
.containsSummary(RestErrorModel.TASK_ALREADY_CLAIMED)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@@ -0,0 +1,260 @@
package org.alfresco.rest.workflow.tasks;
import javax.json.JsonObject;
import org.alfresco.dataprep.CMISUtil.DocumentType;
import org.alfresco.rest.RestTest;
import org.alfresco.rest.core.JsonBodyGenerator;
import org.alfresco.rest.model.RestErrorModel;
import org.alfresco.rest.model.RestTaskModel;
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.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class UpdateTaskFullTestsBulk2 extends RestTest
{
private UserModel userModel;
private SiteModel siteModel;
private FileModel fileModel;
private UserModel assigneeUser;
private TaskModel taskModel;
private RestTaskModel restTaskModel;
private UserModel adminUser;
@BeforeClass(alwaysRun = true)
public void dataPreparation() throws Exception
{
adminUser = dataUser.getAdminUser();
userModel = dataUser.createRandomTestUser();
siteModel = dataSite.usingUser(adminUser).createPublicRandomSite();
fileModel = dataContent.usingSite(siteModel).createContent(DocumentType.TEXT_PLAIN);
assigneeUser = dataUser.createRandomTestUser();
}
@BeforeMethod(alwaysRun = true)
public void createTask() throws Exception
{
taskModel = dataWorkflow.usingUser(userModel).usingSite(siteModel).usingResource(fileModel).createNewTaskAndAssignTo(assigneeUser);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from unclaimed to claimed")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCanUpdateTaskFromUnclaimedToClaimed() throws Exception
{
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("unclaimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("unclaimed");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("claimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("claimed");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from unclaimed to delegated")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCanUpdateTaskFromUnclaimedToDelegated() throws Exception
{
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("unclaimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("unclaimed");
JsonObject inputJson = JsonBodyGenerator.defineJSON().add("state", "delegated").add("assignee", assigneeUser.getUsername()).build();
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state,assignee").withWorkflowAPI().usingTask(taskModel).updateTask(inputJson);
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("delegated");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from unclaimed to resolved")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCanUpdateTaskFromUnclaimedToResolved() throws Exception
{
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("unclaimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("unclaimed");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("resolved");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("resolved");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from unclaimed to unclaimed")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCanUpdateTaskFromUnclaimedToUnclaimed() throws Exception
{
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("unclaimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("unclaimed");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("unclaimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("unclaimed");
}
@Bug(id = "REPO-1982")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from delegated to unclaimed")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCanUpdateTaskFromDelegatedToUnclaimed() throws Exception
{
JsonObject inputJson = JsonBodyGenerator.defineJSON().add("state", "delegated").add("assignee", assigneeUser.getUsername()).build();
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state,assignee").withWorkflowAPI().usingTask(taskModel).updateTask(inputJson);
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("delegated");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("unclaimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("unclaimed");
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task cannot be updated from delegated to claimed since it is already claimed")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCannotUpdateTaskFromDelegatedToClaimed() throws Exception
{
JsonObject inputJson = JsonBodyGenerator.defineJSON().add("state", "delegated").add("assignee", assigneeUser.getUsername()).build();
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state,assignee").withWorkflowAPI().usingTask(taskModel).updateTask(inputJson);
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("delegated");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("claimed");
restClient.assertStatusCodeIs(HttpStatus.CONFLICT).assertLastError()
.containsErrorKey(RestErrorModel.TASK_ALREADY_CLAIMED)
.containsSummary(RestErrorModel.TASK_ALREADY_CLAIMED)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@Bug(id = "REPO-1924")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from delegated to completed")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCanUpdateTaskFromDelegatedToCompleted() throws Exception
{
JsonObject inputJson = JsonBodyGenerator.defineJSON().add("state", "delegated").add("assignee", assigneeUser.getUsername()).build();
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state,assignee").withWorkflowAPI().usingTask(taskModel).updateTask(inputJson);
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("delegated");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("completed");
restClient.assertStatusCodeIs(HttpStatus.UNPROCESSABLE_ENTITY).assertLastError()
.containsErrorKey(RestErrorModel.API_DEFAULT_ERRORKEY)
.containsSummary(RestErrorModel.DELEGATED_TASK_CAN_NOT_BE_COMPLETED)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from delegated to resolved")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCanUpdateTaskFromDelegatedToResolved() throws Exception
{
JsonObject inputJson = JsonBodyGenerator.defineJSON().add("state", "delegated").add("assignee", assigneeUser.getUsername()).build();
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state,assignee").withWorkflowAPI().usingTask(taskModel).updateTask(inputJson);
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("delegated");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("resolved");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("resolved");
}
@Bug(id = "REPO-1982")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from resolved to unclaimed")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCanUpdateTaskFromResolvedToUnclaimed() throws Exception
{
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("resolved");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("unclaimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("resolved");
}
@Bug(id = "REPO-1982")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task cannot be updated from resolved to claimed")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void updateTaskFromResolvedToClaimed() throws Exception
{
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("resolved");
// assignee tries to claim the task
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("claimed");
restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN).assertLastError()
.containsErrorKey(RestErrorModel.PERMISSION_DENIED_ERRORKEY)
.containsSummary(RestErrorModel.PERMISSION_WAS_DENIED)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
// owner tries to claim the task
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("claimed");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("resolved");
}
@Bug(id = "REPO-1982")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from resolved to delegated")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCannotUpdateTaskFromResolvedToDelegated() throws Exception
{
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("resolved");
JsonObject inputJson = JsonBodyGenerator.defineJSON().add("state", "delegated").add("assignee", assigneeUser.getUsername()).build();
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state,assignee").withWorkflowAPI().usingTask(taskModel).updateTask(inputJson);
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("delegated");
}
@Bug(id = "REPO-1982")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Verify that task can be updated from resolved to resolved")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void userCannotUpdateTaskFromResolvedToResolved() throws Exception
{
restTaskModel = restClient.authenticateUser(assigneeUser).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("resolved");
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask("resolved");
restClient.assertStatusCodeIs(HttpStatus.OK);
restTaskModel.assertThat().field("id").is(taskModel.getId()).and().field("state").is("resolved");
}
@Bug(id = "REPO-1982")
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Update task by providing empty select value")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void updateTaskByProvidingEmptySelectValue() throws Exception
{
restTaskModel = restClient.authenticateUser(userModel).withParams("select=").withWorkflowAPI().usingTask(taskModel).updateTask("resolved");
restClient.assertStatusCodeIs(HttpStatus.BAD_REQUEST).assertLastError()
.containsErrorKey(RestErrorModel.INVALID_SELECT_ERRORKEY)
.containsSummary(RestErrorModel.INVALID_SELECT)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
@TestRail(section = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS }, executionType = ExecutionType.REGRESSION,
description = "Update task by providing empty state value")
@Test(groups = { TestGroup.REST_API, TestGroup.WORKFLOW, TestGroup.TASKS, TestGroup.FULL })
public void updateTaskByProvidingEmptyStateValue() throws Exception
{
restTaskModel = restClient.authenticateUser(userModel).withParams("select=state").withWorkflowAPI().usingTask(taskModel).updateTask(" ");
restClient.assertStatusCodeIs(HttpStatus.METHOD_NOT_ALLOWED).assertLastError()
.containsErrorKey(RestErrorModel.PUT_EMPTY_ARGUMENT)
.containsSummary(RestErrorModel.PUT_EMPTY_ARGUMENT)
.descriptionURLIs(RestErrorModel.RESTAPIEXPLORER)
.stackTraceIs(RestErrorModel.STACKTRACE);
}
}