async def test_react_unknown_error(self): import slacker connector = ConnectorSlack({"api-token": "abc123"}) connector.slacker.reactions.post = amock.CoroutineMock(side_effect=slacker.Error('unknown')) with self.assertRaises(slacker.Error), OpsDroid() as opsdroid: prev_message = Message("test", "user", "room", connector, raw_event={'ts': 0}) await prev_message.respond(Reaction("😀"))
def post(self, data): if not self.url: raise slacker.Error('URL for incoming webhook is undefined') _request = self.session.request( 'POST', self.url, data=data, timeout=None, ) _response = None try: with async_timeout.timeout(self.timeout, loop=self.loop): _response = yield from _request _response.raise_for_status() _json = yield from _response.json() finally: if _response is not None: yield from _response.release() return _json
def post(self, command, data): if command == 'users.admin.invite': user_email = data.get('email', None) if user_email: if user_email not in self.data['invited']: self.data['invited'].append(user_email) else: raise slacker.Error('User email was not provided')
async def test_react_unknown_error(self): import slacker connector = ConnectorSlack({"api-token": "abc123"}) connector.slacker.reactions.post = amock.CoroutineMock( side_effect=slacker.Error('unknown')) with self.assertRaises(slacker.Error): await connector.react( Message("test", "user", "room", connector, {'ts': 0}), "😀")
async def test_react_invalid_name(self): import slacker connector = ConnectorSlack({"api-token": "abc123"}) connector.slacker.reactions.post = amock.CoroutineMock( side_effect=slacker.Error('invalid_name')) await connector.react( Message("test", "user", "room", connector, {'ts': 0}), "😀") self.assertLogs('_LOGGER', 'warning')
def test_event_remove_emoji_slacker_errors_ignored( self, mocked_post_message, # type: mock.MagicMock ): # type: (...) -> None mocked_post_message.side_effect = slacker.Error() res = self._post_remove_event(self.WORKSPACE, self.good_remove_event, mocked_post_message) self.assertEqual(res.status_code, 200)
def test_event_remove_emoji_invalid_auth( self, mocked_post_message, # type: mock.MagicMock ): # type: (...) -> None mocked_post_message.side_effect = slacker.Error('invalid_auth') res = self._post_remove_event(self.WORKSPACE, self.good_remove_event, mocked_post_message) self.assertEqual(res.status_code, 403)
async def test_react_invalid_name(self): import slacker connector = ConnectorSlack({"api-token": "abc123"}) connector.slacker.reactions.post = amock.CoroutineMock(side_effect=slacker.Error('invalid_name')) prev_message = Message("test", "user", "room", connector, raw_event={'ts': 0}) with OpsDroid() as opsdroid: await prev_message.respond(Reaction("😀")) self.assertLogs('_LOGGER', 'warning')
def kick(self, group_id, user_id): self._validate_group(group_id=group_id) self._validate_user(user_id=user_id) if user_id not in self.data['groups'][group_id]['users']: raise slacker.Error('User does not belong to group.') # Slacker API does not raise an error if user already present self.data['groups'][group_id]['users'].remove(user_id)
async def test_connect_auth_fail(self): connector = ConnectorSlack({"api-token": "abc123"}, opsdroid=OpsDroid()) opsdroid = amock.CoroutineMock() opsdroid.eventloop = self.loop connector.slacker.rtm.start = amock.CoroutineMock() connector.slacker.rtm.start.side_effect = slacker.Error() await connector.connect() self.assertLogs('_LOGGER', 'error')
def kick(self, group_id, user_id): self._validate_group(group_id=group_id) self._validate_user(user_id=user_id) if user_id not in MOCK_SLACK_API_DATA['channels'][group_id]['users']: raise slacker.Error('User does not belong to group.') # Slacker API does not raise an error if user already present MOCK_SLACK_API_DATA['channels'][group_id]['users'].remove(user_id)
def _validate_user(self, user_id): if not user_id or not self._user_exists(user_id): raise slacker.Error('User not found.')
def _validate_group(self, group_id): if not group_id or not self._group_exists(group_id): raise slacker.Error('Group not found.')
def set_purpose(self, group_id, purpose): if not self._group_exists(group_id): raise slacker.Error('Group not found.') self.data['groups'][group_id]['purpose'] = purpose
def set_purpose(self, group_id, purpose): if not self._group_exists(group_id): raise slacker.Error('Group not found.') MOCK_SLACK_API_DATA['groups'][group_id]['purpose'] = purpose