bots: Mock get_config_info function for get-bot-output.

Since ExternalBotHandler class is mocked, few bots that
require specific configurations require to run get_config_info.
This commit is contained in:
Abhijeet Kaur 2017-08-22 22:21:11 +05:30 committed by Tim Abbott
parent 23f6d2f144
commit 36f4982e54

View file

@ -10,6 +10,7 @@ from importlib import import_module
from os.path import basename, splitext from os.path import basename, splitext
import six import six
from six.moves import configparser
import mock import mock
from mock import MagicMock, patch from mock import MagicMock, patch
@ -83,6 +84,25 @@ def main():
message_handler = lib_module.handler_class() message_handler = lib_module.handler_class()
with patch('zulip_bots.lib.ExternalBotHandler') as mock_bot_handler: with patch('zulip_bots.lib.ExternalBotHandler') as mock_bot_handler:
def get_config_info(bot_name, section=None, optional=False):
# type: (str, Optional[str], Optional[bool]) -> Dict[str, Any]
conf_file_path = os.path.realpath(os.path.join(
'zulip_bots', 'bots', bot_name, bot_name + '.conf'))
section = section or bot_name
config = configparser.ConfigParser()
try:
with open(conf_file_path) as conf:
config.readfp(conf) # type: ignore
except IOError:
if optional:
return dict()
raise
return dict(config.items(section))
mock_bot_handler.get_config_info = get_config_info
if (hasattr(message_handler, 'initialize') and callable(message_handler.initialize)):
message_handler.initialize(mock_bot_handler)
mock_bot_handler.send_reply = MagicMock() mock_bot_handler.send_reply = MagicMock()
message_handler.handle_message( message_handler.handle_message(
message=message, message=message,