55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
import unittest
|
|
|
|
from unittest import mock
|
|
|
|
import koji
|
|
import kojihub
|
|
|
|
|
|
class TestGetExternalRepo(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.get_external_repos = mock.patch('kojihub.kojihub.get_external_repos').start()
|
|
self.exports = kojihub.RootExports()
|
|
|
|
def tearDown(self):
|
|
mock.patch.stopall()
|
|
|
|
def test_non_exist_repo_with_strict(self):
|
|
repo = 'test-repo'
|
|
self.get_external_repos.return_value = []
|
|
with self.assertRaises(koji.GenericError) as cm:
|
|
self.exports.getExternalRepo(repo, strict=True)
|
|
self.assertEqual(f"No such repo: {repo}", str(cm.exception))
|
|
|
|
def test_non_exist_repo_without_strict(self):
|
|
repo = 'test-repo'
|
|
self.get_external_repos.return_value = []
|
|
rv = self.exports.getExternalRepo(repo, strict=False)
|
|
self.assertEqual(None, rv)
|
|
|
|
def test_valid(self):
|
|
repo = 'test-repo'
|
|
repo_info = [
|
|
{'id': 1,
|
|
'name': 'build-external-repo-1',
|
|
'url': 'https://path/to/ext/repo1'},
|
|
]
|
|
self.get_external_repos.return_value = repo_info
|
|
rv = self.exports.getExternalRepo(repo, strict=True)
|
|
self.assertEqual(repo_info[0], rv)
|
|
|
|
def test_more_repos(self):
|
|
repo = 'test-repo'
|
|
repo_info = [
|
|
{'id': 1,
|
|
'name': 'build-external-repo-1',
|
|
'url': 'https://path/to/ext/repo1'},
|
|
{'id': 2,
|
|
'name': 'build-external-repo-1',
|
|
'url': 'https://path/to/ext/repo2'}
|
|
]
|
|
self.get_external_repos.return_value = repo_info
|
|
with self.assertRaises(koji.GenericError) as cm:
|
|
self.exports.getExternalRepo(repo, strict=False)
|
|
self.assertEqual("More than one repo in the result.", str(cm.exception))
|