From 032d0e32de93ab0ad3ff4d5d22affba4153d042f Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Thu, 21 Dec 2023 03:52:33 -0500 Subject: [PATCH] update ergo unicode tests (#245) * `casemapping: ascii` is now default * test that non-ascii nicks are rejected by default * test that non-ascii nicks are accepted under `casemapping: precis` --- irctest/controllers/ergo.py | 1 + irctest/server_tests/confusables.py | 4 ++-- irctest/server_tests/utf8.py | 35 +++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/irctest/controllers/ergo.py b/irctest/controllers/ergo.py index 4ac88cb3..c2a7b127 100644 --- a/irctest/controllers/ergo.py +++ b/irctest/controllers/ergo.py @@ -14,6 +14,7 @@ "name": "My.Little.Server", "listeners": {}, "max-sendq": "16k", + "casemapping": "ascii", "connection-limits": { "enabled": True, "cidr-len-ipv4": 32, diff --git a/irctest/server_tests/confusables.py b/irctest/server_tests/confusables.py index 480ece2b..620c6363 100644 --- a/irctest/server_tests/confusables.py +++ b/irctest/server_tests/confusables.py @@ -12,8 +12,8 @@ class ConfusablesTestCase(cases.BaseServerTestCase): @staticmethod def config() -> cases.TestCaseControllerConfig: return cases.TestCaseControllerConfig( - ergo_config=lambda config: config["accounts"].update( - {"nick-reservation": {"enabled": True, "method": "strict"}} + ergo_config=lambda config: config["server"].update( + {"casemapping": "precis"}, ) ) diff --git a/irctest/server_tests/utf8.py b/irctest/server_tests/utf8.py index 12ac1298..b4a91d96 100644 --- a/irctest/server_tests/utf8.py +++ b/irctest/server_tests/utf8.py @@ -5,6 +5,7 @@ """ from irctest import cases, runner +from irctest.numerics import ERR_ERRONEUSNICKNAME from irctest.patma import ANYSTR @@ -81,3 +82,37 @@ def testNonutf8Username(self): ) self.sendLine(2, "WHOIS foo") self.getMessages(2) + + +class ErgoUtf8NickEnabledTestCase(cases.BaseServerTestCase): + @staticmethod + def config() -> cases.TestCaseControllerConfig: + return cases.TestCaseControllerConfig( + ergo_config=lambda config: config["server"].update( + {"casemapping": "precis"}, + ) + ) + + @cases.mark_specifications("Ergo") + def testUtf8NonAsciiNick(self): + """Ergo accepts certain non-ASCII UTF8 nicknames if PRECIS is enabled.""" + self.connectClient("Işıl") + self.joinChannel(1, "#test") + + self.connectClient("Claire") + self.joinChannel(2, "#test") + + self.sendLine(1, "PRIVMSG #test :hi there") + self.assertMessageMatch( + self.getMessage(2), nick="Işıl", params=["#test", "hi there"] + ) + + +class ErgoUtf8NickDisabledTestCase(cases.BaseServerTestCase): + @cases.mark_specifications("Ergo") + def testUtf8NonAsciiNick(self): + """Ergo rejects non-ASCII nicknames in its default configuration.""" + self.addClient(1) + self.sendLine(1, "USER u s e r") + self.sendLine(1, "NICK Işıl") + self.assertMessageMatch(self.getMessage(1), command=ERR_ERRONEUSNICKNAME)