def test_load_playbooks_mixed_files_in_directory(self): workflows = [Workflow('something'), Workflow('something2')] playbook = Playbook('test', workflows=workflows) filepath = os.path.join(test_data_path, 'test.playbook') with open(filepath, 'w') as file_out: file_out.write(json.dumps(playbook.read())) workflows = [Workflow('something'), Workflow('something2')] playbook = Playbook('test2', workflows=workflows) filepath = os.path.join(test_data_path, 'test2.some_extension') with open(filepath, 'w') as file_out: file_out.write(json.dumps(playbook.read())) loaded = Loader.load_playbooks(test_data_path) self.assertEqual(len(loaded), 1) self.assertEqual(loaded[0].name, 'test')
def test_load_multiple_workflows(self): workflows = [Workflow('something'), Workflow('something2')] playbook = Playbook('test', workflows=workflows) filepath = os.path.join(test_data_path, 'test.playbook') with open(filepath, 'w') as file_out: file_out.write(json.dumps(playbook.read())) workflows = [Workflow('something'), Workflow('something2')] playbook = Playbook('test2', workflows=workflows) filepath = os.path.join(test_data_path, 'test2.playbook') with open(filepath, 'w') as file_out: file_out.write(json.dumps(playbook.read())) loaded = Loader.load_playbooks(test_data_path) self.assertEqual(len(loaded), 2) self.assertSetEqual({playbook.name for playbook in loaded}, {'test', 'test2'})
def test_delete_workflow(self): execution_db_help.standard_load() workflows = [Workflow('wf{}'.format(i), uuid4()) for i in range(2)] for workflow in workflows: self.app.running_context.execution_db.session.add(workflow) target_playbook = Playbook('play1', workflows=workflows) self.app.running_context.execution_db.session.add(target_playbook) self.app.running_context.execution_db.session.flush() workflow_ids = [workflow.id for workflow in workflows] original_num_playbooks = len( self.app.running_context.execution_db.session.query( Playbook).all()) self.delete_with_status_check('/api/workflows/{}'.format( workflow_ids[0]), headers=self.headers, status_code=NO_CONTENT) self.assertEqual(len(list(target_playbook.workflows)), len(workflow_ids) - 1) self.assertNotIn( workflow_ids[0], [workflow.id for workflow in target_playbook.workflows]) self.assertEqual( len( self.app.running_context.execution_db.session.query( Playbook).all()), original_num_playbooks)
def test_add_workflow(self): workflow = Workflow('wf_name', 0) playbook = Playbook('test', [workflow]) playbook.add_workflow(Workflow('test2', 0)) orderless_list_compare( self, [workflow.name for workflow in playbook.workflows], ['wf_name', 'test2'])
def upgrade_playbook(playbook): workflows = [] for workflow in playbook['workflows']: workflows.append(upgrade_workflow(workflow)) playbook_obj = Playbook(name=playbook['name'], workflows=workflows, id=playbook.get('uid', None)) executiondb.execution_db.session.add(playbook_obj) executiondb.execution_db.session.commit()
def test_load_playbook(self): workflows = [Workflow('something'), Workflow('something2')] playbook = Playbook('test', workflows=workflows) filepath = os.path.join(test_data_path, 'test.json') with open(filepath, 'w') as file_out: file_out.write(json.dumps(playbook.read())) loaded = Loader.load_playbook(filepath) self.assertIsInstance(loaded, Playbook) self.assertEqual(loaded.name, 'test')
def test_delete_last_workflow(self): execution_db_help.standard_load() workflow = Workflow('wf', uuid4()) executiondb.execution_db.session.add(workflow) target_playbook = Playbook('play1', workflows=[workflow]) executiondb.execution_db.session.add(target_playbook) executiondb.execution_db.session.flush() original_num_playbooks = len( executiondb.execution_db.session.query(Playbook).all()) self.delete_with_status_check('/api/workflows/{}'.format(workflow.id), headers=self.headers, status_code=NO_CONTENT) self.assertIsNone( executiondb.execution_db.session.query(Playbook).filter_by( name='play1').first()) self.assertEqual( len(executiondb.execution_db.session.query(Playbook).all()), original_num_playbooks - 1)
def test_load_workflow_with_workflow_not_in_playbook(self): playbook = Playbook('test') filepath = os.path.join(test_data_path, 'test.json') with open(filepath, 'w') as file_out: file_out.write(json.dumps(playbook.read())) self.assertIsNone(Loader.load_workflow(filepath, 'something'))
def test_get_all_workflow_ids_no_workflows(self): playbook = Playbook('test', []) self.assertListEqual(playbook.get_all_workflow_ids(), [])
def test_get_all_workflow_names(self): workflows = [Workflow(str(i), 0) for i in range(3)] playbook = Playbook('test', workflows) orderless_list_compare(self, playbook.get_all_workflow_names(), ['0', '1', '2'])
def test_get_workflow_by_id(self): workflow = Workflow('wf_name', 0) playbook = Playbook('test', [workflow]) self.assertEqual(playbook.get_workflow_by_id(workflow.id), workflow)
def test_get_workflow_by_id_no_workflows(self): playbook = Playbook('test', []) self.assertIsNone(playbook.get_workflow_by_id('anything'))
def test_get_workflow_by_name_no_name(self): workflow = Workflow('wf_name', 0) playbook = Playbook('test', [workflow]) self.assertIsNone(playbook.get_workflow_by_name('invalid'))
def test_rename_workflow(self): workflows = [Workflow(str(i), 0) for i in range(3)] playbook = Playbook('test', workflows) playbook.rename_workflow('2', 'new_name') self.assertTrue(playbook.has_workflow_name('new_name')) self.assertFalse(playbook.has_workflow_name('2'))
def test_rename_workflow_no_workflows(self): playbook = Playbook('test', []) playbook.rename_workflow('anything', 'renamed') self.assertListEqual(playbook.workflows, [])
def test_has_workflow_name_no_workflows(self): playbook = Playbook('test', []) self.assertFalse(playbook.has_workflow_name('anything'))
def test_remove_workflow_by_name_no_workflows(self): playbook = Playbook('test', []) playbook.remove_workflow_by_name('something') self.assertListEqual(playbook.workflows, [])
def test_init_with_workflows(self): workflows = [Workflow(str(i), 0) for i in range(3)] playbook = Playbook('test', workflows) self.assertEqual(playbook.name, 'test') self.assertListEqual(playbook.workflows, workflows)
def test_init(self): playbook = Playbook('test') self.assertEqual(playbook.name, 'test') self.assertListEqual(playbook.workflows, [])
def test_remove_workflow_by_name(self): workflows = [Workflow(str(i), 0) for i in range(3)] playbook = Playbook('test', workflows) playbook.remove_workflow_by_name('2') self.assertEqual(len(playbook.workflows), 2) self.assertFalse(playbook.has_workflow_name('2'))
def test_remove_workflow_by_name_workflow_not_found(self): workflows = [Workflow(str(i), 0) for i in range(3)] playbook = Playbook('test', workflows) playbook.remove_workflow_by_name('invalid') self.assertEqual(len(playbook.workflows), 3)
def test_get_all_workflows_as_json_no_workflows(self): playbook = Playbook('test', []) self.assertListEqual(playbook.get_all_workflow_representations(), [])
def test_has_workflow_id(self): workflow = Workflow('wf_name', 0) playbook = Playbook('test', [workflow]) self.assertTrue(playbook.has_workflow_id(workflow.id))
def test_has_workflow_name_no_name(self): workflow = Workflow('wf_name', 0) playbook = Playbook('test', [workflow]) self.assertFalse(playbook.has_workflow_name('invalid'))
def test_rename_workflow_not_found(self): workflows = [Workflow(str(i), 0) for i in range(3)] playbook = Playbook('test', workflows) playbook.rename_workflow('invalid', 'new_name') self.assertFalse(playbook.has_workflow_name('invalid'))
def test_has_workflow_id_no_workflows(self): playbook = Playbook('test', []) self.assertFalse(playbook.has_workflow_id(1))
def test_get_all_workflow_ids(self): workflows = [Workflow(str(i), 0) for i in range(3)] playbook = Playbook('test', workflows) orderless_list_compare(self, playbook.get_all_workflow_ids(), list(workflow.id for workflow in workflows))