Skip to content
Snippets Groups Projects
Commit e517c8ed authored by Todd Dembrey's avatar Todd Dembrey
Browse files

Add tests for the slack configuration

parent e1ce5be8
No related branches found
No related tags found
No related merge requests found
...@@ -29,7 +29,12 @@ class AdapterBase: ...@@ -29,7 +29,12 @@ class AdapterBase:
always_send = False always_send = False
def message(self, message_type, **kwargs): def message(self, message_type, **kwargs):
message = self.messages[message_type] try:
message = self.messages[message_type]
except KeyError:
# We don't know how to handle that message type
return
try: try:
# see if its a method on the adapter # see if its a method on the adapter
method = getattr(self, message) method = getattr(self, message)
...@@ -127,14 +132,14 @@ class SlackAdapter(AdapterBase): ...@@ -127,14 +132,14 @@ class SlackAdapter(AdapterBase):
return f'<{user.slack}>' return f'<{user.slack}>'
def send_message(self, message, **kwargs): def send_message(self, message, **kwargs):
if not self.destination and not self.target_room: if not self.destination or not self.target_room:
return return
data = { data = {
"room": self.target_room, "room": self.target_room,
"message": message, "message": message,
} }
requests.post(self.destination, data=data) requests.post(self.destination, json=data)
class MessengerBackend: class MessengerBackend:
......
import json
from unittest.mock import Mock, patch from unittest.mock import Mock, patch
import responses
from django.test import TestCase, override_settings from django.test import TestCase, override_settings
from django.contrib.messages import get_messages from django.contrib.messages import get_messages
...@@ -13,6 +16,7 @@ from ..messaging import ( ...@@ -13,6 +16,7 @@ from ..messaging import (
ActivityAdapter, ActivityAdapter,
MessengerBackend, MessengerBackend,
MESSAGES, MESSAGES,
SlackAdapter,
) )
...@@ -149,3 +153,47 @@ class TestActivityAdapter(TestCase): ...@@ -149,3 +153,47 @@ class TestActivityAdapter(TestCase):
self.assertTrue('Removed' in message) self.assertTrue('Removed' in message)
self.assertTrue('1' in message) self.assertTrue('1' in message)
self.assertTrue('2' in message) self.assertTrue('2' in message)
class TestSlackAdapter(TestCase):
target_url = 'https://my-slack-backend.com/incoming/my-very-secret-key'
target_room = '<ROOM ID>'
@override_settings(
SLACK_DESTINATION_URL=target_url,
SLACK_DESTINATION_ROOM=None,
)
@responses.activate
def test_cant_send_with_no_room(self):
adapter = SlackAdapter()
adapter.send_message('my message')
self.assertEqual(len(responses.calls), 0)
@override_settings(
SLACK_DESTINATION_URL=None,
SLACK_DESTINATION_ROOM=target_room,
)
@responses.activate
def test_cant_send_with_no_url(self):
adapter = SlackAdapter()
adapter.send_message('my message')
self.assertEqual(len(responses.calls), 0)
@override_settings(
SLACK_DESTINATION_URL=target_url,
SLACK_DESTINATION_ROOM=target_room,
)
@responses.activate
def test_correct_payload(self):
responses.add(responses.POST, self.target_url, status=200)
adapter = SlackAdapter()
message = 'my message'
adapter.send_message(message)
self.assertEqual(len(responses.calls), 1)
self.assertDictEqual(
json.loads(responses.calls[0].request.body),
{
'room': self.target_room,
'message': message,
}
)
...@@ -16,6 +16,7 @@ django-hijack==2.1.9 ...@@ -16,6 +16,7 @@ django-hijack==2.1.9
factory_boy==2.9.2 factory_boy==2.9.2
# wagtail_factories - waiting on merge and release form master branch # wagtail_factories - waiting on merge and release form master branch
git+git://github.com/mvantellingen/wagtail-factories.git#egg=wagtail_factories git+git://github.com/mvantellingen/wagtail-factories.git#egg=wagtail_factories
responses == 0.9.0
flake8 flake8
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment