irctest/irctest/server_tests/test_away_notify.py

59 lines
2.0 KiB
Python
Raw Normal View History

2020-07-17 06:54:03 +00:00
"""
<https://ircv3.net/specs/extensions/away-notify-3.1>
"""
from irctest import cases
2021-02-22 18:02:13 +00:00
class AwayNotifyTestCase(cases.BaseServerTestCase, cases.OptionalityHelper):
@cases.SpecificationSelector.requiredBySpecification("IRCv3.1")
2020-07-17 06:54:03 +00:00
def testAwayNotify(self):
"""Basic away-notify test."""
2021-02-22 18:02:13 +00:00
self.connectClient("foo", capabilities=["away-notify"], skip_if_cap_nak=True)
2020-07-17 06:54:03 +00:00
self.getMessages(1)
2021-02-22 18:02:13 +00:00
self.joinChannel(1, "#chan")
2020-07-17 06:54:03 +00:00
2021-02-22 18:02:13 +00:00
self.connectClient("bar")
2020-07-17 06:54:03 +00:00
self.getMessages(2)
2021-02-22 18:02:13 +00:00
self.joinChannel(2, "#chan")
2020-07-17 06:54:03 +00:00
self.getMessages(2)
self.getMessages(1)
self.sendLine(2, "AWAY :i'm going away")
self.getMessages(2)
2021-02-22 18:02:13 +00:00
messages = [msg for msg in self.getMessages(1) if msg.command == "AWAY"]
2020-07-17 06:54:03 +00:00
self.assertEqual(len(messages), 1)
awayNotify = messages[0]
2021-02-22 18:02:13 +00:00
self.assertTrue(
awayNotify.prefix.startswith("bar!"),
"Unexpected away-notify source: %s" % (awayNotify.prefix,),
)
2020-07-17 06:54:03 +00:00
self.assertEqual(awayNotify.params, ["i'm going away"])
2021-02-22 18:02:13 +00:00
@cases.SpecificationSelector.requiredBySpecification("IRCv3.2")
2020-07-17 06:54:03 +00:00
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."
"""
2021-02-22 18:02:13 +00:00
self.connectClient("foo", capabilities=["away-notify"], skip_if_cap_nak=True)
2020-07-17 06:54:03 +00:00
self.getMessages(1)
2021-02-22 18:02:13 +00:00
self.joinChannel(1, "#chan")
2020-07-17 06:54:03 +00:00
2021-02-22 18:02:13 +00:00
self.connectClient("bar")
2020-07-17 06:54:03 +00:00
self.getMessages(2)
self.sendLine(2, "AWAY :i'm already away")
self.getMessages(2)
2021-02-22 18:02:13 +00:00
self.joinChannel(2, "#chan")
2020-07-17 06:54:03 +00:00
self.getMessages(2)
2021-02-22 18:02:13 +00:00
messages = [msg for msg in self.getMessages(1) if msg.command == "AWAY"]
2020-07-17 06:54:03 +00:00
self.assertEqual(len(messages), 1)
awayNotify = messages[0]
2021-02-22 18:02:13 +00:00
self.assertTrue(
awayNotify.prefix.startswith("bar!"),
"Unexpected away-notify source: %s" % (awayNotify.prefix,),
)
2020-07-17 06:54:03 +00:00
self.assertEqual(awayNotify.params, ["i'm already away"])