Skip registering passwords too long for one IRC line
The irctest controller's registerUser sends NickServ REGISTER as a single PRIVMSG, so a password that overflows the 512-byte line limit gets truncated on the wire and can never match a later SASL login. Raise NotImplementedByController for those, like the reference services controllers, so such cases skip instead of failing spuriously.
This commit is contained in:
parent
e5c15421c8
commit
172e50c748
1 changed files with 19 additions and 1 deletions
|
|
@ -15,8 +15,10 @@ real network. See https://github.com/progval/irctest
|
|||
"""
|
||||
import os
|
||||
import shutil
|
||||
from typing import Type
|
||||
from typing import Optional, Type
|
||||
|
||||
import irctest.cases
|
||||
import irctest.runner
|
||||
from irctest.basecontrollers import BaseServicesController, DirectoryBasedController
|
||||
|
||||
CONFIG = """\
|
||||
|
|
@ -52,6 +54,22 @@ class FedservController(BaseServicesController, DirectoryBasedController):
|
|||
|
||||
self.proc = self.execute([binary, "config.toml"], cwd=self.directory)
|
||||
|
||||
def registerUser(
|
||||
self,
|
||||
case: irctest.cases.BaseServerTestCase,
|
||||
username: str,
|
||||
password: Optional[str] = None,
|
||||
) -> None:
|
||||
# NickServ REGISTER is a single PRIVMSG, so a password that would push
|
||||
# the line past the 512-byte IRC limit can't be registered intact. Like
|
||||
# the reference services controllers, skip rather than silently truncate.
|
||||
assert password
|
||||
if len(password.encode()) > 400:
|
||||
raise irctest.runner.NotImplementedByController(
|
||||
"Passwords too long to REGISTER in a single IRC message"
|
||||
)
|
||||
super().registerUser(case, username, password)
|
||||
|
||||
|
||||
def get_irctest_controller_class() -> Type[FedservController]:
|
||||
return FedservController
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue