flask_server: Move the server to its own package.

This commit is contained in:
Eeshan Garg 2017-07-18 01:31:54 -02:30
parent 9d1253ff0d
commit 928d5ca16d
7 changed files with 96 additions and 10 deletions

View file

View file

@ -0,0 +1,37 @@
from unittest import TestCase
import zulip_botserver.server
import json
from typing import Any, List, Dict, Mapping
class BotServerTestCase(TestCase):
def setUp(self):
# type: () -> None
zulip_botserver.server.app.testing = True
self.app = zulip_botserver.server.app.test_client()
def assert_bot_server_response(self,
available_bots=None,
bots_config=None,
bots_lib_module=None,
payload_url="/bots/testbot",
message=dict(message={'key': "test message"}),
check_success=False,
):
# type: (List[str], Dict[str, Any], Dict[str, Any], str, Dict[str, Dict[str, Any]], bool) -> None
if available_bots is not None:
zulip_botserver.server.available_bots = available_bots
if bots_config is not None:
zulip_botserver.server.bots_config = bots_config
if bots_lib_module is not None:
zulip_botserver.server.bots_lib_module = bots_lib_module
response = self.app.post(payload_url, data=json.dumps(message))
if check_success:
assert response.status_code >= 200 and response.status_code < 300
else:
assert response.status_code >= 400 and response.status_code < 500

View file

@ -0,0 +1,60 @@
from __future__ import absolute_import
import mock
import unittest
from typing import Any
from .server_test_lib import BotServerTestCase
class BotServerTests(BotServerTestCase):
class MockMessageHandler(object):
def handle_message(self, message, bot_handler, state_handler):
# type: (Any, Any, Any) -> None
assert message == {'key': "test message"}
class MockLibModule(object):
def handler_class(self):
# type: () -> Any
return BotServerTests.MockMessageHandler()
@mock.patch('zulip_botserver.server.ExternalBotHandler')
def test_successful_request(self, mock_ExternalBotHandler):
# type: (mock.Mock) -> None
available_bots = ['testbot']
bots_config = {
'testbot': {
'email': 'testbot-bot@zulip.com',
'key': '123456789qwertyuiop',
'site': 'http://localhost',
}
}
bots_lib_module = {
'testbot': BotServerTests.MockLibModule()
}
self.assert_bot_server_response(available_bots=available_bots,
bots_config=bots_config,
bots_lib_module=bots_lib_module,
check_success=True)
assert mock_ExternalBotHandler.called
def test_bot_not_supported(self):
# type: () -> None
available_bots = ['testbot']
self.assert_bot_server_response(available_bots=available_bots,
payload_url="/bots/not_supported_bot",
check_success=False)
def test_wrong_bot_credentials(self):
# type: () -> None
available_bots = ['testbot']
bots_config = {
'testbot': {
'email': 'testbot-bot@zulip.com',
'key': '123456789qwertyuiop',
'site': 'http://localhost',
}
}
self.assert_bot_server_response(available_bots=available_bots,
bots_config=bots_config,
check_success=False)
if __name__ == '__main__':
unittest.main()