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())
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")
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))
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))
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())
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())