Make AWAY and away-notify tests stricter (#222)

* Make AWAY and away-notify tests stricter

* Check AWAY is not echoed on JOIN
This commit is contained in:
Val Lorentz 2023-09-16 13:10:56 +02:00 committed by GitHub
parent c58167b42d
commit ecc560adeb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 11 deletions

View File

@ -11,13 +11,14 @@ from irctest.numerics import (
RPL_USERHOST, RPL_USERHOST,
RPL_WHOISUSER, RPL_WHOISUSER,
) )
from irctest.patma import StrRe from irctest.patma import ANYSTR, StrRe
class AwayTestCase(cases.BaseServerTestCase): class AwayTestCase(cases.BaseServerTestCase):
@cases.mark_specifications("RFC2812", "Modern") @cases.mark_specifications("RFC2812", "Modern")
def testAway(self): def testAway(self):
self.connectClient("bar") self.connectClient("bar")
self.getMessages(1)
self.sendLine(1, "AWAY :I'm not here right now") self.sendLine(1, "AWAY :I'm not here right now")
replies = self.getMessages(1) replies = self.getMessages(1)
self.assertIn(RPL_NOWAWAY, [msg.command for msg in replies]) self.assertIn(RPL_NOWAWAY, [msg.command for msg in replies])
@ -29,6 +30,7 @@ class AwayTestCase(cases.BaseServerTestCase):
command=RPL_AWAY, command=RPL_AWAY,
params=["qux", "bar", "I'm not here right now"], params=["qux", "bar", "I'm not here right now"],
) )
self.getMessages(1)
self.sendLine(1, "AWAY") self.sendLine(1, "AWAY")
replies = self.getMessages(1) replies = self.getMessages(1)
@ -47,12 +49,16 @@ class AwayTestCase(cases.BaseServerTestCase):
""" """
self.connectClient("bar") self.connectClient("bar")
self.sendLine(1, "AWAY :I'm not here right now") self.sendLine(1, "AWAY :I'm not here right now")
replies = self.getMessages(1) self.assertMessageMatch(
self.assertIn(RPL_NOWAWAY, [msg.command for msg in replies]) self.getMessage(1), command=RPL_NOWAWAY, params=["bar", ANYSTR]
)
self.assertEqual(self.getMessages(1), [])
self.sendLine(1, "AWAY") self.sendLine(1, "AWAY")
replies = self.getMessages(1) self.assertMessageMatch(
self.assertIn(RPL_UNAWAY, [msg.command for msg in replies]) self.getMessage(1), command=RPL_UNAWAY, params=["bar", ANYSTR]
)
self.assertEqual(self.getMessages(1), [])
@cases.mark_specifications("Modern") @cases.mark_specifications("Modern")
def testAwayPrivmsg(self): def testAwayPrivmsg(self):

View File

@ -3,6 +3,8 @@
""" """
from irctest import cases from irctest import cases
from irctest.numerics import RPL_NOWAWAY, RPL_UNAWAY
from irctest.patma import ANYSTR, StrRe
class AwayNotifyTestCase(cases.BaseServerTestCase): class AwayNotifyTestCase(cases.BaseServerTestCase):
@ -20,13 +22,28 @@ class AwayNotifyTestCase(cases.BaseServerTestCase):
self.getMessages(1) self.getMessages(1)
self.sendLine(2, "AWAY :i'm going away") self.sendLine(2, "AWAY :i'm going away")
self.getMessages(2) self.assertMessageMatch(
self.getMessage(2), command=RPL_NOWAWAY, params=["bar", ANYSTR]
)
self.assertEqual(self.getMessages(2), [])
awayNotify = self.getMessage(1) awayNotify = self.getMessage(1)
self.assertMessageMatch(awayNotify, command="AWAY", params=["i'm going away"]) self.assertMessageMatch(
self.assertTrue( awayNotify,
awayNotify.prefix.startswith("bar!"), prefix=StrRe("bar!.*"),
"Unexpected away-notify source: %s" % (awayNotify.prefix,), command="AWAY",
params=["i'm going away"],
)
self.sendLine(2, "AWAY")
self.assertMessageMatch(
self.getMessage(2), command=RPL_UNAWAY, params=["bar", ANYSTR]
)
self.assertEqual(self.getMessages(2), [])
awayNotify = self.getMessage(1)
self.assertMessageMatch(
awayNotify, prefix=StrRe("bar!.*"), command="AWAY", params=[]
) )
@cases.mark_capabilities("away-notify") @cases.mark_capabilities("away-notify")
@ -45,7 +62,11 @@ class AwayNotifyTestCase(cases.BaseServerTestCase):
self.getMessages(2) self.getMessages(2)
self.joinChannel(2, "#chan") self.joinChannel(2, "#chan")
self.getMessages(2) self.assertNotIn(
"AWAY",
[m.command for m in self.getMessages(2)],
"joining user got their own away status when they joined",
)
messages = [msg for msg in self.getMessages(1) if msg.command == "AWAY"] messages = [msg for msg in self.getMessages(1) if msg.command == "AWAY"]
self.assertEqual( self.assertEqual(