TSK-1257: added one more test

This commit is contained in:
Mustapha Zorgati 2020-06-07 15:43:15 +02:00
parent 938a5112aa
commit 89641ecdf9
3 changed files with 63 additions and 25 deletions

View File

@ -20,7 +20,7 @@ import pro.taskana.simplehistory.impl.HistoryEventImpl;
import pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl; import pro.taskana.simplehistory.impl.SimpleHistoryServiceImpl;
/** Set up database for tests. */ /** Set up database for tests. */
public class AbstractAccTest { public abstract class AbstractAccTest {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAccTest.class); private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAccTest.class);
private static final int POOL_TIME_TO_WAIT = 50; private static final int POOL_TIME_TO_WAIT = 50;

View File

@ -45,24 +45,18 @@ import pro.taskana.common.internal.configuration.SecurityVerifier;
*/ */
public class TaskanaEngineConfiguration { public class TaskanaEngineConfiguration {
protected static final String TASKANA_SCHEMA_VERSION =
"3.0.0"; // must match the VERSION value in table
private static final Logger LOGGER = LoggerFactory.getLogger(TaskanaEngineConfiguration.class); private static final Logger LOGGER = LoggerFactory.getLogger(TaskanaEngineConfiguration.class);
private static final String USER_NAME = "sa";
private static final String USER_PASSWORD = "sa"; // must match the VERSION value in table
private static final String JDBC_H2_MEM_TASKANA = private static final String TASKANA_SCHEMA_VERSION = "3.0.0";
"jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;"
+ "INIT=CREATE SCHEMA IF NOT EXISTS TASKANA\\;"
+ "SET COLLATION DEFAULT_de_DE ";
private static final String H2_DRIVER = "org.h2.Driver";
private static final String TASKANA_PROPERTIES = "/taskana.properties"; private static final String TASKANA_PROPERTIES = "/taskana.properties";
private static final String TASKANA_PROPERTY_SEPARATOR = "|"; private static final String TASKANA_PROPERTY_SEPARATOR = "|";
private static final String TASKANA_JOB_BATCHSIZE = "taskana.jobs.batchSize"; private static final String TASKANA_JOB_BATCH_SIZE = "taskana.jobs.batchSize";
private static final String TASKANA_JOB_RETRIES = "taskana.jobs.maxRetries"; private static final String TASKANA_JOB_RETRIES = "taskana.jobs.maxRetries";
private static final String TASKANA_JOB_CLEANUP_RUN_EVERY = "taskana.jobs.cleanup.runEvery"; private static final String TASKANA_JOB_CLEANUP_RUN_EVERY = "taskana.jobs.cleanup.runEvery";
private static final String TASKANA_JOB_CLEANUP_FIRST_RUN = "taskana.jobs.cleanup.firstRunAt"; private static final String TASKANA_JOB_CLEANUP_FIRST_RUN = "taskana.jobs.cleanup.firstRunAt";
private static final String TASKANA_JOB_CLEANUP_MINIMUM_AGE = "taskana.jobs.cleanup.minimumAge"; private static final String TASKANA_JOB_CLEANUP_MINIMUM_AGE = "taskana.jobs.cleanup.minimumAge";
private static final String TASKANA_JOB_TASK_CLEANUP_ALL_COMPLETED_SAME_PARENTE_BUSINESS = private static final String TASKANA_JOB_TASK_CLEANUP_ALL_COMPLETED_SAME_PARENT_BUSINESS =
"taskana.jobs.cleanup.allCompletedSameParentBusiness"; "taskana.jobs.cleanup.allCompletedSameParentBusiness";
private static final String TASKANA_DOMAINS_PROPERTY = "taskana.domains"; private static final String TASKANA_DOMAINS_PROPERTY = "taskana.domains";
private static final String TASKANA_CLASSIFICATION_TYPES_PROPERTY = private static final String TASKANA_CLASSIFICATION_TYPES_PROPERTY =
@ -72,11 +66,11 @@ public class TaskanaEngineConfiguration {
private static final String TASKANA_GERMAN_HOLIDAYS_ENABLED = "taskana.german.holidays.enabled"; private static final String TASKANA_GERMAN_HOLIDAYS_ENABLED = "taskana.german.holidays.enabled";
private static final String TASKANA_GERMAN_HOLIDAYS_CORPUS_CHRISTI_ENABLED = private static final String TASKANA_GERMAN_HOLIDAYS_CORPUS_CHRISTI_ENABLED =
"taskana.german.holidays.corpus-christi.enabled"; "taskana.german.holidays.corpus-christi.enabled";
private static final String TASKANA_CUSTOM_HOLIDAY = "taskana.custom.holidays";
private static final String TASKANA_CUSTOM_HOLIDAY_DAY_MONTH_SEPARATOR = ".";
// TASKANA_SCHEMA_VERSION // TASKANA_SCHEMA_VERSION
private static final String DEFAULT_SCHEMA_NAME = "TASKANA"; private static final String DEFAULT_SCHEMA_NAME = "TASKANA";
private static final String TASKANA_CUSTOM_HOLIDAY = "taskana.custom.holidays";
private static final String TASKANA_CUSTOM_HOLIDAY_DAY_MONTH_SEPERATOR = ".";
private final List<CustomHoliday> customHolidays = new ArrayList<>(); private final List<CustomHoliday> customHolidays = new ArrayList<>();
// Taskana properties file // Taskana properties file
protected String propertiesFileName = TASKANA_PROPERTIES; protected String propertiesFileName = TASKANA_PROPERTIES;
@ -183,12 +177,20 @@ public class TaskanaEngineConfiguration {
} }
public static DataSource createDefaultDataSource() { public static DataSource createDefaultDataSource() {
LOGGER.info( String driverClass = "org.h2.Driver";
"No datasource is provided. A inmemory db is used: " String jdbcUrl =
+ "'org.h2.Driver', 'jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;" "jdbc:h2:mem:taskana;IGNORECASE=TRUE;LOCK_MODE=0;"
+ "INIT=CREATE SCHEMA IF NOT EXISTS TASKANA\\;" + "INIT=CREATE SCHEMA IF NOT EXISTS TASKANA\\;"
+ "SET COLLATION DEFAULT_de_DE', 'sa', 'sa'"); + "SET COLLATION DEFAULT_de_DE";
return createDatasource(H2_DRIVER, JDBC_H2_MEM_TASKANA, USER_NAME, USER_PASSWORD); String username = "sa";
String password = "sa";
LOGGER.info(
"No datasource is provided. An in-memory db is used: " + "'{}', '{}', '{}', '{}'",
driverClass,
jdbcUrl,
username,
password);
return createDatasource(driverClass, jdbcUrl, username, password);
} }
/** /**
@ -381,7 +383,7 @@ public class TaskanaEngineConfiguration {
} }
private void initJobParameters(Properties props) { private void initJobParameters(Properties props) {
String jobBatchSizeProperty = props.getProperty(TASKANA_JOB_BATCHSIZE); String jobBatchSizeProperty = props.getProperty(TASKANA_JOB_BATCH_SIZE);
if (jobBatchSizeProperty != null && !jobBatchSizeProperty.isEmpty()) { if (jobBatchSizeProperty != null && !jobBatchSizeProperty.isEmpty()) {
try { try {
jobBatchSize = Integer.parseInt(jobBatchSizeProperty); jobBatchSize = Integer.parseInt(jobBatchSizeProperty);
@ -442,7 +444,7 @@ public class TaskanaEngineConfiguration {
} }
String taskCleanupJobAllCompletedSameParentBusinessProperty = String taskCleanupJobAllCompletedSameParentBusinessProperty =
props.getProperty(TASKANA_JOB_TASK_CLEANUP_ALL_COMPLETED_SAME_PARENTE_BUSINESS); props.getProperty(TASKANA_JOB_TASK_CLEANUP_ALL_COMPLETED_SAME_PARENT_BUSINESS);
if (taskCleanupJobAllCompletedSameParentBusinessProperty != null if (taskCleanupJobAllCompletedSameParentBusinessProperty != null
&& !taskCleanupJobAllCompletedSameParentBusinessProperty.isEmpty()) { && !taskCleanupJobAllCompletedSameParentBusinessProperty.isEmpty()) {
try { try {
@ -555,9 +557,7 @@ public class TaskanaEngineConfiguration {
ensureRoleMapIsFullyInitialized(); ensureRoleMapIsFullyInitialized();
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
roleMap.forEach( roleMap.forEach((k, v) -> LOGGER.debug("Found Taskana RoleConfig {} : {} ", k, v));
(k, v) ->
LOGGER.debug("Found Taskana RoleConfig {} : {} ", k, v));
} }
} }
@ -579,7 +579,7 @@ public class TaskanaEngineConfiguration {
private CustomHoliday createCustomHolidayFromPropsEntry(String customHolidayEntry) private CustomHoliday createCustomHolidayFromPropsEntry(String customHolidayEntry)
throws WrongCustomHolidayFormatException { throws WrongCustomHolidayFormatException {
String[] parts = String[] parts =
customHolidayEntry.split(Pattern.quote(TASKANA_CUSTOM_HOLIDAY_DAY_MONTH_SEPERATOR)); customHolidayEntry.split(Pattern.quote(TASKANA_CUSTOM_HOLIDAY_DAY_MONTH_SEPARATOR));
if (parts.length == 2) { if (parts.length == 2) {
return CustomHoliday.of(Integer.valueOf(parts[0]), Integer.valueOf(parts[1])); return CustomHoliday.of(Integer.valueOf(parts[0]), Integer.valueOf(parts[1]));
} }

View File

@ -579,4 +579,42 @@ class CompleteTaskAccTest extends AbstractAccTest {
.isAfterOrEqualTo(beforeBulkComplete); .isAfterOrEqualTo(beforeBulkComplete);
assertThat(task.getOwner()).isEqualTo("user-1-2"); assertThat(task.getOwner()).isEqualTo("user-1-2");
} }
@WithAccessId(user = "user-3-2", groups = "group-2")
@Test
void should_OnlyClaimTasksWhichAreNotClaimed_When_BulkForceCompletingTasks() throws Exception {
String id1 = "TKI:000000000000000000000000000000000043"; // task is already claimed
String id2 = "TKI:000000000000000000000000000000000044"; // task is ready
List<String> taskIdList = Arrays.asList(id1, id2);
Task task = TASK_SERVICE.getTask(id2);
assertThat(task.getState()).isSameAs(TaskState.READY);
assertThat(task.getClaimed()).isNull();
final Instant beforeBulkComplete = Instant.now();
BulkOperationResults<String, TaskanaException> results =
TASK_SERVICE.forceCompleteTasks(taskIdList);
assertThat(results.containsErrors()).isFalse();
task = TASK_SERVICE.getTask(id1);
assertThat(task.getState()).isEqualTo(TaskState.COMPLETED);
// do not update claimed timestamp for already claimed task
assertThat(task.getClaimed()).isBefore(beforeBulkComplete);
assertThat(task.getCompleted())
.isEqualTo(task.getModified())
.isAfterOrEqualTo(beforeBulkComplete);
assertThat(task.getOwner()).isEqualTo("user-3-2");
task = TASK_SERVICE.getTask(id2);
assertThat(task.getState()).isEqualTo(TaskState.COMPLETED);
assertThat(task.getCompleted())
.isEqualTo(task.getClaimed())
.isEqualTo(task.getModified())
.isAfterOrEqualTo(beforeBulkComplete);
assertThat(task.getOwner()).isEqualTo("user-3-2");
}
} }