def test_update_workflow_invalid_new_workflow(self):
        from walkoff.executiondb.schemas import WorkflowSchema
        from walkoff.executiondb import ExecutionDatabase
        playbook = execution_db_help.standard_load()
        workflow = playbook.workflows[0]
        expected_json = WorkflowSchema().dump(workflow)
        expected_json['name'] = self.change_workflow_name
        expected_json['actions'][0]['action_name'] = 'invalid'
        expected_json.pop('is_valid')
        response = self.put_with_status_check('/api/workflows',
                                              data=json.dumps(expected_json),
                                              headers=self.headers,
                                              content_type='application/json')
        response.pop('is_valid')
        errors = response['actions'][0].pop('errors')
        self.assertEqual(len(errors), 1)
        self.assertDictEqual(response, expected_json)

        self.assertIsNotNone(
            ExecutionDatabase.instance.session.query(Workflow).filter_by(
                id=workflow.id).first())
        self.assertIsNone(
            ExecutionDatabase.instance.session.query(Workflow).join(
                Workflow.playbook).filter(
                    Workflow.name == self.add_workflow_name).first())
示例#2
0
 def test_create_playbook_bad_id_in_workflow(self):
     workflow = Workflow('wf1', uuid4())
     self.app.running_context.execution_db.session.add(workflow)
     self.app.running_context.execution_db.session.flush()
     workflow_json = WorkflowSchema().dump(workflow)
     workflow_json.pop('is_valid', None)
     workflow_json['id'] = 'garbage'
     data = {'name': self.add_playbook_name, 'workflows': [workflow_json]}
     self.post_with_status_check('/api/playbooks',
                                 data=json.dumps(data), headers=self.headers, status_code=BAD_REQUEST,
                                 content_type="application/json")
 def test_create_playbook_bad_id_in_workflow(self):
     workflow = Workflow('wf1', uuid4())
     self.app.running_context.execution_db.session.add(workflow)
     self.app.running_context.execution_db.session.flush()
     workflow_json = WorkflowSchema().dump(workflow)
     workflow_json.pop('is_valid', None)
     workflow_json['id'] = 'garbage'
     data = {'name': self.add_playbook_name, 'workflows': [workflow_json]}
     self.post_with_status_check('/api/playbooks',
                                 data=json.dumps(data),
                                 headers=self.headers,
                                 status_code=BAD_REQUEST,
                                 content_type="application/json")
示例#4
0
    def test_copy_workflow(self):
        playbook = execution_db_help.standard_load()
        for workflow in playbook.workflows:
            workflow_id = workflow.id
        response = self.post_with_status_check('/api/workflows?source={0}'.format(workflow_id),
                                               headers=self.headers, status_code=OBJECT_CREATED,
                                               data=json.dumps(
                                                   {'name': self.add_workflow_name, 'playbook_id': str(playbook.id)}),
                                               content_type="application/json")
        self.assertEqual(len(playbook.workflows), 2)

        for workflow in playbook.workflows:
            self.assertIn(workflow.name, ['helloWorldWorkflow', self.add_workflow_name])
            if workflow.name == 'helloWorldWorkflow':
                workflow_original = workflow
            elif workflow.name == self.add_workflow_name:
                workflow_copy = workflow

        copy_workflow_json = WorkflowSchema().dump(workflow_copy)
        original_workflow_json = WorkflowSchema().dump(workflow_original)
        copy_workflow_json.pop('name', None)
        original_workflow_json.pop('name', None)
        self.assertNotEqual(original_workflow_json['start'], copy_workflow_json['start'])
        copy_workflow_json.pop('start')
        original_workflow_json.pop('start')
        self.assertEqual(len(workflow_original.actions), len(workflow_copy.actions))
示例#5
0
    def test_copy_workflow(self):
        playbook = execution_db_help.standard_load()
        for workflow in playbook.workflows:
            workflow_id = workflow.id
        response = self.post_with_status_check(
            '/api/workflows?source={0}'.format(workflow_id),
            headers=self.headers,
            status_code=OBJECT_CREATED,
            data=json.dumps({
                'name': self.add_workflow_name,
                'playbook_id': str(playbook.id)
            }),
            content_type="application/json")
        self.assertEqual(len(playbook.workflows), 2)

        for workflow in playbook.workflows:
            self.assertIn(workflow.name,
                          ['helloWorldWorkflow', self.add_workflow_name])
            if workflow.name == 'helloWorldWorkflow':
                workflow_original = workflow
            elif workflow.name == self.add_workflow_name:
                workflow_copy = workflow

        copy_workflow_json = WorkflowSchema().dump(workflow_copy).data
        original_workflow_json = WorkflowSchema().dump(workflow_original).data
        copy_workflow_json.pop('name', None)
        original_workflow_json.pop('name', None)
        self.assertNotEqual(original_workflow_json['start'],
                            copy_workflow_json['start'])
        copy_workflow_json.pop('start')
        original_workflow_json.pop('start')
        self.assertEqual(len(workflow_original.actions),
                         len(workflow_copy.actions))
示例#6
0
    def test_update_workflow(self):
        from walkoff.executiondb.schemas import WorkflowSchema
        playbook = execution_db_help.standard_load()
        workflow = playbook.workflows[0]
        expected_json = WorkflowSchema().dump(workflow)
        expected_json['name'] = self.change_workflow_name
        expected_json.pop('is_valid')
        response = self.put_with_status_check('/api/workflows',
                                              data=json.dumps(expected_json),
                                              headers=self.headers,
                                              content_type='application/json')
        response.pop('is_valid')
        self.assertDictEqual(response, expected_json)

        self.assertIsNotNone(
            self.app.running_context.execution_db.session.query(Workflow).filter_by(id=workflow.id).first())
        self.assertIsNone(
            self.app.running_context.execution_db.session.query(Workflow).join(Workflow.playbook).filter(
                Workflow.name == self.add_workflow_name).first())
    def test_update_workflow(self):
        from walkoff.executiondb.schemas import WorkflowSchema
        playbook = execution_db_help.standard_load()
        workflow = playbook.workflows[0]
        expected_json = WorkflowSchema().dump(workflow)
        expected_json['name'] = self.change_workflow_name
        expected_json.pop('is_valid')
        response = self.put_with_status_check('/api/workflows',
                                              data=json.dumps(expected_json),
                                              headers=self.headers,
                                              content_type='application/json')
        response.pop('is_valid')
        self.assertDictEqual(response, expected_json)

        self.assertIsNotNone(
            self.app.running_context.execution_db.session.query(
                Workflow).filter_by(id=workflow.id).first())
        self.assertIsNone(
            self.app.running_context.execution_db.session.query(Workflow).join(
                Workflow.playbook).filter(
                    Workflow.name == self.add_workflow_name).first())
示例#8
0
    def test_update_workflow_invalid_new_workflow(self):
        from walkoff.executiondb.schemas import WorkflowSchema
        from walkoff.executiondb import ExecutionDatabase
        playbook = execution_db_help.standard_load()
        workflow = playbook.workflows[0]
        expected_json = WorkflowSchema().dump(workflow)
        expected_json['name'] = self.change_workflow_name
        expected_json['actions'][0]['action_name'] = 'invalid'
        expected_json.pop('is_valid')
        response = self.put_with_status_check('/api/workflows',
                                              data=json.dumps(expected_json),
                                              headers=self.headers,
                                              content_type='application/json')
        response.pop('is_valid')
        errors = response['actions'][0].pop('errors')
        self.assertEqual(len(errors), 1)
        self.assertDictEqual(response, expected_json)

        self.assertIsNotNone(
            ExecutionDatabase.instance.session.query(Workflow).filter_by(id=workflow.id).first())
        self.assertIsNone(
            ExecutionDatabase.instance.session.query(Workflow).join(Workflow.playbook).filter(
                Workflow.name == self.add_workflow_name).first())