Example #1
0
 def test_log_action_taken_on_message(self):
     uid = uuid4()
     message = Message('subject', 'body', uid, users=[self.user, self.user2], requires_response=True)
     db.session.add(message)
     log_action_taken_on_message(self.user.id, uid)
     self.assertEqual(len(list(message.history)), 1)
     self.assertEqual(message.history[0].action, MessageAction.respond)
Example #2
0
    def __func():
        data = request.get_json()
        workflows_in = set(data['execution_ids'])
        data_in = data['data_in']
        arguments = data['arguments'] if 'arguments' in data else []

        workflows_awaiting_data = set(
            current_app.running_context.executor.get_waiting_workflows())
        execution_ids = set.intersection(workflows_in, workflows_awaiting_data)

        user_id = get_jwt_identity()
        authorization_not_required, authorized_execution_ids = get_authorized_execution_ids(
            execution_ids, user_id,
            get_jwt_claims().get('roles', []))
        execution_ids = list(authorized_execution_ids
                             | authorization_not_required)
        completed_execution_ids = []

        arg_objects = []
        for arg in arguments:
            arg_objects.append(Argument(**arg))

        for execution_id in execution_ids:
            if current_app.running_context.executor.resume_trigger_step(
                    execution_id, data_in, arg_objects):
                completed_execution_ids.append(execution_id)
                log_action_taken_on_message(user_id, execution_id)

        return completed_execution_ids, SUCCESS
Example #3
0
 def test_trigger_action_taken_workflow(self):
     uid = str(uuid4())
     message = Message('subject', 'body', uid, users=[self.user, self.user2], requires_response=True)
     db.session.add(message)
     db.session.commit()
     log_action_taken_on_message(self.user.id, uid)
     message = Message.query.filter(Message.workflow_execution_id == uid).first()
     self.assertEqual(len(list(message.history)), 1)
     self.assertEqual(message.history[0].action, MessageAction.respond)
Example #4
0
 def test_log_action_taken_on_message_invalid_user(self):
     message = Message('subject',
                       'body',
                       'uid1',
                       users=[self.user, self.user2],
                       requires_response=True)
     db.session.add(message)
     log_action_taken_on_message(1000, 'uid1')
     self.assertEqual(len(list(message.history)), 0)
Example #5
0
 def test_log_action_taken_on_message(self):
     message = Message('subject',
                       'body',
                       'uid1',
                       users=[self.user, self.user2],
                       requires_response=True)
     db.session.add(message)
     log_action_taken_on_message(self.user.id, 'uid1')
     self.assertEqual(len(list(message.history)), 1)
     self.assertEqual(message.history[0].action, MessageAction.respond)
Example #6
0
 def test_trigger_action_taken_workflow(self):
     uid = str(uuid4())
     message = Message('subject',
                       'body',
                       uid,
                       users=[self.user, self.user2],
                       requires_response=True)
     db.session.add(message)
     db.session.commit()
     log_action_taken_on_message(self.user.id, uid)
     message = Message.query.filter(
         Message.workflow_execution_id == uid).first()
     self.assertEqual(len(list(message.history)), 1)
     self.assertEqual(message.history[0].action, MessageAction.respond)
Example #7
0
    def test_trigger_action_taken_workflow_sends_responded_message(self):
        uid = str(uuid4())
        message = Message('subject', 'body', uid, users=[self.user, self.user2], requires_response=True)
        db.session.add(message)
        db.session.commit()

        res = {'called': False}

        @walkoff.messaging.MessageActionEvent.responded.connect
        def connected(message_in, **data):
            res['called'] = True
            self.assertEqual(message_in.id, message.id)
            self.assertEqual(data['data']['user'], self.user)

        log_action_taken_on_message(self.user.id, uid)
        self.assertTrue(res['called'])
Example #8
0
    def test_trigger_action_taken_workflow_sends_responded_message(self):
        uid = str(uuid4())
        message = Message('subject',
                          'body',
                          uid,
                          users=[self.user, self.user2],
                          requires_response=True)
        db.session.add(message)
        db.session.commit()

        res = {'called': False}

        @walkoff.messaging.MessageActionEvent.responded.connect
        def connected(message_in, **data):
            res['called'] = True
            self.assertEqual(message_in.id, message.id)
            self.assertEqual(data['data']['user'], self.user)

        log_action_taken_on_message(self.user.id, uid)
        self.assertTrue(res['called'])
Example #9
0
 def test_log_action_taken_on_message_invalid_user(self):
     uid = uuid4()
     message = Message('subject', 'body', uid, users=[self.user, self.user2], requires_response=True)
     db.session.add(message)
     log_action_taken_on_message(1000, uid)
     self.assertEqual(len(list(message.history)), 0)