add away-notify tests

This commit is contained in:
Shivaram Lingamneni 2020-07-17 02:54:03 -04:00
parent 23d6fecae9
commit 59e3b873ea

View File

@ -0,0 +1,52 @@
"""
<https://ircv3.net/specs/extensions/away-notify-3.1>
"""
from irctest import cases
class AwayNotifyTestCase(cases.BaseServerTestCase, cases.OptionalityHelper):
@cases.SpecificationSelector.requiredBySpecification('IRCv3.1')
def testAwayNotify(self):
"""Basic away-notify test."""
self.connectClient('foo', capabilities=['away-notify'], skip_if_cap_nak=True)
self.getMessages(1)
self.joinChannel(1, '#chan')
self.connectClient('bar')
self.getMessages(2)
self.joinChannel(2, '#chan')
self.getMessages(2)
self.getMessages(1)
self.sendLine(2, "AWAY :i'm going away")
self.getMessages(2)
messages = [msg for msg in self.getMessages(1) if msg.command == 'AWAY']
self.assertEqual(len(messages), 1)
awayNotify = messages[0]
self.assertTrue(awayNotify.prefix.startswith('bar!'), 'Unexpected away-notify source: %s' % (awayNotify.prefix,))
self.assertEqual(awayNotify.params, ["i'm going away"])
@cases.SpecificationSelector.requiredBySpecification('IRCv3.2')
def testAwayNotifyOnJoin(self):
"""The away-notify specification states:
"Clients will be sent an AWAY message [...] when a user joins and has an away message set."
"""
self.connectClient('foo', capabilities=['away-notify'], skip_if_cap_nak=True)
self.getMessages(1)
self.joinChannel(1, '#chan')
self.connectClient('bar')
self.getMessages(2)
self.sendLine(2, "AWAY :i'm already away")
self.getMessages(2)
self.joinChannel(2, '#chan')
self.getMessages(2)
messages = [msg for msg in self.getMessages(1) if msg.command == 'AWAY']
self.assertEqual(len(messages), 1)
awayNotify = messages[0]
self.assertTrue(awayNotify.prefix.startswith('bar!'), 'Unexpected away-notify source: %s' % (awayNotify.prefix,))
self.assertEqual(awayNotify.params, ["i'm already away"])