diff --git a/module_build_service/builder/KojiModuleBuilder.py b/module_build_service/builder/KojiModuleBuilder.py index 15a85961..e42477b0 100644 --- a/module_build_service/builder/KojiModuleBuilder.py +++ b/module_build_service/builder/KojiModuleBuilder.py @@ -24,7 +24,6 @@ from module_build_service import log, conf, models import module_build_service.scm import module_build_service.utils from module_build_service.builder.utils import execute_cmd -from module_build_service.builder.koji_backports import ClientSession as KojiClientSession from module_build_service.db_session import db_session from module_build_service.errors import ProgrammingError @@ -487,7 +486,7 @@ class KojiModuleBuilder(GenericBuilder): address = koji_config.server log.info("Connecting to koji %r.", address) - koji_session = KojiClientSession(address, opts=koji_config) + koji_session = koji.ClientSession(address, opts=koji_config) if not login: return koji_session diff --git a/module_build_service/builder/koji_backports.py b/module_build_service/builder/koji_backports.py deleted file mode 100644 index 99b6a336..00000000 --- a/module_build_service/builder/koji_backports.py +++ /dev/null @@ -1,100 +0,0 @@ -# -*- coding: utf-8 -*- -# SPDX-License-Identifier: MIT -# flake8: noqa -import base64 -import traceback - -import koji -# Import krbV from here so we don't have to redo the whole try except that Koji does -from koji import krbV, PythonImportError, AuthError, AUTHTYPE_KERB - - -class ClientSession(koji.ClientSession): - """The koji.ClientSession class with patches from upstream.""" - - # This backport comes from https://pagure.io/koji/pull-request/1187 - def krb_login(self, principal=None, keytab=None, ccache=None, proxyuser=None, ctx=None): - """Log in using Kerberos. If principal is not None and keytab is - not None, then get credentials for the given principal from the given keytab. - If both are None, authenticate using existing local credentials (as obtained - from kinit). ccache is the absolute path to use for the credential cache. If - not specified, the default ccache will be used. If proxyuser is specified, - log in the given user instead of the user associated with the Kerberos - principal. The principal must be in the "ProxyPrincipals" list on - the server side. ctx is the Kerberos context to use, and should be unique - per thread. If ctx is not specified, the default context is used.""" - - try: - # Silently try GSSAPI first - if self.gssapi_login(principal, keytab, ccache, proxyuser=proxyuser): - return True - except Exception as e: - if krbV: - e_str = ''.join(traceback.format_exception_only(type(e), e)) - self.logger.debug('gssapi auth failed: %s', e_str) - pass - else: - raise - - if not krbV: - raise PythonImportError( - "Please install python-krbV to use kerberos." - ) - - if not ctx: - ctx = krbV.default_context() - - if ccache != None: - ccache = krbV.CCache(name=ccache, context=ctx) - else: - ccache = ctx.default_ccache() - - if principal != None: - if keytab != None: - cprinc = krbV.Principal(name=principal, context=ctx) - keytab = krbV.Keytab(name=keytab, context=ctx) - ccache.init(cprinc) - ccache.init_creds_keytab(principal=cprinc, keytab=keytab) - else: - raise AuthError('cannot specify a principal without a keytab') - else: - # We're trying to log ourself in. Connect using existing credentials. - cprinc = ccache.principal() - - self.logger.debug('Authenticating as: %s', cprinc.name) - sprinc = krbV.Principal(name=self._serverPrincipal(cprinc), context=ctx) - - ac = krbV.AuthContext(context=ctx) - ac.flags = krbV.KRB5_AUTH_CONTEXT_DO_SEQUENCE | krbV.KRB5_AUTH_CONTEXT_DO_TIME - ac.rcache = ctx.default_rcache() - - # create and encode the authentication request - (ac, req) = ctx.mk_req(server=sprinc, client=cprinc, - auth_context=ac, ccache=ccache, - options=krbV.AP_OPTS_MUTUAL_REQUIRED) - req_enc = base64.encodestring(req) - - # ask the server to authenticate us - (rep_enc, sinfo_enc, addrinfo) = self.callMethod('krbLogin', req_enc, proxyuser) - # Set the addrinfo we received from the server - # (necessary before calling rd_priv()) - # addrinfo is in (serveraddr, serverport, clientaddr, clientport) - # format, so swap the pairs because clientaddr is now the local addr - ac.addrs = tuple((addrinfo[2], addrinfo[3], addrinfo[0], addrinfo[1])) - - # decode and read the reply from the server - rep = base64.decodestring(rep_enc) - ctx.rd_rep(rep, auth_context=ac) - - # decode and decrypt the login info - sinfo_priv = base64.decodestring(sinfo_enc) - sinfo_str = ac.rd_priv(sinfo_priv) - sinfo = dict(zip(['session-id', 'session-key'], sinfo_str.split())) - - if not sinfo: - self.logger.warn('No session info received') - return False - self.setSession(sinfo) - - self.authtype = AUTHTYPE_KERB - return True diff --git a/tests/test_builder/test_koji.py b/tests/test_builder/test_koji.py index ce8b3443..08b6f1f0 100644 --- a/tests/test_builder/test_koji.py +++ b/tests/test_builder/test_koji.py @@ -422,7 +422,7 @@ class TestKojiBuilder: assert mock_session.untagBuild.mock_calls == expected_calls @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_build_weights(self, ClientSession): session = ClientSession.return_value session.getLoggedInUser.return_value = {"id": 123} @@ -448,7 +448,7 @@ class TestKojiBuilder: session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_build_weights_no_task_id(self, ClientSession): session = ClientSession.return_value session.getLoggedInUser.return_value = {"id": 123} @@ -470,7 +470,7 @@ class TestKojiBuilder: session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_build_weights_no_build(self, ClientSession): session = ClientSession.return_value session.getLoggedInUser.return_value = {"id": 123} @@ -492,7 +492,7 @@ class TestKojiBuilder: session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_build_weights_listBuilds_failed(self, ClientSession): session = ClientSession.return_value session.getLoggedInUser.return_value = {"id": 123} @@ -512,7 +512,7 @@ class TestKojiBuilder: session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_build_weights_getPackageID_failed(self, ClientSession): session = ClientSession.return_value session.getLoggedInUser.return_value = {"id": 123} @@ -528,7 +528,7 @@ class TestKojiBuilder: session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_build_weights_getLoggedInUser_failed(self, ClientSession): session = ClientSession.return_value session.getAverageBuildDuration.return_value = None @@ -726,7 +726,7 @@ class TestKojiBuilder: ] assert session.createBuildTarget.mock_calls == expected_calls - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_built_rpms_in_module_build(self, ClientSession): session = ClientSession.return_value session.listTaggedRPMS.return_value = ( @@ -817,7 +817,7 @@ class TestKojiBuilder: ([], []), ), ) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_filtered_rpms_on_self_dep( self, ClientSession, br_filtered_rpms, expected ): @@ -910,7 +910,7 @@ class TestKojiBuilder: else: mock_koji_cg.koji_import.assert_not_called() - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_anonymous_session(self, ClientSession): mbs_config = mock.Mock(koji_profile="koji", koji_config="conf/koji.conf") session = KojiModuleBuilder.get_session(mbs_config, login=False) @@ -918,14 +918,14 @@ class TestKojiBuilder: assert ClientSession.return_value.krb_login.assert_not_called @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_ensure_builder_use_a_logged_in_koji_session(self, ClientSession): module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2) builder = KojiModuleBuilder(db_session, "owner", module_build, conf, "module-tag", []) builder.koji_session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_module_build_arches(self, ClientSession): module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2) arches = "x86_64 i686 ppc64le aarch64 s390x" @@ -935,7 +935,7 @@ class TestKojiBuilder: assert " ".join(ret) == arches @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_module_build_arches_with_archless_tag(self, ClientSession): module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2) session = ClientSession.return_value @@ -944,7 +944,7 @@ class TestKojiBuilder: assert ret == [] @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_module_build_arches_without_tag(self, ClientSession): module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2) module_build.koji_tag = None @@ -955,7 +955,7 @@ class TestKojiBuilder: session.assert_not_called() @patch.dict("sys.modules", krbV=MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_module_build_arches_with_unknown_tag(self, ClientSession): module_build = module_build_service.models.ModuleBuild.get_by_id(db_session, 2) session = ClientSession.return_value diff --git a/tests/test_content_generator.py b/tests/test_content_generator.py index 9a1ca386..d08efed3 100644 --- a/tests/test_content_generator.py +++ b/tests/test_content_generator.py @@ -73,7 +73,7 @@ class TestBuild: except OSError: pass - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") @patch("subprocess.Popen") @patch("module_build_service.builder.KojiContentGenerator.Modulemd") @patch("pkg_resources.get_distribution") @@ -138,7 +138,7 @@ class TestBuild: # Ensure an anonymous Koji session works koji_session.krb_login.assert_not_called() - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") @patch("subprocess.Popen") @patch("module_build_service.builder.KojiContentGenerator.Modulemd") @patch("pkg_resources.get_distribution") @@ -205,7 +205,7 @@ class TestBuild: assert len(mmd.read()) == 254 @patch.dict("sys.modules", krbV=Mock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_tag_cg_build(self, ClientSession): """ Test that the CG build is tagged. """ koji_session = ClientSession.return_value @@ -221,7 +221,7 @@ class TestBuild: koji_session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=Mock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_tag_cg_build_fallback_to_default_tag(self, ClientSession): """ Test that the CG build is tagged to default tag. """ koji_session = ClientSession.return_value @@ -240,7 +240,7 @@ class TestBuild: koji_session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=Mock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_tag_cg_build_no_tag_set(self, ClientSession): """ Test that the CG build is not tagged when no tag set. """ koji_session = ClientSession.return_value @@ -255,7 +255,7 @@ class TestBuild: koji_session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=Mock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_tag_cg_build_no_tag_available(self, ClientSession): """ Test that the CG build is not tagged when no tag available. """ koji_session = ClientSession.return_value @@ -337,7 +337,7 @@ class TestBuild: "type": "file", } - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_koji_rpms_in_tag(self, ClientSession): koji_session = ClientSession.return_value koji_session.getUser.return_value = GET_USER_RV @@ -427,7 +427,7 @@ class TestBuild: # Listing tagged RPMs does not require to log into a session koji_session.krb_login.assert_not_called() - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_koji_rpms_in_tag_empty_tag(self, ClientSession): koji_session = ClientSession.return_value koji_session.getUser.return_value = GET_USER_RV @@ -439,7 +439,7 @@ class TestBuild: assert rpms == [] koji_session.multiCall.assert_not_called() - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_koji_rpms_in_tag_empty_headers(self, ClientSession): koji_session = ClientSession.return_value koji_session.getUser.return_value = GET_USER_RV @@ -966,7 +966,7 @@ class TestBuild: assert "%s:%s" % (mmd.get_module_name(), mmd.get_stream_name()) in requires @patch.dict("sys.modules", krbV=Mock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") @patch("module_build_service.builder.KojiContentGenerator.KojiContentGenerator._tag_cg_build") @patch("module_build_service.builder.KojiContentGenerator.KojiContentGenerator._load_koji_tag") def test_koji_cg_koji_import(self, tag_loader, tagger, cl_session): diff --git a/tests/test_resolver/test_koji.py b/tests/test_resolver/test_koji.py index 2e53a5a7..6c886511 100644 --- a/tests/test_resolver/test_koji.py +++ b/tests/test_resolver/test_koji.py @@ -64,7 +64,7 @@ class TestLocalResolverModule: "testmodule:master:20170109091357:7c29193d", "testmodule:master:20170109091357:7c29193e"} - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_buildrequired_modulemds_name_not_tagged(self, ClientSession): koji_session = ClientSession.return_value koji_session.getLastEvent.return_value = {"id": 123} @@ -82,7 +82,7 @@ class TestLocalResolverModule: koji_session.listTagged.assert_called_with( "foo-test", inherit=True, package="testmodule", type="module", event=123) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_buildrequired_modulemds_multiple_streams(self, ClientSession): koji_session = ClientSession.return_value @@ -108,7 +108,7 @@ class TestLocalResolverModule: nsvcs = {m.get_nsvc() for m in result} assert nsvcs == {"testmodule:master:20170109091357:7c29193d"} - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_buildrequired_modulemds_tagged_but_not_in_db(self, ClientSession): koji_session = ClientSession.return_value @@ -135,7 +135,7 @@ class TestLocalResolverModule: with pytest.raises(ValueError, match=expected_error): resolver.get_buildrequired_modulemds("testmodule", "2", platform.mmd()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_buildrequired_modulemds_multiple_versions_contexts(self, ClientSession): koji_session = ClientSession.return_value @@ -172,7 +172,7 @@ class TestLocalResolverModule: "testmodule:master:20170109091357:7c29193d", "testmodule:master:20170109091357:7c29193e"} - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_buildrequired_modules(self, ClientSession): koji_session = ClientSession.return_value @@ -198,7 +198,7 @@ class TestLocalResolverModule: nvrs = {m.nvr_string for m in result} assert nvrs == {"testmodule-master-20170109091357.7c29193d"} - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_filter_inherited(self, ClientSession): koji_session = ClientSession.return_value diff --git a/tests/test_scheduler/test_greenwave.py b/tests/test_scheduler/test_greenwave.py index 1a93073e..e61d8009 100644 --- a/tests/test_scheduler/test_greenwave.py +++ b/tests/test_scheduler/test_greenwave.py @@ -20,7 +20,7 @@ class TestGetCorrespondingModuleBuild: def setup_method(self, method): clean_database() - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_module_build_nvr_does_not_exist_in_koji(self, ClientSession): ClientSession.return_value.getBuild.return_value = None @@ -37,13 +37,13 @@ class TestGetCorrespondingModuleBuild: {"extra": {"typeinfo": {"module": {}}}}, ], ) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_cannot_find_module_build_id_from_build_info(self, ClientSession, build_info): ClientSession.return_value.getBuild.return_value = build_info assert get_corresponding_module_build("n-v-r") is None - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_corresponding_module_build_id_does_not_exist_in_db(self, ClientSession): fake_module_build_id, = db_session.query(func.max(ModuleBuild.id)).first() @@ -53,7 +53,7 @@ class TestGetCorrespondingModuleBuild: assert get_corresponding_module_build("n-v-r") is None - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_find_the_module_build(self, ClientSession): expected_module_build = ( db_session.query(ModuleBuild).filter(ModuleBuild.name == "platform").first() @@ -97,7 +97,7 @@ class TestDecisionUpdateHandler: ) @patch("module_build_service.messaging.publish") - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_transform_from_done_to_ready(self, ClientSession, publish): clean_database() diff --git a/tests/test_scheduler/test_poller.py b/tests/test_scheduler/test_poller.py index de7bc66a..0caa8a1a 100644 --- a/tests/test_scheduler/test_poller.py +++ b/tests/test_scheduler/test_poller.py @@ -138,7 +138,7 @@ class TestPoller: assert len(start_build_component.mock_calls) == expected_build_calls @patch.dict("sys.modules", krbV=mock.MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_retrigger_new_repo_on_failure( self, ClientSession, create_builder, global_consumer, dbg ): @@ -173,7 +173,7 @@ class TestPoller: "module-testmodule-master-20170219191323-c40c156c-build") @patch.dict("sys.modules", krbV=mock.MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_trigger_new_repo_when_succeeded( self, ClientSession, create_builder, global_consumer, dbg ): @@ -244,7 +244,7 @@ class TestPoller: assert component.state is None @patch.dict("sys.modules", krbV=mock.MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_old_build_targets_are_not_associated_with_any_module_builds( self, ClientSession, create_builder, global_consumer, dbg ): @@ -266,7 +266,7 @@ class TestPoller: koji_session.deleteBuildTarget.assert_not_called() @patch.dict("sys.modules", krbV=mock.MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_dont_delete_base_module_build_target( self, ClientSession, create_builder, global_consumer, dbg ): @@ -291,7 +291,7 @@ class TestPoller: koji_session.deleteBuildTarget.assert_not_called() @patch.dict("sys.modules", krbV=mock.MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_dont_delete_build_target_for_unfinished_module_builds( self, ClientSession, create_builder, global_consumer, dbg ): @@ -318,7 +318,7 @@ class TestPoller: koji_session.deleteBuildTarget.assert_not_called() @patch.dict("sys.modules", krbV=mock.MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_only_delete_build_target_with_allowed_koji_tag_prefix( self, ClientSession, create_builder, global_consumer, dbg ): @@ -357,7 +357,7 @@ class TestPoller: koji_session.krb_login.assert_called_once() @patch.dict("sys.modules", krbV=mock.MagicMock()) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_cant_delete_build_target_if_not_reach_delete_time( self, ClientSession, create_builder, global_consumer, dbg ): @@ -618,7 +618,7 @@ class TestPoller: @pytest.mark.parametrize("tagged", (True, False)) @pytest.mark.parametrize("tagged_in_final", (True, False)) @pytest.mark.parametrize("btime", (True, False)) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_sync_koji_build_tags( self, ClientSession, create_builder, global_consumer, dbg, tagged, tagged_in_final, btime ): diff --git a/tests/test_utils/test_ursine.py b/tests/test_utils/test_ursine.py index c36cc68c..6e477f57 100644 --- a/tests/test_utils/test_ursine.py +++ b/tests/test_utils/test_ursine.py @@ -111,7 +111,7 @@ class TestGetModulemdsFromUrsineContent: def teardown_method(self, test_method): clean_database() - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_return_empty_if_no_ursine_build_tag_is_found(self, ClientSession): koji_session = ClientSession.return_value @@ -127,7 +127,7 @@ class TestGetModulemdsFromUrsineContent: assert [] == modulemds @patch.object(conf, "koji_tag_prefixes", new=["module"]) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_modulemds(self, ClientSession): koji_session = ClientSession.return_value @@ -235,7 +235,7 @@ class TestRecordStreamCollisionModules: @patch.object(conf, "base_module_names", new=["platform", "project-platform"]) @patch("module_build_service.utils.ursine.get_modulemds_from_ursine_content") @patch("module_build_service.resolver.GenericResolver.create") - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_add_collision_modules( self, ClientSession, resolver_create, get_modulemds_from_ursine_content ): diff --git a/tests/test_utils/test_utils.py b/tests/test_utils/test_utils.py index 79145a1d..984fef61 100644 --- a/tests/test_utils/test_utils.py +++ b/tests/test_utils/test_utils.py @@ -344,7 +344,7 @@ class TestUtils: def teardown_method(self, test_method): clean_database() - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_build_arches(self, ClientSession): session = ClientSession.return_value session.getTag.return_value = {"arches": "ppc64le"} @@ -352,7 +352,7 @@ class TestUtils: r = module_build_service.utils.get_build_arches(mmd, conf) assert r == ["ppc64le"] - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_get_build_arches_no_arch_set(self, ClientSession): """ When no architecture is set in Koji tag, fallback to conf.arches. @@ -1727,7 +1727,7 @@ class TestUtilsModuleReuse: "module_build_service.config.Config.allow_only_compatible_base_modules", new_callable=mock.PropertyMock, ) - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") @patch( "module_build_service.config.Config.resolver", new_callable=mock.PropertyMock, return_value="koji" diff --git a/tests/test_views/test_views.py b/tests/test_views/test_views.py index 0c8f4c25..f1125d83 100644 --- a/tests/test_views/test_views.py +++ b/tests/test_views/test_views.py @@ -450,7 +450,7 @@ class TestViews: assert item[key] == part @pytest.mark.usefixtures("reuse_component_init_data") - @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession") + @patch("koji.ClientSession") def test_query_builds_with_binary_rpm(self, ClientSession): """ Test for querying MBS with the binary rpm filename. MBS should return all the modules,