예제 #1
0
    def test_quit_bot(self):
        from functions import quit_bot

        with nested(
            patch('functions.log_write'),
            patch('sys.stdout', new=StringIO()),
            patch('functions.get_datetime'),
        ) as (log_write, stdout, get_dt):
            get_dt.return_value = {'date': '42', 'time': '42'}

            s = Mock()
            s.send.side_effect = IOError()

            message = 'Unexpected error while quitting: \n'

            self.assertFalse(quit_bot(s, 'foo'))
            self.assertEqual(stdout.getvalue(), message)

            log_write.assert_called_with('foo', '42', ' <> ', message)


            s.send.side_effect = None
            s.send = Mock()

            self.assertTrue(quit_bot(s, 'foo'))

            log_write.assert_called_with('foo', '42', ' <> ', 'QUIT\r\n')
            s.send.assert_called_with('QUIT\r\n')
예제 #2
0
    def test_connect_to(self):
        from functions import connect_to

        with nested(
            patch('functions.log_write'),
            patch('sys.stdout', new=StringIO()),
            patch('functions.get_datetime'),
        ) as (log_write, stdout, get_dt):
            get_dt.return_value = {'date': '42', 'time': '42'}

            s = Mock()
            s.connect.side_effect = IOError()

            address = ('server', 'port')
            message = 'Could not connect to {0}\n{1}'.format(address, '\n')

            self.assertFalse(connect_to(address, s, 'foo'))
            self.assertEqual(stdout.getvalue(), message)
            log_write.assert_called_with('foo', '42', ' <> ', message)

            s.connect.side_effect = None
            s.connect = Mock()
            self.assertTrue(connect_to(address, s, 'foo'))

            s.connect.assert_called_with(address)
예제 #3
0
    def test_create_socket(self):
        from functions import create_socket
        import err

        with nested(
            patch('socket.socket'),
            patch('functions.log_write'),
            patch('sys.stdout', new=StringIO()),
            patch('functions.get_datetime'),
        ) as (socket, log_write, stdout, get_dt):
            socket.side_effect = IOError()
            get_dt.return_value = {'date': '42', 'time': '42'}

            self.assertIsNone(create_socket('foo'))
            self.assertEqual(stdout.getvalue(), err.NO_SOCKET + '\n\n')
            log_write.assert_called_with('foo', '42', ' <> ',
                err.NO_SOCKET + '\n\n')

            socket.side_effect = None
            socket.return_value = 42
            self.assertEqual(create_socket('foo'), 42)
예제 #4
0
    def test_join_channels(self):
        from functions import join_channels

        with nested(
            patch('functions.log_write'),
            patch('sys.stdout', new=StringIO()),
            patch('functions.get_datetime'),
        ) as (log_write, stdout, get_dt):
            get_dt.return_value = {'date': '42', 'time': '42'}

            s = Mock()
            s.send.side_effect = IOError()

            channels = ['#foo', '#bar']
            clist = ','.join(channels)

            message = 'Unexpected error while joining {0}: {1}'.format(
                clist, '\n')

            self.assertFalse(join_channels(channels, s, 'foo'))
            self.assertEqual(stdout.getvalue(), message)

            log_write.assert_called_with('foo', '42', ' <> ', message)


            log_write.call_args_list = []
            s.send.side_effect = None
            s.send = Mock()
            msg = 'Joined: {0}\n'.format(clist)

            self.assertTrue(join_channels(channels, s, 'foo'))

            log_write.assert_called_with('foo', '42', ' <> ', msg)
            self.assertEqual(stdout.getvalue(), message + msg)

            s.send.assert_called_with('JOIN ' + clist + '\r\n')
예제 #5
0
    def test_send_response(self):
        from functions import send_response

        self.assertIsNone(send_response('', 'nick', 'bar', 'baz'))
        self.assertIsNone(send_response([], '#chan', 'bar', 'baz'))
        self.assertIsNone(send_response(None, '#chan', 'bar', 'baz'))

        with nested(
            patch('functions.log_write'),
            patch('functions.get_datetime'),
        ) as (log_write, get_dt):
            get_dt.return_value = {'date': '42', 'time': '42'}

            response = ['foo', 'bar']
            s = Mock()
            self.assertTrue(send_response(response, '#chan', s, 'foo'))
            s.send.assert_called_with(' '.join(response) + '\r\n')
            log_write.assert_called_with('foo', '42', ' <> ',
                ' '.join(response) + '\r\n')

            self.assertTrue(send_response('baz', '#chan', s, 'foo'))
            s.send.assert_called_with('#chanbaz\r\n')
            log_write.assert_called_with('foo', '42', ' <> ', '#chanbaz\r\n')

            self.assertTrue(send_response('baz\r\n', '#chan', s, 'foo'))
            s.send.assert_called_with('#chanbaz\r\n')
            log_write.assert_called_with('foo', '42', ' <> ', '#chanbaz\r\n')

            self.assertTrue(send_response('foo\r\nbaz\r\n', '#chan', s, 'foo'))
            s.send.assert_called_with('#chanfoo\r\n#chanbaz\r\n')
            log_write.assert_called_with('foo', '42', ' <> ',
                '#chanfoo\r\n#chanbaz\r\n')

            self.assertTrue(send_response('foo\r\nbaz\r\nquo\r\nfoobar',
                '#chan', s, 'foo'))
            s.send.assert_called_with(
                '#chanfoo\r\n#chanbaz\r\n#chanquo\r\n#chanfoobar\r\n')
            log_write.assert_called_with('foo', '42', ' <> ',
                '#chanfoo\r\n#chanbaz\r\n#chanquo\r\n#chanfoobar\r\n')

            s.send.side_effect = IOError()
            self.assertFalse(send_response('baz', '#chan', s, 'foo'))
            log_write.assert_called_with('foo', '42', ' <> ',
                'Unexpected error while sending the response: \n')