From ecc560adebc55a4606f39ba9f7c5744e7a1f7c89 Mon Sep 17 00:00:00 2001 From: Val Lorentz <progval+git@progval.net> Date: Sat, 16 Sep 2023 13:10:56 +0200 Subject: [PATCH] Make AWAY and away-notify tests stricter (#222) * Make AWAY and away-notify tests stricter * Check AWAY is not echoed on JOIN --- irctest/server_tests/away.py | 16 +++++++++----- irctest/server_tests/away_notify.py | 33 +++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/irctest/server_tests/away.py b/irctest/server_tests/away.py index d8cd059..36841d6 100644 --- a/irctest/server_tests/away.py +++ b/irctest/server_tests/away.py @@ -11,13 +11,14 @@ from irctest.numerics import ( RPL_USERHOST, RPL_WHOISUSER, ) -from irctest.patma import StrRe +from irctest.patma import ANYSTR, StrRe class AwayTestCase(cases.BaseServerTestCase): @cases.mark_specifications("RFC2812", "Modern") def testAway(self): self.connectClient("bar") + self.getMessages(1) self.sendLine(1, "AWAY :I'm not here right now") replies = self.getMessages(1) self.assertIn(RPL_NOWAWAY, [msg.command for msg in replies]) @@ -29,6 +30,7 @@ class AwayTestCase(cases.BaseServerTestCase): command=RPL_AWAY, params=["qux", "bar", "I'm not here right now"], ) + self.getMessages(1) self.sendLine(1, "AWAY") replies = self.getMessages(1) @@ -47,12 +49,16 @@ class AwayTestCase(cases.BaseServerTestCase): """ self.connectClient("bar") self.sendLine(1, "AWAY :I'm not here right now") - replies = self.getMessages(1) - self.assertIn(RPL_NOWAWAY, [msg.command for msg in replies]) + self.assertMessageMatch( + self.getMessage(1), command=RPL_NOWAWAY, params=["bar", ANYSTR] + ) + self.assertEqual(self.getMessages(1), []) self.sendLine(1, "AWAY") - replies = self.getMessages(1) - self.assertIn(RPL_UNAWAY, [msg.command for msg in replies]) + self.assertMessageMatch( + self.getMessage(1), command=RPL_UNAWAY, params=["bar", ANYSTR] + ) + self.assertEqual(self.getMessages(1), []) @cases.mark_specifications("Modern") def testAwayPrivmsg(self): diff --git a/irctest/server_tests/away_notify.py b/irctest/server_tests/away_notify.py index 3e9034e..0efd021 100644 --- a/irctest/server_tests/away_notify.py +++ b/irctest/server_tests/away_notify.py @@ -3,6 +3,8 @@ """ from irctest import cases +from irctest.numerics import RPL_NOWAWAY, RPL_UNAWAY +from irctest.patma import ANYSTR, StrRe class AwayNotifyTestCase(cases.BaseServerTestCase): @@ -20,13 +22,28 @@ class AwayNotifyTestCase(cases.BaseServerTestCase): self.getMessages(1) 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) - self.assertMessageMatch(awayNotify, command="AWAY", params=["i'm going away"]) - self.assertTrue( - awayNotify.prefix.startswith("bar!"), - "Unexpected away-notify source: %s" % (awayNotify.prefix,), + self.assertMessageMatch( + awayNotify, + prefix=StrRe("bar!.*"), + 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") @@ -45,7 +62,11 @@ class AwayNotifyTestCase(cases.BaseServerTestCase): self.getMessages(2) 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"] self.assertEqual(