from breadtube_bot.config import Config import pytest def test_empty(): with pytest.raises(RuntimeError, match='Cannot load config: empty input'): Config.from_str('') def test_wrong_header(): with pytest.raises(RuntimeError, match='Cannot load config: first line is not "config"'): Config.from_str('connfig') def test_lacking_key(): expected_config = Config(bot_role='test-role', request_timeout=5.5) config = Config.from_str( 'config\n' f'request_timeout={expected_config.request_timeout}\n' f'bot_role={expected_config.bot_role}') assert config == expected_config def test_wrong_key(): with pytest.raises(RuntimeError, match=('Invalid config: invalid key bot_channel_init at line 2')): Config.from_str('config\nrequest_timeout=3.\nbot_channel_init=2') def test_duplicated_key(): with pytest.raises(RuntimeError, match=('Invalid config: duplicated key request_timeout at line 3')): Config.from_str('config\nrequest_timeout=3.\nbot_channel_init_retries=2\nrequest_timeout=5.') def test_correct_config(): expected_config = Config(bot_channel='test-channel', bot_role='test-role', bot_channel_init_retries=298, request_timeout=5.5) config = Config.from_str( 'config\n' f'request_timeout={expected_config.request_timeout}\n' f'bot_channel_init_retries={expected_config.bot_channel_init_retries}\n' f'bot_channel={expected_config.bot_channel}\n' f'bot_role={expected_config.bot_role}') assert config == expected_config