From a2e1a984a6bdb75ab2818754ff4f93743568c4f2 Mon Sep 17 00:00:00 2001 From: palajsamuel Date: Thu, 4 Jun 2026 09:28:43 +0200 Subject: [PATCH 1/3] [NAE-2441] Event permissions test - rework of case search query building in CaseSearchService - removed mongo search endpoints mongo_search and search2 from WorkflowController - added tests and test nets for create, delete and view case permissions in CasePermissionsTest - added tests and test nets for assign, cancel and delete task permissions in TaskPermissionsTest --- .../workflow/service/CaseSearchService.java | 56 +- .../workflow/web/WorkflowController.java | 23 - .../workflow/CasePermissionsTest.groovy | 467 ++++++++++++++ .../workflow/TaskPermissionsTest.groovy | 342 +++++++--- ...permissions - correct default disabled.csv | 4 + .../csv/create case permissions - correct.csv | 10 + .../assign_permission_combinations.xml | 532 ++++++++++++++++ ...ign_permission_combinations_no_default.xml | 154 +++++ .../cancel_permission_combinations.xml | 586 ++++++++++++++++++ ...cel_permission_combinations_no_default.xml | 166 +++++ .../create_case_role_false_default_false.xml | 28 + .../create_case_role_false_default_true.xml | 28 + ...eate_case_role_false_default_undefined.xml | 21 + .../create_case_role_true_default_false.xml | 28 + .../create_case_role_true_default_true.xml | 28 + ...reate_case_role_true_default_undefined.xml | 21 + ...eate_case_role_undefined_default_false.xml | 21 + ...reate_case_role_undefined_default_true.xml | 21 + ..._case_role_undefined_default_undefined.xml | 14 + ...se_role_false_default_false_user_false.xml | 44 ++ ...ase_role_false_default_false_user_true.xml | 44 ++ ...ole_false_default_false_user_undefined.xml | 38 ++ ...ase_role_false_default_true_user_false.xml | 44 ++ ...case_role_false_default_true_user_true.xml | 44 ++ ...role_false_default_true_user_undefined.xml | 38 ++ ...ole_false_default_undefined_user_false.xml | 38 ++ ...role_false_default_undefined_user_true.xml | 38 ++ ...false_default_undefined_user_undefined.xml | 32 + ...ase_role_true_default_false_user_false.xml | 44 ++ ...case_role_true_default_false_user_true.xml | 44 ++ ...role_true_default_false_user_undefined.xml | 38 ++ ...case_role_true_default_true_user_false.xml | 44 ++ ..._case_role_true_default_true_user_true.xml | 44 ++ ..._role_true_default_true_user_undefined.xml | 38 ++ ...role_true_default_undefined_user_false.xml | 38 ++ ..._role_true_default_undefined_user_true.xml | 38 ++ ..._true_default_undefined_user_undefined.xml | 32 + ...ole_undefined_default_false_user_false.xml | 38 ++ ...role_undefined_default_false_user_true.xml | 38 ++ ...undefined_default_false_user_undefined.xml | 32 + ...role_undefined_default_true_user_false.xml | 38 ++ ..._role_undefined_default_true_user_true.xml | 38 ++ ..._undefined_default_true_user_undefined.xml | 32 + ...undefined_default_undefined_user_false.xml | 32 + ..._undefined_default_undefined_user_true.xml | 32 + ...fined_default_undefined_user_undefined.xml | 25 + ...se_role_false_default_false_user_false.xml | 44 ++ ...ase_role_false_default_false_user_true.xml | 44 ++ ...ole_false_default_false_user_undefined.xml | 38 ++ ...ase_role_false_default_true_user_false.xml | 44 ++ ...case_role_false_default_true_user_true.xml | 44 ++ ...role_false_default_true_user_undefined.xml | 38 ++ ...ole_false_default_undefined_user_false.xml | 38 ++ ...role_false_default_undefined_user_true.xml | 38 ++ ...false_default_undefined_user_undefined.xml | 32 + ...ase_role_true_default_false_user_false.xml | 44 ++ ...case_role_true_default_false_user_true.xml | 44 ++ ...role_true_default_false_user_undefined.xml | 38 ++ ...case_role_true_default_true_user_false.xml | 44 ++ ..._case_role_true_default_true_user_true.xml | 44 ++ ..._role_true_default_true_user_undefined.xml | 38 ++ ...role_true_default_undefined_user_false.xml | 38 ++ ..._role_true_default_undefined_user_true.xml | 38 ++ ..._true_default_undefined_user_undefined.xml | 32 + ...ole_undefined_default_false_user_false.xml | 38 ++ ...role_undefined_default_false_user_true.xml | 38 ++ ...undefined_default_false_user_undefined.xml | 32 + ...role_undefined_default_true_user_false.xml | 38 ++ ..._role_undefined_default_true_user_true.xml | 38 ++ ..._undefined_default_true_user_undefined.xml | 32 + ...undefined_default_undefined_user_false.xml | 32 + ..._undefined_default_undefined_user_true.xml | 32 + ...fined_default_undefined_user_undefined.xml | 25 + .../create/create_case_role_false.xml | 21 + .../create/create_case_role_true.xml | 21 + .../create/create_case_role_undefined.xml | 14 + .../delete_case_role_false_user_false.xml | 38 ++ .../delete_case_role_false_user_true.xml | 38 ++ .../delete_case_role_false_user_undefined.xml | 32 + .../delete_case_role_true_user_false.xml | 38 ++ .../delete_case_role_true_user_true.xml | 38 ++ .../delete_case_role_true_user_undefined.xml | 32 + .../delete_case_role_undefined_user_false.xml | 32 + .../delete_case_role_undefined_user_true.xml | 32 + ...ete_case_role_undefined_user_undefined.xml | 25 + .../view/view_case_role_false_user_false.xml | 38 ++ .../view/view_case_role_false_user_true.xml | 38 ++ .../view_case_role_false_user_undefined.xml | 32 + .../view/view_case_role_true_user_false.xml | 38 ++ .../view/view_case_role_true_user_true.xml | 38 ++ .../view_case_role_true_user_undefined.xml | 32 + .../view_case_role_undefined_user_false.xml | 32 + .../view_case_role_undefined_user_true.xml | 32 + ...iew_case_role_undefined_user_undefined.xml | 25 + .../finish_permission_combinations.xml | 586 ++++++++++++++++++ ...ish_permission_combinations_no_default.xml | 184 ++++++ .../view_permission_combinations.xml | 0 ...iew_permission_combinations_no_default.xml | 0 98 files changed, 5911 insertions(+), 125 deletions(-) create mode 100644 src/test/groovy/com/netgrif/application/engine/workflow/CasePermissionsTest.groovy create mode 100644 src/test/resources/csv/create case permissions - correct default disabled.csv create mode 100644 src/test/resources/csv/create case permissions - correct.csv create mode 100644 src/test/resources/petriNets/permissions/assign_permission_combinations.xml create mode 100644 src/test/resources/petriNets/permissions/assign_permission_combinations_no_default.xml create mode 100644 src/test/resources/petriNets/permissions/cancel_permission_combinations.xml create mode 100644 src/test/resources/petriNets/permissions/cancel_permission_combinations_no_default.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_false.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_true.xml create mode 100644 src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_undefined.xml create mode 100644 src/test/resources/petriNets/permissions/finish_permission_combinations.xml create mode 100644 src/test/resources/petriNets/permissions/finish_permission_combinations_no_default.xml rename src/test/resources/petriNets/{ => permissions}/view_permission_combinations.xml (100%) rename src/test/resources/petriNets/{ => permissions}/view_permission_combinations_no_default.xml (100%) diff --git a/src/main/java/com/netgrif/application/engine/workflow/service/CaseSearchService.java b/src/main/java/com/netgrif/application/engine/workflow/service/CaseSearchService.java index 1a2fcc0316f..4abd20667e7 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/service/CaseSearchService.java +++ b/src/main/java/com/netgrif/application/engine/workflow/service/CaseSearchService.java @@ -54,47 +54,54 @@ public class CaseSearchService extends MongoSearchService { private IPetriNetService petriNetService; public Predicate buildQuery(Map requestQuery, LoggedUser user, Locale locale) { - BooleanBuilder builder = new BooleanBuilder(); LoggedUser loggedOrImpersonated = user.getSelfOrImpersonated(); - + List singleQueries = new ArrayList<>(); if (requestQuery.containsKey(PETRINET)) { - builder.and(petriNet(requestQuery.get(PETRINET), loggedOrImpersonated, locale)); + singleQueries.add(petriNet(requestQuery.get(PETRINET), loggedOrImpersonated, locale)); } if (requestQuery.containsKey(AUTHOR)) { - builder.and(author(requestQuery.get(AUTHOR))); + singleQueries.add(author(requestQuery.get(AUTHOR))); } if (requestQuery.containsKey(TRANSITION)) { - builder.and(transition(requestQuery.get(TRANSITION))); + singleQueries.add(transition(requestQuery.get(TRANSITION))); } if (requestQuery.containsKey(FULLTEXT)) { - builder.and(fullText(requestQuery.getOrDefault(PETRINET, null), (String) requestQuery.get(FULLTEXT))); + singleQueries.add(fullText(requestQuery.getOrDefault(PETRINET, null), (String) requestQuery.get(FULLTEXT))); } if (requestQuery.containsKey(ROLE)) { - builder.and(role(requestQuery.get(ROLE))); + singleQueries.add(role(requestQuery.get(ROLE))); } if (requestQuery.containsKey(DATA)) { - builder.and(data(requestQuery.get(DATA))); + singleQueries.add(data(requestQuery.get(DATA))); } if (requestQuery.containsKey(TAGS)) { - builder.and(tags(requestQuery.get(TAGS))); + singleQueries.add(tags(requestQuery.get(TAGS))); } if (requestQuery.containsKey(CASE_ID)) { - builder.and(caseId(requestQuery.get(CASE_ID))); + singleQueries.add(caseId(requestQuery.get(CASE_ID))); } if (requestQuery.containsKey(GROUP)) { Predicate groupPredicate = group(requestQuery.get(GROUP), loggedOrImpersonated, locale); if (groupPredicate != null) { - builder.and(groupPredicate); + singleQueries.add(groupPredicate); } else { return null; } } - BooleanBuilder permissionConstraints = new BooleanBuilder(buildViewRoleQueryConstraint(loggedOrImpersonated)); - permissionConstraints.andNot(buildNegativeViewRoleQueryConstraint(loggedOrImpersonated)); - permissionConstraints.or(buildViewUserQueryConstraint(loggedOrImpersonated)); - permissionConstraints.andNot(buildNegativeViewUsersQueryConstraint(loggedOrImpersonated)); - builder.and(permissionConstraints); - return builder; + + BooleanBuilder builder = constructPredicateTree(singleQueries, BooleanBuilder::or); + + // (Rp!=0 & Rn = 0) + BooleanBuilder constraints = new BooleanBuilder(buildViewRoleQueryConstraint(loggedOrImpersonated)) + .andNot(buildNegativeViewRoleQueryConstraint(loggedOrImpersonated)); + + // ((Rp!=0 & Rn = 0) or Up!=0) + constraints.or(buildViewUserQueryConstraint(loggedOrImpersonated)); + + // (((Rp!=0 & Rn = 0) or Up!=0) & Un=0) == 1 + constraints.andNot(buildNegativeViewUsersQueryConstraint(loggedOrImpersonated)); + + return builder.and(constraints); } protected Predicate buildViewRoleQueryConstraint(LoggedUser user) { @@ -103,7 +110,7 @@ protected Predicate buildViewRoleQueryConstraint(LoggedUser user) { } public Predicate viewRoleQuery(String role) { - return QCase.case$.viewUserRefs.isEmpty().and(QCase.case$.viewRoles.isEmpty()).or(QCase.case$.viewRoles.contains(role)); + return QCase.case$.viewRoles.contains(role); } protected Predicate buildViewUserQueryConstraint(LoggedUser user) { @@ -112,7 +119,7 @@ protected Predicate buildViewUserQueryConstraint(LoggedUser user) { } public Predicate viewUserQuery(String userId) { - return QCase.case$.viewUserRefs.isEmpty().and(QCase.case$.viewRoles.isEmpty()).or(QCase.case$.viewUsers.contains(userId)); + return QCase.case$.viewUsers.contains(userId); } protected Predicate buildNegativeViewRoleQueryConstraint(LoggedUser user) { @@ -134,22 +141,19 @@ public Predicate negativeViewUserQuery(String userId) { } public Predicate petriNet(Object query, LoggedUser user, Locale locale) { - List allowedNets = petriNetService.getReferencesByUsersProcessRoles(user, locale); if (query instanceof ArrayList) { BooleanBuilder builder = new BooleanBuilder(); - List expressions = (List) ((ArrayList) query).stream().filter(q -> q instanceof HashMap).map(q -> petriNetObject((HashMap) q, allowedNets)).collect(Collectors.toList()); + List expressions = (List) ((ArrayList) query).stream().filter(q -> q instanceof HashMap).map(q -> petriNetObject((HashMap) q)).collect(Collectors.toList()); expressions.forEach(builder::or); return builder; } else if (query instanceof HashMap) { - return petriNetObject((HashMap) query, allowedNets); + return petriNetObject((HashMap) query); } return null; } - private static BooleanExpression petriNetObject(HashMap query, List allowedNets) { - if (query.containsKey(PETRINET_IDENTIFIER) && allowedNets.stream().anyMatch(net -> net.getIdentifier().equalsIgnoreCase(query.get(PETRINET_IDENTIFIER)))) - return QCase.case$.processIdentifier.equalsIgnoreCase(query.get(PETRINET_IDENTIFIER)); - return null; + private static BooleanExpression petriNetObject(HashMap query) { + return QCase.case$.processIdentifier.equalsIgnoreCase(query.get(PETRINET_IDENTIFIER)); } public Predicate author(Object query) { diff --git a/src/main/java/com/netgrif/application/engine/workflow/web/WorkflowController.java b/src/main/java/com/netgrif/application/engine/workflow/web/WorkflowController.java index d063e4ca274..d83460e04a7 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/web/WorkflowController.java +++ b/src/main/java/com/netgrif/application/engine/workflow/web/WorkflowController.java @@ -106,17 +106,6 @@ public PagedModel getAll(Pageable pageable, PagedResourcesAssemble return resources; } - @Operation(summary = "Generic case search with QueryDSL predicate", security = {@SecurityRequirement(name = "BasicAuth")}) - @PostMapping(value = "/case/search2", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaTypes.HAL_JSON_VALUE) - public PagedModel search2(@QuerydslPredicate(root = Case.class) Predicate predicate, Pageable pageable, PagedResourcesAssembler assembler) { - Page cases = workflowService.search(predicate, pageable); - Link selfLink = WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder.methodOn(WorkflowController.class) - .search2(predicate, pageable, assembler)).withRel("search2"); - PagedModel resources = assembler.toModel(cases, new CaseResourceAssembler(), selfLink); - ResourceLinkAssembler.addLinks(resources, Case.class, selfLink.getRel().toString()); - return resources; - } - @Operation(summary = "Generic case search on Elasticsearch database", security = {@SecurityRequirement(name = "BasicAuth")}) @PostMapping(value = "/case/search", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaTypes.HAL_JSON_VALUE) public PagedModel search(@RequestBody SingleCaseSearchRequestAsList searchBody, @RequestParam(defaultValue = "OR") MergeFilterOperation operation, Pageable pageable, PagedResourcesAssembler assembler, Authentication auth, Locale locale) { @@ -131,18 +120,6 @@ public PagedModel search(@RequestBody SingleCaseSearchRequestAsLis return resources; } - @Operation(summary = "Generic case search on Mongo database", security = {@SecurityRequirement(name = "BasicAuth")}) - @PostMapping(value = "/case/search_mongo", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaTypes.HAL_JSON_VALUE) - public PagedModel searchMongo(@RequestBody Map searchBody, Pageable pageable, PagedResourcesAssembler assembler, Authentication auth, Locale locale) { - Page cases = workflowService.search(searchBody, pageable, (LoggedUser) auth.getPrincipal(), locale); - Link selfLink = WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder.methodOn(WorkflowController.class) - .searchMongo(searchBody, pageable, assembler, auth, locale)).withRel("search"); - PagedModel resources = assembler.toModel(cases, new CaseResourceAssembler(), selfLink); - ResourceLinkAssembler.addLinks(resources, Case.class, selfLink.getRel().toString()); - return resources; - } - - @Operation(summary = "Get count of the cases", security = {@SecurityRequirement(name = "BasicAuth")}) @PostMapping(value = "/case/count", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public CountResponse count(@RequestBody SingleCaseSearchRequestAsList searchBody, @RequestParam(defaultValue = "OR") MergeFilterOperation operation, Authentication auth, Locale locale) { diff --git a/src/test/groovy/com/netgrif/application/engine/workflow/CasePermissionsTest.groovy b/src/test/groovy/com/netgrif/application/engine/workflow/CasePermissionsTest.groovy new file mode 100644 index 00000000000..d90e34d38bf --- /dev/null +++ b/src/test/groovy/com/netgrif/application/engine/workflow/CasePermissionsTest.groovy @@ -0,0 +1,467 @@ +package com.netgrif.application.engine.workflow + +import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.auth.domain.IUser +import com.netgrif.application.engine.auth.domain.User +import com.netgrif.application.engine.auth.domain.UserState +import com.netgrif.application.engine.auth.service.interfaces.IUserService +import com.netgrif.application.engine.petrinet.domain.PetriNet +import com.netgrif.application.engine.petrinet.domain.VersionType +import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.ActionDelegate +import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService +import com.netgrif.application.engine.workflow.domain.Case +import com.netgrif.application.engine.workflow.service.interfaces.IDataService +import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService +import groovy.json.JsonOutput +import groovy.json.JsonSlurper +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.context.i18n.LocaleContextHolder +import org.springframework.hateoas.MediaTypes +import org.springframework.http.MediaType +import org.springframework.mock.web.MockHttpServletRequest +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken +import org.springframework.security.core.Authentication +import org.springframework.security.web.authentication.WebAuthenticationDetails +import org.springframework.test.context.ActiveProfiles +import org.springframework.test.context.junit.jupiter.SpringExtension +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.MvcResult +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder +import org.springframework.test.web.servlet.setup.MockMvcBuilders +import org.springframework.web.context.WebApplicationContext + +import java.nio.charset.StandardCharsets + +import static org.junit.jupiter.api.Assertions.assertFalse +import static org.junit.jupiter.api.Assertions.assertTrue +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post + +@SpringBootTest +@ActiveProfiles(["test"]) +@ExtendWith(SpringExtension.class) +class CasePermissionsTest { + + @Autowired + private IWorkflowService workflowService + + @Autowired + private IPetriNetService petriNetService + + @Autowired + private IUserService userService + + @Autowired + private IDataService dataService + + @Autowired + private TestHelper testHelper + + @Autowired + private ActionDelegate actionDelegate + + @Autowired + private WebApplicationContext wac + + private MockMvc mvc + + private static final String CREATE_CASE_PERMISSION_DIRECTORY = "src/test/resources/petriNets/permissions/case/default/create" + private static final String CREATE_CASE_PERMISSION_DEFAULT_DISABLED_DIRECTORY = "src/test/resources/petriNets/permissions/case/defaultDisabled/create" + + private static final String DELETE_CASE_PERMISSION_DIRECTORY = "src/test/resources/petriNets/permissions/case/default/delete" + private static final String DELETE_CASE_PERMISSION_DEFAULT_DISABLED_DIRECTORY = "src/test/resources/petriNets/permissions/case/defaultDisabled/delete" + + private static final String VIEW_CASE_PERMISSION_DIRECTORY = "src/test/resources/petriNets/permissions/case/default/view" + private static final String VIEW_CASE_PERMISSION_DEFAULT_DISABLED_DIRECTORY = "src/test/resources/petriNets/permissions/case/defaultDisabled/view" + + private static final String CORRECT_PERMISSIONS_CSV_FILEPATH = "src/test/resources/csv/permissions - correct.csv" + private static final String CORRECT_PERMISSIONS_DEFAULT_DISABLED_CSV_FILEPATH = "src/test/resources/csv/permissions - correct default disabled.csv" + + private static final String CREATE_CASE_CORRECT_PERMISSIONS_CSV_FILEPATH = "src/test/resources/csv/create case permissions - correct.csv" + private static final String CREATE_CASE_CORRECT_PERMISSIONS_DEFAULT_DISABLED_CSV_FILEPATH = "src/test/resources/csv/create case permissions - correct default disabled.csv" + + private static final String CASE_BASE_URL = "/api/workflow/case" + + private static Map testUsers = [:] + private static List withRoles = [] + private static List inUserRef = [] + private static Map>> correctResults = new HashMap<>() + + @BeforeEach + void init() { + testHelper.truncateDbs() + testUsers.clear() + actionDelegate.outcomes = [] + mvc = MockMvcBuilders + .webAppContextSetup(wac) + .apply(springSecurity()) + .build() + + [ + new User("no_permissions@mail.com", "password", "No", "Permissions"), + new User("has_role@mail.com", "password", "Has", "Role"), + new User("in_userRef@mail.com", "password", "In", "UserRef"), + new User("both_permissions@mail.com", "password", "Both", "Permissions") + ].each { + it.setState(UserState.ACTIVE) + testUsers.put(it.getEmail(), userService.saveNew(it)) + } + + withRoles = [testUsers.get("has_role@mail.com"), testUsers.get("both_permissions@mail.com")] + inUserRef = [testUsers.get("in_userRef@mail.com").stringId, testUsers.get("both_permissions@mail.com").stringId] + correctResults = permissionsCsvToExpectedMap() + } + + @Test + void testCreateCasePermission() { + testUsers.remove("in_userRef@mail.com") + testUsers.remove("both_permissions@mail.com") + withRoles.removeIf { it.email == "both_permissions@mail.com" } + Map testNets = importTestNets(CREATE_CASE_PERMISSION_DIRECTORY) + Map testNetsNoDefault = importTestNets(CREATE_CASE_PERMISSION_DEFAULT_DISABLED_DIRECTORY) + Map>> results = [:] + testUsers.forEach((email, user) -> { + Authentication auth = new UsernamePasswordAuthenticationToken(email, "password") + auth.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) + + results.put(email, [ + "Default enabled" : resolveCreateWithNets(testNets, auth), + "Default DISabled": resolveCreateWithNets(testNetsNoDefault, auth) + ]) + }) + correctResults = importCorrectResultsForCreatePermission() + compareTestResultsToExpected(results, "Create") + } + + @Test + void testDeleteCasePermission() { + Map testNets = importTestNets(DELETE_CASE_PERMISSION_DIRECTORY) + Map testNetsNoDefault = importTestNets(DELETE_CASE_PERMISSION_DEFAULT_DISABLED_DIRECTORY) + Map>> results = [:] + testUsers.forEach((email, user) -> { + + results.put(email, [ + "Default enabled" : resolveDeleteWithNets(testNets, user), + "Default DISabled": resolveDeleteWithNets(testNetsNoDefault, user) + ]) + }) + compareTestResultsToExpected(results, "Delete") + } + + @Test + void testViewCasePermission() { + Map testNets = importTestNets(VIEW_CASE_PERMISSION_DIRECTORY) + createTestCases(testNets) + Map testNetsNoDefault = importTestNets(VIEW_CASE_PERMISSION_DEFAULT_DISABLED_DIRECTORY) + createTestCases(testNetsNoDefault) + Map>> resultsElastic = [:] + + testUsers.forEach((email, user) -> { + + resultsElastic.put(email, [ + "Default enabled" : resolveViewWithNets(testNets, user), + "Default DISabled": resolveViewWithNets(testNetsNoDefault, user) + ]) + }) + compareTestResultsToExpected(resultsElastic, "View") + } + + void createTestCases(Map testNets) { + testNets.forEach((identifier, net) -> { + def content = JsonOutput.toJson([ + netId: net.stringId + ]) + Authentication authSuper = new UsernamePasswordAuthenticationToken("super@netgrif.com", "password") + authSuper.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) + String caseId = parseResult(performRequest(buildCreateCaseRequest(content, authSuper))).outcome.aCase.stringId + Case createdCase = workflowService.findOne(caseId) + actionDelegate.setData("t_001", createdCase, [ + "users": [ + "type" : "userList", + "value": inUserRef + ] + ]).getCase() + }) + } + + List resolveViewWithNets(Map testNets, IUser user) { + Authentication auth = new UsernamePasswordAuthenticationToken(user.email, "password") + auth.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) + List found = [] + testNets.forEach((identifier, net) -> { + MockHttpServletRequestBuilder request = buildElasticSearchCaseRequest(net.identifier, auth) + + if (performSearchRequestAndResolveSuccess(request, net.identifier)) { + found.add(net.identifier) + } + }) + return found.sort() + } + + List resolveDeleteWithNets(Map testNets, IUser user) { + Authentication auth = new UsernamePasswordAuthenticationToken(user.email, "password") + auth.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) + List deleted = [] + testNets.forEach((identifier, net) -> { + def content = JsonOutput.toJson([ + netId: net.stringId + ]) + + Authentication authSuper = new UsernamePasswordAuthenticationToken("super@netgrif.com", "password") + authSuper.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) + String caseId = parseResult(performRequest(buildCreateCaseRequest(content, authSuper))).outcome.aCase.stringId + Case createdCase = workflowService.findOne(caseId) + actionDelegate.setData("t_001", createdCase, [ + "users": [ + "type" : "userList", + "value": inUserRef + ] + ]).getCase() + + if (performRequestAndResolveSuccess(buildDeleteCaseRequest(caseId, auth))) { + deleted.add(net.identifier) + } + }) + return deleted.sort() + } + + List resolveCreateWithNets(Map testNets, Authentication auth) { + List created = [] + testNets.forEach((identifier, net) -> { + def content = JsonOutput.toJson([ + netId: net.stringId + ]) + + boolean result = performRequestAndResolveSuccess(buildCreateCaseRequest(content, auth)) + if (result) { + created.add(net.identifier) + } + }) + return created.sort() + } + + static MockHttpServletRequestBuilder buildCreateCaseRequest(String content, Authentication auth) { + return post(CASE_BASE_URL) + .content(content) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaTypes.HAL_JSON_VALUE) + .locale(LocaleContextHolder.getLocale()) + .with(csrf().asHeader()) + .with(authentication(auth)) + } + + static MockHttpServletRequestBuilder buildDeleteCaseRequest(String caseId, Authentication auth) { + return delete(CASE_BASE_URL.concat("/${caseId}")) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaTypes.HAL_JSON_VALUE) + .locale(LocaleContextHolder.getLocale()) + .with(csrf().asHeader()) + .with(authentication(auth)) + } + + static MockHttpServletRequestBuilder buildElasticSearchCaseRequest(String netIdentifier, Authentication auth) { + return post(CASE_BASE_URL.concat("/search")) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaTypes.HAL_JSON_VALUE) + .content(JsonOutput.toJson([ + "process": [ + "identifier": netIdentifier + ], + ])) + .locale(LocaleContextHolder.getLocale()) + .with(csrf().asHeader()) + .with(authentication(auth)) + } + + boolean performRequestAndResolveSuccess(MockHttpServletRequestBuilder request) { + MvcResult result = performRequest(request) + if (result.getResponse().getStatus() == 200) { + return true + } + return false + } + + boolean performSearchRequestAndResolveSuccess(MockHttpServletRequestBuilder request, String netIdentifier) { + MvcResult result = performRequest(request) + Object parsedResult = parseResult(result) + if (parsedResult.page.totalElements == 1 && parsedResult._embedded.cases[0].processIdentifier == netIdentifier) { + return true + } + return false + } + + MvcResult performRequest(MockHttpServletRequestBuilder request) { + return mvc.perform(request).andReturn() + } + + Map importTestNets(String testNetDirectory) { + File testNetsDirectory = new File(testNetDirectory) + assertTrue(testNetsDirectory.isDirectory()) + File[] testNets = testNetsDirectory.listFiles() + assertTrue(testNets.size() > 0) + Map importedNets = [:] + for (File testNet in testNets) { + PetriNet net = petriNetService.importPetriNet(new FileInputStream(testNet), VersionType.MAJOR, userService.getLoggedOrSystem().transformToLoggedUser()).getNet() + withRoles.forEach { user -> + assignRoleToUser(net, user) + } + importedNets.put(net.identifier, net) + } + return importedNets + } + + void assignRoleToUser(PetriNet net, IUser user) { + testUsers.put(user.email, userService.addRole(user, net.roles.values().find { role -> role.importId == "process_role" }.stringId)) + } + + static Map>> permissionsCsvToExpectedMap() { + Map>> expectedMap = initializeExpectedPermissionsMap() + + addPermissionsCsvToExpectedMap( + CORRECT_PERMISSIONS_CSV_FILEPATH, + "Default enabled", + expectedMap + ) + + addPermissionsCsvToExpectedMap( + CORRECT_PERMISSIONS_DEFAULT_DISABLED_CSV_FILEPATH, + "Default DISabled", + expectedMap + ) + + return expectedMap + } + + static void addPermissionsCsvToExpectedMap(String csvFilePath, + String defaultRoleKey, + Map>> expectedMap, + Map userColumns = [:] + ) { + File csvFile = new File(csvFilePath) + if (userColumns.isEmpty()) { + userColumns = this.userColumns() + } + + List lines = csvFile.readLines("UTF-8").findAll { it?.trim() } + assertFalse(lines.isEmpty(), "CSV file is empty: ${csvFilePath}") + List header = lines.first().split(",", -1)*.trim() + + int transitionTitleIndex = header.indexOf("Transition title") + assertTrue(transitionTitleIndex >= 0, "Missing required column 'Transition title' in ${csvFilePath}") + + lines.tail().each { line -> + List columns = line.split(",", -1)*.trim() + String title = columns[transitionTitleIndex] + + userColumns.each { csvColumnName, userEmail -> + int permissionIndex = header.indexOf(csvColumnName) + assertTrue(permissionIndex >= 0, "Missing required column '${csvColumnName}' in ${csvFilePath}") + + String permissionValue = columns[permissionIndex] + .replace(".", "") + .trim() + .toUpperCase() + + if (permissionValue == "TRUE") { + expectedMap[userEmail][defaultRoleKey] << title.replace("=", "_").replace(" ", "_") + } + } + } + + expectedMap.values().each { Map> permissionsByDefaultRole -> + permissionsByDefaultRole[defaultRoleKey].sort() + } + } + + static Map>> initializeExpectedPermissionsMap() { + return userColumns().values().collectEntries { String email -> + [ + email, + [ + "Default enabled" : [], + "Default DISabled": [] + ] + ] + } + } + + static Map userColumns() { + return [ + "No permissions" : "no_permissions@mail.com", + "Has role" : "has_role@mail.com", + "Is in userList" : "in_userRef@mail.com", + "Has role and is in userList": "both_permissions@mail.com" + ] + } + + static void compareTestResultsToExpected(Map>> testResultMap, String permissionType) { + println("\n========== ${permissionType} permissions comparison ==========") + + testUsers.keySet().each { String userEmail -> + println("\nUser: ${userEmail}") + + ["Default enabled", "Default DISabled"].each { String defaultRoleKey -> + Set actualNetIdentifiersIds = new TreeSet<>( + testResultMap.get(userEmail)?.get(defaultRoleKey) ?: [] + ) + + Set expectedNetIdentifiers = new TreeSet<>( + correctResults.get(userEmail)?.get(defaultRoleKey)?.collect { permissionType.toLowerCase().concat("_case_").concat(it) } ?: [] + ) + + Set presentInBoth = new TreeSet<>(actualNetIdentifiersIds) + presentInBoth.retainAll(expectedNetIdentifiers) + + Set presentOnlyInMap = new TreeSet<>(actualNetIdentifiersIds) + presentOnlyInMap.removeAll(expectedNetIdentifiers) + + Set presentOnlyInCorrectResultsWithDefaultRoleMap = new TreeSet<>(expectedNetIdentifiers) + presentOnlyInCorrectResultsWithDefaultRoleMap.removeAll(actualNetIdentifiersIds) + + println("\n${defaultRoleKey}:") + println("Present in both results (${presentInBoth.size()}): ${presentInBoth}") + println("Present only in test results (${presentOnlyInMap.size()}): ${presentOnlyInMap}") + println("Present only in correct results (${presentOnlyInCorrectResultsWithDefaultRoleMap.size()}): ${presentOnlyInCorrectResultsWithDefaultRoleMap}") + + assertTrue(presentInBoth.size() == actualNetIdentifiersIds.size() && presentInBoth.size() == expectedNetIdentifiers.size()) + } + } + + println("\n=================================================") + } + + static importCorrectResultsForCreatePermission() { + Map>> expectedMap = initializeExpectedPermissionsMap() + + Map userColumns = userColumns() + userColumns.remove("Is in userList") + userColumns.remove("Has role and is in userList") + + + addPermissionsCsvToExpectedMap( + CREATE_CASE_CORRECT_PERMISSIONS_CSV_FILEPATH, + "Default enabled", + expectedMap, userColumns + ) + + addPermissionsCsvToExpectedMap( + CREATE_CASE_CORRECT_PERMISSIONS_DEFAULT_DISABLED_CSV_FILEPATH, + "Default DISabled", + expectedMap, userColumns + ) + + return expectedMap + } + + @SuppressWarnings("GrMethodMayBeStatic") + private def parseResult(MvcResult result) { + return (new JsonSlurper()).parseText(result.response.getContentAsString(StandardCharsets.UTF_8)) + } +} \ No newline at end of file diff --git a/src/test/groovy/com/netgrif/application/engine/workflow/TaskPermissionsTest.groovy b/src/test/groovy/com/netgrif/application/engine/workflow/TaskPermissionsTest.groovy index a2e4ee0b4dd..79fb48c44dd 100644 --- a/src/test/groovy/com/netgrif/application/engine/workflow/TaskPermissionsTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/workflow/TaskPermissionsTest.groovy @@ -17,6 +17,8 @@ import com.netgrif.application.engine.workflow.service.interfaces.IDataService import com.netgrif.application.engine.workflow.service.interfaces.ITaskService import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService import com.netgrif.application.engine.workflow.web.requestbodies.taskSearch.TaskSearchCaseRequest +import groovy.json.JsonOutput +import groovy.json.JsonSlurper import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -25,11 +27,30 @@ import org.springframework.boot.test.context.SpringBootTest import org.springframework.context.i18n.LocaleContextHolder import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable +import org.springframework.hateoas.MediaTypes +import org.springframework.http.MediaType +import org.springframework.mock.web.MockHttpServletRequest +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken +import org.springframework.security.core.Authentication +import org.springframework.security.web.authentication.WebAuthenticationDetails import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.junit.jupiter.SpringExtension +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.MvcResult +import org.springframework.test.web.servlet.setup.MockMvcBuilders +import org.springframework.web.context.WebApplicationContext +import java.nio.charset.StandardCharsets import java.util.stream.Collectors +import static org.junit.jupiter.api.Assertions.assertFalse +import static org.junit.jupiter.api.Assertions.assertTrue +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf +import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post + @SpringBootTest @ActiveProfiles(["test"]) @ExtendWith(SpringExtension.class) @@ -59,29 +80,47 @@ class TaskPermissionsTest { @Autowired private TestHelper testHelper - private static final String TEST_NET = "view_permission_combinations.xml" - private static final String TEST_NET_NO_DEFAULT = "view_permission_combinations_no_default.xml" + @Autowired + private WebApplicationContext wac + + private MockMvc mvc + + private static final String VIEW_TEST_NET = "view_permission_combinations.xml" + private static final String VIEW_TEST_NET_NO_DEFAULT = "view_permission_combinations_no_default.xml" + + private static final String ASSIGN_TEST_NET = "assign_permission_combinations.xml" + private static final String ASSIGN_TEST_NET_NO_DEFAULT = "assign_permission_combinations_no_default.xml" + + private static final String FINISH_TEST_NET = "finish_permission_combinations.xml" + private static final String FINISH_TEST_NET_NO_DEFAULT = "finish_permission_combinations_no_default.xml" + + private static final String CANCEL_TEST_NET = "cancel_permission_combinations.xml" + private static final String CANCEL_TEST_NET_NO_DEFAULT = "cancel_permission_combinations_no_default.xml" + private static final String CORRECT_PERMISSIONS_CSV_FILEPATH = "src/test/resources/csv/permissions - correct.csv" private static final String CORRECT_PERMISSIONS_DEFAULT_DISABLED_CSV_FILEPATH = "src/test/resources/csv/permissions - correct default disabled.csv" - private static Case testCase - private static Case testCaseNoDefault + private static Map testUsers = [:] + private static List withRoles = [] + private static List inUserRef = [] private static Map>> correctResults = new HashMap<>() + private static final Closure TASK_ASSIGN_URL = { id -> "/api/task/assign/$id" as String } + private static final Closure TASK_FINISH_URL = { id -> "/api/task/finish/$id" as String } + private static final Closure TASK_CANCEL_URL = { id -> "/api/task/cancel/$id" as String } + private static final String TASK_SEARCH_URL = "/api/task/search?sort=priority" + private static final String ELASTIC_TASK_SEARCH_URL = "/api/task/search_es?sort=priority" + @BeforeEach() void init() { testHelper.truncateDbs() actionDelegate.outcomes = [] testUsers.clear() correctResults.clear() - testCase = null - testCaseNoDefault = null - - PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/" + TEST_NET), VersionType.MAJOR, userService.getLoggedOrSystem().transformToLoggedUser()).getNet() - PetriNet netNoDefault = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/" + TEST_NET_NO_DEFAULT), VersionType.MAJOR, userService.getLoggedOrSystem().transformToLoggedUser()).getNet() - - testCase = workflowService.createCaseByIdentifier(net.identifier, "Test case", "", userService.getLoggedOrSystem().transformToLoggedUser()).getCase() - testCaseNoDefault = workflowService.createCaseByIdentifier(netNoDefault.identifier, "Test case with no default", "", userService.getLoggedOrSystem().transformToLoggedUser()).getCase() + mvc = MockMvcBuilders + .webAppContextSetup(wac) + .apply(springSecurity()) + .build() [ new User("no_permissions@mail.com", "password", "No", "Permissions"), @@ -93,29 +132,219 @@ class TaskPermissionsTest { testUsers.put(it.getEmail(), userService.saveNew(it)) } - List withRoles = [testUsers.get("has_role@mail.com"), testUsers.get("both_permissions@mail.com")] - List inUserRef = [testUsers.get("in_userRef@mail.com").stringId, testUsers.get("both_permissions@mail.com").stringId] + withRoles = [testUsers.get("has_role@mail.com"), testUsers.get("both_permissions@mail.com")] + inUserRef = [testUsers.get("in_userRef@mail.com").stringId, testUsers.get("both_permissions@mail.com").stringId] - withRoles.forEach { - testUsers.put(it.getEmail(), userService.addRole(testUsers.get(it.getEmail()), net.roles.values().find { role -> role.importId == "process_role" }.stringId)) - testUsers.put(it.getEmail(), userService.addRole(testUsers.get(it.getEmail()), netNoDefault.roles.values().find { role -> role.importId == "process_role" }.stringId)) - } + correctResults = permissionsCsvToExpectedMap() + } - testCase = actionDelegate.setData("t_001", testCase, [ - "users": [ - "type" : "userList", - "value": inUserRef + @Test + void testViewPermissions() { + Case testCase = prepareTestCase("src/test/resources/petriNets/permissions/" + VIEW_TEST_NET, "t_001") + Case testCaseNoDefault = prepareTestCase("src/test/resources/petriNets/permissions/" + VIEW_TEST_NET_NO_DEFAULT, "t_007") + + Thread.sleep(1000) + + def mapElastic = [:] + def mapMongo = [:] + ElasticTaskSearchRequest request = new ElasticTaskSearchRequest() + request.useCase = [new TaskSearchCaseRequest(testCase.stringId, testCase.title)] + + ElasticTaskSearchRequest request2 = new ElasticTaskSearchRequest() + request2.useCase = [new TaskSearchCaseRequest(testCaseNoDefault.stringId, testCaseNoDefault.title)] + + testUsers.forEach((key, value) -> { +// Elastic task search + Page tasks = elasticTaskService.search([request], + value.transformToLoggedUser(), + Pageable.unpaged(), LocaleContextHolder.getLocale(), false) + List list = new ArrayList<>(tasks.content).stream().map(task -> task.transitionId).collect(Collectors.toList()).sort() + + + Page tasks2 = elasticTaskService.search([request2], + value.transformToLoggedUser(), + Pageable.unpaged(), LocaleContextHolder.getLocale(), false) + List list2 = new ArrayList<>(tasks2.content).stream().map(task -> task.transitionId).collect(Collectors.toList()).sort() + +// Mongo task search + Page mongoTasksDefault = taskService.search([request], Pageable.unpaged(), value.transformToLoggedUser(), LocaleContextHolder.getLocale(), false) + List mongoListDefault = new ArrayList<>(mongoTasksDefault.content).stream().map(task -> task.transitionId).collect(Collectors.toList()).sort() + Page mongoTasksNoDefault = taskService.search([request2], Pageable.unpaged(), value.transformToLoggedUser(), LocaleContextHolder.getLocale(), false) + List mongoListNoDefault = new ArrayList<>(mongoTasksNoDefault.content).stream().map(task -> task.transitionId).collect(Collectors.toList()).sort() + + mapElastic.put(key, [ + "Default enabled" : list, + "Default DISabled": list2 + ]) + + mapMongo.put(key, [ + "Default enabled" : mongoListDefault, + "Default DISabled": mongoListNoDefault + ]) + }) + compareTestResultsToExpected(mapElastic, "Elastic search", "View") + compareTestResultsToExpected(mapMongo, "Mongo search", "View") + } + + @Test + void testViewPermissionsMVC() { + Case testCase = prepareTestCase("src/test/resources/petriNets/permissions/" + VIEW_TEST_NET, "t_001") + Case testCaseNoDefault = prepareTestCase("src/test/resources/petriNets/permissions/" + VIEW_TEST_NET_NO_DEFAULT, "t_007") + + Thread.sleep(1000) + + def mapElastic = [:] + def mapMongo = [:] + + def content1 = JsonOutput.toJson([ + case: [ + id: testCase.stringId ] - ]).getCase() + ]) + def content2 = JsonOutput.toJson([ + case: [ + id: testCaseNoDefault.stringId + ] + ]) + + testUsers.forEach((key, value) -> { + Authentication auth = new UsernamePasswordAuthenticationToken(key, "password") + auth.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) +// Elastic task search + mapElastic.put(key, [ + "Default enabled" : performSearch(ELASTIC_TASK_SEARCH_URL, content1, auth), + "Default DISabled": performSearch(ELASTIC_TASK_SEARCH_URL, content2, auth) + ]) + +// Mongo task search + mapMongo.put(key, [ + "Default enabled" : performSearch(TASK_SEARCH_URL, content1, auth), + "Default DISabled": performSearch(TASK_SEARCH_URL, content2, auth) + ]) + }) + compareTestResultsToExpected(mapElastic, "Elastic search MVC", "View") + compareTestResultsToExpected(mapMongo, "Mongo search MVC", "View") + } + + @Test + void testAssignPermission() { + Case testCase = prepareTestCase("src/test/resources/petriNets/permissions/" + ASSIGN_TEST_NET, "t_001") + Case testCaseNoDefault = prepareTestCase("src/test/resources/petriNets/permissions/" + ASSIGN_TEST_NET_NO_DEFAULT, "t_007") + + Thread.sleep(1000) + + def resultMap = [:] - testCaseNoDefault = actionDelegate.setData("t_007", testCaseNoDefault, [ + testUsers.forEach((key, value) -> { + + Authentication auth = new UsernamePasswordAuthenticationToken(key, "password") + auth.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) + + resultMap.put(key, [ + "Default enabled" : performRequest(testCase, TASK_ASSIGN_URL, auth), + "Default DISabled": performRequest(testCaseNoDefault, TASK_ASSIGN_URL, auth) + ]) + }) + compareTestResultsToExpected(resultMap, "MockMvc", "Assign") + } + + @Test + void testFinishPermission() { + Case testCase = prepareTestCase("src/test/resources/petriNets/permissions/" + FINISH_TEST_NET, "t_001") + Case testCaseNoDefault = prepareTestCase("src/test/resources/petriNets/permissions/" + FINISH_TEST_NET_NO_DEFAULT, "t_007") + + Thread.sleep(1000) + + def resultMap = [:] + + testUsers.forEach((key, value) -> { + + Authentication auth = new UsernamePasswordAuthenticationToken(key, "password") + auth.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) + + performRequest(testCase, TASK_ASSIGN_URL, auth) + performRequest(testCaseNoDefault, TASK_ASSIGN_URL, auth) + + resultMap.put(key, [ + "Default enabled" : performRequest(testCase, TASK_FINISH_URL, auth), + "Default DISabled": performRequest(testCaseNoDefault, TASK_FINISH_URL, auth) + ]) + }) + compareTestResultsToExpected(resultMap, "MockMvc", "FINISH") + } + + @Test + void testCancelPermission() { + Case testCase = prepareTestCase("src/test/resources/petriNets/permissions/" + CANCEL_TEST_NET, "t_001") + Case testCaseNoDefault = prepareTestCase("src/test/resources/petriNets/permissions/" + CANCEL_TEST_NET_NO_DEFAULT, "t_007") + + Thread.sleep(1000) + + def resultMap = [:] + + testUsers.forEach((key, value) -> { + + Authentication auth = new UsernamePasswordAuthenticationToken(key, "password") + auth.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest())) + + performRequest(testCase, TASK_ASSIGN_URL, auth) + performRequest(testCaseNoDefault, TASK_ASSIGN_URL, auth) + + resultMap.put(key, [ + "Default enabled" : performRequest(testCase, TASK_CANCEL_URL, auth), + "Default DISabled": performRequest(testCaseNoDefault, TASK_CANCEL_URL, auth) + ]) + }) + compareTestResultsToExpected(resultMap, "MockMvc", "CANCEL") + } + + List performSearch(String searchUrl, String content, Authentication auth) { + List list = [] + MvcResult result = mvc.perform(post(searchUrl) + .content(content) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .accept(MediaTypes.HAL_JSON_VALUE) + .locale(LocaleContextHolder.getLocale()) + .with(csrf().asHeader()) + .with(authentication(auth))) + .andReturn() + if (result.getResponse().getStatus() == 200) { + def parsedResult = parseResult(result)._embedded + parsedResult == null ?: list.addAll(parsedResult.tasks?.collect { it.transitionId }.sort()) + } + return list + } + + List performRequest(Case testCase, Closure request, Authentication auth) { + List resultTransitions = [] + testCase.tasks.forEach((taskPair) -> { + MvcResult result = mvc.perform(get(request(taskPair.getTask())) + .accept(MediaTypes.HAL_JSON_VALUE) + .locale(LocaleContextHolder.getLocale()) + .with(csrf().asHeader()) + .with(authentication(auth))) + .andReturn() + if (result.getResponse().getStatus() != 200) { + return + } + resultTransitions.add(taskPair.getTransition()) + }) + return resultTransitions.sort() + } + + Case prepareTestCase(String netFilePath, String transId) { + PetriNet net = petriNetService.importPetriNet(new FileInputStream(netFilePath), VersionType.MAJOR, userService.getLoggedOrSystem().transformToLoggedUser()).getNet() + Case testCase = workflowService.createCaseByIdentifier(net.identifier, "Test case", "", userService.getLoggedOrSystem().transformToLoggedUser()).getCase() + withRoles.forEach { + testUsers.put(it.getEmail(), userService.addRole(testUsers.get(it.getEmail()), net.roles.values().find { role -> role.importId == "process_role" }.stringId)) + } + testCase = actionDelegate.setData(transId, testCase, [ "users": [ "type" : "userList", "value": inUserRef ] ]).getCase() - - correctResults = permissionsCsvToExpectedMap() + return testCase } static Map>> permissionsCsvToExpectedMap() { @@ -143,11 +372,11 @@ class TaskPermissionsTest { Map userColumns = userColumns() List lines = csvFile.readLines("UTF-8").findAll { it?.trim() } - assert !lines.isEmpty(): "CSV file is empty: ${csvFilePath}" + assertFalse(lines.isEmpty(), "CSV file is empty: ${csvFilePath}") List header = lines.first().split(",", -1)*.trim() int transitionIdIndex = header.indexOf("Transition ID") - assert transitionIdIndex >= 0: "Missing required column 'Transition ID' in ${csvFilePath}" + assertTrue(transitionIdIndex >= 0, "Missing required column 'Transition ID' in ${csvFilePath}") lines.tail().each { line -> List columns = line.split(",", -1)*.trim() @@ -155,7 +384,7 @@ class TaskPermissionsTest { userColumns.each { csvColumnName, userEmail -> int permissionIndex = header.indexOf(csvColumnName) - assert permissionIndex >= 0: "Missing required column '${csvColumnName}' in ${csvFilePath}" + assertTrue(permissionIndex >= 0, "Missing required column '${csvColumnName}' in ${csvFilePath}") String permissionValue = columns[permissionIndex] .replace(".", "") @@ -194,52 +423,8 @@ class TaskPermissionsTest { ] } - @Test - void testViewPermissions() { - def mapElastic = [:] - def mapMongo = [:] -// todo test for both mongo and elastic - ElasticTaskSearchRequest request = new ElasticTaskSearchRequest() - request.useCase = [new TaskSearchCaseRequest(testCase.stringId, testCase.title)] - - ElasticTaskSearchRequest request2 = new ElasticTaskSearchRequest() - request2.useCase = [new TaskSearchCaseRequest(testCaseNoDefault.stringId, testCaseNoDefault.title)] - - testUsers.forEach((key, value) -> { -// Elastic task search - Page tasks = elasticTaskService.search([request], - value.transformToLoggedUser(), - Pageable.unpaged(), LocaleContextHolder.getLocale(), false) - List list = new ArrayList<>(tasks.content).stream().map(task -> task.transitionId).collect(Collectors.toList()).sort() - - - Page tasks2 = elasticTaskService.search([request2], - value.transformToLoggedUser(), - Pageable.unpaged(), LocaleContextHolder.getLocale(), false) - List list2 = new ArrayList<>(tasks2.content).stream().map(task -> task.transitionId).collect(Collectors.toList()).sort() - -// Mongo task search - Page mongoTasksDefault = taskService.search([request], Pageable.unpaged(), value.transformToLoggedUser(), LocaleContextHolder.getLocale(), false) - List mongoListDefault = new ArrayList<>(mongoTasksDefault.content).stream().map(task -> task.transitionId).collect(Collectors.toList()).sort() - Page mongoTasksNoDefault = taskService.search([request2], Pageable.unpaged(), value.transformToLoggedUser(), LocaleContextHolder.getLocale(), false) - List mongoListNoDefault = new ArrayList<>(mongoTasksNoDefault.content).stream().map(task -> task.transitionId).collect(Collectors.toList()).sort() - - mapElastic.put(key, [ - "Default enabled" : list, - "Default DISabled": list2 - ]) - - mapMongo.put(key, [ - "Default enabled" : mongoListDefault, - "Default DISabled": mongoListNoDefault - ]) - }) - compareTestResultsToExpected(mapElastic, "Elastic search") - compareTestResultsToExpected(mapMongo, "Mongo search") - } - - static void compareTestResultsToExpected(Map>> testResultMap, String searchType) { - println("\n========== ${searchType} - View permissions comparison ==========") + static void compareTestResultsToExpected(Map>> testResultMap, String searchType, String permissionType) { + println("\n========== ${searchType} - ${permissionType} permissions comparison ==========") testUsers.keySet().each { String userEmail -> println("\nUser: ${userEmail}") @@ -267,10 +452,15 @@ class TaskPermissionsTest { println("Present only in test results (${presentOnlyInMap.size()}): ${presentOnlyInMap}") println("Present only in correct results (${presentOnlyInCorrectResultsWithDefaultRoleMap.size()}): ${presentOnlyInCorrectResultsWithDefaultRoleMap}") - assert presentInBoth.size() == actualTransitionIds.size() && presentInBoth.size() == expectedTransitionIds.size() + assertTrue(presentInBoth.size() == actualTransitionIds.size() && presentInBoth.size() == expectedTransitionIds.size()) } } println("\n=================================================") } + + @SuppressWarnings("GrMethodMayBeStatic") + private def parseResult(MvcResult result) { + return (new JsonSlurper()).parseText(result.response.getContentAsString(StandardCharsets.UTF_8)) + } } \ No newline at end of file diff --git a/src/test/resources/csv/create case permissions - correct default disabled.csv b/src/test/resources/csv/create case permissions - correct default disabled.csv new file mode 100644 index 00000000000..c4f6fe948fd --- /dev/null +++ b/src/test/resources/csv/create case permissions - correct default disabled.csv @@ -0,0 +1,4 @@ +Transition title,roleRef,No permissions,Has role +role=true,true,false,true +role=false,false,false,false +role=undefined,undefined,false,false \ No newline at end of file diff --git a/src/test/resources/csv/create case permissions - correct.csv b/src/test/resources/csv/create case permissions - correct.csv new file mode 100644 index 00000000000..743aa3ea3d8 --- /dev/null +++ b/src/test/resources/csv/create case permissions - correct.csv @@ -0,0 +1,10 @@ +Transition title,default role,roleRef,No permissions,Has role +role=true default=true,true,true,true,true +role=true default=false,false,true,false,false +role=true default=undefined,undefined,true,false,true +role=false default=true,true,false,true,false +role=false default=false,false,false,false,false +role=false default=undefined,undefined,false,false,false +role=undefined default=true,true,undefined,true,true +role=undefined default=false,false,undefined,false,false +role=undefined default=undefined,undefined,undefined,true,true \ No newline at end of file diff --git a/src/test/resources/petriNets/permissions/assign_permission_combinations.xml b/src/test/resources/petriNets/permissions/assign_permission_combinations.xml new file mode 100644 index 00000000000..aa31e751c6c --- /dev/null +++ b/src/test/resources/petriNets/permissions/assign_permission_combinations.xml @@ -0,0 +1,532 @@ + + + assign_permission_combinations + 1.0.0 + APC + Assign Permission Combinations + true + + + process_role + Process Role + + + + users + Users + + + + t_001 + 100 + 100 + + + process_role + + true + + + + default + + true + + + + users + + true + + + + + + t_002 + 300 + 100 + + + process_role + + true + + + + default + + true + + + + users + + false + + + + + + t_003 + 500 + 100 + + + process_role + + true + + + + default + + true + + + + + + t_004 + 700 + 100 + + + process_role + + true + + + + default + + false + + + + users + + true + + + + + + t_005 + 900 + 100 + + + process_role + + true + + + + default + + false + + + + users + + false + + + + + + t_006 + 1100 + 100 + + + process_role + + true + + + + default + + false + + + + + + t_007 + 1300 + 100 + + + process_role + + true + + + + users + + true + + + + + + t_008 + 1500 + 100 + + + process_role + + true + + + + users + + false + + + + + + t_009 + 1700 + 100 + + + process_role + + true + + + + + + t_010 + 100 + 300 + + + process_role + + false + + + + default + + true + + + + users + + true + + + + + + t_011 + 300 + 300 + + + process_role + + false + + + + default + + true + + + + users + + false + + + + + + t_012 + 500 + 300 + + + process_role + + false + + + + default + + true + + + + + + t_013 + 700 + 300 + + + process_role + + false + + + + default + + false + + + + users + + true + + + + + + t_014 + 900 + 300 + + + process_role + + false + + + + default + + false + + + + users + + false + + + + + + t_015 + 1100 + 300 + + + process_role + + false + + + + default + + false + + + + + + t_016 + 1300 + 300 + + + process_role + + false + + + + users + + true + + + + + + t_017 + 1500 + 300 + + + process_role + + false + + + + users + + false + + + + + + t_018 + 1700 + 300 + + + process_role + + false + + + + + + t_019 + 100 + 500 + + + default + + true + + + + users + + true + + + + + + t_020 + 300 + 500 + + + default + + true + + + + users + + false + + + + + + t_021 + 500 + 500 + + + default + + true + + + + + + t_022 + 700 + 500 + + + default + + false + + + + users + + true + + + + + + t_023 + 900 + 500 + + + default + + false + + + + users + + false + + + + + + t_024 + 1100 + 500 + + + default + + false + + + + + + t_025 + 1300 + 500 + + + users + + true + + + + + + t_026 + 1500 + 500 + + + users + + false + + + + + + t_027 + 1700 + 500 + + + \ No newline at end of file diff --git a/src/test/resources/petriNets/permissions/assign_permission_combinations_no_default.xml b/src/test/resources/petriNets/permissions/assign_permission_combinations_no_default.xml new file mode 100644 index 00000000000..6f818fc1558 --- /dev/null +++ b/src/test/resources/petriNets/permissions/assign_permission_combinations_no_default.xml @@ -0,0 +1,154 @@ + + + assign_permission_combinations_no_default + 1.0.0 + APC + Assign Permission Combinations With Default Role Disabled + false + + + process_role + Process Role + + + + users + Users + + + + t_007 + 1300 + 100 + + + process_role + + true + + + + users + + true + + + + + + t_008 + 1500 + 100 + + + process_role + + true + + + + users + + false + + + + + + t_009 + 1700 + 100 + + + process_role + + true + + + + + + t_016 + 1300 + 300 + + + process_role + + false + + + + users + + true + + + + + + t_017 + 1500 + 300 + + + process_role + + false + + + + users + + false + + + + + + t_018 + 1700 + 300 + + + process_role + + false + + + + + + t_025 + 1300 + 500 + + + users + + true + + + + + + t_026 + 1500 + 500 + + + users + + false + + + + + + t_027 + 1700 + 500 + + + \ No newline at end of file diff --git a/src/test/resources/petriNets/permissions/cancel_permission_combinations.xml b/src/test/resources/petriNets/permissions/cancel_permission_combinations.xml new file mode 100644 index 00000000000..aedbc7bf646 --- /dev/null +++ b/src/test/resources/petriNets/permissions/cancel_permission_combinations.xml @@ -0,0 +1,586 @@ + + + cancel_permission_combinations + 1.0.0 + CPC + Cancel Permission Combinations + true + + + process_role + Process Role + + + + users + Users + + + + t_001 + 100 + 100 + + + process_role + + true + true + + + + default + + true + true + + + + users + + true + true + + + + + + t_002 + 300 + 100 + + + process_role + + true + true + + + + default + + true + true + + + + users + + false + true + + + + + + t_003 + 500 + 100 + + + process_role + + true + true + + + + default + + true + true + + + + + + t_004 + 700 + 100 + + + process_role + + true + true + + + + default + + false + true + + + + users + + true + true + + + + + + t_005 + 900 + 100 + + + process_role + + true + true + + + + default + + false + true + + + + users + + false + true + + + + + + t_006 + 1100 + 100 + + + process_role + + true + true + + + + default + + false + true + + + + + + t_007 + 1300 + 100 + + + process_role + + true + true + + + + users + + true + true + + + + + + t_008 + 1500 + 100 + + + process_role + + true + true + + + + users + + false + true + + + + + + t_009 + 1700 + 100 + + + process_role + + true + true + + + + + + t_010 + 100 + 300 + + + process_role + + false + true + + + + default + + true + true + + + + users + + true + true + + + + + + t_011 + 300 + 300 + + + process_role + + false + true + + + + default + + true + true + + + + users + + false + true + + + + + + t_012 + 500 + 300 + + + process_role + + false + true + + + + default + + true + true + + + + + + t_013 + 700 + 300 + + + process_role + + false + true + + + + default + + false + true + + + + users + + true + true + + + + + + t_014 + 900 + 300 + + + process_role + + false + true + + + + default + + false + true + + + + users + + false + true + + + + + + t_015 + 1100 + 300 + + + process_role + + false + true + + + + default + + false + true + + + + + + t_016 + 1300 + 300 + + + process_role + + false + true + + + + users + + true + true + + + + + + t_017 + 1500 + 300 + + + process_role + + false + true + + + + users + + false + true + + + + + + t_018 + 1700 + 300 + + + process_role + + false + true + + + + + + t_019 + 100 + 500 + + + default + + true + true + + + + users + + true + true + + + + + + t_020 + 300 + 500 + + + default + + true + true + + + + users + + false + true + + + + + + t_021 + 500 + 500 + + + default + + true + true + + + + + + t_022 + 700 + 500 + + + default + + false + true + + + + users + + true + true + + + + + + t_023 + 900 + 500 + + + default + + false + true + + + + users + + false + true + + + + + + t_024 + 1100 + 500 + + + default + + false + true + + + + + + t_025 + 1300 + 500 + + + users + + true + true + + + + + + t_026 + 1500 + 500 + + + users + + false + true + + + + + + t_027 + 1700 + 500 + + + \ No newline at end of file diff --git a/src/test/resources/petriNets/permissions/cancel_permission_combinations_no_default.xml b/src/test/resources/petriNets/permissions/cancel_permission_combinations_no_default.xml new file mode 100644 index 00000000000..36b651e945b --- /dev/null +++ b/src/test/resources/petriNets/permissions/cancel_permission_combinations_no_default.xml @@ -0,0 +1,166 @@ + + + cancel_permission_combinations_no_default + 1.0.0 + CPC + Cancel Permission Combinations With Default Role Disabled + false + + + process_role + Process Role + + + + users + Users + + + + t_007 + 1300 + 100 + + + process_role + + true + true + + + + users + + true + true + + + + + + t_008 + 1500 + 100 + + + process_role + + true + true + + + + users + + false + true + + + + + + t_009 + 1700 + 100 + + + process_role + + true + true + + + + + + t_016 + 1300 + 300 + + + process_role + + false + true + + + + users + + true + true + + + + + + t_017 + 1500 + 300 + + + process_role + + false + true + + + + users + + false + true + + + + + + t_018 + 1700 + 300 + + + process_role + + false + true + + + + + + t_025 + 1300 + 500 + + + users + + true + true + + + + + + t_026 + 1500 + 500 + + + users + + false + true + + + + + + t_027 + 1700 + 500 + + + \ No newline at end of file diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_false.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_false.xml new file mode 100644 index 00000000000..ae1ed367f5b --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_false.xml @@ -0,0 +1,28 @@ + + + create_case_role_false_default_false + CDFDF + Create Case Role False Default False + assignment + true + + + process_role + Process Role + + + + process_role + + false + + + + + default + + false + + + diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_true.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_true.xml new file mode 100644 index 00000000000..46750eb2c9a --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_true.xml @@ -0,0 +1,28 @@ + + + create_case_role_false_default_true + CDFDT + Create Case Role False Default True + assignment + true + + + process_role + Process Role + + + + process_role + + false + + + + + default + + true + + + diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_undefined.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_undefined.xml new file mode 100644 index 00000000000..5e896a7ac66 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_false_default_undefined.xml @@ -0,0 +1,21 @@ + + + create_case_role_false_default_undefined + CDFDU + Create Case Role False Default Undefined + assignment + true + + + process_role + Process Role + + + + process_role + + false + + + diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_false.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_false.xml new file mode 100644 index 00000000000..5a011ce8433 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_false.xml @@ -0,0 +1,28 @@ + + + create_case_role_true_default_false + CDTDF + Create Case Role True Default False + assignment + true + + + process_role + Process Role + + + + process_role + + true + + + + + default + + false + + + diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_true.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_true.xml new file mode 100644 index 00000000000..1c87c01dd4b --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_true.xml @@ -0,0 +1,28 @@ + + + create_case_role_true_default_true + CDTDT + Create Case Role True Default True + assignment + true + + + process_role + Process Role + + + + process_role + + true + + + + + default + + true + + + diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_undefined.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_undefined.xml new file mode 100644 index 00000000000..20b422c01c0 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_true_default_undefined.xml @@ -0,0 +1,21 @@ + + + create_case_role_true_default_undefined + CDTDU + Create Case Role True Default Undefined + assignment + true + + + process_role + Process Role + + + + process_role + + true + + + diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_false.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_false.xml new file mode 100644 index 00000000000..80ca3db51ee --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_false.xml @@ -0,0 +1,21 @@ + + + create_case_role_undefined_default_false + CDUDF + Create Case Role Undefined Default False + assignment + true + + + process_role + Process Role + + + + default + + false + + + diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_true.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_true.xml new file mode 100644 index 00000000000..e74c8066987 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_true.xml @@ -0,0 +1,21 @@ + + + create_case_role_undefined_default_true + CDUDT + Create Case Role Undefined Default True + assignment + true + + + process_role + Process Role + + + + default + + true + + + diff --git a/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_undefined.xml b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_undefined.xml new file mode 100644 index 00000000000..b9c805a78c2 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/create/create_case_role_undefined_default_undefined.xml @@ -0,0 +1,14 @@ + + + create_case_role_undefined_default_undefined + CDUDU + Create Case Role Undefined Default Undefined + assignment + true + + + process_role + Process Role + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_false.xml new file mode 100644 index 00000000000..aaf85608a47 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_false.xml @@ -0,0 +1,44 @@ + + + delete_case_role_false_default_false_user_false + 1.0.0 + DCP + Delete Case Role false Default false User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_true.xml new file mode 100644 index 00000000000..2ffd96b7e7e --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_true.xml @@ -0,0 +1,44 @@ + + + delete_case_role_false_default_false_user_true + 1.0.0 + DCP + Delete Case Role false Default false User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_undefined.xml new file mode 100644 index 00000000000..590fa333352 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_false_user_undefined.xml @@ -0,0 +1,38 @@ + + + delete_case_role_false_default_false_user_undefined + 1.0.0 + DCP + Delete Case Role false Default false User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_false.xml new file mode 100644 index 00000000000..bf036aaeaf5 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_false.xml @@ -0,0 +1,44 @@ + + + delete_case_role_false_default_true_user_false + 1.0.0 + DCP + Delete Case Role false Default true User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_true.xml new file mode 100644 index 00000000000..101d6c1ded8 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_true.xml @@ -0,0 +1,44 @@ + + + delete_case_role_false_default_true_user_true + 1.0.0 + DCP + Delete Case Role false Default true User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_undefined.xml new file mode 100644 index 00000000000..7d36b5225e8 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_true_user_undefined.xml @@ -0,0 +1,38 @@ + + + delete_case_role_false_default_true_user_undefined + 1.0.0 + DCP + Delete Case Role false Default true User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_false.xml new file mode 100644 index 00000000000..d3391a9ba29 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_false.xml @@ -0,0 +1,38 @@ + + + delete_case_role_false_default_undefined_user_false + 1.0.0 + DCP + Delete Case Role false Default undefined User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_true.xml new file mode 100644 index 00000000000..8ef4fb7affb --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_true.xml @@ -0,0 +1,38 @@ + + + delete_case_role_false_default_undefined_user_true + 1.0.0 + DCP + Delete Case Role false Default undefined User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_undefined.xml new file mode 100644 index 00000000000..8da8b10831a --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_false_default_undefined_user_undefined.xml @@ -0,0 +1,32 @@ + + + delete_case_role_false_default_undefined_user_undefined + 1.0.0 + DCP + Delete Case Role false Default undefined User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_false.xml new file mode 100644 index 00000000000..7f0869d8061 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_false.xml @@ -0,0 +1,44 @@ + + + delete_case_role_true_default_false_user_false + 1.0.0 + DCP + Delete Case Role true Default false User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_true.xml new file mode 100644 index 00000000000..ab2896afcff --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_true.xml @@ -0,0 +1,44 @@ + + + delete_case_role_true_default_false_user_true + 1.0.0 + DCP + Delete Case Role true Default false User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_undefined.xml new file mode 100644 index 00000000000..7dc589fcd42 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_false_user_undefined.xml @@ -0,0 +1,38 @@ + + + delete_case_role_true_default_false_user_undefined + 1.0.0 + DCP + Delete Case Role true Default false User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_false.xml new file mode 100644 index 00000000000..41cc00cf966 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_false.xml @@ -0,0 +1,44 @@ + + + delete_case_role_true_default_true_user_false + 1.0.0 + DCP + Delete Case Role true Default true User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_true.xml new file mode 100644 index 00000000000..a5c7faf5d63 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_true.xml @@ -0,0 +1,44 @@ + + + delete_case_role_true_default_true_user_true + 1.0.0 + DCP + Delete Case Role true Default true User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_undefined.xml new file mode 100644 index 00000000000..c3dee880fb5 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_true_user_undefined.xml @@ -0,0 +1,38 @@ + + + delete_case_role_true_default_true_user_undefined + 1.0.0 + DCP + Delete Case Role true Default true User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_false.xml new file mode 100644 index 00000000000..b66f306c3fb --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_false.xml @@ -0,0 +1,38 @@ + + + delete_case_role_true_default_undefined_user_false + 1.0.0 + DCP + Delete Case Role true Default undefined User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_true.xml new file mode 100644 index 00000000000..b436d8ab0dc --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_true.xml @@ -0,0 +1,38 @@ + + + delete_case_role_true_default_undefined_user_true + 1.0.0 + DCP + Delete Case Role true Default undefined User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_undefined.xml new file mode 100644 index 00000000000..2652b13952d --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_true_default_undefined_user_undefined.xml @@ -0,0 +1,32 @@ + + + delete_case_role_true_default_undefined_user_undefined + 1.0.0 + DCP + Delete Case Role true Default undefined User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_false.xml new file mode 100644 index 00000000000..ac4fbc1013c --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_false.xml @@ -0,0 +1,38 @@ + + + delete_case_role_undefined_default_false_user_false + 1.0.0 + DCP + Delete Case Role undefined Default false User false + true + + + process_role + Process Role + + + + users + Users + + + + default + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_true.xml new file mode 100644 index 00000000000..65bc202ff97 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_true.xml @@ -0,0 +1,38 @@ + + + delete_case_role_undefined_default_false_user_true + 1.0.0 + DCP + Delete Case Role undefined Default false User true + true + + + process_role + Process Role + + + + users + Users + + + + default + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_undefined.xml new file mode 100644 index 00000000000..e93c1763062 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_false_user_undefined.xml @@ -0,0 +1,32 @@ + + + delete_case_role_undefined_default_false_user_undefined + 1.0.0 + DCP + Delete Case Role undefined Default false User undefined + true + + + process_role + Process Role + + + + users + Users + + + + default + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_false.xml new file mode 100644 index 00000000000..3af9eb143e3 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_false.xml @@ -0,0 +1,38 @@ + + + delete_case_role_undefined_default_true_user_false + 1.0.0 + DCP + Delete Case Role undefined Default true User false + true + + + process_role + Process Role + + + + users + Users + + + + default + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_true.xml new file mode 100644 index 00000000000..e8e11b8de10 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_true.xml @@ -0,0 +1,38 @@ + + + delete_case_role_undefined_default_true_user_true + 1.0.0 + DCP + Delete Case Role undefined Default true User true + true + + + process_role + Process Role + + + + users + Users + + + + default + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_undefined.xml new file mode 100644 index 00000000000..6e4a23fc552 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_true_user_undefined.xml @@ -0,0 +1,32 @@ + + + delete_case_role_undefined_default_true_user_undefined + 1.0.0 + DCP + Delete Case Role undefined Default true User undefined + true + + + process_role + Process Role + + + + users + Users + + + + default + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_false.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_false.xml new file mode 100644 index 00000000000..97585ebece7 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_false.xml @@ -0,0 +1,32 @@ + + + delete_case_role_undefined_default_undefined_user_false + 1.0.0 + DCP + Delete Case Role undefined Default undefined User false + true + + + process_role + Process Role + + + + users + Users + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_true.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_true.xml new file mode 100644 index 00000000000..74eedb7817b --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_true.xml @@ -0,0 +1,32 @@ + + + delete_case_role_undefined_default_undefined_user_true + 1.0.0 + DCP + Delete Case Role undefined Default undefined User true + true + + + process_role + Process Role + + + + users + Users + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_undefined.xml new file mode 100644 index 00000000000..97a8268ba6e --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/delete/delete_case_role_undefined_default_undefined_user_undefined.xml @@ -0,0 +1,25 @@ + + + delete_case_role_undefined_default_undefined_user_undefined + 1.0.0 + DCP + Delete Case Role undefined Default undefined User undefined + true + + + process_role + Process Role + + + + users + Users + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_false.xml new file mode 100644 index 00000000000..ae09929c23c --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_false.xml @@ -0,0 +1,44 @@ + + + view_case_role_false_default_false_user_false + 1.0.0 + DCP + View Case Role false Default false User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_true.xml new file mode 100644 index 00000000000..77af09492de --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_true.xml @@ -0,0 +1,44 @@ + + + view_case_role_false_default_false_user_true + 1.0.0 + DCP + View Case Role false Default false User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_undefined.xml new file mode 100644 index 00000000000..1aa7e1ba334 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_false_user_undefined.xml @@ -0,0 +1,38 @@ + + + view_case_role_false_default_false_user_undefined + 1.0.0 + DCP + View Case Role false Default false User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_false.xml new file mode 100644 index 00000000000..53065a9aaf6 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_false.xml @@ -0,0 +1,44 @@ + + + view_case_role_false_default_true_user_false + 1.0.0 + DCP + View Case Role false Default true User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_true.xml new file mode 100644 index 00000000000..d9231a4556e --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_true.xml @@ -0,0 +1,44 @@ + + + view_case_role_false_default_true_user_true + 1.0.0 + DCP + View Case Role false Default true User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_undefined.xml new file mode 100644 index 00000000000..1246e371b0c --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_true_user_undefined.xml @@ -0,0 +1,38 @@ + + + view_case_role_false_default_true_user_undefined + 1.0.0 + DCP + View Case Role false Default true User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + default + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_false.xml new file mode 100644 index 00000000000..ab6b6938130 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_false.xml @@ -0,0 +1,38 @@ + + + view_case_role_false_default_undefined_user_false + 1.0.0 + DCP + View Case Role false Default undefined User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_true.xml new file mode 100644 index 00000000000..5d31b2a7606 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_true.xml @@ -0,0 +1,38 @@ + + + view_case_role_false_default_undefined_user_true + 1.0.0 + DCP + View Case Role false Default undefined User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_undefined.xml new file mode 100644 index 00000000000..2d769047380 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_false_default_undefined_user_undefined.xml @@ -0,0 +1,32 @@ + + + view_case_role_false_default_undefined_user_undefined + 1.0.0 + DCP + View Case Role false Default undefined User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_false.xml new file mode 100644 index 00000000000..392077f2c20 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_false.xml @@ -0,0 +1,44 @@ + + + view_case_role_true_default_false_user_false + 1.0.0 + DCP + View Case Role true Default false User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_true.xml new file mode 100644 index 00000000000..1050d95acfc --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_true.xml @@ -0,0 +1,44 @@ + + + view_case_role_true_default_false_user_true + 1.0.0 + DCP + View Case Role true Default false User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_undefined.xml new file mode 100644 index 00000000000..53ba09d4429 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_false_user_undefined.xml @@ -0,0 +1,38 @@ + + + view_case_role_true_default_false_user_undefined + 1.0.0 + DCP + View Case Role true Default false User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_false.xml new file mode 100644 index 00000000000..3e2ad192512 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_false.xml @@ -0,0 +1,44 @@ + + + view_case_role_true_default_true_user_false + 1.0.0 + DCP + View Case Role true Default true User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_true.xml new file mode 100644 index 00000000000..a4feda55330 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_true.xml @@ -0,0 +1,44 @@ + + + view_case_role_true_default_true_user_true + 1.0.0 + DCP + View Case Role true Default true User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_undefined.xml new file mode 100644 index 00000000000..be126767550 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_true_user_undefined.xml @@ -0,0 +1,38 @@ + + + view_case_role_true_default_true_user_undefined + 1.0.0 + DCP + View Case Role true Default true User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + default + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_false.xml new file mode 100644 index 00000000000..7e41d645cb9 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_false.xml @@ -0,0 +1,38 @@ + + + view_case_role_true_default_undefined_user_false + 1.0.0 + DCP + View Case Role true Default undefined User false + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_true.xml new file mode 100644 index 00000000000..10c41d8edff --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_true.xml @@ -0,0 +1,38 @@ + + + view_case_role_true_default_undefined_user_true + 1.0.0 + DCP + View Case Role true Default undefined User true + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_undefined.xml new file mode 100644 index 00000000000..d7318d6dc9e --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_true_default_undefined_user_undefined.xml @@ -0,0 +1,32 @@ + + + view_case_role_true_default_undefined_user_undefined + 1.0.0 + DCP + View Case Role true Default undefined User undefined + true + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_false.xml new file mode 100644 index 00000000000..5e983c4a9c6 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_false.xml @@ -0,0 +1,38 @@ + + + view_case_role_undefined_default_false_user_false + 1.0.0 + DCP + View Case Role undefined Default false User false + true + + + process_role + Process Role + + + + users + Users + + + + default + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_true.xml new file mode 100644 index 00000000000..6e90dd4a531 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_true.xml @@ -0,0 +1,38 @@ + + + view_case_role_undefined_default_false_user_true + 1.0.0 + DCP + View Case Role undefined Default false User true + true + + + process_role + Process Role + + + + users + Users + + + + default + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_undefined.xml new file mode 100644 index 00000000000..543a6020779 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_false_user_undefined.xml @@ -0,0 +1,32 @@ + + + view_case_role_undefined_default_false_user_undefined + 1.0.0 + DCP + View Case Role undefined Default false User undefined + true + + + process_role + Process Role + + + + users + Users + + + + default + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_false.xml new file mode 100644 index 00000000000..b669ce95d63 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_false.xml @@ -0,0 +1,38 @@ + + + view_case_role_undefined_default_true_user_false + 1.0.0 + DCP + View Case Role undefined Default true User false + true + + + process_role + Process Role + + + + users + Users + + + + default + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_true.xml new file mode 100644 index 00000000000..8c1b7734a47 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_true.xml @@ -0,0 +1,38 @@ + + + view_case_role_undefined_default_true_user_true + 1.0.0 + DCP + View Case Role undefined Default true User true + true + + + process_role + Process Role + + + + users + Users + + + + default + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_undefined.xml new file mode 100644 index 00000000000..6a82bbd78c8 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_true_user_undefined.xml @@ -0,0 +1,32 @@ + + + view_case_role_undefined_default_true_user_undefined + 1.0.0 + DCP + View Case Role undefined Default true User undefined + true + + + process_role + Process Role + + + + users + Users + + + + default + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_false.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_false.xml new file mode 100644 index 00000000000..7a4de04ffed --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_false.xml @@ -0,0 +1,32 @@ + + + view_case_role_undefined_default_undefined_user_false + 1.0.0 + DCP + View Case Role undefined Default undefined User false + true + + + process_role + Process Role + + + + users + Users + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_true.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_true.xml new file mode 100644 index 00000000000..e002e4a7f23 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_true.xml @@ -0,0 +1,32 @@ + + + view_case_role_undefined_default_undefined_user_true + 1.0.0 + DCP + View Case Role undefined Default undefined User true + true + + + process_role + Process Role + + + + users + Users + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_undefined.xml b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_undefined.xml new file mode 100644 index 00000000000..64a1a75ea92 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/default/view/view_case_role_undefined_default_undefined_user_undefined.xml @@ -0,0 +1,25 @@ + + + view_case_role_undefined_default_undefined_user_undefined + 1.0.0 + DCP + View Case Role undefined Default undefined User undefined + true + + + process_role + Process Role + + + + users + Users + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_false.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_false.xml new file mode 100644 index 00000000000..bba8dbbfd23 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_false.xml @@ -0,0 +1,21 @@ + + + create_case_role_false + CDFDU + Create Case Role False + assignment + false + + + process_role + Process Role + + + + process_role + + false + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_true.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_true.xml new file mode 100644 index 00000000000..11cea35c809 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_true.xml @@ -0,0 +1,21 @@ + + + create_case_role_true + CDTDU + Create Case Role True + assignment + false + + + process_role + Process Role + + + + process_role + + true + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_undefined.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_undefined.xml new file mode 100644 index 00000000000..48e14ea989f --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/create/create_case_role_undefined.xml @@ -0,0 +1,14 @@ + + + create_case_role_undefined + CDUDU + Create Case Role Undefined + assignment + false + + + process_role + Process Role + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_false.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_false.xml new file mode 100644 index 00000000000..3a7fad2bff7 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_false.xml @@ -0,0 +1,38 @@ + + + delete_case_role_false_user_false + 1.0.0 + DCP + Delete Case Role false User false + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_true.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_true.xml new file mode 100644 index 00000000000..1298b8b0b20 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_true.xml @@ -0,0 +1,38 @@ + + + delete_case_role_false_user_true + 1.0.0 + DCP + Delete Case Role false User true + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_undefined.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_undefined.xml new file mode 100644 index 00000000000..75dad997c66 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_false_user_undefined.xml @@ -0,0 +1,32 @@ + + + delete_case_role_false_user_undefined + 1.0.0 + DCP + Delete Case Role false User undefined + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_false.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_false.xml new file mode 100644 index 00000000000..26f0f6c1a53 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_false.xml @@ -0,0 +1,38 @@ + + + delete_case_role_true_user_false + 1.0.0 + DCP + Delete Case Role true User false + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_true.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_true.xml new file mode 100644 index 00000000000..8dffa394dbc --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_true.xml @@ -0,0 +1,38 @@ + + + delete_case_role_true_user_true + 1.0.0 + DCP + Delete Case Role true User true + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_undefined.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_undefined.xml new file mode 100644 index 00000000000..4e392b22355 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_true_user_undefined.xml @@ -0,0 +1,32 @@ + + + delete_case_role_true_user_undefined + 1.0.0 + DCP + Delete Case Role true User undefined + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_false.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_false.xml new file mode 100644 index 00000000000..b724b03bac0 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_false.xml @@ -0,0 +1,32 @@ + + + delete_case_role_undefined_user_false + 1.0.0 + DCP + Delete Case Role undefined User false + false + + + process_role + Process Role + + + + users + Users + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_true.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_true.xml new file mode 100644 index 00000000000..a089abd6cd9 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_true.xml @@ -0,0 +1,32 @@ + + + delete_case_role_undefined_user_true + 1.0.0 + DCP + Delete Case Role undefined User true + false + + + process_role + Process Role + + + + users + Users + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_undefined.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_undefined.xml new file mode 100644 index 00000000000..8184879d895 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/delete/delete_case_role_undefined_user_undefined.xml @@ -0,0 +1,25 @@ + + + delete_case_role_undefined_user_undefined + 1.0.0 + DCP + Delete Case Role undefined User undefined + false + + + process_role + Process Role + + + + users + Users + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_false.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_false.xml new file mode 100644 index 00000000000..dc16b396222 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_false.xml @@ -0,0 +1,38 @@ + + + view_case_role_false_user_false + 1.0.0 + DCP + View Case Role false User false + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_true.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_true.xml new file mode 100644 index 00000000000..712b608637e --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_true.xml @@ -0,0 +1,38 @@ + + + view_case_role_false_user_true + 1.0.0 + DCP + View Case Role false User true + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_undefined.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_undefined.xml new file mode 100644 index 00000000000..68c2068e0d2 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_false_user_undefined.xml @@ -0,0 +1,32 @@ + + + view_case_role_false_user_undefined + 1.0.0 + DCP + View Case Role false User undefined + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_false.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_false.xml new file mode 100644 index 00000000000..33e3a8ebea8 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_false.xml @@ -0,0 +1,38 @@ + + + view_case_role_true_user_false + 1.0.0 + DCP + View Case Role true User false + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_true.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_true.xml new file mode 100644 index 00000000000..7c11e2648f5 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_true.xml @@ -0,0 +1,38 @@ + + + view_case_role_true_user_true + 1.0.0 + DCP + View Case Role true User true + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_undefined.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_undefined.xml new file mode 100644 index 00000000000..cef7509f99a --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_true_user_undefined.xml @@ -0,0 +1,32 @@ + + + view_case_role_true_user_undefined + 1.0.0 + DCP + View Case Role true User undefined + false + + + process_role + Process Role + + + + users + Users + + + + process_role + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_false.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_false.xml new file mode 100644 index 00000000000..3a1ddcc5769 --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_false.xml @@ -0,0 +1,32 @@ + + + view_case_role_undefined_user_false + 1.0.0 + DCP + View Case Role undefined User false + false + + + process_role + Process Role + + + + users + Users + + + + users + + false + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_true.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_true.xml new file mode 100644 index 00000000000..d2c3451c5bc --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_true.xml @@ -0,0 +1,32 @@ + + + view_case_role_undefined_user_true + 1.0.0 + DCP + View Case Role undefined User true + false + + + process_role + Process Role + + + + users + Users + + + + users + + true + + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_undefined.xml b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_undefined.xml new file mode 100644 index 00000000000..8565a1043dc --- /dev/null +++ b/src/test/resources/petriNets/permissions/case/defaultDisabled/view/view_case_role_undefined_user_undefined.xml @@ -0,0 +1,25 @@ + + + view_case_role_undefined_user_undefined + 1.0.0 + DCP + View Case Role undefined User undefined + false + + + process_role + Process Role + + + + users + Users + + + t_001 + 200 + 200 + + + diff --git a/src/test/resources/petriNets/permissions/finish_permission_combinations.xml b/src/test/resources/petriNets/permissions/finish_permission_combinations.xml new file mode 100644 index 00000000000..1c4ad7a900c --- /dev/null +++ b/src/test/resources/petriNets/permissions/finish_permission_combinations.xml @@ -0,0 +1,586 @@ + + + finish_permission_combinations + 1.0.0 + FPC + Finish Permission Combinations + true + + + process_role + Process Role + + + + users + Users + + + + t_001 + 100 + 100 + + + process_role + + true + true + + + + default + + true + true + + + + users + + true + true + + + + + + t_002 + 300 + 100 + + + process_role + + true + true + + + + default + + true + true + + + + users + + false + true + + + + + + t_003 + 500 + 100 + + + process_role + + true + true + + + + default + + true + true + + + + + + t_004 + 700 + 100 + + + process_role + + true + true + + + + default + + false + true + + + + users + + true + true + + + + + + t_005 + 900 + 100 + + + process_role + + true + true + + + + default + + false + true + + + + users + + false + true + + + + + + t_006 + 1100 + 100 + + + process_role + + true + true + + + + default + + false + true + + + + + + t_007 + 1300 + 100 + + + process_role + + true + true + + + + users + + true + true + + + + + + t_008 + 1500 + 100 + + + process_role + + true + true + + + + users + + false + true + + + + + + t_009 + 1700 + 100 + + + process_role + + true + true + + + + + + t_010 + 100 + 300 + + + process_role + + false + true + + + + default + + true + true + + + + users + + true + true + + + + + + t_011 + 300 + 300 + + + process_role + + false + true + + + + default + + true + true + + + + users + + false + true + + + + + + t_012 + 500 + 300 + + + process_role + + false + true + + + + default + + true + true + + + + + + t_013 + 700 + 300 + + + process_role + + false + true + + + + default + + false + true + + + + users + + true + true + + + + + + t_014 + 900 + 300 + + + process_role + + false + true + + + + default + + false + true + + + + users + + false + true + + + + + + t_015 + 1100 + 300 + + + process_role + + false + true + + + + default + + false + true + + + + + + t_016 + 1300 + 300 + + + process_role + + false + true + + + + users + + true + true + + + + + + t_017 + 1500 + 300 + + + process_role + + false + true + + + + users + + false + true + + + + + + t_018 + 1700 + 300 + + + process_role + + false + true + + + + + + t_019 + 100 + 500 + + + default + + true + true + + + + users + + true + true + + + + + + t_020 + 300 + 500 + + + default + + true + true + + + + users + + false + true + + + + + + t_021 + 500 + 500 + + + default + + true + true + + + + + + t_022 + 700 + 500 + + + default + + false + true + + + + users + + true + true + + + + + + t_023 + 900 + 500 + + + default + + false + true + + + + users + + false + true + + + + + + t_024 + 1100 + 500 + + + default + + false + true + + + + + + t_025 + 1300 + 500 + + + users + + true + true + + + + + + t_026 + 1500 + 500 + + + users + + false + true + + + + + + t_027 + 1700 + 500 + + + \ No newline at end of file diff --git a/src/test/resources/petriNets/permissions/finish_permission_combinations_no_default.xml b/src/test/resources/petriNets/permissions/finish_permission_combinations_no_default.xml new file mode 100644 index 00000000000..d381c86678e --- /dev/null +++ b/src/test/resources/petriNets/permissions/finish_permission_combinations_no_default.xml @@ -0,0 +1,184 @@ + + + finish_permission_combinations_no_default + 1.0.0 + FPC + Finish Permission Combinations With Default Role Disabled + false + + + process_role + Process Role + + + + users + Users + + + + t_007 + 1300 + 100 + + + process_role + + true + true + + + + users + + true + true + + + + + + t_008 + 1500 + 100 + + + process_role + + true + true + + + + users + + false + true + + + + + + t_009 + 1700 + 100 + + + process_role + + true + true + + + + + + t_016 + 1300 + 300 + + + process_role + + false + true + + + + users + + true + true + + + + + + t_017 + 1500 + 300 + + + process_role + + false + true + + + + users + + false + true + + + + + + t_018 + 1700 + 300 + + + process_role + + false + true + + + + + + t_025 + 1300 + 500 + + + users + + true + true + + + + + + t_026 + 1500 + 500 + + + users + + false + true + + + + + + t_027 + 1700 + 500 + + + process_role + + true + + + + default + + true + + + + users + + true + + + + \ No newline at end of file diff --git a/src/test/resources/petriNets/view_permission_combinations.xml b/src/test/resources/petriNets/permissions/view_permission_combinations.xml similarity index 100% rename from src/test/resources/petriNets/view_permission_combinations.xml rename to src/test/resources/petriNets/permissions/view_permission_combinations.xml diff --git a/src/test/resources/petriNets/view_permission_combinations_no_default.xml b/src/test/resources/petriNets/permissions/view_permission_combinations_no_default.xml similarity index 100% rename from src/test/resources/petriNets/view_permission_combinations_no_default.xml rename to src/test/resources/petriNets/permissions/view_permission_combinations_no_default.xml From 5d31f4b159aa8cb3d08d38eecf848788f7c19892 Mon Sep 17 00:00:00 2001 From: palajsamuel Date: Thu, 4 Jun 2026 12:18:16 +0200 Subject: [PATCH 2/3] [NAE-2445] Import&Export of cases - stream closing fix --- .../engine/workflow/CasePermissionsTest.groovy | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/test/groovy/com/netgrif/application/engine/workflow/CasePermissionsTest.groovy b/src/test/groovy/com/netgrif/application/engine/workflow/CasePermissionsTest.groovy index d90e34d38bf..67ad8acae8c 100644 --- a/src/test/groovy/com/netgrif/application/engine/workflow/CasePermissionsTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/workflow/CasePermissionsTest.groovy @@ -14,6 +14,7 @@ import com.netgrif.application.engine.workflow.service.interfaces.IDataService import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService import groovy.json.JsonOutput import groovy.json.JsonSlurper +import groovy.util.logging.Slf4j import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -44,6 +45,7 @@ import static org.springframework.security.test.web.servlet.setup.SecurityMockMv import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post +@Slf4j @SpringBootTest @ActiveProfiles(["test"]) @ExtendWith(SpringExtension.class) @@ -308,11 +310,16 @@ class CasePermissionsTest { assertTrue(testNets.size() > 0) Map importedNets = [:] for (File testNet in testNets) { - PetriNet net = petriNetService.importPetriNet(new FileInputStream(testNet), VersionType.MAJOR, userService.getLoggedOrSystem().transformToLoggedUser()).getNet() - withRoles.forEach { user -> - assignRoleToUser(net, user) + try (FileInputStream fis = new FileInputStream(testNet)) { + PetriNet net = petriNetService.importPetriNet(fis, VersionType.MAJOR, userService.getLoggedOrSystem().transformToLoggedUser()).getNet() + withRoles.forEach { user -> + assignRoleToUser(net, user) + } + importedNets.put(net.identifier, net) + } catch (FileNotFoundException e) { + log.error("Could not import net [${testNet.name}]", e) + throw new IllegalArgumentException(e) } - importedNets.put(net.identifier, net) } return importedNets } From ebffbb157c7ff3fb341d334e8f9d07d797c5f689 Mon Sep 17 00:00:00 2001 From: palajsamuel Date: Fri, 5 Jun 2026 10:45:36 +0200 Subject: [PATCH 3/3] [NAE-2441] Event permissions test - test fixes --- .../application/engine/elastic/DataSearchRequestTest.groovy | 2 +- src/test/resources/all_data.xml | 1 + src/test/resources/petriNets/impersonation_test.xml | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy index 56cd0c04d9b..7092ba1ded8 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy @@ -234,7 +234,7 @@ class DataSearchRequestTest { log.info(String.format("Testing %s == %s", testCase.getKey(), testCase.getValue())) - Page result = searchService.search([request] as List, mockService.mockLoggedUser(), PageRequest.of(0, 100), null, false) + Page result = searchService.search([request] as List, superCreator.getLoggedSuper(), PageRequest.of(0, 100), null, false) assert result assert result.size() == 1 } diff --git a/src/test/resources/all_data.xml b/src/test/resources/all_data.xml index b1038511029..95ed6a75fd5 100644 --- a/src/test/resources/all_data.xml +++ b/src/test/resources/all_data.xml @@ -3,6 +3,7 @@ all_data All Data ALL + true process_role diff --git a/src/test/resources/petriNets/impersonation_test.xml b/src/test/resources/petriNets/impersonation_test.xml index 5ed2917f12a..b3d022cb1ec 100644 --- a/src/test/resources/petriNets/impersonation_test.xml +++ b/src/test/resources/petriNets/impersonation_test.xml @@ -12,6 +12,7 @@ true true + true