From 6827af7846003064b0a4a5ad1182fb8e5f75d95c Mon Sep 17 00:00:00 2001 From: Martin Kourim Date: Tue, 13 Jun 2017 18:13:29 +0200 Subject: [PATCH] unit tests --- tests/__init__.py | 0 tests/data/complete_notransform.xml | 93 ++++++ tests/data/complete_notransform_name.xml | 98 +++++++ tests/data/complete_transform.xml | 62 ++++ tests/data/complete_transform_name.xml | 67 +++++ tests/data/workitems_ids.csv | 356 +++++++++++++++++++++++ tests/test_dump2polarion.py | 106 +++++++ tests/test_polarion_dumper.py | 16 + 8 files changed, 798 insertions(+) create mode 100644 tests/__init__.py create mode 100644 tests/data/complete_notransform.xml create mode 100644 tests/data/complete_notransform_name.xml create mode 100644 tests/data/complete_transform.xml create mode 100644 tests/data/complete_transform_name.xml create mode 100644 tests/data/workitems_ids.csv create mode 100644 tests/test_dump2polarion.py create mode 100644 tests/test_polarion_dumper.py diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/complete_notransform.xml b/tests/data/complete_notransform.xml new file mode 100644 index 0000000..8c5b888 --- /dev/null +++ b/tests/data/complete_notransform.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + success + no fails + + + + + + + + + + + + wrong + + + + + + + epic + fail + + + + + + + + + + + + + skip + skipped + + + + + + + blocked because of + this + + + + + + + to + original + + + + + + + to + original + + + + + + + to + original + + + + + + diff --git a/tests/data/complete_notransform_name.xml b/tests/data/complete_notransform_name.xml new file mode 100644 index 0000000..43914ac --- /dev/null +++ b/tests/data/complete_notransform_name.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + success + no fails + + + + + + + + + + + + wrong + + + + + + + epic + fail + + + + + + + + + + + + + skip + skipped + + + + + + + blocked because of + this + + + + + + + to + original + + + + + + + to + original + + + + + + + to + original + + + + + + + + + + + diff --git a/tests/data/complete_transform.xml b/tests/data/complete_transform.xml new file mode 100644 index 0000000..c1f660f --- /dev/null +++ b/tests/data/complete_transform.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + success + no fails + + + + + + + + + + + + + + + + + + to + original + + + + + + + to + original + + + + + + + to + original + + + + + + diff --git a/tests/data/complete_transform_name.xml b/tests/data/complete_transform_name.xml new file mode 100644 index 0000000..2bf3af6 --- /dev/null +++ b/tests/data/complete_transform_name.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + success + no fails + + + + + + + + + + + + + + + + + + to + original + + + + + + + to + original + + + + + + + to + original + + + + + + + + + + + diff --git a/tests/data/workitems_ids.csv b/tests/data/workitems_ids.csv new file mode 100644 index 0000000..4f5b56c --- /dev/null +++ b/tests/data/workitems_ids.csv @@ -0,0 +1,356 @@ +Exported on,2017-05-29 04:21,,,,,,,, +Query,"(assignee.id:$[user.id] AND NOT status:inactive AND (TEST_RECORDS:(""RHCF3/5_8_0_17"", @null))) AND project.id:RHCF3",,,,,,,, +,,,,,,,,, +ID,Title,Test Case I D,Caseimportance,Verdict,Comment,stdout,stderr,exported,time +RHCF3-9313,test_vm_scan[from_collection],cfme.tests.test_rest.test_vm_scan,Medium,pass,YES it passed!,,,,1 +RHCF3-9352,test_vm_scan[from_detail],cfme.tests.test_rest.test_vm_scan,Medium,passed,,success,no fails,,1 +RHCF3-12909,test_user_settings,cfme.tests.test_rest.test_user_settings,Low,PASS,,,,,1 +RHCF3-12811,test_server_info,cfme.tests.test_rest.test_server_info,Low,failed,it is,wrong,,,12.4 +RHCF3-14053,test_resources_hiding,cfme.tests.test_rest.test_resources_hiding,Low,fail,,epic,fail,,98.234 +RHCF3-3313,test_query_simple_collections[users],cfme.tests.test_rest.test_query_simple_collections,Medium,skip,Skipping due to these blockers BZ123,,,,99.234 +RHCF3-3333,test_query_simple_collections[conditions],cfme.tests.test_rest.test_query_simple_collections,Medium,skipped,,skip,skipped,,100.234 +RHCF3-3346,test_query_simple_collections[data_stores],cfme.tests.test_rest.test_query_simple_collections,Medium,blocked ,it’s blocked,blocked because of,this,,101.234 +RHCF3-3394,test_query_simple_collections[clusters],cfme.tests.test_rest.test_query_simple_collections,Medium,null,reset,to,original,,102.234 +RHCF3-3400,test_query_simple_collections[requests],cfme.tests.test_rest.test_query_simple_collections,Medium,waiting,reset,to,original,,103.234 +RHCF3-3417,test_query_simple_collections[tags],cfme.tests.test_rest.test_query_simple_collections,Medium,wait,reset,to,original,,104.234 +RHCF3-3444,test_query_simple_collections[zones],cfme.tests.test_rest.test_query_simple_collections,Medium,invalid,,,,,105.234 +RHCF3-3495,test_query_simple_collections[security_groups],cfme.tests.test_rest.test_query_simple_collections,Medium,,,,,,106.234 +RHCF3-3557,test_query_simple_collections[policies],cfme.tests.test_rest.test_query_simple_collections,Medium,,,,,,107.234 +,test_query_simple_collections[events],cfme.tests.test_rest.test_query_simple_collections,Medium,passed,,,,,108.234 +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +,,,,,,,,, +RHCF3-12998,test_reset_vm[scvmm2016-from_collection],cfme.tests.cloud_infra_common.test_power_control_rest.test_reset_vm,Low,,,,,, +RHCF3-13003,test_reset_vm[scvmm2016-from_detail],cfme.tests.cloud_infra_common.test_power_control_rest.test_reset_vm,Low,,,,,, +RHCF3-13497,test_reset_vm[vsphere65-nested-from_detail],cfme.tests.cloud_infra_common.test_power_control_rest.test_reset_vm,Low,,,,,, +RHCF3-13550,test_reset_vm[vsphere65-nested-from_collection],cfme.tests.cloud_infra_common.test_power_control_rest.test_reset_vm,Low,,,,,, +RHCF3-11661,test_provision_from_template_using_rest[azure],cfme.tests.cloud.test_provisioning.test_provision_from_template_using_rest,Critical,,,,,, +RHCF3-12191,test_provision_from_template_using_rest[ec2west],cfme.tests.cloud.test_provisioning.test_provision_from_template_using_rest,Critical,,,,,, +RHCF3-12216,test_provision_from_template_using_rest[gce_central],cfme.tests.cloud.test_provisioning.test_provision_from_template_using_rest,Critical,,,,,, +RHCF3-14051,test_ec2_manual_placement_using_rest[ec2west],cfme.tests.cloud.test_provisioning.test_ec2_manual_placement_using_rest,Low,,,,,, +RHCF3-13008,TestProvidersRESTAPI.test_security_groups_query,cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_security_groups_query,Low,,,,,, +RHCF3-12991,TestProvidersRESTAPI.test_edit_arbitration_profiles[from_collection],cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_edit_arbitration_profiles,Low,,,,,, +RHCF3-13002,TestProvidersRESTAPI.test_edit_arbitration_profiles[from_detail],cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_edit_arbitration_profiles,Low,,,,,, +RHCF3-13467,TestProvidersRESTAPI.test_delete_arbitration_profiles_from_detail[post],cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_delete_arbitration_profiles_from_detail,Low,,,,,, +RHCF3-13599,TestProvidersRESTAPI.test_delete_arbitration_profiles_from_detail[delete],cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_delete_arbitration_profiles_from_detail,Low,,,,,, +RHCF3-13511,TestProvidersRESTAPI.test_delete_arbitration_profiles_from_collection,cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_delete_arbitration_profiles_from_collection,Low,,,,,, +RHCF3-13980,TestProvidersRESTAPI.test_create_arbitration_rules_with_profile,cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_create_arbitration_rules_with_profile,Low,,,,,, +RHCF3-13993,TestProvidersRESTAPI.test_create_arbitration_rule_with_invalid_profile,cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_create_arbitration_rule_with_invalid_profile,Low,,,,,, +RHCF3-12996,TestProvidersRESTAPI.test_create_arbitration_profiles,cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_create_arbitration_profiles,Low,,,,,, +RHCF3-12948,TestProvidersRESTAPI.test_cloud_networks_query[from_detail],cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_cloud_networks_query,Low,,,,,, +RHCF3-12951,TestProvidersRESTAPI.test_cloud_networks_query[from_collection],cfme.tests.cloud.test_providers.TestProvidersRESTAPI.test_cloud_networks_query,Low,,,,,, +RHCF3-12900,test_rest_search_automate,cfme.tests.automate.test_rest.test_rest_search_automate,Low,,,,,, +RHCF3-10166,test_tenant_parent_name_rest,,Medium,,,,,, diff --git a/tests/test_dump2polarion.py b/tests/test_dump2polarion.py new file mode 100644 index 0000000..3258342 --- /dev/null +++ b/tests/test_dump2polarion.py @@ -0,0 +1,106 @@ +# encoding: utf-8 +# pylint: disable=missing-docstring,redefined-outer-name + +from __future__ import unicode_literals + +import os +import copy + +from xml.etree import ElementTree + +import pytest + +import dump2polarion as d2p +from dump2polarion.csvtools import import_csv +from dump2polarion.exceptions import Dump2PolarionException + + +DATA_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data') + + +@pytest.fixture(scope="module") +def config(): + return { + 'xunit_import_properties': { + 'polarion-dry-run': False, + 'polarion-project-id': 'RHCF3', + 'polarion-testrun-status-id': 'inprogress', + 'polarion-response-test': 'test' + } + } + + +@pytest.fixture(scope="module") +def records_ids(): + csv_file = os.path.join(DATA_PATH, 'workitems_ids.csv') + return import_csv(csv_file) + + +@pytest.fixture(scope="module") +def records_names(): + csv_file = os.path.join(DATA_PATH, 'workitems_ids.csv') + records = import_csv(csv_file) + for res in records.results: + res.pop('id') + return records + + +def test_top_element(config, records_ids): + exporter = d2p.XunitExport('5_8_0_17', records_ids, config, transform_func=lambda: None) + top_element = exporter.top_element() + parsed = ''.strip() + assert ElementTree.tostring(top_element, 'utf-8').strip() == parsed + + +def test_properties_element(config, records_ids): + exporter = d2p.XunitExport('5_8_0_17', records_ids, config, transform_func=lambda: None) + top_element = exporter.top_element() + properties_element = exporter.properties_element(top_element) + parsed = """ + +""".strip() + assert ElementTree.tostring(properties_element, 'utf-8').strip() == parsed + + +def test_e2e_ids_notransform(config, records_ids): + exporter = d2p.XunitExport('5_8_0_17', records_ids, config, transform_func=lambda arg: arg) + complete = exporter.export() + fname = 'complete_notransform.xml' + with open(os.path.join(DATA_PATH, fname)) as input_xml: + parsed = input_xml.read() + assert complete == parsed + + +def test_e2e_ids_transform(config, records_ids): + exporter = d2p.XunitExport('5_8_0_17', records_ids, config) + complete = exporter.export() + fname = 'complete_transform.xml' + with open(os.path.join(DATA_PATH, fname)) as input_xml: + parsed = input_xml.read() + assert complete == parsed + + +def test_e2e_names_notransform(config, records_names): + exporter = d2p.XunitExport('5_8_0_17', records_names, config, transform_func=lambda arg: arg) + complete = exporter.export() + fname = 'complete_notransform_name.xml' + with open(os.path.join(DATA_PATH, fname)) as input_xml: + parsed = input_xml.read() + assert complete == parsed + + +def test_e2e_names_transform(config, records_names): + exporter = d2p.XunitExport('5_8_0_17', records_names, config) + complete = exporter.export() + fname = 'complete_transform_name.xml' + with open(os.path.join(DATA_PATH, fname)) as input_xml: + parsed = input_xml.read() + assert complete == parsed + + +def test_invalid_lookup_method(config, records_ids): + new_config = copy.deepcopy(config) + new_config['xunit_import_properties']['polarion-lookup-method'] = 'invalid' + exporter = d2p.XunitExport('5_8_0_17', records_ids, new_config) + with pytest.raises(Dump2PolarionException): + exporter.export() diff --git a/tests/test_polarion_dumper.py b/tests/test_polarion_dumper.py new file mode 100644 index 0000000..d77623a --- /dev/null +++ b/tests/test_polarion_dumper.py @@ -0,0 +1,16 @@ +# encoding: utf-8 + +from dump2polarion.dumper_cli import get_args + + +def test_get_args(): + args = get_args(['-i', 'dummy', '-t', 'testrun_id']) + assert args.input_file == 'dummy' + assert args.output_file is None + assert args.testrun_id == 'testrun_id' + assert args.config_file is None + assert args.no_submit is False + assert args.user is None + assert args.password is None + assert args.force is False + assert args.log_level is None