Esempio n. 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']})
Esempio n. 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')
Esempio n. 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'])
Esempio n. 4
0
    def test_positive_generate_with_name_and_org(self):
        """Generate Host Status report, specifying template name and organization

        :id: 5af03399-b918-468a-1306-1c76dda6f369

        :setup: User with reporting access rights, some report template, some host

        :steps:

            0. use default report template called Host - Statuses
            1. hammer report-template generate --name ... --organization ...

        :expectedresults: Report successfully generated (in BZ, it results in
            "ERF42-5227 [Foreman::Exception]: unknown parent permission for
            api/v2/report_templates#generate")

        :CaseImportance: Medium

        :BZ: 1750924
        """
        host_name = gen_string('alpha')
        host = make_fake_host({'name': host_name})

        # make sure the template is in the default org
        org_names = ReportTemplate.info({'name': 'Host - Statuses'})['organizations']
        default_org = Org.info({'name': DEFAULT_ORG})
        if default_org['name'] not in org_names:
            org_ids = [Org.info({'name': org_name})['id'] for org_name in org_names]
            org_ids.append(default_org['id'])
            ReportTemplate.update({'name': 'Host - Statuses', 'organization-ids': org_ids})

        result = ReportTemplate.generate({'name': 'Host - Statuses', 'organization': DEFAULT_ORG})

        self.assertIn(host['name'], [item.split(',')[0] for item in result])
Esempio n. 5
0
def test_positive_generate_report_nofilter_and_with_filter():
    """Generate Host Status report without filter and with filter

    :id: 5af03399-b918-468a-9306-1c76dda6a369

    :setup: User with reporting access rights, some report template, at least two hosts

    :steps:

        0. use default report template called Host - Statuses
        1. hammer report-template generate --id ... # do not specify any filter
        2. hammer report-template generate --id ... # specify filter

    :expectedresults: nofilter - Report is generated for all hosts visible for user
                      filter   - Report is generated for the host specified by the filter

    :CaseImportance: Critical
    """
    host_name = gen_alpha()
    host1 = make_fake_host({'name': host_name})

    host_name_2 = gen_alpha()
    host2 = make_fake_host({'name': host_name_2})

    result_list = ReportTemplate.list()
    assert 'Host - Statuses' in [rt['name'] for rt in result_list]

    rt_host_statuses = ReportTemplate.info({'name': 'Host - Statuses'})
    result_no_filter = ReportTemplate.generate(
        {'name': rt_host_statuses['name']})

    assert host1['name'] in [
        item.split(',')[0] for item in result_no_filter.splitlines()
    ]
    assert host2['name'] in [
        item.split(',')[0] for item in result_no_filter.splitlines()
    ]

    result = ReportTemplate.generate({
        'name':
        rt_host_statuses['name'],
        'inputs': (rt_host_statuses['template-inputs'][0]['name'] + '=' +
                   f'name={host1["name"]}'),
    })
    assert host1['name'] in [
        item.split(',')[0] for item in result.splitlines()
    ]
    assert host2['name'] not in [
        item.split(',')[0] for item in result.splitlines()
    ]
Esempio n. 6
0
    def test_positive_generate_report_nofilter_and_with_filter(self):
        """Generate Host Status report without filter and with filter

        :id: 5af03399-b918-468a-9306-1c76dda6a369

        :setup: User with reporting access rights, some report template, at least two hosts

        :steps:

            0. use default report template called Host statuses
            1. hammer report-template generate --id ... # do not specify any filter
            2. hammer report-template generate --id ... # specify filter

        :expectedresults: nofilter - Report is generated for all hosts visible for user
                          filter   - Report is generated for the host specified by the filter

        :CaseImportance: Critical
        """
        host_name = gen_string('alpha')
        host1 = make_fake_host({'name': host_name})

        host_name_2 = gen_string('alpha')
        host2 = make_fake_host({'name': host_name_2})

        result_list = ReportTemplate.list()
        self.assertIn('Host statuses', [rt['name'] for rt in result_list])

        rt_host_statuses = ReportTemplate.info({'name': 'Host statuses'})
        result_no_filter = ReportTemplate.generate({
            'name':
            rt_host_statuses['name'],
        })

        self.assertIn(host1['name'],
                      [item.split(',')[0] for item in result_no_filter])
        self.assertIn(host2['name'],
                      [item.split(',')[0] for item in result_no_filter])

        result = ReportTemplate.generate({
            'name':
            rt_host_statuses['name'],
            'inputs': (rt_host_statuses['template-inputs'][0]['name'] + "=" +
                       'name={0}'.format(host1['name']))
        })
        self.assertIn(host1['name'], [item.split(',')[0] for item in result])
        self.assertNotIn(host2['name'],
                         [item.split(',')[0] for item in result])