diff --git a/tests/test_builder/test_koji.py b/tests/test_builder/test_koji.py index f79c3b3a..43c7a0ca 100644 --- a/tests/test_builder/test_koji.py +++ b/tests/test_builder/test_koji.py @@ -21,7 +21,10 @@ # Written by Jan Kaluza import unittest +import munch import mock +import koji +import xmlrpclib import module_build_service.messaging import module_build_service.scheduler.handlers.repos @@ -32,6 +35,8 @@ from mock import patch from tests import conf +from module_build_service.builder import KojiModuleBuilder + class TestKojiBuilder(unittest.TestCase): @@ -51,15 +56,46 @@ class TestKojiBuilder(unittest.TestCase): self.assertEquals(repo, "https://kojipkgs.stg.fedoraproject.org/repos" "/module-base-runtime-0.25-9/latest/x86_64") - @patch('koji.util.checkForBuilds') + @patch('koji.util') def test_buildroot_ready(self, mocked_kojiutil): - def mocked_checkForBuilds(*args, **kwargs): - raise IOError + attrs = {'checkForBuilds.return_value': None, + 'checkForBuilds.side_effect': IOError} + mocked_kojiutil.configure_mock(**attrs) + fake_kmb = FakeKojiModuleBuilder(owner='Moe Szyslak', + module='nginx', + config=conf, + tag_name='module-nginx-1.2') + fake_kmb.module_target = {'build_tag': 'fake_tag'} - mocked_kojiutil.return_value.checkForBuilds = mocked_checkForBuilds - kmb = module_build_service.builder.KojiModuleBuilder(owner='Moe Szyslak', - module='nginx', - config=conf, - tag_name='module-nginx-1.2') - kmb.buildroot_ready() + with self.assertRaises(IOError): + fake_kmb.buildroot_ready() + self.assertEquals(mocked_kojiutil.checkForBuilds.call_count, 5) + + +class FakeKojiModuleBuilder(KojiModuleBuilder): + + @module_build_service.utils.retry(wait_on=(xmlrpclib.ProtocolError, koji.GenericError)) + def get_session(self, config, owner): + koji_config = munch.Munch(koji.read_config( + profile_name=config.koji_profile, + user_config=config.koji_config, + )) + + address = koji_config.server + + koji_session = FakeKojiSession(address, opts=koji_config) + + return koji_session + + +class FakeKojiSession(koji.ClientSession): + + def _callMethod(self, name, args, kwargs=None): + pass + + def _setup_connection(self): + pass + + def getRepo(self, tag): + return {'create_event': 'fake event'}