Ensure validity of rendered config files in tests
For config files using a specific standard (JSON, TOML, YML etc.), ensure the rendered config files are valid according to those standards. This can avoid issues like gitlab#353875 (closed). We already do yml parsing for gitlab.yml
tests and toml parsing for spamcheck config. Let's standardize on this.
In out spec macros, we have the following
def get_rendered_toml(chef_run, path)
template = chef_run.template(path)
content = ChefSpec::Renderer.new(chef_run, template).content
TomlRB.parse(content, symbolize_keys: true)
end
Let's do something similar for other formats also
def get_rendered_content(chef_run, path)
template = chef_run.template(path)
ChefSpec::Renderer.new(chef_run, template).content
end
def get_rendered_toml(chef_run, path)
content = get_rendered_content(chef_run, path)
TomlRB.parse(content, symbolize_keys: true)
end
def get_rendered_yml(chef_run, path)
content = get_rendered_content(chef_run, path)
YAML.safe_load(content, [], [], true, symbolize_names: true)
end
def get_rendered_json(chef_run, path)
content = get_rendered_content(chef_run, path)
JSON.parse(content, symbolize_names: true)
end