From 66fdc2a0e5df83d682bffa64b18abef9664f852b Mon Sep 17 00:00:00 2001 From: N0str Date: Tue, 9 May 2017 15:13:23 +0300 Subject: [PATCH 1/5] Unit tests base --- .gitignore | 3 ++- build.sh | 1 + codexbot/services/telegram/telegram.py | 2 ++ requirements.txt | 3 +++ runtests.sh | 1 + tests/base.py | 17 +++++++++++++++ tests/telegram.py | 30 ++++++++++++++++++++++++++ 7 files changed, 56 insertions(+), 1 deletion(-) create mode 100755 build.sh create mode 100755 runtests.sh create mode 100644 tests/base.py create mode 100644 tests/telegram.py diff --git a/.gitignore b/.gitignore index 3ada88b..23ef42e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ .idea venv **/config.py -globalcfg.py \ No newline at end of file +globalcfg.py +.coverage \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..759b94f --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +docker run --hostname my-rabbit --rm --name some-rabbit -p 5672:5672 -p 5671:5671 -p 8080:15672 rabbitmq:3 \ No newline at end of file diff --git a/codexbot/services/telegram/telegram.py b/codexbot/services/telegram/telegram.py index bc9eda9..5e355ad 100644 --- a/codexbot/services/telegram/telegram.py +++ b/codexbot/services/telegram/telegram.py @@ -53,8 +53,10 @@ def set_webhook(self): result = requests.get(query) except Exception as e: logging.debug(e) + return False else: logging.debug(result.content) + return result.content def message(self, text, chat_id): diff --git a/requirements.txt b/requirements.txt index 2a1325a..c7bfd6b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,3 +17,6 @@ setuptools==35.0.2 - six [required: Any, installed: 1.10.0] - six [required: >=1.6.0, installed: 1.10.0] wheel==0.29.0 +nose +coverage +report \ No newline at end of file diff --git a/runtests.sh b/runtests.sh new file mode 100755 index 0000000..27d90a1 --- /dev/null +++ b/runtests.sh @@ -0,0 +1 @@ +nosetests -v report --with-coverage --cover-package=codexbot/ tests/*.py \ No newline at end of file diff --git a/tests/base.py b/tests/base.py new file mode 100644 index 0000000..2418255 --- /dev/null +++ b/tests/base.py @@ -0,0 +1,17 @@ +import json + + +class BaseTest(object): + """This object represents a Base test and its sets of functions.""" + + def __init__(self, *args, **kwargs): + super(BaseTest, self).__init__(*args, **kwargs) + + @staticmethod + def is_json(string): + try: + json.loads(string) + except ValueError: + return False + + return True diff --git a/tests/telegram.py b/tests/telegram.py new file mode 100644 index 0000000..4790a77 --- /dev/null +++ b/tests/telegram.py @@ -0,0 +1,30 @@ +import json +import unittest + +from codexbot.services.telegram import Telegram +from tests.base import BaseTest + + +class TelegramTestBase(BaseTest, unittest.TestCase): + + def setUp(self): + self._telegram = Telegram() + + def testConfiguration(self): + # Test presence + from codexbot.services.telegram.config import CALLBACK_ROUTE, BOT_NAME, API_TOKEN, API_URL + self.assertNotEqual(CALLBACK_ROUTE, "") + self.assertNotEqual(BOT_NAME, "") + self.assertNotEqual(API_TOKEN, "") + self.assertNotEqual(API_URL, "") + + # Test route format + self.assertEqual(CALLBACK_ROUTE[0], "/") + self.assertNotEqual(CALLBACK_ROUTE[-1], "/") + + def testSetWebhook(self): + result = self._telegram.set_webhook() + self.assertNotEqual(result, False) + self.is_json(result) + json_result = json.loads(result) + self.assertEqual(json_result.get("ok", None), True) From 304eb90520142972a0f45755d7f450f9fa08123b Mon Sep 17 00:00:00 2001 From: N0str Date: Tue, 9 May 2017 15:18:30 +0300 Subject: [PATCH 2/5] Revert merge a bit --- codexbot/services/telegram/telegram.py | 33 -------------------------- 1 file changed, 33 deletions(-) diff --git a/codexbot/services/telegram/telegram.py b/codexbot/services/telegram/telegram.py index 10cedc4..5d9aaab 100644 --- a/codexbot/services/telegram/telegram.py +++ b/codexbot/services/telegram/telegram.py @@ -67,36 +67,3 @@ def set_webhook(self): else: logging.debug(result.content) return result.content - - def message(self, text, chat_id): - - data = { - 'chat_id': chat_id, - 'text': text - } - url = self.__api_url + 'sendMessage' - - response = requests.post(url, json=data) - if response.status_code != 200: - logging.debug("Error while sending message to Telegram: {}".format(response.content)) - - return response - - def image(self, filename, caption, chat_id): - - data = { - 'caption': caption, - 'chat_id': chat_id, - } - - files = { - 'photo': open(filename, 'rb') - } - - url = self.__api_url + 'sendPhoto' - - response = requests.post(url, data, files=files) - if response.status_code != 200: - logging.debug("Error while sending photo to Telegram: {}".format(response.content)) - - return response \ No newline at end of file From 4fd836355a2801515b109032290ce713179bf63a Mon Sep 17 00:00:00 2001 From: N0str Date: Thu, 11 May 2017 00:05:45 +0300 Subject: [PATCH 3/5] Change docs for bash files --- build.sh | 10 ++++++++++ runtests.sh | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/build.sh b/build.sh index 759b94f..b7d3ea4 100755 --- a/build.sh +++ b/build.sh @@ -1 +1,11 @@ +# +# Start Rabbit MQ Server in Docker. +# +# Expose ports: +# 5671 --> 5671, 5672 --> 5672 (used by AMQP 0-9-1 and 1.0 clients without and with TLS) +# 8080 --> 15672 (Management Plugin) +# +# Learn more: https://hub.docker.com/_/rabbitmq/ + + docker run --hostname my-rabbit --rm --name some-rabbit -p 5672:5672 -p 5671:5671 -p 8080:15672 rabbitmq:3 \ No newline at end of file diff --git a/runtests.sh b/runtests.sh index 27d90a1..463537e 100755 --- a/runtests.sh +++ b/runtests.sh @@ -1 +1,6 @@ +# +# Run tests and display results with code coverage +# + + nosetests -v report --with-coverage --cover-package=codexbot/ tests/*.py \ No newline at end of file From a4ab65a272d1bbcff8534ea6b4586bc622936efd Mon Sep 17 00:00:00 2001 From: N0str Date: Fri, 12 May 2017 20:44:04 +0300 Subject: [PATCH 4/5] Add mongo to build --- build.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index b7d3ea4..9d8b2dd 100755 --- a/build.sh +++ b/build.sh @@ -8,4 +8,6 @@ # Learn more: https://hub.docker.com/_/rabbitmq/ -docker run --hostname my-rabbit --rm --name some-rabbit -p 5672:5672 -p 5671:5671 -p 8080:15672 rabbitmq:3 \ No newline at end of file +docker run --hostname my-rabbit -d --name codex-bot-rabbitmq -p 5672:5672 -p 5671:5671 -p 8080:15672 rabbitmq:3 + +docker run --name codex-bot-mongo -d -p 27017:27017 mongo \ No newline at end of file From 25e2ae5dceb19d519bb49066abd5603d5b5abcc3 Mon Sep 17 00:00:00 2001 From: N0str Date: Sat, 13 May 2017 02:24:01 +0300 Subject: [PATCH 5/5] Add Mongodb tests --- tests/db.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/db.py diff --git a/tests/db.py b/tests/db.py new file mode 100644 index 0000000..f4a291a --- /dev/null +++ b/tests/db.py @@ -0,0 +1,23 @@ +import unittest + +from codexbot.lib.db import Db +from tests.base import BaseTest + + +class DatabaseTest(BaseTest, unittest.TestCase): + + def __init__(self, *args, **kwargs): + super(BaseTest, self).__init__(*args, **kwargs) + self.db_name = 'test_db' + self.collection_name = 'test_collection' + + def setUp(self): + self.db = Db(self.db_name) + self.db.insert(self.collection_name, {'id': 'test_id'}) + + def testDatabaseInit(self): + result = list(self.db.find(self.collection_name, {'id': 'test_id'})) + self.assertNotEquals(len(result), 0) + + def tearDown(self): + self.db.remove(self.collection_name)