mirror of
https://github.com/sartography/cr-connect-workflow.git
synced 2025-02-22 12:48:25 +00:00
*** WIP ***
Tests for lane permissions
This commit is contained in:
parent
30d6c3ac36
commit
7ece754d03
145
tests/data/lane_permissions/lane_permissions.bpmn
Normal file
145
tests/data/lane_permissions/lane_permissions.bpmn
Normal file
@ -0,0 +1,145 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_ef63ba4" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
|
||||
<bpmn:collaboration id="Collaboration_LaneWorkflow">
|
||||
<bpmn:documentation>## Lane Workflow</bpmn:documentation>
|
||||
<bpmn:participant id="Participant_Case" name="Case" processRef="Process_LaneWorkflow" />
|
||||
</bpmn:collaboration>
|
||||
<bpmn:process id="Process_LaneWorkflow" name="Lane Workflow" isExecutable="true">
|
||||
<bpmn:laneSet id="LaneSet_0ft4417">
|
||||
<bpmn:lane id="Lane_Initiator">
|
||||
<bpmn:documentation>## Initiator</bpmn:documentation>
|
||||
<bpmn:flowNodeRef>StartEvent_1</bpmn:flowNodeRef>
|
||||
<bpmn:flowNodeRef>Activity_GetID</bpmn:flowNodeRef>
|
||||
<bpmn:flowNodeRef>Activity_ReviewCase</bpmn:flowNodeRef>
|
||||
<bpmn:flowNodeRef>Event_02egqno</bpmn:flowNodeRef>
|
||||
<bpmn:flowNodeRef>Activity_GetReviewers</bpmn:flowNodeRef>
|
||||
</bpmn:lane>
|
||||
<bpmn:lane id="Lane_Reviewer" name="Reviewer">
|
||||
<bpmn:documentation>## Reviewer</bpmn:documentation>
|
||||
<bpmn:flowNodeRef>Activity_GetMoreData</bpmn:flowNodeRef>
|
||||
<bpmn:flowNodeRef>Activity_MakeCase</bpmn:flowNodeRef>
|
||||
</bpmn:lane>
|
||||
</bpmn:laneSet>
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_0xivass</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0xivass" sourceRef="StartEvent_1" targetRef="Activity_GetReviewers" />
|
||||
<bpmn:sequenceFlow id="Flow_11j3kuv" sourceRef="Activity_GetID" targetRef="Activity_GetMoreData" />
|
||||
<bpmn:sequenceFlow id="Flow_0q7kef5" sourceRef="Activity_GetMoreData" targetRef="Activity_MakeCase" />
|
||||
<bpmn:sequenceFlow id="Flow_1hr7g04" sourceRef="Activity_ReviewCase" targetRef="Event_02egqno" />
|
||||
<bpmn:sequenceFlow id="Flow_06x58q0" sourceRef="Activity_MakeCase" targetRef="Activity_ReviewCase" />
|
||||
<bpmn:userTask id="Activity_GetID" name="Get ID" camunda:formKey="DataForm">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="id" label="'ID'" type="long">
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="True" />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_16cpayc</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_11j3kuv</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:manualTask id="Activity_ReviewCase" name="Review Case">
|
||||
<bpmn:documentation>## Case
|
||||
ID: {{ case.id }}
|
||||
|
||||
Case ID: {{ case.case_id }}
|
||||
|
||||
Case Worker: {{ case.case_worker }}
|
||||
|
||||
Notes: {{ case.notes }}</bpmn:documentation>
|
||||
<bpmn:incoming>Flow_06x58q0</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1hr7g04</bpmn:outgoing>
|
||||
</bpmn:manualTask>
|
||||
<bpmn:endEvent id="Event_02egqno">
|
||||
<bpmn:incoming>Flow_1hr7g04</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:userTask id="Activity_GetMoreData" name="Get More Data" camunda:formKey="MoreDataForm">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="case_id" label="'Case ID'" type="long">
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="True" />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="case_worker" label="'Case Worker'" type="string" />
|
||||
<camunda:formField id="notes" label="'Notes'" type="string" />
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_11j3kuv</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0q7kef5</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:scriptTask id="Activity_MakeCase" name="Make Case">
|
||||
<bpmn:incoming>Flow_0q7kef5</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_06x58q0</bpmn:outgoing>
|
||||
<bpmn:script>case = {'id': id, 'case_id': case_id, 'case_worker': case_worker, 'notes': notes}</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:sequenceFlow id="Flow_16cpayc" sourceRef="Activity_GetReviewers" targetRef="Activity_GetID" />
|
||||
<bpmn:scriptTask id="Activity_GetReviewers" name="Get Reviewers">
|
||||
<bpmn:incoming>Flow_0xivass</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_16cpayc</bpmn:outgoing>
|
||||
<bpmn:script>current_user = get_current_user()
|
||||
Reviewer = ['lb3dp']</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_LaneWorkflow">
|
||||
<bpmndi:BPMNShape id="Participant_0aw2kvp_di" bpmnElement="Participant_Case" isHorizontal="true">
|
||||
<dc:Bounds x="129" y="120" width="681" height="250" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Lane_0qw7svk_di" bpmnElement="Lane_Reviewer" isHorizontal="true">
|
||||
<dc:Bounds x="159" y="245" width="651" height="125" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Lane_07wdf9d_di" bpmnElement="Lane_Initiator" isHorizontal="true">
|
||||
<dc:Bounds x="159" y="120" width="651" height="125" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_16cpayc_di" bpmnElement="Flow_16cpayc">
|
||||
<di:waypoint x="370" y="177" />
|
||||
<di:waypoint x="420" y="177" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_06x58q0_di" bpmnElement="Flow_06x58q0">
|
||||
<di:waypoint x="620" y="270" />
|
||||
<di:waypoint x="620" y="217" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1hr7g04_di" bpmnElement="Flow_1hr7g04">
|
||||
<di:waypoint x="670" y="177" />
|
||||
<di:waypoint x="722" y="177" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0q7kef5_di" bpmnElement="Flow_0q7kef5">
|
||||
<di:waypoint x="520" y="310" />
|
||||
<di:waypoint x="570" y="310" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_11j3kuv_di" bpmnElement="Flow_11j3kuv">
|
||||
<di:waypoint x="470" y="217" />
|
||||
<di:waypoint x="470" y="270" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0xivass_di" bpmnElement="Flow_0xivass">
|
||||
<di:waypoint x="215" y="177" />
|
||||
<di:waypoint x="270" y="177" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="179" y="159" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0ys90wq_di" bpmnElement="Activity_GetID">
|
||||
<dc:Bounds x="420" y="137" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_04nwttv_di" bpmnElement="Activity_ReviewCase">
|
||||
<dc:Bounds x="570" y="137" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_02egqno_di" bpmnElement="Event_02egqno">
|
||||
<dc:Bounds x="722" y="159" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0kmaqbt_di" bpmnElement="Activity_GetMoreData">
|
||||
<dc:Bounds x="420" y="270" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1v5jg8i_di" bpmnElement="Activity_MakeCase">
|
||||
<dc:Bounds x="570" y="270" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0ig1l4t_di" bpmnElement="Activity_GetReviewers">
|
||||
<dc:Bounds x="270" y="137" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
43
tests/test_lane_permissions.py
Normal file
43
tests/test_lane_permissions.py
Normal file
@ -0,0 +1,43 @@
|
||||
from tests.base_test import BaseTest
|
||||
|
||||
from flask import g
|
||||
|
||||
from crc.services.user_service import UserService
|
||||
|
||||
|
||||
class TestLanePermissions(BaseTest):
|
||||
"""Can users access tasks appropriately in lanes.
|
||||
Can users access Start Over appropriately in lanes
|
||||
Can admins override appropriately"""
|
||||
|
||||
def test_can_has_permissions(self):
|
||||
self.add_users()
|
||||
self.create_user(uid="lje5u", email="test_user@example.com", display_name="Test User")
|
||||
# g.user = 'lje5u'
|
||||
|
||||
workflow = self.create_workflow('lane_permissions', as_user='lje5u')
|
||||
workflow_api = self.get_workflow_api(workflow, user_uid='lje5u')
|
||||
task = workflow_api.next_task
|
||||
|
||||
form_data = {'id': 1}
|
||||
workflow_api = self.complete_form(workflow, task, form_data, user_uid='lje5u')
|
||||
task = workflow_api.next_task
|
||||
|
||||
form_data = {'case_id': 123,
|
||||
'case_worker': 'Some Case Worker',
|
||||
'notes': 'Private: Do Not Read'}
|
||||
workflow_api = self.complete_form(workflow, task, form_data,
|
||||
user_uid='lje5u',
|
||||
error_code='permission_denied')
|
||||
self.assertIsNone(workflow_api)
|
||||
|
||||
workflow_api = self.complete_form(workflow, task, form_data,
|
||||
user_uid='lb3dp')
|
||||
|
||||
print('test_can_has_permissions')
|
||||
|
||||
|
||||
# if isinstance(spiff_task.task_spec, StartEvent) and nav_item.lane:
|
||||
# in_list = UserService.in_list(user_uids, allow_admin_impersonate=True)
|
||||
# impersonator_is_admin = UserService.user_is_admin(allow_admin_impersonate=True)
|
||||
# if not in_list and not impersonator_is_admin:
|
Loading…
x
Reference in New Issue
Block a user