def test_render_orchestrate_build(self, tmpdir, platforms, build_from, worker_build_image, is_flatpak, koji_parent_build, valid, image_only): phase = 'buildstep_plugins' plugin = 'orchestrate_build' conf_args = { 'build_from': build_from, 'reactor_config_map': 'reactor-config-map', } extra_args = { 'base_image': 'fedora:latest', 'flatpak': is_flatpak, 'name_label': 'fedora/resultingimage', 'platforms': platforms, 'reactor_config_override': 'reactor-config-override', 'user': "******", } if koji_parent_build: extra_args['koji_parent_build'] = koji_parent_build if valid: user_params = get_sample_user_params(conf_args=conf_args, extra_args=extra_args) build_json = PluginsConfiguration(user_params).render() else: with pytest.raises(OsbsValidationException): user_params = get_sample_user_params(conf_args=conf_args, extra_args=extra_args) build_json = PluginsConfiguration(user_params).render() return plugins = get_plugins_from_build_json(build_json) if platforms is None: platforms = {} assert plugin_value_get(plugins, phase, plugin, 'args', 'platforms') == platforms or {} build_kwargs = plugin_value_get(plugins, phase, plugin, 'args', 'build_kwargs') assert build_kwargs['arrangement_version'] == REACTOR_CONFIG_ARRANGEMENT_VERSION assert build_kwargs.get('koji_parent_build') == koji_parent_build assert build_kwargs.get('reactor_config_map') == 'reactor-config-map' assert build_kwargs.get('reactor_config_override') == 'reactor-config-override' worker_config_kwargs = plugin_value_get(plugins, phase, plugin, 'args', 'config_kwargs') worker_config = Configuration(conf_file=None, **worker_config_kwargs) if worker_build_image is KeyError: assert not worker_config.get_build_from() else: if image_only: assert worker_config_kwargs['build_from'] == worker_build_image assert worker_config.get_build_from() == worker_build_image else: assert 'build_from' not in worker_config_kwargs assert not worker_config.get_build_from() if is_flatpak: assert user_params.flatpak
def test_render_request_with_yum(self, build_from, is_imagestream, valid, build_type): conf_args = { 'build_from': build_from, } extra_args = { 'name_label': "fedora/resultingimage", 'yum_repourls': ["http://example.com/my.repo"], 'build_type': build_type, } self.mock_repo_info() if valid: user_params = get_sample_user_params(conf_args=conf_args, extra_args=extra_args) build_json = PluginsConfiguration(user_params).render() else: with pytest.raises(OsbsValidationException): user_params = get_sample_user_params(conf_args=conf_args, extra_args=extra_args) build_json = PluginsConfiguration(user_params).render() return plugins = get_plugins_from_build_json(build_json) with pytest.raises(NoSuchPluginException): get_plugin(plugins, "prebuild_plugins", "stop_autorebuild_if_disabled") with pytest.raises(NoSuchPluginException): get_plugin(plugins, "prebuild_plugins", "koji") if is_imagestream and build_type == BUILD_TYPE_ORCHESTRATOR: assert get_plugin(plugins, "exit_plugins", "import_image") else: with pytest.raises(NoSuchPluginException): get_plugin(plugins, "postbuild_plugins", "import_image") if build_type == BUILD_TYPE_WORKER: assert plugin_value_get( plugins, "prebuild_plugins", "add_yum_repo_by_url", "args", "repourls") == ["http://example.com/my.repo"] else: with pytest.raises(NoSuchPluginException): get_plugin(plugins, "prebuild_plugins", "add_yum_repo_by_url") labels = plugin_value_get(plugins, "prebuild_plugins", "add_labels_in_dockerfile", "args", "labels") assert labels is not None assert 'release' not in labels
def test_render_bump_release(self, disabled, release, flatpak): extra_args = { 'release': release, 'flatpak': flatpak, 'build_type': BUILD_TYPE_ORCHESTRATOR, 'flatpak_base_image': TEST_FLATPAK_BASE_IMAGE, } user_params = get_sample_user_params(extra_args) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) labels = plugin_value_get(plugins, "prebuild_plugins", "add_labels_in_dockerfile", "args", "labels") assert labels.get('release') == release if disabled: with pytest.raises(NoSuchPluginException): get_plugin(plugins, "prebuild_plugins", "bump_release") return plugin = get_plugin(plugins, "prebuild_plugins", "bump_release") assert plugin if plugin.get('args'): assert plugin['args'].get('append', False) == flatpak
def test_render_check_and_set_platforms(self, enabled): plugin_type = 'prebuild_plugins' plugin_name = 'check_and_set_platforms' extra_args = [] if not enabled: extra_args = {'koji_target': None} user_params = get_sample_user_params(extra_args) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) if not enabled: with pytest.raises(NoSuchPluginException): get_plugin(plugins, plugin_type, plugin_name) return assert get_plugin(plugins, plugin_type, plugin_name) actual_plugin_args = plugin_value_get(plugins, plugin_type, plugin_name, 'args') expected_plugin_args = {'koji_target': 'koji-target'} assert actual_plugin_args == expected_plugin_args
def test_get_conf_or_fail(self): user_params = get_sample_user_params() build_json = PluginsConfiguration(user_params) with pytest.raises(RuntimeError): build_json.pt._get_plugin_conf_or_fail('bad_plugins', 'reactor_config') with pytest.raises(RuntimeError): build_json.pt._get_plugin_conf_or_fail('postbuild_plugins', 'bad_plugin')
def test_render_resolve_remote_sources(self, build_type, dependency_replacements): extra_args = {'dependency_replacements': dependency_replacements} user_params = get_sample_user_params(build_type=build_type, extra_args=extra_args) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) if build_type == BUILD_TYPE_ORCHESTRATOR: assert get_plugin(plugins, 'prebuild_plugins', 'resolve_remote_source') plugin_args = plugin_value_get(plugins, 'prebuild_plugins', 'resolve_remote_source', 'args') if plugin_args.get('dependency_replacements'): assert plugin_args.get( 'dependency_replacements') == dependency_replacements else: assert isinstance(plugin_args.get('dependency_replacements'), list) assert not len(plugin_args.get('dependency_replacements')) else: with pytest.raises(NoSuchPluginException): assert get_plugin(plugins, 'prebuild_plugins', 'resolve_remote_source')
def test_render_download_remote_sources(self, build_type, remote_source_url, remote_source_build_args): extra_args = { 'remote_source_url': remote_source_url, 'remote_source_build_args': remote_source_build_args } user_params = get_sample_user_params(extra_args=extra_args, build_type=build_type) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) if build_type == BUILD_TYPE_WORKER: assert get_plugin(plugins, 'prebuild_plugins', 'download_remote_source') plugin_args = plugin_value_get(plugins, 'prebuild_plugins', 'download_remote_source', 'args') assert plugin_args.get('remote_source_url') == remote_source_url assert plugin_args.get( 'remote_source_build_args') == remote_source_build_args else: with pytest.raises(NoSuchPluginException): assert get_plugin(plugins, 'prebuild_plugins', 'download_remote_source')
def test_render_scratch(self): additional_params = {'scratch': True} self.mock_repo_info() user_params = get_sample_user_params(additional_params) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) remove_plugins = [("prebuild_plugins", "koji_parent"), ("postbuild_plugins", "compress"), ("postbuild_plugins", "pulp_pull"), ("postbuild_plugins", "koji_upload"), ("postbuild_plugins", "fetch_worker_metadata"), ("postbuild_plugins", "compare_components"), ("postbuild_plugins", "import_image"), ("exit_plugins", "koji_promote"), ("exit_plugins", "koji_import"), ("exit_plugins", "koji_tag_build"), ("exit_plugins", "remove_worker_metadata"), ("exit_plugins", "import_image"), ("prebuild_plugins", "check_and_set_rebuild"), ("prebuild_plugins", "stop_autorebuild_if_disabled")] for (plugin_type, plugin) in remove_plugins: with pytest.raises(NoSuchPluginException): get_plugin(plugins, plugin_type, plugin)
def test_render_prod_not_flatpak(self, build_type, flatpak_base_image): extra_args = { 'flatpak': False, 'flatpak_base_image': flatpak_base_image, 'build_type': build_type, } user_params = get_sample_user_params(extra_args) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) with pytest.raises(NoSuchPluginException): get_plugin(plugins, "prebuild_plugins", "resolve_module_compose") with pytest.raises(NoSuchPluginException): get_plugin(plugins, "prebuild_plugins", "flatpak_create_dockerfile") with pytest.raises(NoSuchPluginException): get_plugin(plugins, "prepublish_plugins", "flatpak_create_oci") if build_type == BUILD_TYPE_ORCHESTRATOR: with pytest.raises(NoSuchPluginException): assert get_plugin(plugins, "prepublish_plugins", "squash") assert get_plugin(plugins, "exit_plugins", "import_image") else: assert get_plugin(plugins, "prepublish_plugins", "squash")
def test_render_prod_custom_site_plugin_enable(self, tmpdir): # Test to make sure that when we attempt to enable a plugin, it is # actually enabled in the JSON for the build_request after running # build_request.render() self.mock_repo_info() sample_params = get_sample_prod_params() user_params = BuildUserParams.make_params(**sample_params) plugins_conf = PluginsConfiguration(user_params) plugin_type = "exit_plugins" plugin_name = "testing_exit_plugin" plugin_args = {"foo": "bar"} plugins_conf.pt.customize_conf['enable_plugins'].append({ "plugin_type": plugin_type, "plugin_name": plugin_name, "plugin_args": plugin_args}) build_json = plugins_conf.render() plugins = get_plugins_from_build_json(build_json) assert { "name": plugin_name, "args": plugin_args } in plugins[plugin_type]
def test_render_tag_from_config(self, tmpdir, from_container_yaml, extra_args, has_platform_tag, extra_tags, primary_tags, floating_tags): kwargs = get_sample_prod_params(BUILD_TYPE_WORKER) kwargs.pop('platforms', None) kwargs.pop('platform', None) expected_primary = set(primary_tags) expected_floating = set(floating_tags) exclude_for_override = set(['latest', '{version}']) if from_container_yaml: expected_floating -= exclude_for_override extra_args['tags_from_yaml'] = from_container_yaml extra_args['additional_tags'] = extra_tags kwargs.update(extra_args) user_params = BuildUserParams.make_params(**kwargs) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) assert get_plugin(plugins, 'postbuild_plugins', 'tag_from_config') tag_suffixes = plugin_value_get(plugins, 'postbuild_plugins', 'tag_from_config', 'args', 'tag_suffixes') assert len(tag_suffixes['unique']) == 1 if has_platform_tag: unique_tag_suffix = tag_suffixes['unique'][0] assert unique_tag_suffix.endswith('-x86_64') == has_platform_tag assert len(tag_suffixes['primary']) == len(expected_primary) assert set(tag_suffixes['primary']) == expected_primary assert len(tag_suffixes['floating']) == len(expected_floating) assert set(tag_suffixes['floating']) == expected_floating
def test_render_no_inject_parent_image(self, caplog): self.mock_repo_info() user_params = get_sample_user_params() user_params.koji_parent_build = None plugins_conf = PluginsConfiguration(user_params) plugins_conf.pt.remove_plugin('prebuild_plugins', 'inject_parent_image') plugins_conf.render() assert 'no koji parent build in user parameters' not in caplog.text
def test_prod_non_custom_base_image(self, tmpdir): self.mock_repo_info() user_params = get_sample_user_params() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) get_plugin(plugins, 'prebuild_plugins', 'add_filesystem') pull_base_image_plugin = get_plugin(plugins, 'prebuild_plugins', 'pull_base_image') assert pull_base_image_plugin is not None
def test_render_flatpak(self, compose_ids, signing_intent, build_type): extra_args = { 'flatpak': True, 'compose_ids': compose_ids, 'signing_intent': signing_intent, 'base_image': TEST_FLATPAK_BASE_IMAGE, 'build_type': build_type, } user_params = get_sample_user_params(extra_args=extra_args) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) if build_type == BUILD_TYPE_ORCHESTRATOR: plugin = get_plugin(plugins, "prebuild_plugins", "resolve_composes") assert plugin plugin = get_plugin(plugins, "prebuild_plugins", "check_user_settings") assert plugin assert plugin['args']['flatpak'], "Plugin has not set flatpak arg to True" plugin = get_plugin(plugins, "prebuild_plugins", "flatpak_create_dockerfile") assert plugin plugin = get_plugin(plugins, "prebuild_plugins", "flatpak_update_dockerfile") assert plugin args = plugin['args'] # compose_ids will always have a value of at least [] if compose_ids is None: assert args['compose_ids'] == [] else: assert args['compose_ids'] == compose_ids plugin = get_plugin(plugins, "prebuild_plugins", "add_flatpak_labels") assert plugin if build_type == BUILD_TYPE_ORCHESTRATOR: plugin = get_plugin(plugins, "prebuild_plugins", "bump_release") assert plugin args = plugin['args'] assert args['append'] is True else: plugin = get_plugin(plugins, "prebuild_plugins", "koji") assert plugin args = plugin['args'] assert args['target'] == "koji-target" with pytest.raises(NoSuchPluginException): plugin = get_plugin(plugins, "prebuild_plugins", "bump_release")
def test_render_prod_custom_site_plugin_override(self): # Test to make sure that when we attempt to override a plugin's args, # they are actually overridden in the JSON for the build_request # after running build_request.render() self.mock_repo_info() sample_params = get_sample_prod_params() base_user_params = BuildUserParams(INPUTS_PATH) base_user_params.set_params(**sample_params) base_plugins_conf = PluginsConfiguration(base_user_params) base_build_json = base_plugins_conf.render() base_plugins = get_plugins_from_build_json(base_build_json) plugin_type = "exit_plugins" plugin_name = "koji_import" plugin_args = {"foo": "bar"} for plugin_dict in base_plugins[plugin_type]: if plugin_dict['name'] == plugin_name: plugin_index = base_plugins[plugin_type].index(plugin_dict) user_params = BuildUserParams(INPUTS_PATH) user_params.set_params(**sample_params) plugins_conf = PluginsConfiguration(user_params) plugins_conf.pt.customize_conf['enable_plugins'].append({ "plugin_type": plugin_type, "plugin_name": plugin_name, "plugin_args": plugin_args }) build_json = plugins_conf.render() plugins = get_plugins_from_build_json(build_json) assert { "name": plugin_name, "args": plugin_args } in plugins[plugin_type] assert base_plugins[plugin_type][plugin_index]['name'] == \ plugin_name assert plugins[plugin_type][plugin_index]['name'] == plugin_name
def test_render_simple_request(self): user_params = get_sample_user_params() self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) pull_base_image = get_plugin(plugins, "prebuild_plugins", "pull_base_image") assert pull_base_image is not None assert ('args' not in pull_base_image or 'parent_registry' not in pull_base_image['args'] or not pull_base_image['args']['parent_registry'])
def test_render_resolve_composes(self, additional_params): plugin_type = 'prebuild_plugins' plugin_name = 'resolve_composes' self.mock_repo_info() user_params = get_sample_user_params(extra_args=additional_params) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) assert get_plugin(plugins, plugin_type, plugin_name) assert plugin_value_get(plugins, plugin_type, plugin_name, 'args')
def test_render_flatpak(self, compose_ids, build_type): extra_args = { 'flatpak': True, 'compose_ids': compose_ids, 'flatpak_base_image': TEST_FLATPAK_BASE_IMAGE, 'base_image': TEST_FLATPAK_BASE_IMAGE, 'build_type': build_type, } user_params = get_sample_user_params(extra_args) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) plugin = get_plugin(plugins, "prebuild_plugins", "resolve_module_compose") assert plugin args = plugin['args'] # compose_ids will always have a value of at least [] if compose_ids is None: assert args['compose_ids'] == [] else: assert args['compose_ids'] == compose_ids plugin = get_plugin(plugins, "prebuild_plugins", "flatpak_create_dockerfile") assert plugin args = plugin['args'] assert args['base_image'] == TEST_FLATPAK_BASE_IMAGE if build_type == BUILD_TYPE_ORCHESTRATOR: plugin = get_plugin(plugins, "prebuild_plugins", "bump_release") assert plugin args = plugin['args'] assert args['append'] is True with pytest.raises(NoSuchPluginException): get_plugin(plugins, "prepublish_plugins", "flatpak_create_oci") else: assert get_plugin(plugins, "prepublish_plugins", "flatpak_create_oci") with pytest.raises(NoSuchPluginException): plugin = get_plugin(plugins, "prebuild_plugins", "bump_release") with pytest.raises(NoSuchPluginException): assert get_plugin(plugins, "prepublish_plugins", "squash") with pytest.raises(NoSuchPluginException): assert get_plugin(plugins, "postbuild_plugins", "import_image")
def test_render_koji_upload(self, build_type): user_params = get_sample_user_params(extra_args={'koji_upload_dir': 'test'}, build_type=build_type) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) if build_type == BUILD_TYPE_WORKER: assert get_plugin(plugins, 'postbuild_plugins', 'koji_upload') plugin_args = plugin_value_get(plugins, 'postbuild_plugins', 'koji_upload', 'args') assert plugin_args.get('koji_upload_dir') == 'test' else: with pytest.raises(NoSuchPluginException): assert get_plugin(plugins, 'postbuild_plugins', 'koji_upload')
def get_plugins_from_buildrequest(self, build_request, template): kwargs = { 'git_uri': TEST_GIT_URI, 'git_ref': TEST_GIT_REF, 'git_branch': TEST_GIT_BRANCH, 'user': '******', 'build_type': template.split('_')[0], 'build_image': 'test', 'base_image': 'test', 'name_label': 'test', } build_request.set_params(**kwargs) return PluginsConfiguration(build_request.user_params).pt.template
def test_render_isolated(self): additional_params = {'isolated': True} self.mock_repo_info() user_params = get_sample_user_params(additional_params) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) remove_plugins = [("prebuild_plugins", "check_and_set_rebuild"), ("prebuild_plugins", "stop_autorebuild_if_disabled")] for (plugin_type, plugin) in remove_plugins: with pytest.raises(NoSuchPluginException): get_plugin(plugins, plugin_type, plugin)
def test_render_add_image_content_manifest(self, build_type, remote_source_icm_url): phase = 'prebuild_plugins' plugin = 'add_image_content_manifest' extra_args = {'remote_source_icm_url': remote_source_icm_url} user_params = get_sample_user_params(build_type=build_type, extra_args=extra_args) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) if build_type == BUILD_TYPE_ORCHESTRATOR: with pytest.raises(NoSuchPluginException): assert get_plugin(plugins, phase, plugin) else: assert get_plugin(plugins, phase, plugin) plugin_args = plugin_value_get(plugins, phase, plugin, 'args') assert plugin_args.get('remote_source_icm_url') == remote_source_icm_url
def test_render_pin_operator_digest(self, param, param_render, value): plugin_type = "prebuild_plugins" plugin_name = "pin_operator_digest" extra_args = {param: value} self.mock_repo_info() user_params = get_sample_user_params(extra_args=extra_args) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) plugin_value = plugin_value_get(plugins, plugin_type, plugin_name, 'args', param_render) assert plugin_value == value
def test_render_prod_not_flatpak(self, build_type, flatpak_base_image): extra_args = { 'flatpak': False, 'flatpak_base_image': flatpak_base_image, 'build_type': build_type, } user_params = get_sample_user_params(extra_args) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) self.check_plugin_presence(build_type, plugins, self.not_flatpak_plugins, self.flatpak_plugins)
def test_remove_resolve_composes(self, yum_repos): plugin_type = 'prebuild_plugins' plugin_name = 'resolve_composes' additional_params = {'yum_repourls': yum_repos} self.mock_repo_info() user_params = get_sample_user_params(additional_params) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) if yum_repos: with pytest.raises(NoSuchPluginException): get_plugin(plugins, plugin_type, plugin_name) else: assert get_plugin(plugins, plugin_type, plugin_name)
def test_render_pin_operator_digest(self): plugin_type = "prebuild_plugins" plugin_name = "pin_operator_digest" replacement_pullspecs = {'foo/fedora:30': 'bar/fedora@sha256:deadbeef'} extra_args = { 'operator_bundle_replacement_pullspecs': replacement_pullspecs } self.mock_repo_info() user_params = get_sample_user_params(extra_args=extra_args) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) plugin_value = plugin_value_get(plugins, plugin_type, plugin_name, 'args', 'replacement_pullspecs') assert plugin_value == replacement_pullspecs
def test_render_inject_parent_image(self, koji_parent_build, caplog): plugin_type = "prebuild_plugins" plugin_name = "inject_parent_image" extra_args = { 'koji_parent_build': koji_parent_build, } self.mock_repo_info() user_params = get_sample_user_params(extra_args=extra_args) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) assert get_plugin(plugins, plugin_type, plugin_name) parent_value = koji_parent_build if koji_parent_build else {} assert plugin_value_get(plugins, plugin_type, plugin_name, 'args', 'koji_parent_build') == parent_value
def test_render_tag_from_config(self, tmpdir, from_container_yaml, extra_args, has_platform_tag, extra_tags, primary_tags): kwargs = get_sample_prod_params(BUILD_TYPE_WORKER) kwargs.pop('platforms', None) kwargs.pop('platform', None) expected_primary = set(primary_tags) exclude_for_override = set(['latest', '{version}']) if extra_tags and not from_container_yaml: with open(os.path.join(str(tmpdir), ADDITIONAL_TAGS_FILE), 'w') as f: f.write('\n'.join(extra_tags)) kwargs.update(extra_args) if from_container_yaml: if extra_tags: expected_primary -= exclude_for_override (flexmock(utils).should_receive('get_repo_info').with_args( TEST_GIT_URI, TEST_GIT_REF, git_branch=TEST_GIT_BRANCH).and_return( RepoInfo(additional_tags=AdditionalTagsConfig( tags=extra_tags)))) else: (flexmock(utils).should_receive('get_repo_info').with_args( TEST_GIT_URI, TEST_GIT_REF, git_branch=TEST_GIT_BRANCH).and_return( RepoInfo(additional_tags=AdditionalTagsConfig( dir_path=str(tmpdir))))) user_params = BuildUserParams(INPUTS_PATH) user_params.set_params(**kwargs) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) assert get_plugin(plugins, 'postbuild_plugins', 'tag_from_config') tag_suffixes = plugin_value_get(plugins, 'postbuild_plugins', 'tag_from_config', 'args', 'tag_suffixes') assert len(tag_suffixes['unique']) == 1 if has_platform_tag: unique_tag_suffix = tag_suffixes['unique'][0] assert unique_tag_suffix.endswith('-x86_64') == has_platform_tag assert len(tag_suffixes['primary']) == len(expected_primary) assert set(tag_suffixes['primary']) == expected_primary
def test_prod_custom_base_image(self, tmpdir): kwargs = get_sample_prod_params() kwargs['base_image'] = 'koji/image-build' kwargs['yum_repourls'] = ["http://example.com/my.repo"] self.mock_repo_info() user_params = BuildUserParams.make_params(**kwargs) build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) get_plugin(plugins, 'prebuild_plugins', 'pull_base_image') add_filesystem_args = plugin_value_get( plugins, 'prebuild_plugins', 'add_filesystem', 'args') assert add_filesystem_args['repos'] == kwargs['yum_repourls'] assert add_filesystem_args['from_task_id'] == kwargs['filesystem_koji_task_id'] assert add_filesystem_args['koji_target'] == kwargs['koji_target']
def test_render_koji_delegate(self, build_type, triggered_task): extra_args = {'triggered_after_koji_task': triggered_task} user_params = get_sample_user_params(extra_args=extra_args, build_type=build_type) self.mock_repo_info() build_json = PluginsConfiguration(user_params).render() plugins = get_plugins_from_build_json(build_json) if build_type == BUILD_TYPE_ORCHESTRATOR: assert get_plugin(plugins, 'prebuild_plugins', 'koji_delegate') plugin_args = plugin_value_get(plugins, 'prebuild_plugins', 'koji_delegate', 'args') if triggered_task: assert plugin_args.get('triggered_after_koji_task') == triggered_task else: assert 'triggered_after_koji_task' not in plugin_args else: with pytest.raises(NoSuchPluginException): assert get_plugin(plugins, 'prebuild_plugins', 'koji_delegate')