예제 #1
0
    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']})
예제 #2
0
    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')
예제 #3
0
    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'])
예제 #4
0
    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)
예제 #5
0
    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': ''})
예제 #6
0
    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)
예제 #7
0
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
예제 #8
0
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
예제 #9
0
    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']})
예제 #10
0
    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')}
            )