Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
tree: 321e039a62
Fetching contributors…

Cannot retrieve contributors at this time

86 lines (65 sloc) 2.518 kb
"""
Tests for phenny's irc.py
"""
import unittest
from mock import call, patch, Mock
import irc
class OriginTest(unittest.TestCase):
def setUp(self):
self.bot = Mock()
def test_server(self):
source = "foobar.example.com"
origin = irc.Origin(self.bot, source, [])
self.assertEqual(origin.host, '')
def test_privmsg(self):
source = "Foobar!foo@bar.example.com"
args = ['PRIVMSG', '#phenny']
origin = irc.Origin(self.bot, source, args)
self.assertEqual(origin.nick, 'Foobar')
self.assertEqual(origin.user, 'foo')
self.assertEqual(origin.host, 'bar.example.com')
self.assertEqual(origin.sender, '#phenny')
class BotTest(unittest.TestCase):
@patch('threading.RLock')
@patch('asynchat.async_chat')
def setUp(self, mock_async, mock_thread):
self.nick = 'foo'
self.name = 'Phenny'
self.bot = irc.Bot(self.nick, self.name, '#phenny')
@patch('irc.Bot.write')
def test_login(self, mock_write):
self.bot.verbose = False
self.bot.handle_connect()
mock_write.assert_has_calls([
call(('NICK', self.nick)),
call(('USER', self.nick, '+iw', self.nick), self.name)
])
@patch('irc.Bot.write')
def test_ping(self, mock_write):
self.bot.buffer = b"PING"
self.bot.found_terminator()
mock_write.assert_called_once_with(('PONG', ''))
@patch('irc.Bot.push')
def test_msg(self, mock_push):
self.bot.msg('#phenny', 'hi')
mock_push.assert_called_once_with(b'PRIVMSG #phenny :hi\r\n')
@patch('time.sleep') # patch sleep so test runs faster
@patch('irc.Bot.push')
def test_msgflood(self, mock_push, mock_sleep):
self.bot.msg('#phenny', 'flood')
self.bot.msg('#phenny', 'flood')
self.bot.msg('#phenny', 'flood')
self.bot.msg('#phenny', 'flood')
self.bot.msg('#phenny', 'flood')
self.bot.msg('#phenny', 'flood')
mock_push.assert_called_with(b'PRIVMSG #phenny :...\r\n')
self.assertEqual(mock_sleep.call_count, 5)
@patch('irc.Bot.msg')
def test_action(self, mock_msg):
self.bot.action('foo', 'is')
mock_msg.assert_called_once_with('foo', '\x01ACTION is\x01')
@patch('irc.Bot.write')
def test_notice(self, mock_write):
notice = "This is a notice!"
self.bot.notice('jqh', notice)
mock_write.assert_called_once_with(('NOTICE', 'jqh'), notice)
Jump to Line
Something went wrong with that request. Please try again.