unittests: for edit-external-repo cmd and editTagExternalRepo API
This commit is contained in:
parent
bc4beeae0b
commit
0ea008ac8a
2 changed files with 186 additions and 0 deletions
101
tests/test_cli/test_edit_external_repo.py
Normal file
101
tests/test_cli/test_edit_external_repo.py
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
# coding=utf-8
|
||||
from __future__ import absolute_import
|
||||
import mock
|
||||
import six
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
import koji
|
||||
from koji_cli.commands import handle_edit_external_repo
|
||||
from . import utils
|
||||
|
||||
|
||||
class TestEditExternalRepo(utils.CliTestCase):
|
||||
|
||||
# Show long diffs in error output...
|
||||
maxDiff = None
|
||||
|
||||
def setUp(self):
|
||||
self.options = mock.MagicMock()
|
||||
self.session = mock.MagicMock()
|
||||
self.error_format = """Usage: %s edit-external-repo [options] <name>
|
||||
(Specify the --help global option for a list of other help options)
|
||||
|
||||
%s: error: {message}
|
||||
""" % (self.progname, self.progname)
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=six.StringIO)
|
||||
@mock.patch('sys.stderr', new_callable=six.StringIO)
|
||||
@mock.patch('koji_cli.commands.activate_session')
|
||||
def test_handle_edit_external_repo_error(
|
||||
self,
|
||||
activate_session_mock,
|
||||
stderr,
|
||||
stdout):
|
||||
"""Test handle_edit_external_repo function"""
|
||||
# [(expected, args),...]
|
||||
items = [
|
||||
("Incorrect number of arguments", []),
|
||||
("Incorrect number of arguments", ['arg1', 'arg2']),
|
||||
("No changes specified", ['ext_repo']),
|
||||
("At least, one of priority and merge mode should be specified",
|
||||
['ext_repo', '-t', 'tag']),
|
||||
("If priority is specified, --tag must be specified as well",
|
||||
['ext_repo', '-p', '0']),
|
||||
("If mode is specified, --tag must be specified as well",
|
||||
['ext_repo', '-m', 'koji'])
|
||||
|
||||
]
|
||||
for expected, cmd_args in items:
|
||||
self.assert_system_exit(
|
||||
handle_edit_external_repo,
|
||||
self.options,
|
||||
self.session,
|
||||
cmd_args,
|
||||
stderr=self.format_error_message(expected),
|
||||
activate_session=None)
|
||||
|
||||
# edit ext-repo only
|
||||
handle_edit_external_repo(self.options, self.session,
|
||||
['ext_repo','--name', 'newname', '--url', 'https://newurl'])
|
||||
self.assert_console_message(stdout, "")
|
||||
self.assert_console_message(stderr, "")
|
||||
self.session.editExternalRepo.assert_called_once_with('ext_repo',
|
||||
name='newname', url='https://newurl')
|
||||
self.session.editTagExternalRepo.assert_not_called()
|
||||
|
||||
# edit tag-repo only
|
||||
self.session.reset_mock()
|
||||
handle_edit_external_repo(self.options, self.session,
|
||||
['ext_repo','-t', 'tag', '-p', '0', '-m', 'koji'])
|
||||
self.assert_console_message(stdout, "")
|
||||
self.assert_console_message(stderr, "")
|
||||
self.session.editExternalRepo.assert_not_called()
|
||||
self.session.editTagExternalRepo.assert_called_once_with(repo_info='ext_repo',
|
||||
tag_info='tag',
|
||||
priority=0,
|
||||
merge_mode='koji')
|
||||
|
||||
def test_handle_edit_external_repo_help(self):
|
||||
self.assert_help(
|
||||
handle_edit_external_repo,
|
||||
"""Usage: %s edit-external-repo [options] <name>
|
||||
(Specify the --help global option for a list of other help options)
|
||||
|
||||
Options:
|
||||
-h, --help show this help message and exit
|
||||
--url=URL Change the url
|
||||
--name=NAME Change the name
|
||||
-t TAG, --tag=TAG Edit the repo properties for the tag.
|
||||
-p PRIORITY, --priority=PRIORITY
|
||||
Edit the priority of the repo for the tag specified by
|
||||
--tag.
|
||||
-m MODE, --mode=MODE Edit the merge mode of the repo for the tag specified
|
||||
by --tag. Options: %s.
|
||||
""" % (self.progname, ', '.join(koji.REPO_MERGE_MODES)))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
85
tests/test_hub/test_edit_tag_external_repo.py
Normal file
85
tests/test_hub/test_edit_tag_external_repo.py
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
import mock
|
||||
try:
|
||||
import unittest2 as unittest
|
||||
except ImportError:
|
||||
import unittest
|
||||
|
||||
import koji
|
||||
import kojihub
|
||||
|
||||
|
||||
class TestEditTagExternalRepo(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.context = mock.patch('kojihub.context').start()
|
||||
self.context.session.assertPerm = mock.MagicMock()
|
||||
self.get_tag = mock.patch('kojihub.get_tag').start()
|
||||
self.get_external_repo = mock.patch('kojihub.get_external_repo').start()
|
||||
self.get_tag_external_repos = mock.patch('kojihub.get_tag_external_repos').start()
|
||||
self.get_tag.return_value = {'id': 1, 'name': 'tag'}
|
||||
self.get_external_repo.return_value = {'id': 11, 'name': 'ext_repo'}
|
||||
self.get_tag_external_repos.return_value = [{'external_repo_id': 11,
|
||||
'tag_id': 1,
|
||||
'priority': 5,
|
||||
'merge_mode': 'simple'}]
|
||||
|
||||
self.remove_external_repo_from_tag = mock.patch(
|
||||
'kojihub.remove_external_repo_from_tag').start()
|
||||
self.add_external_repo_to_tag = mock.patch('kojihub.add_external_repo_to_tag').start()
|
||||
|
||||
def tearDown(self):
|
||||
mock.patch.stopall()
|
||||
|
||||
def test_edit(self):
|
||||
rv = kojihub.edit_tag_external_repo('tag', 'ext_repo', priority=6, merge_mode='bare')
|
||||
self.get_tag.assert_called_once_with('tag', strict=True)
|
||||
self.get_external_repo.assert_called_once_with('ext_repo', strict=True)
|
||||
self.get_tag_external_repos.assert_called_once_with(tag_info=1, repo_info=11)
|
||||
self.remove_external_repo_from_tag.assert_called_once_with(1, 11)
|
||||
self.add_external_repo_to_tag.assert_called_once_with(1, 11, priority=6, merge_mode='bare')
|
||||
self.assertTrue(rv)
|
||||
|
||||
def test_edit_no_tag_repo(self):
|
||||
self.get_tag_external_repos.return_value = []
|
||||
with self.assertRaises(koji.GenericError) as cm:
|
||||
kojihub.edit_tag_external_repo('tag', 'ext_repo', priority=6, merge_mode='bare')
|
||||
self.assertEqual(cm.exception.args[0],
|
||||
'external repo ext_repo not associated with tag tag')
|
||||
self.get_tag.assert_called_once_with('tag', strict=True)
|
||||
self.get_external_repo.assert_called_once_with('ext_repo', strict=True)
|
||||
self.get_tag_external_repos.assert_called_once_with(tag_info=1, repo_info=11)
|
||||
self.remove_external_repo_from_tag.assert_not_called()
|
||||
self.add_external_repo_to_tag.assert_not_called()
|
||||
|
||||
def test_edit_no_changes_2(self):
|
||||
rv = kojihub.edit_tag_external_repo('tag', 'ext_repo', priority=5, merge_mode='simple')
|
||||
self.remove_external_repo_from_tag.assert_not_called()
|
||||
self.add_external_repo_to_tag.assert_not_called()
|
||||
self.assertFalse(rv)
|
||||
|
||||
def test_edit_all_none(self):
|
||||
self.get_tag_external_repos.return_value = [{'external_repo_id': 11,
|
||||
'tag_id': 1,
|
||||
'priority': None,
|
||||
'merge_mode': None}]
|
||||
rv = kojihub.edit_tag_external_repo('tag', 'ext_repo', priority=None, merge_mode=None)
|
||||
self.remove_external_repo_from_tag.assert_not_called()
|
||||
self.add_external_repo_to_tag.assert_not_called()
|
||||
self.assertFalse(rv)
|
||||
|
||||
def test_edit_none_new(self):
|
||||
rv = kojihub.edit_tag_external_repo('tag', 'ext_repo', priority=None, merge_mode=None)
|
||||
self.remove_external_repo_from_tag.assert_not_called()
|
||||
self.add_external_repo_to_tag.assert_not_called()
|
||||
self.assertFalse(rv)
|
||||
|
||||
def test_edit_none_old(self):
|
||||
self.get_tag_external_repos.return_value = [{'external_repo_id': 11,
|
||||
'tag_id': 1,
|
||||
'priority': 5,
|
||||
'merge_mode': None}]
|
||||
rv = kojihub.edit_tag_external_repo('tag', 'ext_repo', priority=None, merge_mode='simple')
|
||||
self.remove_external_repo_from_tag.assert_called_once_with(1, 11)
|
||||
self.add_external_repo_to_tag.assert_called_once_with(1, 11,
|
||||
priority=5, merge_mode='simple')
|
||||
self.assertTrue(rv)
|
||||
Loading…
Add table
Add a link
Reference in a new issue