Skip to content

Commit

Permalink
Merge pull request #47 from jlmadurga/enhacement/signals
Browse files Browse the repository at this point in the history
Enhacement/signals
  • Loading branch information
jlmadurga committed Apr 14, 2016
2 parents 106ad88 + 3417ab8 commit 0595ba0
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 17 deletions.
28 changes: 20 additions & 8 deletions microbot/apps.py
Expand Up @@ -9,33 +9,45 @@ def connect_bot_signals():
signals.pre_save.connect(handlers.validate_bot,
sender=sender,
dispatch_uid='bot_validate')
signals.post_save.connect(handlers.set_bot_webhook,
sender=sender,
dispatch_uid='bot_set_webhook')
signals.post_save.connect(handlers.set_bot_api_data,
sender=sender,
dispatch_uid='bot_set_api_data')
signals.pre_save.connect(handlers.set_bot_webhook,
sender=sender,
dispatch_uid='bot_set_webhook')
signals.pre_save.connect(handlers.set_bot_api_data,
sender=sender,
dispatch_uid='bot_set_api_data')
signals.post_save.connect(handlers.delete_cache,
sender=sender,
dispatch_uid='bot_delete_cache')
signals.post_delete.connect(handlers.delete_cache,
sender=sender,
dispatch_uid='bot_delete_cache')

def connect_telegram_api_signals():
from . import signals as handlers
chat = apps.get_model("microbot", "Chat")
user = apps.get_model("microbot", "User")
signals.post_save.connect(handlers.delete_cache,
sender=chat,
dispatch_uid='bot_delete_cache')
dispatch_uid='chat_delete_cache')
signals.post_save.connect(handlers.delete_cache,
sender=user,
dispatch_uid='bot_delete_cache')
dispatch_uid='user_delete_cache')
signals.post_delete.connect(handlers.delete_cache,
sender=chat,
dispatch_uid='chat_delete_cache')
signals.post_delete.connect(handlers.delete_cache,
sender=user,
dispatch_uid='user_delete_cache')

def connect_environment_vars_signals():
from . import signals as handlers
environment_var = apps.get_model("microbot", "EnvironmentVar")
signals.post_save.connect(handlers.delete_cache_env_vars,
sender=environment_var,
dispatch_uid='environment_related_to_bot_delete_cache')
signals.post_delete.connect(handlers.delete_cache_env_vars,
sender=environment_var,
dispatch_uid='environment_related_to_bot_delete_cache')

class MicrobotAppConfig(AppConfig):
name = "microbot"
Expand Down
3 changes: 0 additions & 3 deletions microbot/signals.py
Expand Up @@ -27,7 +27,6 @@ def get_site_domain():
logger.info("Success: Webhook url %s for bot %s set" % (url, str(instance)))

except:
instance.delete()
logger.error("Failure: Webhook url %s for bot %s not set" % (url, str(instance)))
raise

Expand All @@ -43,10 +42,8 @@ def set_bot_api_data(sender, instance, **kwargs):
User = apps.get_model('microbot', 'User')
user_api, _ = User.objects.get_or_create(**bot_api.to_dict())
instance.user_api = user_api
instance.save()
logger.info("Success: Bot api info for bot %s set" % str(instance))
except:
instance.delete()
logger.error("Failure: Bot api info for bot %s no set" % str(instance))
raise

Expand Down
21 changes: 15 additions & 6 deletions tests/api/base.py
Expand Up @@ -8,6 +8,10 @@
import json
import uuid
import datetime
try:
from unittest import mock
except ImportError:
import mock # noqa
ModelUser = apps.get_model(getattr(settings, 'AUTH_USER_MODEL', 'auth.User'))


Expand All @@ -20,6 +24,10 @@ def setUp(self):
self.mytoken2 = '190880460:AAELDdTxhhfPbtPRyC59qPaVF5VBX4VGVes'
self.unlikely_id = str(uuid.uuid4())

def create_bot(self, owner, token):
with mock.patch("telegram.bot.Bot.setWebhook", callable=mock.MagicMock()):
return Bot.objects.create(owner=owner, token=token)

def assertMicrobotModel(self, id, created_at, updated_at, obj):
if not id:
self.assertRegexpMatches(str(obj.id), '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}')
Expand Down Expand Up @@ -145,24 +153,25 @@ def _test_delete_detail_not_found(self, url, view, *args):
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

def _test_get_detail_from_other_bot(self, func_url, *args):
new_bot = Bot.objects.create(owner=self.bot.owner,
token=self.mytoken2)

new_bot = self.create_bot(owner=self.bot.owner,
token=self.mytoken2)
response = self.client.get(func_url(new_bot.pk, *args),
HTTP_AUTHORIZATION=self._gen_token(self.bot.owner.auth_token))
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

def _test_put_detail_from_other_bot(self, func_url, data, view, *args):
new_bot = Bot.objects.create(owner=self.bot.owner,
token=self.mytoken2)
new_bot = self.create_bot(owner=self.bot.owner,
token=self.mytoken2)
factory = APIRequestFactory()
request = factory.put(func_url(new_bot.pk), data, format="json")
force_authenticate(request, user=self.bot.owner)
response = view.as_view()(request, new_bot.pk, *args)
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

def _test_delete_detail_from_other_bot(self, func_url, view, *args):
new_bot = Bot.objects.create(owner=self.bot.owner,
token=self.mytoken2)
new_bot = self.create_bot(owner=self.bot.owner,
token=self.mytoken2)
factory = APIRequestFactory()
request = factory.delete(func_url(new_bot.pk))
force_authenticate(request, user=self.bot.owner)
Expand Down

0 comments on commit 0595ba0

Please sign in to comment.