From 50b36f281d02dfc01829d14f77850e6bdfd27063 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Fri, 18 Jun 2021 18:43:45 -0400 Subject: [PATCH 1/4] ergo: remove additional-nick-limit --- irctest/controllers/ergo.py | 1 - 1 file changed, 1 deletion(-) diff --git a/irctest/controllers/ergo.py b/irctest/controllers/ergo.py index db5f42d..bbe2982 100644 --- a/irctest/controllers/ergo.py +++ b/irctest/controllers/ergo.py @@ -58,7 +58,6 @@ BASE_CONFIG = { }, "nick-reservation": { "enabled": True, - "additional-nick-limit": 2, "method": "strict", }, }, From 65b479c609630a06c42c842a353bd8b99e34be6c Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Sun, 27 Jun 2021 04:41:30 -0400 Subject: [PATCH 2/4] add regression test for ergochat/ergo#1696 --- .../server_tests/test_channel_operations.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/irctest/server_tests/test_channel_operations.py b/irctest/server_tests/test_channel_operations.py index e6daa1c..123947c 100644 --- a/irctest/server_tests/test_channel_operations.py +++ b/irctest/server_tests/test_channel_operations.py @@ -1180,6 +1180,56 @@ class ModeratedMode(cases.BaseServerTestCase): ) +class RegisteredOnlySpeakMode(cases.BaseServerTestCase): + @cases.mark_specifications("Ergo") + def testRegisteredOnlySpeakMode(self): + self.controller.registerUser(self, "evan", "sesame") + + # test the +M (only registered users and ops can speak) channel mode + self.connectClient("chanop", name="chanop") + self.joinChannel("chanop", "#chan") + self.getMessages("chanop") + self.sendLine("chanop", "MODE #chan +M") + replies = self.getMessages("chanop") + modeLines = [line for line in replies if line.command == "MODE"] + self.assertMessageMatch(modeLines[0], command="MODE", params=["#chan", "+M"]) + + self.connectClient("baz", name="baz") + self.joinChannel("baz", "#chan") + self.getMessages("chanop") + # this message should be suppressed completely by +M + self.sendLine("baz", "PRIVMSG #chan :hi from baz") + replies = self.getMessages("baz") + reply_cmds = {reply.command for reply in replies} + self.assertIn(ERR_CANNOTSENDTOCHAN, reply_cmds) + self.assertEqual(self.getMessages("chanop"), []) + + # +v exempts users from the registration requirement: + self.sendLine("chanop", "MODE #chan +v baz") + self.getMessages("chanop") + self.getMessages("baz") + self.sendLine("baz", "PRIVMSG #chan :hi again from baz") + replies = self.getMessages("baz") + # baz should not receive an error (or an echo) + self.assertEqual(replies, []) + replies = self.getMessages("chanop") + self.assertMessageMatch( + replies[0], command="PRIVMSG", params=["#chan", "hi again from baz"] + ) + + self.connectClient("evan", name="evan", account="evan", password="sesame") + self.joinChannel("evan", "#chan") + self.getMessages("baz") + self.sendLine("evan", "PRIVMSG #chan :hi from evan") + replies = self.getMessages("evan") + # evan should not receive an error (or an echo) + self.assertEqual(replies, []) + replies = self.getMessages("baz") + self.assertMessageMatch( + replies[0], command="PRIVMSG", params=["#chan", "hi from evan"] + ) + + class OpModerated(cases.BaseServerTestCase): @cases.mark_specifications("Ergo") def testOpModerated(self): From 342ffcbdbe7256b47272f61b7ac6d51a9a7fc644 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Mon, 28 Jun 2021 00:04:36 -0400 Subject: [PATCH 3/4] enable run_services for new test --- irctest/server_tests/test_channel_operations.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/irctest/server_tests/test_channel_operations.py b/irctest/server_tests/test_channel_operations.py index 123947c..8218344 100644 --- a/irctest/server_tests/test_channel_operations.py +++ b/irctest/server_tests/test_channel_operations.py @@ -1181,6 +1181,8 @@ class ModeratedMode(cases.BaseServerTestCase): class RegisteredOnlySpeakMode(cases.BaseServerTestCase): + run_services = True + @cases.mark_specifications("Ergo") def testRegisteredOnlySpeakMode(self): self.controller.registerUser(self, "evan", "sesame") From 50cd71887127d359f688e503d9dc71fdb749c381 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Mon, 28 Jun 2021 00:23:26 -0400 Subject: [PATCH 4/4] explicitly request sasl cap in new test --- irctest/server_tests/test_channel_operations.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/irctest/server_tests/test_channel_operations.py b/irctest/server_tests/test_channel_operations.py index 8218344..ca0977a 100644 --- a/irctest/server_tests/test_channel_operations.py +++ b/irctest/server_tests/test_channel_operations.py @@ -1219,7 +1219,13 @@ class RegisteredOnlySpeakMode(cases.BaseServerTestCase): replies[0], command="PRIVMSG", params=["#chan", "hi again from baz"] ) - self.connectClient("evan", name="evan", account="evan", password="sesame") + self.connectClient( + "evan", + name="evan", + account="evan", + password="sesame", + capabilities=["sasl"], + ) self.joinChannel("evan", "#chan") self.getMessages("baz") self.sendLine("evan", "PRIVMSG #chan :hi from evan")