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')
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)
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)
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')
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')