def test_positive_end_to_end_crud_and_list(self): """CRUD test + list test for report templates :id: 2a143ddf-683f-49e2-badb-f9a387cfc53c :setup: User with reporting access rights and following setup: create - doesn't require other setup list - at least two report templates info - some report template update - some report template that is not locked delete - some report template that is not locked :steps: 1. hammer report-template create ... 2. hammer report-template list ... 3. hammer report-template info ... 4. hammer report-template update ... # change some value 5. hammer report-template delete ... :expectedresults: Report is created, report templates are listed, data about report template is showed, report template is updated, and deleted. :CaseImportance: Critical """ # create name = gen_string('alpha') report_template = make_report_template({'name': name}) self.assertEqual(report_template['name'], name) # list - create second template tmp_name = gen_string('alpha') tmp_report_template = make_report_template({'name': tmp_name}) result_list = ReportTemplate.list() self.assertIn(name, [rt['name'] for rt in result_list]) # info result = ReportTemplate.info({'id': report_template['id']}) self.assertEqual(result['name'], name) # update new_name = gen_string('alpha') result = ReportTemplate.update({ 'name': report_template['name'], 'new-name': new_name }) self.assertEqual(result[0]['name'], new_name) rt_list = ReportTemplate.list() self.assertNotIn(name, [rt['name'] for rt in rt_list]) # delete tmp ReportTemplate.delete({'name': tmp_report_template['name']}) with self.assertRaises(CLIReturnCodeError): ReportTemplate.info({'id': tmp_report_template['id']})
def test_positive_clone_locked_report(self): """Clone locked report template :id: cc843731-b9c2-4fc9-9e15-d1ee5d967cda :setup: User with reporting access rights, some report template that is locked :steps: 1. hammer report-template clone ... :expectedresults: Report is cloned :CaseImportance: Medium """ name = gen_string('alpha') report_template = make_report_template({'name': name}) ReportTemplate.update({ 'name': report_template['name'], 'locked': 1, 'default': 1 }) new_name = gen_string('alpha') ReportTemplate.clone({ 'id': report_template['id'], 'new-name': new_name }) result_list = ReportTemplate.list() self.assertIn(new_name, [rt['name'] for rt in result_list]) result_info = ReportTemplate.info({'id': report_template['id']}) self.assertEqual(result_info['locked'], 'yes') self.assertEqual(result_info['default'], 'yes')
def test_positive_report_add_userinput(self): """Add user input to template :id: 84b577db-144e-4761-a46e-e83887464986 :setup: User with reporting access rights :steps: 1. hammer template-input create ... :expectedresults: User input is assigned to the report template :CaseImportance: High """ name = gen_string('alpha') report_template = make_report_template({'name': name}) ti_name = gen_string('alpha') template_input = make_template_input({ 'name': ti_name, 'input-type': 'user', 'template-id': report_template['id'] }) result = ReportTemplate.info({'name': report_template['name']}) self.assertEqual(result['template-inputs'][0]['name'], template_input['name'])
def test_positive_lock_and_unlock_report(self): """Lock and unlock report template :id: df306515-8798-4ce3-9430-6bc3bf9b9b33 :setup: User with reporting access rights, some report template that is not locked :steps: 1. hammer report-template update ... --locked true 2. hammer report-template update ... --locked false :expectedresults: Report is locked and unlocked successfully. :CaseImportance: Medium """ name = gen_string('alpha') report_template = make_report_template({'name': name}) ReportTemplate.update({'name': report_template['name'], 'locked': 1}) new_name = gen_string('alpha') with self.assertRaises(CLIReturnCodeError): ReportTemplate.update({ 'name': report_template['name'], 'new-name': new_name }) ReportTemplate.update({'name': report_template['name'], 'locked': 0}) result = ReportTemplate.update({ 'name': report_template['name'], 'new-name': new_name }) self.assertEqual(result[0]['name'], new_name)
def test_negative_create_report_without_name(self): """Try to create a report template with empty name :id: 84b577db-144e-4771-a42e-e93887464986 :setup: User with reporting access rights :steps: 1. hammer report-template create --name '' ... :expectedresults: Report is not created :CaseImportance: Medium """ with self.assertRaises(CLIFactoryError): make_report_template({'name': ''})
def test_positive_generate_report_sanitized(self): """Generate report template where there are values in comma outputted which might brake CSV format :id: 84b577db-144e-4961-a42e-e93887464986 :setup: User with reporting access rights, Host Statuses report, a host with OS that has comma in its name :steps: 1. hammer report-template generate ... :expectedresults: Report is generated in proper CSV format (value with comma is quoted) :CaseImportance: Medium """ os_name = gen_string('alpha') + "," + gen_string('alpha') architecture = make_architecture() partition_table = make_partition_table() medium = make_medium() os = make_os({ 'name': os_name, 'architecture-ids': architecture['id'], 'medium-ids': medium['id'], 'partition-table-ids': partition_table['id'], }) host_name = gen_string('alpha') host = make_fake_host({ 'name': host_name, 'architecture-id': architecture['id'], 'medium-id': medium['id'], 'operatingsystem-id': os['id'], 'partition-table-id': partition_table['id'] }) report_template = make_report_template({ 'content': REPORT_TEMPLATE_FILE, }) result = ReportTemplate.generate({ 'name': report_template['name'], }) self.assertIn('Name,Operating System', result) # verify header of custom template self.assertIn( '{0},"{1}"'.format(host['name'], host['operating-system']['operating-system']), result)
def test_positive_generate_report_sanitized(): """Generate report template where there are values in comma outputted which might brake CSV format :id: 84b577db-144e-4961-a42e-e93887464986 :setup: User with reporting access rights, Host Statuses report, a host with OS that has comma in its name :steps: 1. hammer report-template generate ... :expectedresults: Report is generated in proper CSV format (value with comma is quoted) :CaseImportance: Medium """ # create a name that has a comma in it, some randomized text, and no spaces. os_name = gen_alpha(start='test', separator=',').replace(' ', '') architecture = make_architecture() partition_table = make_partition_table() medium = make_medium() os = make_os({ 'name': os_name, 'architecture-ids': architecture['id'], 'medium-ids': medium['id'], 'partition-table-ids': partition_table['id'], }) host_name = gen_alpha() host = make_fake_host({ 'name': host_name, 'architecture-id': architecture['id'], 'medium-id': medium['id'], 'operatingsystem-id': os['id'], 'partition-table-id': partition_table['id'], }) report_template = make_report_template({'content': REPORT_TEMPLATE_FILE}) result = ReportTemplate.generate({'name': report_template['name']}) assert 'Name,Operating System' in result # verify header of custom template assert f'{host["name"]},"{host["operating-system"]["operating-system"]}"' in result
def test_positive_dump_report(): """Export report template :id: 84b577db-144e-4761-a42e-a83887464986 :setup: User with reporting access rights, some report template :steps: 1. hammer report-template dump ... :expectedresults: Report script is shown :CaseImportance: Medium """ name = gen_alpha() content = gen_alpha() report_template = make_report_template({'name': name, 'content': content}) result = ReportTemplate.dump({'id': report_template['id']}) assert content in result
def test_negative_delete_locked_report(self): """Try to delete a locked report template :id: 84b577db-144e-4871-a42e-e93887464986 :setup: User with reporting access rights, some report template that is locked :steps: 1. hammer report-template delete ... :expectedresults: Report is not deleted :CaseImportance: Medium """ name = gen_string('alpha') report_template = make_report_template({'name': name}) ReportTemplate.update({'name': report_template['name'], 'locked': 1}) with self.assertRaises(CLIReturnCodeError): ReportTemplate.delete({'name': report_template['name']})
def test_negative_bad_email(self): """Report can't be generated when incorrectly formed mail specified :id: a4ba77db-144e-4871-a42e-e93887464986 :setup: User with reporting access rights, some host with applied errata :steps: 1. hammer report-template schedule ... :expectedresults: Error message about wrong e-mail address, no task is triggered :CaseImportance: Medium """ name = gen_string('alpha') report_template = make_report_template({'name': name}) with self.assertRaises(CLIReturnCodeError): ReportTemplate.schedule( {'name': report_template['name'], 'mail-to': gen_string('alpha')} )