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_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_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_all_code_paths(self, caplog): # Alter the plugins configuration so that all code paths are exercised sample_params = get_sample_prod_params() sample_params['scratch'] = True user_params = BuildUserParams(INPUTS_PATH) user_params.set_params(**sample_params) plugins_conf = PluginsConfiguration(user_params) plugins_conf.pt.customize_conf['disable_plugins'].append({ "plugin_type": "postbuild_plugins", "plugin_name": "tag_from_config" }) plugins_conf.pt.customize_conf['disable_plugins'].append({ "plugin_type": "prebuild_plugins", "plugin_name": "add_labels_in_dockerfile" }) plugins_conf.pt.customize_conf['disable_plugins'].append( { "bad_plugin_type": "postbuild_plugins", "bad_plugin_name": "tag_from_config" }, ) plugins_conf.pt.customize_conf['enable_plugins'].append( { "bad_plugin_type": "postbuild_plugins", "bad_plugin_name": "tag_from_config" }, ) plugins_conf.render() log_messages = [l.getMessage() for l in caplog.records] assert 'no tag suffix placeholder' in log_messages assert 'Invalid custom configuration found for disable_plugins' in log_messages assert 'Invalid custom configuration found for enable_plugins' in log_messages
def test_render_all_code_paths(self, caplog): # Alter the plugins configuration so that all code paths are exercised sample_params = get_sample_prod_params() sample_params['scratch'] = True sample_params['parent_images_digests'] = True user_params = BuildUserParams.make_params(**sample_params) plugins_conf = PluginsConfiguration(user_params) plugins_conf.pt.customize_conf['disable_plugins'].append( { "plugin_type": "postbuild_plugins", "plugin_name": "tag_from_config" } ) plugins_conf.pt.customize_conf['disable_plugins'].append( { "plugin_type": "prebuild_plugins", "plugin_name": "add_labels_in_dockerfile" } ) plugins_conf.pt.customize_conf['disable_plugins'].append( { "bad_plugin_type": "postbuild_plugins", "bad_plugin_name": "tag_from_config" }, ) plugins_conf.pt.customize_conf['enable_plugins'].append( { "bad_plugin_type": "postbuild_plugins", "bad_plugin_name": "tag_from_config" }, ) build_json = plugins_conf.render() plugins = get_plugins_from_build_json(build_json) log_messages = [l.getMessage() for l in caplog.records] assert 'Invalid custom configuration found for disable_plugins' in log_messages assert 'Invalid custom configuration found for enable_plugins' in log_messages assert plugin_value_get(plugins, 'prebuild_plugins', 'pull_base_image', 'args', 'parent_images_digests')
def test_render_prod_custom_site_plugin_disable(self): # Test to make sure that when we attempt to disable a plugin, it is # actually disabled in the JSON for the build_request after running # build_request.render() sample_params = get_sample_prod_params() user_params = BuildUserParams.make_params(**sample_params) plugins_conf = PluginsConfiguration(user_params) plugin_type = "postbuild_plugins" plugin_name = "tag_from_config" plugins_conf.pt.customize_conf['disable_plugins'].append( { "plugin_type": plugin_type, "plugin_name": plugin_name } ) build_json = plugins_conf.render() plugins = get_plugins_from_build_json(build_json) for plugin in plugins[plugin_type]: if plugin['name'] == plugin_name: assert False