Skip to content

Commit

Permalink
Updating unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mkoura committed Nov 13, 2017
1 parent fbd27eb commit ecd42ad
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 44 deletions.
8 changes: 6 additions & 2 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ def config_prop():
'polarion-testrun-status-id': 'inprogress',
'polarion-response-test': 'test'
},
'xunit_target': 'https://polarion/import/xunit',
'testcase_taget': 'https://polarion/import/testcase'
'message_bus': 'ci-bus.example.com:6000',
'xunit_target': 'https://polarion.example.com/import/xunit',
'testcase_taget': 'https://polarion.example.com/import/testcase'
}


Expand All @@ -31,6 +32,9 @@ def config_e2e(tmpdir):
polarion-project-id : RHCF3
polarion-testrun-status-id : inprogress
polarion-response-test : test
message_bus: ci-bus.example.com:6000
xunit_target: https://polarion.example.com/import/xunit
testcase_taget: https://polarion.example.com/import/testcase
"""
conf_file = tmpdir.join('dump2polarion.yaml')
conf_file.write(conf_content)
Expand Down
3 changes: 3 additions & 0 deletions tests/data/dump2polarion.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ xunit_import_properties:
polarion-project-id : RHCF3
polarion-dry-run : true
polarion-testrun-status-id : inprogress
message_bus: ci-bus.example.com:6000
xunit_target: https://polarion.example.com/import/xunit
testcase_taget: https://polarion.example.com/import/testcase
username: user1
password: password1
msgbus_username: user2
Expand Down
5 changes: 3 additions & 2 deletions tests/test_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,15 @@ def test_nonexistant(self):
configuration.get_config('nonexistant')

def test_default(self):
cfg = configuration.get_config()
assert cfg['xunit_import_properties']['polarion-project-id'] == 'RHCF3'
with pytest.raises(Dump2PolarionException):
configuration.get_config()

def test_user(self):
conf_file = os.path.join(conf.DATA_PATH, 'dump2polarion.yaml')
cfg = configuration.get_config(conf_file)
assert cfg['xunit_import_properties']['polarion-dry-run'] is True
assert cfg['username'] == 'user1'
assert cfg['xunit_import_properties']['polarion-project-id'] == 'RHCF3'

def test_check_config(self):
cfg = {}
Expand Down
35 changes: 22 additions & 13 deletions tests/test_polarion_dumper.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,54 +135,63 @@ def test_main_formats(self, tmpdir, config_e2e, data, submit):
produced = out_xml.read()
assert produced == parsed

def test_main_missing_testrun(self, tmpdir, config_e2e):
def test_main_missing_testrun(self, tmpdir, config_e2e, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'junit-report.xml')
output_file = tmpdir.join('out.xml')
args = ['-i', input_file, '-o', str(output_file), '-c', config_e2e, '-n']

with patch('dump2polarion.submit_and_verify', return_value=True),\
patch('dump2polarion.dumper_cli.init_log'):
with patch('dump2polarion.submit_and_verify', return_value=True):
retval = dumper_cli.main(args)
assert retval == 1
assert 'The testrun id was not specified' in captured_log.getvalue()

with pytest.raises(IOError):
open(str(output_file))

def test_main_submit_ready(self):
def test_main_submit_ready(self, config_e2e):
input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
args = ['-i', input_file]
args = ['-i', input_file, '-c', config_e2e]

with patch('dump2polarion.submit_and_verify', return_value=True), \
patch('dump2polarion.dumper_cli.init_log'):
retval = dumper_cli.main(args)
assert retval == 0

def test_main_noreport(self):
def test_main_noreport(self, config_e2e):
input_file = os.path.join(conf.DATA_PATH, 'noreport.csv')
args = ['-i', input_file]
args = ['-i', input_file, '-c', config_e2e]

with patch('dump2polarion.submit_and_verify', return_value=True), \
patch('dump2polarion.dumper_cli.init_log'):
retval = dumper_cli.main(args)
assert retval == 0

def test_main_noresults(self):
def test_main_noresults(self, config_e2e, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'noresults.csv')
args = ['-i', input_file, '-c', config_e2e]

with patch('dump2polarion.submit_and_verify', return_value=True):
retval = dumper_cli.main(args)
assert retval == 1
assert 'No results read from' in captured_log.getvalue()

def test_main_unconfigured(self, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'noreport.csv')
args = ['-i', input_file]

with patch('dump2polarion.submit_and_verify', return_value=True), \
patch('dump2polarion.dumper_cli.init_log'):
with patch('dump2polarion.submit_and_verify', return_value=True):
retval = dumper_cli.main(args)
assert retval == 1
assert 'Failed to find following keys in config file' in captured_log.getvalue()

def test_main_noconfig(self):
def test_main_noconfig(self, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'noreport.csv')
args = ['-i', input_file, '-c', 'nonexistent']

with patch('dump2polarion.submit_and_verify', return_value=True), \
patch('dump2polarion.dumper_cli.init_log'):
with patch('dump2polarion.submit_and_verify', return_value=True):
retval = dumper_cli.main(args)
assert retval == 1
assert 'Cannot open config file' in captured_log.getvalue()

def test_main_submit_failed(self, tmpdir, config_e2e):
input_file = os.path.join(conf.DATA_PATH, 'workitems_ids.csv')
Expand Down
66 changes: 39 additions & 27 deletions tests/test_submit.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,24 +14,24 @@


class TestSubmit(object):
def test_missing_input(self, captured_log):
def test_missing_input(self, config_prop, captured_log):
with patch('requests.post'):
submit.submit('')
submit.submit('', config=config_prop)
assert 'no data supplied' in captured_log.getvalue()

def test_missing_credentials(self, captured_log):
def test_missing_credentials(self, config_prop, captured_log):
with patch('requests.post'):
submit.submit('foo')
submit.submit('foo', config=config_prop)
assert 'missing credentials' in captured_log.getvalue()

def test_missing_target(self, captured_log):
def test_missing_target(self, config_prop, captured_log):
with patch('requests.post'):
submit.submit('foo', user='john', password='123')
submit.submit('foo', config=config_prop, user='john', password='123')
assert 'submit target not found' in captured_log.getvalue()

def test_missing_testrun_id(self, captured_log):
def test_missing_testrun_id(self, config_prop, captured_log):
with patch('requests.post'):
submit.submit('<testsuites', user='john', password='123')
submit.submit('<testsuites', config=config_prop, user='john', password='123')
assert 'missing testrun id' in captured_log.getvalue()

def test_fill_testrun_id(self):
Expand All @@ -41,12 +41,13 @@ def test_fill_testrun_id(self):
filled = submit._fill_testrun_id(parsed, '5_8_0_17')
assert 'name="polarion-testrun-id" value="5_8_0_17"' in filled

def test_fill_testrun_submit(self):
def test_fill_testrun_submit(self, config_prop):
fname = 'properties.xml'
with patch('requests.post'):
submit.submit(
xml_file=os.path.join(conf.DATA_PATH, fname),
testrun_id='5_8_0_17',
config=config_prop,
user='john',
password='123')

Expand All @@ -58,7 +59,7 @@ def test_get_testsuites_taget(self, config_prop):
response = submit._get_submit_target('<testsuites', config_prop)
assert 'xunit' in response

def test_file_testsuites_failure(self, captured_log):
def test_file_testsuites_failure(self, config_prop, captured_log):
class Response(object):
def __init__(self):
self.status_code = 404
Expand All @@ -68,69 +69,80 @@ def __len__(self):

input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
with patch('requests.post', return_value=Response()):
response = submit.submit(xml_file=input_file, user='john', password='123')
response = submit.submit(
xml_file=input_file, config=config_prop, user='john', password='123')
assert not response
assert 'HTTP status 404: failed to submit results' in captured_log.getvalue()

def test_file_testsuites_none(self, captured_log):
def test_file_testsuites_none(self, config_prop, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
with patch('requests.post', return_value=None):
response = submit.submit(xml_file=input_file, user='john', password='123')
response = submit.submit(
xml_file=input_file, config=config_prop, user='john', password='123')
assert not response
assert 'Failed to submit results' in captured_log.getvalue()

def test_file_testsuites_exception(self, captured_log):
def test_file_testsuites_exception(self, config_prop, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
with patch('requests.post', side_effect=KeyError('request failed')):
response = submit.submit(xml_file=input_file, user='john', password='123')
response = submit.submit(
xml_file=input_file, config=config_prop, user='john', password='123')
assert not response
assert 'request failed' in captured_log.getvalue()
assert 'Failed to submit results' in captured_log.getvalue()

def test_file_testsuites_success(self, captured_log):
def test_file_testsuites_success(self, config_prop, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
with patch('requests.post'):
response = submit.submit(xml_file=input_file, user='john', password='123')
response = submit.submit(
xml_file=input_file, config=config_prop, user='john', password='123')
assert response
assert 'Results received' in captured_log.getvalue()


class TestSubmitAndVerify(object):
def test_missing_input(self, captured_log):
def test_missing_input(self, config_prop, captured_log):
with patch('requests.post'):
submit.submit_and_verify('')
submit.submit_and_verify('', config=config_prop)
assert 'no data supplied' in captured_log.getvalue()

def test_verify_none(self, captured_log):
def test_verify_none(self, config_prop, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
with patch('requests.post'), \
patch('dump2polarion.msgbus.get_verification_func', return_value=None):
response = submit.submit_and_verify(xml_file=input_file, user='john', password='123')
response = submit.submit_and_verify(
xml_file=input_file, config=config_prop, user='john', password='123')
assert response
assert 'Results received' in captured_log.getvalue()

def test_verify_skipped(self, captured_log):
def test_verify_skipped(self, config_prop, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
with patch('requests.post'):
response = submit.submit_and_verify(
xml_file=input_file, user='john', password='123', no_verify=True)
xml_file=input_file,
config=config_prop,
user='john',
password='123',
no_verify=True)
assert response
assert 'Results received' in captured_log.getvalue()

def test_verify_failed(self, captured_log):
def test_verify_failed(self, config_prop, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
with patch('requests.post'), \
patch('dump2polarion.msgbus.get_verification_func',
return_value=Mock(return_value=False)):
response = submit.submit_and_verify(xml_file=input_file, user='john', password='123')
response = submit.submit_and_verify(
xml_file=input_file, config=config_prop, user='john', password='123')
assert not response
assert 'Results received' in captured_log.getvalue()

def test_verify_success(self, captured_log):
def test_verify_success(self, config_prop, captured_log):
input_file = os.path.join(conf.DATA_PATH, 'complete_transform.xml')
with patch('requests.post'), \
patch('dump2polarion.msgbus.get_verification_func',
return_value=Mock()):
response = submit.submit_and_verify(xml_file=input_file, user='john', password='123')
response = submit.submit_and_verify(
xml_file=input_file, config=config_prop, user='john', password='123')
assert response
assert 'Results received' in captured_log.getvalue()

0 comments on commit ecd42ad

Please sign in to comment.