from tempfile import NamedTemporaryFile import pytest from src.config import Config, FetchConfig, read_toml_config @pytest.mark.parametrize( "config_data, expected", [ ( '[main]\napi_token = "something"\n' 'format = "{owner}/{name}"\n' 'endpoint = "https://example.com"\n' 'out_dir = "/home/user/repositories"\n' "\n" "[fetch]\n" 'ssh_key = "/tmp/no_key"', Config( api_token="something", repository_format="{owner}/{name}", out_dir="/home/user/repositories", endpoint="https://example.com", fetch=FetchConfig(ssh_key="/tmp/no_key"), ), ), ( '[main]\napi_token = "something"\n' 'format = "{owner}/{name}"\n' 'endpoint = "https://example.com"\n' 'out_dir = "/home/user/repositories"\n' "\n" "[fetch]\n" 'user = "alex"\n' 'token = "repo-token"', Config( api_token="something", repository_format="{owner}/{name}", out_dir="/home/user/repositories", endpoint="https://example.com", fetch=FetchConfig(user="alex", token="repo-token"), ), ), ("[main]", None), ( '[main]\napi_token = "something"\n' 'format = "{owner}/{name}"\n' 'endpoint = "https://example.com"\n' 'out_dir = "/home/user/repositories"\n' "\n" "[fetch]\n" 'ssh_key = "/tmp/no_key"\n' 'user = "alex"\n' 'token = "repo-token"', None, ), ("not valid toml", None), ], ) def test_toml_config(config_data, expected): with NamedTemporaryFile() as tf: if config_data: tf.write(config_data.encode("utf-8")) tf.flush() if expected: assert read_toml_config(tf.name) == expected else: with pytest.raises(RuntimeError): read_toml_config(tf.name) def test_toml_config_not_exists(): with pytest.raises(RuntimeError): read_toml_config("not_existing_file")