Example #1
0
 def setUp(self):
     self.nicknames = set()
     patcher = patch('builtins.open')
     self.addCleanup(patcher.stop)
     patcher.start()
     patcher = patch('random.randint', return_value=123)
     self.addCleanup(patcher.stop)
     self.mock_randint = patcher.start()
     patcher = patch('pickle.load', return_value=self.nicknames)
     self.addCleanup(patcher.stop)
     patcher.start()
     patcher = patch('jabberbot.mucbot.Timer')
     self.addCleanup(patcher.stop)
     self.mock_timer = patcher.start()
     patcher = patch.object(MUCBot, 'register_plugin')
     self.addCleanup(patcher.stop)
     patcher.start()
     patcher = patch.object(MUCBot, 'add_event_handler')
     self.addCleanup(patcher.stop)
     patcher.start()
     patcher = patch.object(MUCBot, 'send_message')
     self.addCleanup(patcher.stop)
     patcher.start()
     self.bot = MUCBot('*****@*****.**', 'mypassword', '*****@*****.**',
                       'itsme', 'translator', 'translator_sec')
Example #2
0
 def setUp(self):
     self.nicknames = set()
     patcher = patch('builtins.open')
     self.addCleanup(patcher.stop)
     patcher.start()
     patcher = patch('random.randint', return_value=123)
     self.addCleanup(patcher.stop)
     self.mock_randint = patcher.start()
     patcher = patch('pickle.load', return_value=self.nicknames)
     self.addCleanup(patcher.stop)
     patcher.start()
     patcher = patch('jabberbot.mucbot.Timer')
     self.addCleanup(patcher.stop)
     self.mock_timer = patcher.start()
     patcher = patch.object(MUCBot, 'register_plugin')
     self.addCleanup(patcher.stop)
     patcher.start()
     patcher = patch.object(MUCBot, 'add_event_handler')
     self.addCleanup(patcher.stop)
     patcher.start()
     patcher = patch.object(MUCBot, 'send_message')
     self.addCleanup(patcher.stop)
     patcher.start()
     self.bot = MUCBot(
         '*****@*****.**',
         'mypassword',
         '*****@*****.**',
         'itsme',
         'translator',
         'translator_sec')
Example #3
0
class TestMUCBot(unittest.TestCase):
    def setUp(self):
        self.nicknames = set()
        patcher = patch('builtins.open')
        self.addCleanup(patcher.stop)
        patcher.start()
        patcher = patch('random.randint', return_value=123)
        self.addCleanup(patcher.stop)
        self.mock_randint = patcher.start()
        patcher = patch('pickle.load', return_value=self.nicknames)
        self.addCleanup(patcher.stop)
        patcher.start()
        patcher = patch('jabberbot.mucbot.Timer')
        self.addCleanup(patcher.stop)
        self.mock_timer = patcher.start()
        patcher = patch.object(MUCBot, 'register_plugin')
        self.addCleanup(patcher.stop)
        patcher.start()
        patcher = patch.object(MUCBot, 'add_event_handler')
        self.addCleanup(patcher.stop)
        patcher.start()
        patcher = patch.object(MUCBot, 'send_message')
        self.addCleanup(patcher.stop)
        patcher.start()
        self.bot = MUCBot('*****@*****.**', 'mypassword', '*****@*****.**',
                          'itsme', 'translator', 'translator_sec')

    def test_commands(self):
        commands = self.bot.commands
        self.assertEqual(len(commands), 14, 'expected 14 commands')
        self.assertTrue('chuck' in commands)

    def test_registered_plugins(self):
        self.assertIn(call('xep_0045'), self.bot.register_plugin.mock_calls)

    def test_add_event_handler(self):
        self.bot.add_event_handler.assert_has_calls([
            call('session_start', self.bot.start),
            call('session_end', self.bot.end),
            call('message', self.bot.message)
        ])

    def test_automatic_subject_change(self):
        self.mock_timer.assert_called_once_with(123, self.bot._change_subject)
        self.mock_timer.return_value.start.assert_called_once_with()
        # empty nicknames
        self.bot._change_subject()
        self.nicknames.add('test')
        self.bot._change_subject()
        # should only be called once. If there are no nicknames it should
        # not be called
        self.bot.send_message.assert_called_once_with(
            mto='*****@*****.**',
            mbody=None,
            msubject='test ist ein Hengst',
            mtype='groupchat')
        self.assertEqual(self.mock_randint.call_count, 3)
        self.mock_randint.assert_has_calls(
            [call(3600, 43200),
             call(3600, 43200),
             call(3600, 43200)])
        self.assertEqual(self.mock_timer.call_count, 3)
        self.assertEqual(self.mock_timer.return_value.start.call_count, 3)

    def test_start(self):
        self.bot.send_presence = MagicMock(name='send_presence')
        self.bot.get_roster = MagicMock(name='get_roster')
        self.bot.plugin = MagicMock(name='xep_0045')
        self.bot.start(None)
        self.assertTrue(self.bot.send_presence.called)
        self.assertTrue(self.bot.get_roster.called)
        self.bot.plugin['xep_0045'].joinMUC.assert_called_once_with(
            '*****@*****.**', 'itsme', wait=True)

    def test_end(self):
        self.bot.end(None)
        self.mock_timer.return_value.cancel.assert_called_once_with()

    def test_message_type_not_groupchat(self):
        msg = {'body': None, 'type': 'chat'}
        self.bot.message(msg)
        msg['type'] = 'foo'
        self.bot.message(msg)
        msg['type'] = None
        self.bot.message(msg)
        self.assertFalse(self.bot.send_message.called)

    def test_message_no_command_prefix(self):
        self.bot.commands['help'] = MagicMock(name='help')
        msg = {'body': '', 'type': 'groupchat'}
        self.bot.message(msg)
        msg['body'] = 'foo'
        self.bot.message(msg)
        msg['body'] = 'help'
        self.bot.message(msg)
        self.assertFalse(self.bot.send_message.called)

    def test_message_command_not_found(self):
        self.bot.commands['help'] = MagicMock(name='help')
        msg = {'body': '!foo', 'type': 'groupchat'}
        self.bot.message(msg)
        self.assertFalse(self.bot.send_message.called)

    def test_message_to_groupchat(self):
        help_mock = MagicMock(name='help')
        help_mock.run_command.return_value = ('groupchat', 'message body')
        self.bot.commands['help'] = help_mock
        msg = {'from': MagicMock(), 'type': 'groupchat', 'body': '!help'}
        self.bot.message(msg)
        self.bot.send_message.assert_called_once_with(mto=msg['from'].bare,
                                                      mbody='message body',
                                                      mtype='groupchat')

    def test_message_to_chat(self):
        help_mock = MagicMock(name='help')
        help_mock.run_command.return_value = ('chat', 'message body')
        self.bot.commands['help'] = help_mock
        msg = {'from': MagicMock(), 'type': 'groupchat', 'body': '!help'}
        self.bot.message(msg)
        self.bot.send_message.assert_called_once_with(mto=msg['from'],
                                                      mbody='message body',
                                                      mtype='chat')
Example #4
0
#!/usr/bin/env python
from jabberbot.mucbot import MUCBot

jid = ''
pwd = ''
muc_room = ''
muc_nick = ''
trans_client_id = ''
trans_client_sec = ''

bot = MUCBot(jid, pwd, muc_room, muc_nick, trans_client_id, trans_client_sec)
bot.connect()
bot.process(block=True)
Example #5
0
class TestMUCBot(unittest.TestCase):
    def setUp(self):
        self.nicknames = set()
        patcher = patch('builtins.open')
        self.addCleanup(patcher.stop)
        patcher.start()
        patcher = patch('random.randint', return_value=123)
        self.addCleanup(patcher.stop)
        self.mock_randint = patcher.start()
        patcher = patch('pickle.load', return_value=self.nicknames)
        self.addCleanup(patcher.stop)
        patcher.start()
        patcher = patch('jabberbot.mucbot.Timer')
        self.addCleanup(patcher.stop)
        self.mock_timer = patcher.start()
        patcher = patch.object(MUCBot, 'register_plugin')
        self.addCleanup(patcher.stop)
        patcher.start()
        patcher = patch.object(MUCBot, 'add_event_handler')
        self.addCleanup(patcher.stop)
        patcher.start()
        patcher = patch.object(MUCBot, 'send_message')
        self.addCleanup(patcher.stop)
        patcher.start()
        self.bot = MUCBot(
            '*****@*****.**',
            'mypassword',
            '*****@*****.**',
            'itsme',
            'translator',
            'translator_sec')

    def test_commands(self):
        commands = self.bot.commands
        self.assertEqual(len(commands), 14, 'expected 14 commands')
        self.assertTrue('chuck' in commands)

    def test_registered_plugins(self):
        self.assertIn(call('xep_0045'), self.bot.register_plugin.mock_calls)

    def test_add_event_handler(self):
        self.bot.add_event_handler.assert_has_calls([
            call('session_start', self.bot.start),
            call('session_end', self.bot.end),
            call('message', self.bot.message)
        ])

    def test_automatic_subject_change(self):
        self.mock_timer.assert_called_once_with(123, self.bot._change_subject)
        self.mock_timer.return_value.start.assert_called_once_with()
        # empty nicknames
        self.bot._change_subject()
        self.nicknames.add('test')
        self.bot._change_subject()
        # should only be called once. If there are no nicknames it should
        # not be called
        self.bot.send_message.assert_called_once_with(
            mto='*****@*****.**',
            mbody=None,
            msubject='test ist ein Hengst',
            mtype='groupchat')
        self.assertEqual(self.mock_randint.call_count, 3)
        self.mock_randint.assert_has_calls([
            call(3600, 43200),
            call(3600, 43200),
            call(3600, 43200)
        ])
        self.assertEqual(self.mock_timer.call_count, 3)
        self.assertEqual(self.mock_timer.return_value.start.call_count, 3)

    def test_start(self):
        self.bot.send_presence = MagicMock(name='send_presence')
        self.bot.get_roster = MagicMock(name='get_roster')
        self.bot.plugin = MagicMock(name='xep_0045')
        self.bot.start(None)
        self.assertTrue(self.bot.send_presence.called)
        self.assertTrue(self.bot.get_roster.called)
        self.bot.plugin['xep_0045'].joinMUC.assert_called_once_with(
            '*****@*****.**',
            'itsme',
            wait=True)

    def test_end(self):
        self.bot.end(None)
        self.mock_timer.return_value.cancel.assert_called_once_with()

    def test_message_type_not_groupchat(self):
        msg = {'body': None, 'type': 'chat'}
        self.bot.message(msg)
        msg['type'] = 'foo'
        self.bot.message(msg)
        msg['type'] = None
        self.bot.message(msg)
        self.assertFalse(self.bot.send_message.called)

    def test_message_no_command_prefix(self):
        self.bot.commands['help'] = MagicMock(name='help')
        msg = {'body': '', 'type': 'groupchat'}
        self.bot.message(msg)
        msg['body'] = 'foo'
        self.bot.message(msg)
        msg['body'] = 'help'
        self.bot.message(msg)
        self.assertFalse(self.bot.send_message.called)

    def test_message_command_not_found(self):
        self.bot.commands['help'] = MagicMock(name='help')
        msg = {'body': '!foo', 'type': 'groupchat'}
        self.bot.message(msg)
        self.assertFalse(self.bot.send_message.called)

    def test_message_to_groupchat(self):
        help_mock = MagicMock(name='help')
        help_mock.run_command.return_value = ('groupchat', 'message body')
        self.bot.commands['help'] = help_mock
        msg = {'from': MagicMock(), 'type': 'groupchat', 'body': '!help'}
        self.bot.message(msg)
        self.bot.send_message.assert_called_once_with(
            mto=msg['from'].bare,
            mbody='message body',
            mtype='groupchat')

    def test_message_to_chat(self):
        help_mock = MagicMock(name='help')
        help_mock.run_command.return_value = ('chat', 'message body')
        self.bot.commands['help'] = help_mock
        msg = {'from': MagicMock(), 'type': 'groupchat', 'body': '!help'}
        self.bot.message(msg)
        self.bot.send_message.assert_called_once_with(
            mto=msg['from'],
            mbody='message body',
            mtype='chat')
Example #6
0
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

from jabberbot.mucbot import MUCBot

print("Leyendo configuracion...")
jid = '*****@*****.**'  #edita esto por una cuenta de jabber
pwd = "pasword here"  #Edita esto por tu password
muc_room = '*****@*****.**'  #edita esto por el servidor y la sala
muc_nick = 'jabberstom'  #Esto no lo edites el nombre es lindo xd

print("Configuracion aceptada....")
bot = MUCBot(jid, pwd, muc_room, muc_nick)
print("conectando...")
bot.connect()
print(
    "El bot esta conectado y listo para usar.. Seria preferible correr el bot en background"
)
bot.process(block=True)