2020-10-09 12:38:53 +00:00
|
|
|
from irctest import cases
|
2021-02-28 19:44:50 +00:00
|
|
|
from irctest.patma import ANYSTR
|
2020-10-09 12:38:53 +00:00
|
|
|
|
2021-02-22 18:02:13 +00:00
|
|
|
REGISTER_CAP_NAME = "draft/register"
|
|
|
|
|
2020-10-09 12:38:53 +00:00
|
|
|
|
|
|
|
class TestRegisterBeforeConnect(cases.BaseServerTestCase):
|
2021-02-17 21:43:37 +00:00
|
|
|
@staticmethod
|
2021-02-28 12:40:08 +00:00
|
|
|
def config() -> cases.TestCaseControllerConfig:
|
|
|
|
return cases.TestCaseControllerConfig(
|
|
|
|
oragono_config=lambda config: config["accounts"]["registration"].update(
|
2021-02-22 18:02:13 +00:00
|
|
|
{"allow-before-connect": True}
|
2021-02-17 21:43:37 +00:00
|
|
|
)
|
2021-02-28 12:40:08 +00:00
|
|
|
)
|
2020-10-09 12:38:53 +00:00
|
|
|
|
2021-02-24 14:51:52 +00:00
|
|
|
@cases.mark_specifications("Oragono")
|
2020-10-09 12:38:53 +00:00
|
|
|
def testBeforeConnect(self):
|
2021-02-22 18:02:13 +00:00
|
|
|
self.addClient("bar")
|
|
|
|
self.sendLine("bar", "CAP LS 302")
|
|
|
|
caps = self.getCapLs("bar")
|
2020-10-09 12:38:53 +00:00
|
|
|
self.assertIn(REGISTER_CAP_NAME, caps)
|
2021-02-22 18:02:13 +00:00
|
|
|
self.assertIn("before-connect", caps[REGISTER_CAP_NAME])
|
|
|
|
self.sendLine("bar", "NICK bar")
|
|
|
|
self.sendLine("bar", "REGISTER * shivarampassphrase")
|
|
|
|
msgs = self.getMessages("bar")
|
|
|
|
register_response = [msg for msg in msgs if msg.command == "REGISTER"][0]
|
2021-02-28 19:44:50 +00:00
|
|
|
self.assertMessageMatch(register_response, params=["SUCCESS", ANYSTR, ANYSTR])
|
2021-02-22 18:02:13 +00:00
|
|
|
|
2020-10-09 12:38:53 +00:00
|
|
|
|
|
|
|
class TestRegisterBeforeConnectDisallowed(cases.BaseServerTestCase):
|
2021-02-17 21:43:37 +00:00
|
|
|
@staticmethod
|
2021-02-28 12:40:08 +00:00
|
|
|
def config() -> cases.TestCaseControllerConfig:
|
|
|
|
return cases.TestCaseControllerConfig(
|
|
|
|
oragono_config=lambda config: config["accounts"]["registration"].update(
|
2021-02-22 18:02:13 +00:00
|
|
|
{"allow-before-connect": False}
|
2021-02-17 21:43:37 +00:00
|
|
|
)
|
2021-02-28 12:40:08 +00:00
|
|
|
)
|
2020-10-09 12:38:53 +00:00
|
|
|
|
2021-02-24 14:51:52 +00:00
|
|
|
@cases.mark_specifications("Oragono")
|
2020-10-09 12:38:53 +00:00
|
|
|
def testBeforeConnect(self):
|
2021-02-22 18:02:13 +00:00
|
|
|
self.addClient("bar")
|
|
|
|
self.sendLine("bar", "CAP LS 302")
|
|
|
|
caps = self.getCapLs("bar")
|
2020-10-09 12:38:53 +00:00
|
|
|
self.assertIn(REGISTER_CAP_NAME, caps)
|
|
|
|
self.assertEqual(caps[REGISTER_CAP_NAME], None)
|
2021-02-22 18:02:13 +00:00
|
|
|
self.sendLine("bar", "NICK bar")
|
|
|
|
self.sendLine("bar", "REGISTER * shivarampassphrase")
|
|
|
|
msgs = self.getMessages("bar")
|
|
|
|
fail_response = [msg for msg in msgs if msg.command == "FAIL"][0]
|
2021-02-28 19:44:50 +00:00
|
|
|
self.assertMessageMatch(
|
2021-02-28 22:30:56 +00:00
|
|
|
fail_response,
|
|
|
|
params=["REGISTER", "COMPLETE_CONNECTION_REQUIRED", ANYSTR, ANYSTR],
|
2021-02-28 19:44:50 +00:00
|
|
|
)
|
2021-02-22 18:02:13 +00:00
|
|
|
|
2020-10-09 12:38:53 +00:00
|
|
|
|
|
|
|
class TestRegisterEmailVerified(cases.BaseServerTestCase):
|
2021-02-17 21:43:37 +00:00
|
|
|
@staticmethod
|
2021-02-28 12:40:08 +00:00
|
|
|
def config() -> cases.TestCaseControllerConfig:
|
|
|
|
return cases.TestCaseControllerConfig(
|
|
|
|
oragono_config=lambda config: config["accounts"]["registration"].update(
|
2021-02-17 21:43:37 +00:00
|
|
|
{
|
2021-02-22 18:02:13 +00:00
|
|
|
"email-verification": {
|
|
|
|
"enabled": True,
|
|
|
|
"sender": "test@example.com",
|
|
|
|
"require-tls": True,
|
|
|
|
"helo-domain": "example.com",
|
2021-02-17 21:43:37 +00:00
|
|
|
},
|
2021-02-22 18:02:13 +00:00
|
|
|
"allow-before-connect": True,
|
2021-02-17 21:43:37 +00:00
|
|
|
}
|
|
|
|
)
|
2021-02-28 12:40:08 +00:00
|
|
|
)
|
2020-10-09 12:38:53 +00:00
|
|
|
|
2021-02-24 14:51:52 +00:00
|
|
|
@cases.mark_specifications("Oragono")
|
2020-10-09 12:38:53 +00:00
|
|
|
def testBeforeConnect(self):
|
2021-02-22 18:02:13 +00:00
|
|
|
self.addClient("bar")
|
|
|
|
self.sendLine("bar", "CAP LS 302")
|
|
|
|
caps = self.getCapLs("bar")
|
2020-10-09 12:38:53 +00:00
|
|
|
self.assertIn(REGISTER_CAP_NAME, caps)
|
2021-02-22 18:02:13 +00:00
|
|
|
self.assertEqual(
|
|
|
|
set(caps[REGISTER_CAP_NAME].split(",")),
|
|
|
|
{"before-connect", "email-required"},
|
|
|
|
)
|
|
|
|
self.sendLine("bar", "NICK bar")
|
|
|
|
self.sendLine("bar", "REGISTER * shivarampassphrase")
|
|
|
|
msgs = self.getMessages("bar")
|
|
|
|
fail_response = [msg for msg in msgs if msg.command == "FAIL"][0]
|
2021-02-28 19:44:50 +00:00
|
|
|
self.assertMessageMatch(
|
|
|
|
fail_response, params=["REGISTER", "INVALID_EMAIL", ANYSTR, ANYSTR]
|
|
|
|
)
|
2020-10-09 12:38:53 +00:00
|
|
|
|
2021-02-24 14:51:52 +00:00
|
|
|
@cases.mark_specifications("Oragono")
|
2020-10-09 12:38:53 +00:00
|
|
|
def testAfterConnect(self):
|
2021-02-22 18:02:13 +00:00
|
|
|
self.connectClient("bar", name="bar")
|
|
|
|
self.sendLine("bar", "REGISTER * shivarampassphrase")
|
|
|
|
msgs = self.getMessages("bar")
|
|
|
|
fail_response = [msg for msg in msgs if msg.command == "FAIL"][0]
|
2021-02-28 19:44:50 +00:00
|
|
|
self.assertMessageMatch(
|
|
|
|
fail_response, params=["REGISTER", "INVALID_EMAIL", ANYSTR, ANYSTR]
|
|
|
|
)
|
2021-02-22 18:02:13 +00:00
|
|
|
|
2020-10-09 12:38:53 +00:00
|
|
|
|
|
|
|
class TestRegisterNoLandGrabs(cases.BaseServerTestCase):
|
2021-02-17 21:43:37 +00:00
|
|
|
@staticmethod
|
2021-02-28 12:40:08 +00:00
|
|
|
def config() -> cases.TestCaseControllerConfig:
|
|
|
|
return cases.TestCaseControllerConfig(
|
|
|
|
oragono_config=lambda config: config["accounts"]["registration"].update(
|
2021-02-22 18:02:13 +00:00
|
|
|
{"allow-before-connect": True}
|
2021-02-17 21:43:37 +00:00
|
|
|
)
|
2021-02-28 12:40:08 +00:00
|
|
|
)
|
2020-10-09 12:38:53 +00:00
|
|
|
|
2021-02-24 14:51:52 +00:00
|
|
|
@cases.mark_specifications("Oragono")
|
2020-10-09 12:38:53 +00:00
|
|
|
def testBeforeConnect(self):
|
|
|
|
# have an anonymous client take the 'root' username:
|
2021-02-22 18:02:13 +00:00
|
|
|
self.connectClient("root", name="root")
|
2020-10-09 12:38:53 +00:00
|
|
|
|
|
|
|
# cannot register it out from under the anonymous nick holder:
|
2021-02-22 18:02:13 +00:00
|
|
|
self.addClient("bar")
|
|
|
|
self.sendLine("bar", "NICK root")
|
|
|
|
self.sendLine("bar", "REGISTER * shivarampassphrase")
|
|
|
|
msgs = self.getMessages("bar")
|
|
|
|
fail_response = [msg for msg in msgs if msg.command == "FAIL"][0]
|
2021-02-28 19:44:50 +00:00
|
|
|
self.assertMessageMatch(
|
|
|
|
fail_response, params=["REGISTER", "USERNAME_EXISTS", ANYSTR, ANYSTR]
|
|
|
|
)
|