TSK-365: added monitor role.

This commit is contained in:
Holger Hagen 2018-04-27 13:56:23 +02:00 committed by Martin Rojas Miguel Angel
parent 44ec413d94
commit b2bef9f36d
19 changed files with 534 additions and 142 deletions

View File

@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.SelectedItem; import pro.taskana.impl.SelectedItem;
import pro.taskana.impl.report.impl.CategoryReport; import pro.taskana.impl.report.impl.CategoryReport;
import pro.taskana.impl.report.impl.ClassificationReport; import pro.taskana.impl.report.impl.ClassificationReport;
@ -48,7 +49,7 @@ public interface TaskMonitorService {
*/ */
WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states, WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues) List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link WorkbasketLevelReport} grouped by workbaskets. For each workbasket the report contains the total * Returns a {@link WorkbasketLevelReport} grouped by workbaskets. For each workbasket the report contains the total
@ -87,7 +88,7 @@ public interface TaskMonitorService {
*/ */
WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states, WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException; List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link WorkbasketLevelReport} grouped by workbaskets. For each workbasket the report contains the total * Returns a {@link WorkbasketLevelReport} grouped by workbaskets. For each workbasket the report contains the total
@ -130,7 +131,7 @@ public interface TaskMonitorService {
WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states, WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link CategoryReport} grouped by categories. The report contains the total numbers of tasks of the * Returns a {@link CategoryReport} grouped by categories. The report contains the total numbers of tasks of the
@ -157,7 +158,8 @@ public interface TaskMonitorService {
* thrown if DaysToWorkingDaysConverter is initialized with null * thrown if DaysToWorkingDaysConverter is initialized with null
*/ */
CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories, CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories,
List<String> domains, CustomField customField, List<String> customFieldValues) throws InvalidArgumentException; List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link CategoryReport} grouped by categories. For each category the report contains the total number of * Returns a {@link CategoryReport} grouped by categories. For each category the report contains the total number of
@ -196,7 +198,7 @@ public interface TaskMonitorService {
*/ */
CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories, CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories,
List<String> domains, CustomField customField, List<String> customFieldValues, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException; List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link CategoryReport} grouped by categories. For each category the report contains the total number of * Returns a {@link CategoryReport} grouped by categories. For each category the report contains the total number of
@ -239,7 +241,7 @@ public interface TaskMonitorService {
CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories, CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories,
List<String> domains, CustomField customField, List<String> customFieldValues, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link ClassificationReport} grouped by classifications. The report contains the total numbers of tasks * Returns a {@link ClassificationReport} grouped by classifications. The report contains the total numbers of tasks
@ -267,7 +269,7 @@ public interface TaskMonitorService {
*/ */
ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states, ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues) List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link ClassificationReport} grouped by classifications. For each classification the report contains * Returns a {@link ClassificationReport} grouped by classifications. For each classification the report contains
@ -306,7 +308,7 @@ public interface TaskMonitorService {
*/ */
ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states, ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException; List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link ClassificationReport} grouped by classification. For each classification the report contains the * Returns a {@link ClassificationReport} grouped by classification. For each classification the report contains the
@ -349,7 +351,7 @@ public interface TaskMonitorService {
ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states, ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link DetailedClassificationReport}. The report contains the total numbers of tasks of the respective * Returns a {@link DetailedClassificationReport}. The report contains the total numbers of tasks of the respective
@ -378,7 +380,7 @@ public interface TaskMonitorService {
*/ */
DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, List<TaskState> states, DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues) List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link DetailedClassificationReport}. For each classification the report contains the total number of * Returns a {@link DetailedClassificationReport}. For each classification the report contains the total number of
@ -418,7 +420,7 @@ public interface TaskMonitorService {
*/ */
DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, List<TaskState> states, DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException; List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link DetailedClassificationReport}. For each classification the report contains the total number of * Returns a {@link DetailedClassificationReport}. For each classification the report contains the total number of
@ -462,7 +464,7 @@ public interface TaskMonitorService {
DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, List<TaskState> states, DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link CustomFieldValueReport} grouped by the value of a certain {@link CustomField}. The report * Returns a {@link CustomFieldValueReport} grouped by the value of a certain {@link CustomField}. The report
@ -489,7 +491,7 @@ public interface TaskMonitorService {
*/ */
CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states, CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues) List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link CustomFieldValueReport} grouped by the value of a certain {@link CustomField}. For each value of * Returns a {@link CustomFieldValueReport} grouped by the value of a certain {@link CustomField}. For each value of
@ -527,7 +529,7 @@ public interface TaskMonitorService {
*/ */
CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states, CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException; List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a {@link CustomFieldValueReport} grouped by the value of a certain {@link CustomField}. For each value of * Returns a {@link CustomFieldValueReport} grouped by the value of a certain {@link CustomField}. For each value of
@ -570,7 +572,7 @@ public interface TaskMonitorService {
List<String> categories, List<String> categories,
List<String> domains, CustomField customField, List<String> customFieldValues, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a list of all task ids in the selected items of a {@link pro.taskana.impl.report.Report}. By default the * Returns a list of all task ids in the selected items of a {@link pro.taskana.impl.report.Report}. By default the
@ -587,10 +589,6 @@ public interface TaskMonitorService {
* a list of categories to filter by categories. To omit this filter, use null for this parameter * a list of categories to filter by categories. To omit this filter, use null for this parameter
* @param domains * @param domains
* a list of domains to filter by domains. To omit this filter, use null for this parameter * a list of domains to filter by domains. To omit this filter, use null for this parameter
* @param classificationKeys
* a list of task classification key to filter. To omit this filter, use null for this parameter
* @param excludedClassificationKeys
* a list of task classification key to exclude. To omit this filter, use null for this parameter
* @param customField * @param customField
* a custom field to filter by the values of the custom field. To omit this filter, use null for this * a custom field to filter by the values of the custom field. To omit this filter, use null for this
* parameter * parameter
@ -620,7 +618,7 @@ public interface TaskMonitorService {
List<String> excludedClassificationKeys, CustomField customField, List<String> customFieldValues, List<String> excludedClassificationKeys, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays, List<SelectedItem> selectedItems, List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays, List<SelectedItem> selectedItems,
String dimension) String dimension)
throws InvalidArgumentException; throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Returns a list of distinct custom attribute values for the selection from the entire task pool. * Returns a list of distinct custom attribute values for the selection from the entire task pool.
@ -650,14 +648,14 @@ public interface TaskMonitorService {
List<String> getCustomAttributeValuesForReport(List<String> workbasketIds, List<TaskState> states, List<String> getCustomAttributeValuesForReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, List<String> classificationIds, List<String> categories, List<String> domains, List<String> classificationIds,
List<String> excludedClassificationIds, Map<String, String> customAttributeFilter, List<String> excludedClassificationIds, Map<String, String> customAttributeFilter,
String customAttributeName) throws InvalidArgumentException; String customAttributeName) throws InvalidArgumentException, NotAuthorizedException;
/** /**
* Overloaded method for {@link #getTaskStatusReport(List, List)}. This method omits all filters. * Overloaded method for {@link #getTaskStatusReport(List, List)}. This method omits all filters.
* *
* @return the {@link TaskStatusReport} * @return the {@link TaskStatusReport}
*/ */
TaskStatusReport getTaskStatusReport(); TaskStatusReport getTaskStatusReport() throws NotAuthorizedException;
/** /**
* Overloaded method for {@link #getTaskStatusReport(List, List)}. This method applies a domain filter and omits the * Overloaded method for {@link #getTaskStatusReport(List, List)}. This method applies a domain filter and omits the
@ -667,7 +665,7 @@ public interface TaskMonitorService {
* a list of domains to filter by domains. To omit this filter, use null for this parameter * a list of domains to filter by domains. To omit this filter, use null for this parameter
* @return the {@link TaskStatusReport} * @return the {@link TaskStatusReport}
*/ */
TaskStatusReport getTaskStatusReport(List<String> domains); TaskStatusReport getTaskStatusReport(List<String> domains) throws NotAuthorizedException;
/** /**
* Returns a {@link TaskStatusReport}. For each domain the report contains the total number of tasks, clustered in * Returns a {@link TaskStatusReport}. For each domain the report contains the total number of tasks, clustered in
@ -680,6 +678,6 @@ public interface TaskMonitorService {
* a list of domains to filter by domains. To omit this filter, use null for this parameter * a list of domains to filter by domains. To omit this filter, use null for this parameter
* @return the {@link TaskStatusReport} * @return the {@link TaskStatusReport}
*/ */
TaskStatusReport getTaskStatusReport(List<String> domains, List<TaskState> states); TaskStatusReport getTaskStatusReport(List<String> domains, List<TaskState> states) throws NotAuthorizedException;
} }

View File

@ -6,7 +6,8 @@ package pro.taskana;
public enum TaskanaRole { public enum TaskanaRole {
USER("taskana.roles.user"), USER("taskana.roles.user"),
BUSINESS_ADMIN("taskana.roles.businessadmin"), BUSINESS_ADMIN("taskana.roles.businessadmin"),
ADMIN("taskana.roles.admin"); ADMIN("taskana.roles.admin"),
MONITOR("taskana.roles.monitor");
private final String propertyName; private final String propertyName;
@ -21,6 +22,8 @@ public enum TaskanaRole {
return TaskanaRole.BUSINESS_ADMIN; return TaskanaRole.BUSINESS_ADMIN;
} else if (ADMIN.propertyName.equalsIgnoreCase(name)) { } else if (ADMIN.propertyName.equalsIgnoreCase(name)) {
return TaskanaRole.ADMIN; return TaskanaRole.ADMIN;
} else if (MONITOR.propertyName.equalsIgnoreCase(name)) {
return TaskanaRole.MONITOR;
} else { } else {
return null; return null;
} }

View File

@ -11,7 +11,9 @@ import pro.taskana.CustomField;
import pro.taskana.TaskMonitorService; import pro.taskana.TaskMonitorService;
import pro.taskana.TaskState; import pro.taskana.TaskState;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
import pro.taskana.TaskanaRole;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.impl.CategoryReport; import pro.taskana.impl.report.impl.CategoryReport;
import pro.taskana.impl.report.impl.ClassificationReport; import pro.taskana.impl.report.impl.ClassificationReport;
import pro.taskana.impl.report.impl.CustomFieldValueReport; import pro.taskana.impl.report.impl.CustomFieldValueReport;
@ -44,7 +46,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states, public WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues) List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException { throws InvalidArgumentException, NotAuthorizedException {
return getWorkbasketLevelReport(workbasketIds, states, categories, domains, customField, customFieldValues, return getWorkbasketLevelReport(workbasketIds, states, categories, domains, customField, customFieldValues,
Collections.emptyList(), false); Collections.emptyList(), false);
} }
@ -52,7 +54,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states, public WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException { List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException {
return getWorkbasketLevelReport(workbasketIds, states, categories, domains, customField, customFieldValues, return getWorkbasketLevelReport(workbasketIds, states, categories, domains, customField, customFieldValues,
columnHeaders, true); columnHeaders, true);
} }
@ -61,7 +63,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
public WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states, public WorkbasketLevelReport getWorkbasketLevelReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException { throws InvalidArgumentException, NotAuthorizedException {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("entry to getWorkbasketLevelReport(workbasketIds = {}, states = {}, categories = {}, " LOGGER.debug("entry to getWorkbasketLevelReport(workbasketIds = {}, states = {}, categories = {}, "
+ "domains = {}, customField = {}, customFieldValues = {}, columnHeaders = {}, " + "domains = {}, customField = {}, customFieldValues = {}, columnHeaders = {}, "
@ -70,6 +72,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders), LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders),
inWorkingDays); inWorkingDays);
} }
taskanaEngineImpl.checkRoleMembership(TaskanaRole.MONITOR);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();
@ -91,7 +94,8 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories, public CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories,
List<String> domains, CustomField customField, List<String> customFieldValues) throws InvalidArgumentException { List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException, NotAuthorizedException {
return getCategoryReport(workbasketIds, states, categories, domains, customField, customFieldValues, return getCategoryReport(workbasketIds, states, categories, domains, customField, customFieldValues,
Collections.emptyList(), Collections.emptyList(),
false); false);
@ -100,7 +104,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories, public CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories,
List<String> domains, CustomField customField, List<String> customFieldValues, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException { List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException {
return getCategoryReport(workbasketIds, states, categories, domains, customField, customFieldValues, return getCategoryReport(workbasketIds, states, categories, domains, customField, customFieldValues,
columnHeaders, true); columnHeaders, true);
} }
@ -108,7 +112,8 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories, public CategoryReport getCategoryReport(List<String> workbasketIds, List<TaskState> states, List<String> categories,
List<String> domains, CustomField customField, List<String> customFieldValues, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) throws InvalidArgumentException { List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException, NotAuthorizedException {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("entry to getCategoryReport(workbasketIds = {}, states = {}, categories = {}, " LOGGER.debug("entry to getCategoryReport(workbasketIds = {}, states = {}, categories = {}, "
+ "domains = {}, customField = {}, customFieldValues = {}, reportLineItemDefinitions = {}, " + "domains = {}, customField = {}, customFieldValues = {}, reportLineItemDefinitions = {}, "
@ -117,6 +122,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders), LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders),
inWorkingDays); inWorkingDays);
} }
taskanaEngineImpl.checkRoleMembership(TaskanaRole.MONITOR);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();
@ -139,7 +145,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states, public ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues) List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException { throws InvalidArgumentException, NotAuthorizedException {
return getClassificationReport(workbasketIds, states, categories, domains, customField, customFieldValues, return getClassificationReport(workbasketIds, states, categories, domains, customField, customFieldValues,
Collections.emptyList(), false); Collections.emptyList(), false);
} }
@ -147,7 +153,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states, public ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException { List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException {
return getClassificationReport(workbasketIds, states, categories, domains, customField, customFieldValues, return getClassificationReport(workbasketIds, states, categories, domains, customField, customFieldValues,
columnHeaders, true); columnHeaders, true);
} }
@ -156,7 +162,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
public ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states, public ClassificationReport getClassificationReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException { throws InvalidArgumentException, NotAuthorizedException {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("entry to getClassificationReport(workbasketIds = {}, states = {}, categories = {}, " LOGGER.debug("entry to getClassificationReport(workbasketIds = {}, states = {}, categories = {}, "
+ "domains = {}, customField = {}, customFieldValues = {}, columnHeaders = {}, " + "domains = {}, customField = {}, customFieldValues = {}, columnHeaders = {}, "
@ -165,6 +171,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders), LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders),
inWorkingDays); inWorkingDays);
} }
taskanaEngineImpl.checkRoleMembership(TaskanaRole.MONITOR);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();
@ -187,7 +194,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, public DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds,
List<TaskState> states, List<String> categories, List<String> domains, CustomField customField, List<TaskState> states, List<String> categories, List<String> domains, CustomField customField,
List<String> customFieldValues) throws InvalidArgumentException { List<String> customFieldValues) throws InvalidArgumentException, NotAuthorizedException {
return getDetailedClassificationReport(workbasketIds, states, categories, domains, customField, return getDetailedClassificationReport(workbasketIds, states, categories, domains, customField,
customFieldValues, Collections.emptyList(), false); customFieldValues, Collections.emptyList(), false);
} }
@ -196,7 +203,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
public DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, public DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds,
List<TaskState> states, List<String> categories, List<String> domains, CustomField customField, List<TaskState> states, List<String> categories, List<String> domains, CustomField customField,
List<String> customFieldValues, List<TimeIntervalColumnHeader> columnHeaders) List<String> customFieldValues, List<TimeIntervalColumnHeader> columnHeaders)
throws InvalidArgumentException { throws InvalidArgumentException, NotAuthorizedException {
return getDetailedClassificationReport(workbasketIds, states, categories, domains, customField, return getDetailedClassificationReport(workbasketIds, states, categories, domains, customField,
customFieldValues, columnHeaders, true); customFieldValues, columnHeaders, true);
} }
@ -205,7 +212,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
public DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds, public DetailedClassificationReport getDetailedClassificationReport(List<String> workbasketIds,
List<TaskState> states, List<String> categories, List<String> domains, CustomField customField, List<TaskState> states, List<String> categories, List<String> domains, CustomField customField,
List<String> customFieldValues, List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<String> customFieldValues, List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException { throws InvalidArgumentException, NotAuthorizedException {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("entry to getDetailedClassificationReport(workbasketIds = {}, states = {}, " LOGGER.debug("entry to getDetailedClassificationReport(workbasketIds = {}, states = {}, "
@ -215,6 +222,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
LoggerUtils.listToString(domains), customField, LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(domains), customField, LoggerUtils.listToString(customFieldValues),
LoggerUtils.listToString(columnHeaders), inWorkingDays); LoggerUtils.listToString(columnHeaders), inWorkingDays);
} }
taskanaEngineImpl.checkRoleMembership(TaskanaRole.MONITOR);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();
@ -239,7 +247,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states, public CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues) List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues)
throws InvalidArgumentException { throws InvalidArgumentException, NotAuthorizedException {
return getCustomFieldValueReport(workbasketIds, states, categories, domains, customField, customFieldValues, return getCustomFieldValueReport(workbasketIds, states, categories, domains, customField, customFieldValues,
Collections.emptyList(), false); Collections.emptyList(), false);
} }
@ -247,7 +255,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states, public CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException { List<TimeIntervalColumnHeader> columnHeaders) throws InvalidArgumentException, NotAuthorizedException {
return getCustomFieldValueReport(workbasketIds, states, categories, domains, customField, customFieldValues, return getCustomFieldValueReport(workbasketIds, states, categories, domains, customField, customFieldValues,
columnHeaders, true); columnHeaders, true);
} }
@ -256,7 +264,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
public CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states, public CustomFieldValueReport getCustomFieldValueReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues, List<String> categories, List<String> domains, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays) List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays)
throws InvalidArgumentException { throws InvalidArgumentException, NotAuthorizedException {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("entry to getCustomFieldValueReport(workbasketIds = {}, states = {}, categories = {}, " LOGGER.debug("entry to getCustomFieldValueReport(workbasketIds = {}, states = {}, categories = {}, "
+ "domains = {}, customField = {}, customFieldValues = {}, columnHeaders = {}, " + "domains = {}, customField = {}, customFieldValues = {}, columnHeaders = {}, "
@ -265,6 +273,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders), LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders),
inWorkingDays); inWorkingDays);
} }
taskanaEngineImpl.checkRoleMembership(TaskanaRole.MONITOR);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();
@ -292,7 +301,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
public List<String> getCustomAttributeValuesForReport(List<String> workbasketIds, List<TaskState> states, public List<String> getCustomAttributeValuesForReport(List<String> workbasketIds, List<TaskState> states,
List<String> categories, List<String> domains, List<String> classificationIds, List<String> categories, List<String> domains, List<String> classificationIds,
List<String> excludedClassificationIds, Map<String, String> customAttributeFilter, List<String> excludedClassificationIds, Map<String, String> customAttributeFilter,
String customAttributeName) throws InvalidArgumentException { String customAttributeName) throws InvalidArgumentException, NotAuthorizedException {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("entry to getCustomAttributeValuesForReport(workbasketIds = {}, states = {}, " LOGGER.debug("entry to getCustomAttributeValuesForReport(workbasketIds = {}, states = {}, "
+ "categories = {}, domains = {}, classificationIds = {}, excludedClassificationIds = {}, customAttributeName = {})", + "categories = {}, domains = {}, classificationIds = {}, excludedClassificationIds = {}, customAttributeName = {})",
@ -301,6 +310,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
LoggerUtils.listToString(classificationIds), LoggerUtils.listToString(excludedClassificationIds), LoggerUtils.listToString(classificationIds), LoggerUtils.listToString(excludedClassificationIds),
customAttributeName); customAttributeName);
} }
taskanaEngineImpl.checkRoleMembership(TaskanaRole.MONITOR);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();
@ -326,7 +336,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
List<String> categories, List<String> domains, List<String> classificationIds, List<String> categories, List<String> domains, List<String> classificationIds,
List<String> excludedClassificationIds, CustomField customField, List<String> customFieldValues, List<String> excludedClassificationIds, CustomField customField, List<String> customFieldValues,
List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays, List<TimeIntervalColumnHeader> columnHeaders, boolean inWorkingDays,
List<SelectedItem> selectedItems, String dimension) throws InvalidArgumentException { List<SelectedItem> selectedItems, String dimension) throws InvalidArgumentException, NotAuthorizedException {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug("entry to getTaskIdsForSelectedItems(workbasketIds = {}, states = {}, " LOGGER.debug("entry to getTaskIdsForSelectedItems(workbasketIds = {}, states = {}, "
+ "categories = {}, domains = {}, customField = {}, customFieldValues = {}, " + "categories = {}, domains = {}, customField = {}, customFieldValues = {}, "
@ -338,6 +348,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders), LoggerUtils.listToString(customFieldValues), LoggerUtils.listToString(columnHeaders),
inWorkingDays, LoggerUtils.listToString(selectedItems), dimension); inWorkingDays, LoggerUtils.listToString(selectedItems), dimension);
} }
taskanaEngineImpl.checkRoleMembership(TaskanaRole.MONITOR);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();
if (columnHeaders == null) { if (columnHeaders == null) {
@ -371,17 +382,19 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
} }
@Override @Override
public TaskStatusReport getTaskStatusReport() { public TaskStatusReport getTaskStatusReport() throws NotAuthorizedException {
return getTaskStatusReport(null, null); return getTaskStatusReport(null, null);
} }
@Override @Override
public TaskStatusReport getTaskStatusReport(List<String> domains) { public TaskStatusReport getTaskStatusReport(List<String> domains) throws NotAuthorizedException {
return getTaskStatusReport(domains, null); return getTaskStatusReport(domains, null);
} }
@Override @Override
public TaskStatusReport getTaskStatusReport(List<String> domains, List<TaskState> states) { public TaskStatusReport getTaskStatusReport(List<String> domains, List<TaskState> states)
throws NotAuthorizedException {
taskanaEngineImpl.checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
try { try {
taskanaEngineImpl.openConnection(); taskanaEngineImpl.openConnection();

View File

@ -46,6 +46,11 @@ public class TaskanaRoleConfigAccTest extends TaskanaEngineImpl {
assertTrue(businessAdmins.contains("max")); assertTrue(businessAdmins.contains("max"));
assertTrue(businessAdmins.contains("moritz")); assertTrue(businessAdmins.contains("moritz"));
Set<String> monitorAccessIds = getConfiguration().getRoleMap().get(TaskanaRole.MONITOR);
assertTrue(monitorAccessIds.contains("john"));
assertTrue(monitorAccessIds.contains("teamlead_2"));
assertTrue(monitorAccessIds.contains("monitor"));
} }
@Test @Test

View File

@ -16,8 +16,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.slf4j.Logger; import org.junit.runner.RunWith;
import org.slf4j.LoggerFactory;
import pro.taskana.TaskMonitorService; import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
@ -25,15 +24,18 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "classification report" scenarios. * Acceptance test for all "classification report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class GetCustomAttributeValuesForReportAcctest { public class GetCustomAttributeValuesForReportAcctest {
private static final Logger LOGGER = LoggerFactory.getLogger(GetCustomAttributeValuesForReportAcctest.class);
protected static TaskanaEngineConfiguration taskanaEngineConfiguration; protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
protected static TaskanaEngine taskanaEngine; protected static TaskanaEngine taskanaEngine;
@ -56,8 +58,20 @@ public class GetCustomAttributeValuesForReportAcctest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test(expected = NotAuthorizedException.class)
public void testRoleCheck() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
taskMonitorService.getCustomAttributeValuesForReport(
Collections.singletonList("WBI:000000000000000000000000000000000001"), null,
null, null, null, null, null,
"2");
}
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetCustomAttributeValuesForOneWorkbasket() throws InvalidArgumentException { public void testGetCustomAttributeValuesForOneWorkbasket() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> values = taskMonitorService.getCustomAttributeValuesForReport( List<String> values = taskMonitorService.getCustomAttributeValuesForReport(
@ -71,8 +85,10 @@ public class GetCustomAttributeValuesForReportAcctest {
assertTrue(values.contains("Teilkasko")); assertTrue(values.contains("Teilkasko"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetCustomAttributeValuesForOneDomain() throws InvalidArgumentException { public void testGetCustomAttributeValuesForOneDomain() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> values = taskMonitorService.getCustomAttributeValuesForReport( List<String> values = taskMonitorService.getCustomAttributeValuesForReport(
@ -84,8 +100,11 @@ public class GetCustomAttributeValuesForReportAcctest {
assertEquals(26, values.size()); assertEquals(26, values.size());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetCustomAttributeValuesForCustomAttribute() throws InvalidArgumentException { public void testGetCustomAttributeValuesForCustomAttribute()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
Map<String, String> props = new HashMap<>(); Map<String, String> props = new HashMap<>();
@ -100,8 +119,11 @@ public class GetCustomAttributeValuesForReportAcctest {
assertEquals(12, values.size()); assertEquals(12, values.size());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetCustomAttributeValuesForExcludedClassifications() throws InvalidArgumentException { public void testGetCustomAttributeValuesForExcludedClassifications()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> domains = new ArrayList<>(); List<String> domains = new ArrayList<>();

View File

@ -14,6 +14,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import pro.taskana.CustomField; import pro.taskana.CustomField;
import pro.taskana.TaskMonitorService; import pro.taskana.TaskMonitorService;
@ -23,15 +24,19 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.SelectedItem; import pro.taskana.impl.SelectedItem;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.report.impl.TimeIntervalColumnHeader; import pro.taskana.impl.report.impl.TimeIntervalColumnHeader;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "get task ids of category report" scenarios. * Acceptance test for all "get task ids of category report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class GetTaskIdsOfCategoryReportAccTest { public class GetTaskIdsOfCategoryReportAccTest {
protected static TaskanaEngineConfiguration taskanaEngineConfiguration; protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
@ -56,8 +61,22 @@ public class GetTaskIdsOfCategoryReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test(expected = NotAuthorizedException.class)
public void testRoleCheck() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
List<SelectedItem> selectedItems = new ArrayList<>();
taskMonitorService.getTaskIdsForSelectedItems(null, null, null, null, null,
null, null, null,
columnHeaders, true, selectedItems, TaskMonitorService.DIMENSION_CLASSIFICATION_CATEGORY);
}
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfCategoryReport() throws InvalidArgumentException { public void testGetTaskIdsOfCategoryReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
@ -100,8 +119,11 @@ public class GetTaskIdsOfCategoryReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000032")); assertTrue(ids.contains("TKI:000000000000000000000000000000000032"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfCategoryReportWithWorkbasketFilter() throws InvalidArgumentException { public void testGetTaskIdsOfCategoryReportWithWorkbasketFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
@ -138,8 +160,11 @@ public class GetTaskIdsOfCategoryReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000031")); assertTrue(ids.contains("TKI:000000000000000000000000000000000031"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfCategoryReportWithStateFilter() throws InvalidArgumentException { public void testGetTaskIdsOfCategoryReportWithStateFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TaskState> states = Collections.singletonList(TaskState.READY); List<TaskState> states = Collections.singletonList(TaskState.READY);
@ -183,8 +208,11 @@ public class GetTaskIdsOfCategoryReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000032")); assertTrue(ids.contains("TKI:000000000000000000000000000000000032"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfCategoryReportWithCategoryFilter() throws InvalidArgumentException { public void testGetTaskIdsOfCategoryReportWithCategoryFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL"); List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
@ -214,8 +242,11 @@ public class GetTaskIdsOfCategoryReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000032")); assertTrue(ids.contains("TKI:000000000000000000000000000000000032"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfCategoryReportWithDomainFilter() throws InvalidArgumentException { public void testGetTaskIdsOfCategoryReportWithDomainFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> domains = Collections.singletonList("DOMAIN_A"); List<String> domains = Collections.singletonList("DOMAIN_A");
@ -252,8 +283,11 @@ public class GetTaskIdsOfCategoryReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000028")); assertTrue(ids.contains("TKI:000000000000000000000000000000000028"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfCategoryReportWithCustomFieldValueFilter() throws InvalidArgumentException { public void testGetTaskIdsOfCategoryReportWithCustomFieldValueFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;
@ -293,8 +327,10 @@ public class GetTaskIdsOfCategoryReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000032")); assertTrue(ids.contains("TKI:000000000000000000000000000000000032"));
} }
@WithAccessId(
userName = "monitor")
@Test(expected = InvalidArgumentException.class) @Test(expected = InvalidArgumentException.class)
public void testThrowsExceptionIfSubKeysAreUsed() throws InvalidArgumentException { public void testThrowsExceptionIfSubKeysAreUsed() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
@ -308,7 +344,7 @@ public class GetTaskIdsOfCategoryReportAccTest {
s1.setUpperAgeLimit(-2); s1.setUpperAgeLimit(-2);
selectedItems.add(s1); selectedItems.add(s1);
List<String> ids = taskMonitorService.getTaskIdsForSelectedItems(null, null, null, null, null, taskMonitorService.getTaskIdsForSelectedItems(null, null, null, null, null,
null, null, null, null, null, null,
columnHeaders, true, selectedItems, TaskMonitorService.DIMENSION_CLASSIFICATION_CATEGORY); columnHeaders, true, selectedItems, TaskMonitorService.DIMENSION_CLASSIFICATION_CATEGORY);
} }

View File

@ -12,6 +12,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import pro.taskana.TaskMonitorService; import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
@ -19,15 +20,19 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.SelectedItem; import pro.taskana.impl.SelectedItem;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.report.impl.TimeIntervalColumnHeader; import pro.taskana.impl.report.impl.TimeIntervalColumnHeader;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "get task ids of classification report" scenarios. * Acceptance test for all "get task ids of classification report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class GetTaskIdsOfClassificationReportAccTest { public class GetTaskIdsOfClassificationReportAccTest {
protected static TaskanaEngineConfiguration taskanaEngineConfiguration; protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
@ -52,8 +57,41 @@ public class GetTaskIdsOfClassificationReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test(expected = NotAuthorizedException.class)
public void testRoleCheck() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
List<SelectedItem> selectedItems = new ArrayList<>();
SelectedItem s1 = new SelectedItem();
s1.setKey("L10000");
s1.setLowerAgeLimit(0);
s1.setUpperAgeLimit(0);
selectedItems.add(s1);
SelectedItem s2 = new SelectedItem();
s2.setKey("L10000");
s2.setLowerAgeLimit(Integer.MIN_VALUE);
s2.setUpperAgeLimit(-11);
selectedItems.add(s2);
SelectedItem s3 = new SelectedItem();
s3.setKey("L30000");
s3.setLowerAgeLimit(Integer.MIN_VALUE);
s3.setUpperAgeLimit(-11);
selectedItems.add(s3);
taskMonitorService.getTaskIdsForSelectedItems(null, null, null, null, null,
null, null, null,
columnHeaders, true, selectedItems, TaskMonitorService.DIMENSION_CLASSIFICATION_KEY);
}
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfClassificationReport() throws InvalidArgumentException { public void testGetTaskIdsOfClassificationReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
@ -91,8 +129,11 @@ public class GetTaskIdsOfClassificationReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000006")); assertTrue(ids.contains("TKI:000000000000000000000000000000000006"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfClassificationReportWithAttachments() throws InvalidArgumentException { public void testGetTaskIdsOfClassificationReportWithAttachments()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
@ -128,8 +169,11 @@ public class GetTaskIdsOfClassificationReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000033")); assertTrue(ids.contains("TKI:000000000000000000000000000000000033"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfClassificationReportWithDomainFilter() throws InvalidArgumentException { public void testGetTaskIdsOfClassificationReportWithDomainFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();

View File

@ -13,6 +13,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import pro.taskana.TaskMonitorService; import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
@ -20,15 +21,19 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.SelectedItem; import pro.taskana.impl.SelectedItem;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.report.impl.TimeIntervalColumnHeader; import pro.taskana.impl.report.impl.TimeIntervalColumnHeader;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "get task ids of workbasket report" scenarios. * Acceptance test for all "get task ids of workbasket report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class GetTaskIdsOfWorkbasketReportAccTest { public class GetTaskIdsOfWorkbasketReportAccTest {
protected static TaskanaEngineConfiguration taskanaEngineConfiguration; protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
@ -53,8 +58,23 @@ public class GetTaskIdsOfWorkbasketReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test(expected = NotAuthorizedException.class)
public void testRoleCheck() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
List<SelectedItem> selectedItems = new ArrayList<>();
taskMonitorService.getTaskIdsForSelectedItems(null, null, null, null, null,
null, null, null,
columnHeaders, true, selectedItems, TaskMonitorService.DIMENSION_WORKBASKET_KEY);
}
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfWorkbasketReport() throws InvalidArgumentException { public void testGetTaskIdsOfWorkbasketReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
@ -93,8 +113,11 @@ public class GetTaskIdsOfWorkbasketReportAccTest {
assertTrue(ids.contains("TKI:000000000000000000000000000000000050")); assertTrue(ids.contains("TKI:000000000000000000000000000000000050"));
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTaskIdsOfWorkbasketReportWithExcludedClassifications() throws InvalidArgumentException { public void testGetTaskIdsOfWorkbasketReportWithExcludedClassifications()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();

View File

@ -16,6 +16,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -27,15 +28,19 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.report.impl.CategoryReport; import pro.taskana.impl.report.impl.CategoryReport;
import pro.taskana.impl.report.impl.TimeIntervalColumnHeader; import pro.taskana.impl.report.impl.TimeIntervalColumnHeader;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "category report" scenarios. * Acceptance test for all "category report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class ProvideCategoryReportAccTest { public class ProvideCategoryReportAccTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideCategoryReportAccTest.class); private static final Logger LOGGER = LoggerFactory.getLogger(ProvideCategoryReportAccTest.class);
@ -61,8 +66,17 @@ public class ProvideCategoryReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test(expected = NotAuthorizedException.class)
public void testRoleCheck() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
taskMonitorService.getCategoryReport(null, null, null, null, null, null);
}
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTotalNumbersOfTasksOfCategoryReport() throws InvalidArgumentException { public void testGetTotalNumbersOfTasksOfCategoryReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CategoryReport report = taskMonitorService.getCategoryReport(null, null, null, null, null, null); CategoryReport report = taskMonitorService.getCategoryReport(null, null, null, null, null, null);
@ -83,8 +97,11 @@ public class ProvideCategoryReportAccTest {
assertEquals(50, report.getSumRow().getTotalValue()); assertEquals(50, report.getSumRow().getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetCategoryReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetCategoryReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
@ -111,8 +128,10 @@ public class ProvideCategoryReportAccTest {
assertEquals(50, sumLineCount); assertEquals(50, sumLineCount);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCategoryReport() throws InvalidArgumentException { public void testEachItemOfCategoryReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders();
@ -137,8 +156,10 @@ public class ProvideCategoryReportAccTest {
assertArrayEquals(new int[] {2, 2, 2, 0, 4}, row3); assertArrayEquals(new int[] {2, 2, 2, 0, 4}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCategoryReportNotInWorkingDays() throws InvalidArgumentException { public void testEachItemOfCategoryReportNotInWorkingDays() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders();
@ -163,8 +184,11 @@ public class ProvideCategoryReportAccTest {
assertArrayEquals(new int[] {4, 0, 2, 0, 4}, row3); assertArrayEquals(new int[] {4, 0, 2, 0, 4}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCategoryReportWithWorkbasketFilter() throws InvalidArgumentException { public void testEachItemOfCategoryReportWithWorkbasketFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
@ -190,8 +214,10 @@ public class ProvideCategoryReportAccTest {
assertArrayEquals(new int[] {1, 0, 1, 0, 1}, row3); assertArrayEquals(new int[] {1, 0, 1, 0, 1}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCategoryReportWithStateFilter() throws InvalidArgumentException { public void testEachItemOfCategoryReportWithStateFilter() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TaskState> states = Collections.singletonList(TaskState.READY); List<TaskState> states = Collections.singletonList(TaskState.READY);
@ -217,8 +243,11 @@ public class ProvideCategoryReportAccTest {
assertArrayEquals(new int[] {2, 2, 2, 0, 0}, row3); assertArrayEquals(new int[] {2, 2, 2, 0, 0}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCategoryReportWithCategoryFilter() throws InvalidArgumentException { public void testEachItemOfCategoryReportWithCategoryFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL"); List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
@ -242,8 +271,10 @@ public class ProvideCategoryReportAccTest {
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCategoryReportWithDomainFilter() throws InvalidArgumentException { public void testEachItemOfCategoryReportWithDomainFilter() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> domains = Collections.singletonList("DOMAIN_A"); List<String> domains = Collections.singletonList("DOMAIN_A");
@ -269,8 +300,11 @@ public class ProvideCategoryReportAccTest {
assertArrayEquals(new int[] {2, 0, 0, 0, 3}, row3); assertArrayEquals(new int[] {2, 0, 0, 0, 3}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCategoryReportWithCustomFieldValueFilter() throws InvalidArgumentException { public void testEachItemOfCategoryReportWithCustomFieldValueFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;

View File

@ -16,6 +16,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -27,15 +28,19 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.report.impl.ClassificationReport; import pro.taskana.impl.report.impl.ClassificationReport;
import pro.taskana.impl.report.impl.TimeIntervalColumnHeader; import pro.taskana.impl.report.impl.TimeIntervalColumnHeader;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "classification report" scenarios. * Acceptance test for all "classification report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class ProvideClassificationReportAccTest { public class ProvideClassificationReportAccTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideClassificationReportAccTest.class); private static final Logger LOGGER = LoggerFactory.getLogger(ProvideClassificationReportAccTest.class);
@ -61,8 +66,19 @@ public class ProvideClassificationReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test @Test(expected = NotAuthorizedException.class)
public void testGetTotalNumbersOfTasksOfClassificationReport() throws InvalidArgumentException { public void testRoleCheck()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
taskMonitorService.getClassificationReport(null, null, null, null, null, null);
}
@WithAccessId(
userName = "monitor")
@Test
public void testGetTotalNumbersOfTasksOfClassificationReport()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
ClassificationReport report = taskMonitorService.getClassificationReport(null, null, null, null, null, null); ClassificationReport report = taskMonitorService.getClassificationReport(null, null, null, null, null, null);
@ -87,8 +103,11 @@ public class ProvideClassificationReportAccTest {
assertEquals(50, report.getSumRow().getTotalValue()); assertEquals(50, report.getSumRow().getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetClassificationReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetClassificationReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> reportLineItemDefinitions = getListOfColumnsHeaders(); List<TimeIntervalColumnHeader> reportLineItemDefinitions = getListOfColumnsHeaders();
@ -124,8 +143,10 @@ public class ProvideClassificationReportAccTest {
assertEquals(50, sumLineCount); assertEquals(50, sumLineCount);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfClassificationReport() throws InvalidArgumentException { public void testEachItemOfClassificationReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders();
@ -156,8 +177,11 @@ public class ProvideClassificationReportAccTest {
assertArrayEquals(new int[] {3, 3, 0, 5, 2}, row5); assertArrayEquals(new int[] {3, 3, 0, 5, 2}, row5);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfClassificationReportNotInWorkingDays() throws InvalidArgumentException { public void testEachItemOfClassificationReportNotInWorkingDays()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> reportLineItemDefinitions = getShortListOfColumnHeaders(); List<TimeIntervalColumnHeader> reportLineItemDefinitions = getShortListOfColumnHeaders();
@ -188,8 +212,11 @@ public class ProvideClassificationReportAccTest {
assertArrayEquals(new int[] {6, 0, 0, 0, 7}, row5); assertArrayEquals(new int[] {6, 0, 0, 0, 7}, row5);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfClassificationReportWithWorkbasketFilter() throws InvalidArgumentException { public void testEachItemOfClassificationReportWithWorkbasketFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
@ -222,8 +249,11 @@ public class ProvideClassificationReportAccTest {
assertArrayEquals(new int[] {2, 2, 0, 0, 0}, row5); assertArrayEquals(new int[] {2, 2, 0, 0, 0}, row5);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfClassificationReportWithStateFilter() throws InvalidArgumentException { public void testEachItemOfClassificationReportWithStateFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TaskState> states = Collections.singletonList(TaskState.READY); List<TaskState> states = Collections.singletonList(TaskState.READY);
@ -255,8 +285,11 @@ public class ProvideClassificationReportAccTest {
assertArrayEquals(new int[] {3, 3, 0, 5, 0}, row5); assertArrayEquals(new int[] {3, 3, 0, 5, 0}, row5);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfClassificationReportWithCategoryFilter() throws InvalidArgumentException { public void testEachItemOfClassificationReportWithCategoryFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL"); List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
@ -280,8 +313,11 @@ public class ProvideClassificationReportAccTest {
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfClassificationReportWithDomainFilter() throws InvalidArgumentException { public void testEachItemOfClassificationReportWithDomainFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> domains = Collections.singletonList("DOMAIN_A"); List<String> domains = Collections.singletonList("DOMAIN_A");
@ -313,8 +349,11 @@ public class ProvideClassificationReportAccTest {
assertArrayEquals(new int[] {0, 1, 0, 3, 0}, row5); assertArrayEquals(new int[] {0, 1, 0, 3, 0}, row5);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfClassificationReportWithCustomFieldValueFilter() throws InvalidArgumentException { public void testEachItemOfClassificationReportWithCustomFieldValueFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;

View File

@ -15,6 +15,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -26,14 +27,18 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.report.impl.CustomFieldValueReport; import pro.taskana.impl.report.impl.CustomFieldValueReport;
import pro.taskana.impl.report.impl.TimeIntervalColumnHeader; import pro.taskana.impl.report.impl.TimeIntervalColumnHeader;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "classification report" scenarios. * Acceptance test for all "classification report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class ProvideCustomFieldValueReportAccTest { public class ProvideCustomFieldValueReportAccTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideCustomFieldValueReportAccTest.class); private static final Logger LOGGER = LoggerFactory.getLogger(ProvideCustomFieldValueReportAccTest.class);
@ -59,8 +64,22 @@ public class ProvideCustomFieldValueReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test(expected = NotAuthorizedException.class)
public void testRoleCheck()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1;
taskMonitorService.getCustomFieldValueReport(null, null, null, null,
customField, null);
}
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom1() throws InvalidArgumentException { public void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom1()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;
@ -85,8 +104,11 @@ public class ProvideCustomFieldValueReportAccTest {
assertEquals(50, report.getSumRow().getTotalValue()); assertEquals(50, report.getSumRow().getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom2() throws InvalidArgumentException { public void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom2()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_2; CustomField customField = CustomField.CUSTOM_2;
@ -110,8 +132,11 @@ public class ProvideCustomFieldValueReportAccTest {
assertEquals(50, report.getSumRow().getTotalValue()); assertEquals(50, report.getSumRow().getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetCustomFieldValueReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetCustomFieldValueReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;
@ -137,8 +162,10 @@ public class ProvideCustomFieldValueReportAccTest {
assertEquals(50, report.getSumRow().getTotalValue()); assertEquals(50, report.getSumRow().getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCustomFieldValueReport() throws InvalidArgumentException { public void testEachItemOfCustomFieldValueReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;
@ -165,8 +192,11 @@ public class ProvideCustomFieldValueReportAccTest {
assertArrayEquals(new int[] {3, 4, 1, 1, 6}, row3); assertArrayEquals(new int[] {3, 4, 1, 1, 6}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCustomFieldValueReportNotInWorkingDays() throws InvalidArgumentException { public void testEachItemOfCustomFieldValueReportNotInWorkingDays()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;
@ -193,8 +223,11 @@ public class ProvideCustomFieldValueReportAccTest {
assertArrayEquals(new int[] {7, 0, 1, 0, 7}, row3); assertArrayEquals(new int[] {7, 0, 1, 0, 7}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCustomFieldValueReportWithWorkbasketFilter() throws InvalidArgumentException { public void testEachItemOfCustomFieldValueReportWithWorkbasketFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
@ -222,8 +255,11 @@ public class ProvideCustomFieldValueReportAccTest {
assertArrayEquals(new int[] {3, 1, 0, 0, 1}, row3); assertArrayEquals(new int[] {3, 1, 0, 0, 1}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCustomFieldValueReportWithStateFilter() throws InvalidArgumentException { public void testEachItemOfCustomFieldValueReportWithStateFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TaskState> states = Collections.singletonList(TaskState.READY); List<TaskState> states = Collections.singletonList(TaskState.READY);
@ -251,8 +287,11 @@ public class ProvideCustomFieldValueReportAccTest {
assertArrayEquals(new int[] {3, 4, 1, 1, 0}, row3); assertArrayEquals(new int[] {3, 4, 1, 1, 0}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCustomFieldValueReportWithCategoryFilter() throws InvalidArgumentException { public void testEachItemOfCustomFieldValueReportWithCategoryFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL"); List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
@ -281,8 +320,11 @@ public class ProvideCustomFieldValueReportAccTest {
assertArrayEquals(new int[] {0, 2, 0, 0, 4}, row3); assertArrayEquals(new int[] {0, 2, 0, 0, 4}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCustomFieldValueReportWithDomainFilter() throws InvalidArgumentException { public void testEachItemOfCustomFieldValueReportWithDomainFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> domains = Collections.singletonList("DOMAIN_A"); List<String> domains = Collections.singletonList("DOMAIN_A");
@ -310,8 +352,11 @@ public class ProvideCustomFieldValueReportAccTest {
assertArrayEquals(new int[] {1, 1, 1, 0, 3}, row3); assertArrayEquals(new int[] {1, 1, 1, 0, 3}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfCustomFieldValueReportWithCustomFieldValueFilter() throws InvalidArgumentException { public void testEachItemOfCustomFieldValueReportWithCustomFieldValueFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;

View File

@ -15,6 +15,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -26,6 +27,7 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
@ -34,10 +36,13 @@ import pro.taskana.impl.report.impl.DetailedClassificationReport;
import pro.taskana.impl.report.impl.DetailedMonitorQueryItem; import pro.taskana.impl.report.impl.DetailedMonitorQueryItem;
import pro.taskana.impl.report.impl.DetailedReportRow; import pro.taskana.impl.report.impl.DetailedReportRow;
import pro.taskana.impl.report.impl.TimeIntervalColumnHeader; import pro.taskana.impl.report.impl.TimeIntervalColumnHeader;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "detailed classification report" scenarios. * Acceptance test for all "detailed classification report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class ProvideDetailedClassificationReportAccTest { public class ProvideDetailedClassificationReportAccTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideDetailedClassificationReportAccTest.class); private static final Logger LOGGER = LoggerFactory.getLogger(ProvideDetailedClassificationReportAccTest.class);
@ -63,8 +68,20 @@ public class ProvideDetailedClassificationReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test(expected = NotAuthorizedException.class)
public void testRoleCheck()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
taskMonitorService.getDetailedClassificationReport(null, null, null, null,
null, null);
}
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTotalNumbersOfTasksOfDetailedClassificationReport() throws InvalidArgumentException { public void testGetTotalNumbersOfTasksOfDetailedClassificationReport()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(null, null, null, null, DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(null, null, null, null,
@ -114,8 +131,11 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(50, report.getSumRow().getTotalValue()); assertEquals(50, report.getSumRow().getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetDetailedClassificationReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetDetailedClassificationReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
@ -141,8 +161,10 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(50, report.getSumRow().getTotalValue()); assertEquals(50, report.getSumRow().getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfDetailedClassificationReport() throws InvalidArgumentException { public void testEachItemOfDetailedClassificationReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> reportLineItemDefinitions = getShortListOfColumnHeaders(); List<TimeIntervalColumnHeader> reportLineItemDefinitions = getShortListOfColumnHeaders();
@ -200,8 +222,11 @@ public class ProvideDetailedClassificationReportAccTest {
assertArrayEquals(new int[] {3, 3, 0, 5, 2}, detailedLineNoAttachment5.getCells()); assertArrayEquals(new int[] {3, 3, 0, 5, 2}, detailedLineNoAttachment5.getCells());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfDetailedClassificationReportWithWorkbasketFilter() throws InvalidArgumentException { public void testEachItemOfDetailedClassificationReportWithWorkbasketFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
@ -257,8 +282,11 @@ public class ProvideDetailedClassificationReportAccTest {
assertArrayEquals(new int[] {2, 2, 0, 0, 0}, detailedLineNoAttachment5.getCells()); assertArrayEquals(new int[] {2, 2, 0, 0, 0}, detailedLineNoAttachment5.getCells());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfDetailedClassificationReportWithStateFilter() throws InvalidArgumentException { public void testEachItemOfDetailedClassificationReportWithStateFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TaskState> states = Collections.singletonList(TaskState.READY); List<TaskState> states = Collections.singletonList(TaskState.READY);
@ -314,8 +342,11 @@ public class ProvideDetailedClassificationReportAccTest {
assertArrayEquals(new int[] {3, 3, 0, 5, 0}, detailedLineNoAttachment5.getCells()); assertArrayEquals(new int[] {3, 3, 0, 5, 0}, detailedLineNoAttachment5.getCells());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfDetailedClassificationReportNotInWorkingDays() throws InvalidArgumentException { public void testEachItemOfDetailedClassificationReportNotInWorkingDays()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders();
@ -373,8 +404,11 @@ public class ProvideDetailedClassificationReportAccTest {
assertArrayEquals(new int[] {6, 0, 0, 0, 7}, detailedLineNoAttachment5.getCells()); assertArrayEquals(new int[] {6, 0, 0, 0, 7}, detailedLineNoAttachment5.getCells());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfDetailedClassificationReportWithCategoryFilter() throws InvalidArgumentException { public void testEachItemOfDetailedClassificationReportWithCategoryFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL"); List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
@ -410,8 +444,11 @@ public class ProvideDetailedClassificationReportAccTest {
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfDetailedClassificationReportWithDomainFilter() throws InvalidArgumentException { public void testEachItemOfDetailedClassificationReportWithDomainFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> domains = Collections.singletonList("DOMAIN_A"); List<String> domains = Collections.singletonList("DOMAIN_A");
@ -467,8 +504,11 @@ public class ProvideDetailedClassificationReportAccTest {
assertArrayEquals(new int[] {0, 1, 0, 3, 0}, detailedLineNoAttachment5.getCells()); assertArrayEquals(new int[] {0, 1, 0, 3, 0}, detailedLineNoAttachment5.getCells());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfDetailedClassificationReportWithCustomFieldValueFilter() throws InvalidArgumentException { public void testEachItemOfDetailedClassificationReportWithCustomFieldValueFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;

View File

@ -14,6 +14,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -22,16 +23,20 @@ import pro.taskana.TaskState;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.report.ReportRow; import pro.taskana.impl.report.ReportRow;
import pro.taskana.impl.report.impl.TaskQueryItem; import pro.taskana.impl.report.impl.TaskQueryItem;
import pro.taskana.impl.report.impl.TaskStatusColumnHeader; import pro.taskana.impl.report.impl.TaskStatusColumnHeader;
import pro.taskana.impl.report.impl.TaskStatusReport; import pro.taskana.impl.report.impl.TaskStatusReport;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "task status report" scenarios. * Acceptance test for all "task status report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class ProvideTaskStatusReportAccTest { public class ProvideTaskStatusReportAccTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideWorkbasketLevelReportAccTest.class); private static final Logger LOGGER = LoggerFactory.getLogger(ProvideWorkbasketLevelReportAccTest.class);
@ -57,13 +62,21 @@ public class ProvideTaskStatusReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test @Test(expected = NotAuthorizedException.class)
public void testCompleteTaskStatusReport() { public void testRoleCheck() throws NotAuthorizedException {
//given
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
//when taskMonitorService.getTaskStatusReport();
}
@WithAccessId(
userName = "monitor")
@Test
public void testCompleteTaskStatusReport() throws NotAuthorizedException {
// given
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
// when
TaskStatusReport report = taskMonitorService.getTaskStatusReport(); TaskStatusReport report = taskMonitorService.getTaskStatusReport();
//then // then
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report)); LOGGER.debug(reportToString(report));
} }
@ -87,13 +100,23 @@ public class ProvideTaskStatusReportAccTest {
assertEquals(50, sumRow.getTotalValue()); assertEquals(50, sumRow.getTotalValue());
} }
@WithAccessId(
userName = "admin")
@Test @Test
public void testCompleteTaskStatusReportWithDomainFilter() { public void testCompleteTaskStatusReportAsAdmin() throws NotAuthorizedException {
//given
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
//when taskMonitorService.getTaskStatusReport();
}
@WithAccessId(
userName = "monitor")
@Test
public void testCompleteTaskStatusReportWithDomainFilter() throws NotAuthorizedException {
// given
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
// when
TaskStatusReport report = taskMonitorService.getTaskStatusReport(asList("DOMAIN_C", "DOMAIN_A")); TaskStatusReport report = taskMonitorService.getTaskStatusReport(asList("DOMAIN_C", "DOMAIN_A"));
//then // then
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report)); LOGGER.debug(reportToString(report));
} }
@ -113,14 +136,16 @@ public class ProvideTaskStatusReportAccTest {
assertEquals(38, sumRow.getTotalValue()); assertEquals(38, sumRow.getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testCompleteTaskStatusReportWithStateFilter() { public void testCompleteTaskStatusReportWithStateFilter() throws NotAuthorizedException {
//given // given
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
//when // when
TaskStatusReport report = taskMonitorService.getTaskStatusReport(null, TaskStatusReport report = taskMonitorService.getTaskStatusReport(null,
Collections.singletonList(TaskState.READY)); Collections.singletonList(TaskState.READY));
//then // then
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report)); LOGGER.debug(reportToString(report));
} }

View File

@ -16,6 +16,7 @@ import javax.sql.DataSource;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -27,14 +28,18 @@ import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.report.impl.TimeIntervalColumnHeader; import pro.taskana.impl.report.impl.TimeIntervalColumnHeader;
import pro.taskana.impl.report.impl.WorkbasketLevelReport; import pro.taskana.impl.report.impl.WorkbasketLevelReport;
import pro.taskana.security.JAASRunner;
import pro.taskana.security.WithAccessId;
/** /**
* Acceptance test for all "workbasket level report" scenarios. * Acceptance test for all "workbasket level report" scenarios.
*/ */
@RunWith(JAASRunner.class)
public class ProvideWorkbasketLevelReportAccTest { public class ProvideWorkbasketLevelReportAccTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideWorkbasketLevelReportAccTest.class); private static final Logger LOGGER = LoggerFactory.getLogger(ProvideWorkbasketLevelReportAccTest.class);
@ -60,8 +65,19 @@ public class ProvideWorkbasketLevelReportAccTest {
testDataGenerator.generateMonitoringTestData(dataSource); testDataGenerator.generateMonitoringTestData(dataSource);
} }
@Test(expected = NotAuthorizedException.class)
public void testRoleCheck()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
taskMonitorService.getWorkbasketLevelReport(null, null, null, null, null, null);
}
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetTotalNumbersOfTasksOfWorkbasketLevelReport() throws InvalidArgumentException { public void testGetTotalNumbersOfTasksOfWorkbasketLevelReport()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
WorkbasketLevelReport report = taskMonitorService.getWorkbasketLevelReport(null, null, null, null, null, null); WorkbasketLevelReport report = taskMonitorService.getWorkbasketLevelReport(null, null, null, null, null, null);
@ -80,8 +96,11 @@ public class ProvideWorkbasketLevelReportAccTest {
assertEquals(50, report.getSumRow().getTotalValue()); assertEquals(50, report.getSumRow().getTotalValue());
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testGetWorkbasketLevelReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetWorkbasketLevelReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getListOfColumnHeaders();
@ -109,8 +128,10 @@ public class ProvideWorkbasketLevelReportAccTest {
assertEquals(50, sumLineCount); assertEquals(50, sumLineCount);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfWorkbasketLevelReport() throws InvalidArgumentException { public void testEachItemOfWorkbasketLevelReport() throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders();
@ -135,8 +156,11 @@ public class ProvideWorkbasketLevelReportAccTest {
assertArrayEquals(new int[] {2, 2, 0, 0, 6}, row3); assertArrayEquals(new int[] {2, 2, 0, 0, 6}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfWorkbasketLevelReportNotInWorkingDays() throws InvalidArgumentException { public void testEachItemOfWorkbasketLevelReportNotInWorkingDays()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders(); List<TimeIntervalColumnHeader> columnHeaders = getShortListOfColumnHeaders();
@ -161,8 +185,11 @@ public class ProvideWorkbasketLevelReportAccTest {
assertArrayEquals(new int[] {4, 0, 0, 0, 6}, row3); assertArrayEquals(new int[] {4, 0, 0, 0, 6}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfWorkbasketLevelReportWithWorkbasketFilter() throws InvalidArgumentException { public void testEachItemOfWorkbasketLevelReportWithWorkbasketFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
@ -184,8 +211,11 @@ public class ProvideWorkbasketLevelReportAccTest {
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfWorkbasketLevelReportWithStateFilter() throws InvalidArgumentException { public void testEachItemOfWorkbasketLevelReportWithStateFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<TaskState> states = Collections.singletonList(TaskState.READY); List<TaskState> states = Collections.singletonList(TaskState.READY);
@ -211,8 +241,11 @@ public class ProvideWorkbasketLevelReportAccTest {
assertArrayEquals(new int[] {2, 2, 0, 0, 0}, row3); assertArrayEquals(new int[] {2, 2, 0, 0, 0}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfWorkbasketLevelReportWithCategoryFilter() throws InvalidArgumentException { public void testEachItemOfWorkbasketLevelReportWithCategoryFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL"); List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
@ -240,8 +273,11 @@ public class ProvideWorkbasketLevelReportAccTest {
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfWorkbasketLevelReportWithDomainFilter() throws InvalidArgumentException { public void testEachItemOfWorkbasketLevelReportWithDomainFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> domains = Collections.singletonList("DOMAIN_A"); List<String> domains = Collections.singletonList("DOMAIN_A");
@ -268,8 +304,11 @@ public class ProvideWorkbasketLevelReportAccTest {
assertArrayEquals(new int[] {1, 1, 0, 0, 2}, row3); assertArrayEquals(new int[] {1, 1, 0, 0, 2}, row3);
} }
@WithAccessId(
userName = "monitor")
@Test @Test
public void testEachItemOfWorkbasketLevelReportWithCustomFieldValueFilter() throws InvalidArgumentException { public void testEachItemOfWorkbasketLevelReportWithCustomFieldValueFilter()
throws InvalidArgumentException, NotAuthorizedException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;

View File

@ -32,6 +32,7 @@ import pro.taskana.TaskMonitorService;
import pro.taskana.TaskState; import pro.taskana.TaskState;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.impl.CategoryReport; import pro.taskana.impl.report.impl.CategoryReport;
import pro.taskana.impl.report.impl.ClassificationReport; import pro.taskana.impl.report.impl.ClassificationReport;
import pro.taskana.impl.report.impl.CustomFieldValueReport; import pro.taskana.impl.report.impl.CustomFieldValueReport;
@ -74,7 +75,7 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetTotalNumbersOfWorkbasketLevelReport() throws InvalidArgumentException { public void testGetTotalNumbersOfWorkbasketLevelReport() throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -94,6 +95,7 @@ public class TaskMonitorServiceImplTest {
customField, customFieldValues); customField, customFieldValues);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -109,7 +111,8 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetWorkbasketLevelReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetWorkbasketLevelReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -132,6 +135,7 @@ public class TaskMonitorServiceImplTest {
customField, customFieldValues, reportLineItemDefinitions); customField, customFieldValues, reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -147,7 +151,7 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetTotalNumbersOfCatgoryReport() throws InvalidArgumentException { public void testGetTotalNumbersOfCatgoryReport() throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -167,6 +171,7 @@ public class TaskMonitorServiceImplTest {
customField, customFieldValues); customField, customFieldValues);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -180,7 +185,8 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetCategoryReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetCategoryReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -203,6 +209,7 @@ public class TaskMonitorServiceImplTest {
customField, customFieldValues, reportLineItemDefinitions); customField, customFieldValues, reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -217,7 +224,7 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetTotalNumbersOfClassificationReport() throws InvalidArgumentException { public void testGetTotalNumbersOfClassificationReport() throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -237,6 +244,7 @@ public class TaskMonitorServiceImplTest {
customField, customFieldValues); customField, customFieldValues);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -251,7 +259,8 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetClassificationReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetClassificationReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -275,6 +284,7 @@ public class TaskMonitorServiceImplTest {
customField, customFieldValues, reportLineItemDefinitions); customField, customFieldValues, reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -290,7 +300,8 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetTotalNumbersOfDetailedClassificationReport() throws InvalidArgumentException { public void testGetTotalNumbersOfDetailedClassificationReport()
throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -311,6 +322,7 @@ public class TaskMonitorServiceImplTest {
categories, domains, customField, customFieldValues); categories, domains, customField, customFieldValues);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -327,7 +339,8 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetDetailedClassificationReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetDetailedClassificationReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -351,6 +364,7 @@ public class TaskMonitorServiceImplTest {
categories, domains, customField, customFieldValues, reportLineItemDefinitions); categories, domains, customField, customFieldValues, reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -370,7 +384,7 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetTotalNumbersOfCustomFieldValueReport() throws InvalidArgumentException { public void testGetTotalNumbersOfCustomFieldValueReport() throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -391,6 +405,7 @@ public class TaskMonitorServiceImplTest {
customField, customFieldValues); customField, customFieldValues);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -405,7 +420,8 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetCustomFieldValueReportWithReportLineItemDefinitions() throws InvalidArgumentException { public void testGetCustomFieldValueReportWithReportLineItemDefinitions()
throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -429,6 +445,7 @@ public class TaskMonitorServiceImplTest {
customField, customFieldValues, reportLineItemDefinitions); customField, customFieldValues, reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -444,7 +461,7 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetTaskIdsForSelectedItems() throws InvalidArgumentException { public void testGetTaskIdsForSelectedItems() throws InvalidArgumentException, NotAuthorizedException {
List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001"); List<String> workbasketIds = Collections.singletonList("WBI:000000000000000000000000000000000001");
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Collections.singletonList("EXTERN"); List<String> categories = Collections.singletonList("EXTERN");
@ -473,6 +490,7 @@ public class TaskMonitorServiceImplTest {
TaskMonitorService.DIMENSION_CLASSIFICATION_CATEGORY); TaskMonitorService.DIMENSION_CLASSIFICATION_CATEGORY);
verify(taskanaEngineImplMock, times(1)).openConnection(); verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(1)).checkRoleMembership(any());
verify(taskanaEngineImplMock, times(2)).getConfiguration(); verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled(); verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays(); verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
@ -487,7 +505,7 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetTaskStateReportWithoutFilters() { public void testGetTaskStateReportWithoutFilters() throws NotAuthorizedException {
// given // given
TaskQueryItem queryItem1 = new TaskQueryItem(); TaskQueryItem queryItem1 = new TaskQueryItem();
queryItem1.setCount(50); queryItem1.setCount(50);
@ -518,7 +536,7 @@ public class TaskMonitorServiceImplTest {
} }
@Test @Test
public void testGetTotalNumberOfTaskStateReport() { public void testGetTotalNumberOfTaskStateReport() throws NotAuthorizedException {
// given // given
TaskQueryItem queryItem1 = new TaskQueryItem(); TaskQueryItem queryItem1 = new TaskQueryItem();
queryItem1.setCount(50); queryItem1.setCount(50);

View File

@ -1,6 +1,7 @@
taskana.roles.user = group1 | group2|teamlead_1 | teamlead_2 |user_1_1| user_1_1| user_1_2| user_2_1| user_2_2| max|elena|simone taskana.roles.user = group1 | group2|teamlead_1 | teamlead_2 |user_1_1| user_1_1| user_1_2| user_2_1| user_2_2| max|elena|simone
taskana.roles.Admin=name=konrad,Organisation=novatec|admin taskana.roles.Admin=name=konrad,Organisation=novatec|admin
taskana.roles.businessadmin=max|Moritz|businessadmin taskana.roles.businessadmin=max|Moritz|businessadmin
taskana.roles.monitor=john|teamlead_2 | monitor
taskana.domains= Domain_A , DOMAIN_B taskana.domains= Domain_A , DOMAIN_B

View File

@ -1,6 +1,7 @@
taskana.roles.user = group1 | group2|teamlead_1 |teamlead_2 |user_1_1| user_1_1| user_1_2| user_2_1| user_2_2| max|elena|simone taskana.roles.user = group1 | group2|teamlead_1 |teamlead_2 |user_1_1| user_1_1| user_1_2| user_2_1| user_2_2| max|elena|simone
taskana.roles.Admin=name=konrad,Organisation=novatec|admin taskana.roles.Admin=name=konrad,Organisation=novatec|admin
taskana.roles.businessadmin=max|Moritz|businessadmin taskana.roles.businessadmin=max|Moritz|businessadmin
taskana.roles.monitor=john|teamlead_2 | monitor
taskana.domains=DOMAIN_A,DOMAIN_B,DOMAIN_C taskana.domains=DOMAIN_A,DOMAIN_B,DOMAIN_C
taskana.classification.types=TASK,DOCUMENT taskana.classification.types=TASK,DOCUMENT
taskana.classification.categories= EXTERNAL , manual, autoMAtic ,Process taskana.classification.categories= EXTERNAL , manual, autoMAtic ,Process

View File

@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
import pro.taskana.TaskMonitorService; import pro.taskana.TaskMonitorService;
import pro.taskana.TaskState; import pro.taskana.TaskState;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.rest.resource.ReportResource; import pro.taskana.rest.resource.ReportResource;
import pro.taskana.rest.resource.mapper.ReportMapper; import pro.taskana.rest.resource.mapper.ReportMapper;
@ -70,7 +71,7 @@ public class MonitorController {
@GetMapping(path = "/taskStatusReport") @GetMapping(path = "/taskStatusReport")
@Transactional(readOnly = true, rollbackFor = Exception.class) @Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity<ReportResource> getTaskStatusReport(@RequestParam(required = false) List<String> domains, public ResponseEntity<ReportResource> getTaskStatusReport(@RequestParam(required = false) List<String> domains,
@RequestParam(required = false) List<TaskState> states) { @RequestParam(required = false) List<TaskState> states) throws NotAuthorizedException {
return ResponseEntity.status(HttpStatus.OK) return ResponseEntity.status(HttpStatus.OK)
.body(reportMapper.toResource(taskMonitorService.getTaskStatusReport(domains, states), domains, states)); .body(reportMapper.toResource(taskMonitorService.getTaskStatusReport(domains, states), domains, states));
} }

View File

@ -12,6 +12,7 @@ import java.util.stream.Collectors;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import pro.taskana.TaskState; import pro.taskana.TaskState;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.report.QueryItem; import pro.taskana.impl.report.QueryItem;
import pro.taskana.impl.report.Report; import pro.taskana.impl.report.Report;
import pro.taskana.impl.report.ReportColumnHeader; import pro.taskana.impl.report.ReportColumnHeader;
@ -26,7 +27,8 @@ import pro.taskana.rest.resource.ReportResource;
@Component @Component
public class ReportMapper { public class ReportMapper {
public ReportResource toResource(TaskStatusReport report, List<String> domains, List<TaskState> states) { public ReportResource toResource(TaskStatusReport report, List<String> domains, List<TaskState> states)
throws NotAuthorizedException {
ReportResource resource = toResource(report); ReportResource resource = toResource(report);
resource.add( resource.add(
linkTo(methodOn(MonitorController.class).getTaskStatusReport(domains, states)) linkTo(methodOn(MonitorController.class).getTaskStatusReport(domains, states))
@ -36,7 +38,8 @@ public class ReportMapper {
private <I extends QueryItem, H extends ReportColumnHeader<? super I>> ReportResource toResource( private <I extends QueryItem, H extends ReportColumnHeader<? super I>> ReportResource toResource(
Report<I, H> report) { Report<I, H> report) {
String[] header = report.getColumnHeaders().stream() String[] header = report.getColumnHeaders()
.stream()
.map(ReportColumnHeader::getDisplayName) .map(ReportColumnHeader::getDisplayName)
.toArray(String[]::new); .toArray(String[]::new);
ReportResource.MetaInformation meta = new ReportResource.MetaInformation( ReportResource.MetaInformation meta = new ReportResource.MetaInformation(
@ -46,7 +49,9 @@ public class ReportMapper {
report.getRowDesc()); report.getRowDesc());
// iterate over each ReportRow and transform it to a RowResource while keeping the domain key. // iterate over each ReportRow and transform it to a RowResource while keeping the domain key.
Map<String, ReportResource.RowResource> rows = report.getReportRows().entrySet().stream() Map<String, ReportResource.RowResource> rows = report.getReportRows()
.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, i -> transformRow(i.getValue(), header))); .collect(Collectors.toMap(Map.Entry::getKey, i -> transformRow(i.getValue(), header)));
ReportResource.RowResource sumRow = transformRow(report.getSumRow(), header); ReportResource.RowResource sumRow = transformRow(report.getSumRow(), header);