Skip to content

Commit df2880e

Browse files
authored
add an incorrect password test for PLAIN (#253)
* add an incorrect password test for PLAIN * derace test (hopefully)
1 parent 61a6f04 commit df2880e

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

irctest/server_tests/sasl.py

+30-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import base64
22

33
from irctest import cases, runner, scram
4-
from irctest.numerics import ERR_SASLFAIL
4+
from irctest.numerics import ERR_SASLFAIL, RPL_LOGGEDIN, RPL_SASLMECHS
55
from irctest.patma import ANYSTR
66

77

@@ -48,11 +48,37 @@ def testPlain(self):
4848
m = self.getRegistrationMessage(1)
4949
self.assertMessageMatch(
5050
m,
51-
command="900",
51+
command=RPL_LOGGEDIN,
5252
params=[ANYSTR, ANYSTR, "jilles", ANYSTR],
5353
fail_msg="Unexpected reply to correct SASL authentication: {msg}",
5454
)
5555

56+
@cases.mark_specifications("IRCv3")
57+
@cases.skipUnlessHasMechanism("PLAIN")
58+
def testPlainFailure(self):
59+
"""PLAIN authentication with incorrect username/password."""
60+
self.controller.registerUser(self, "jilles", "sesame")
61+
self.addClient()
62+
self.requestCapabilities(1, ["sasl"], skip_if_cap_nak=False)
63+
self.sendLine(1, "AUTHENTICATE PLAIN")
64+
m = self.getRegistrationMessage(1)
65+
self.assertMessageMatch(
66+
m,
67+
command="AUTHENTICATE",
68+
params=["+"],
69+
fail_msg="Sent “AUTHENTICATE PLAIN”, server should have "
70+
"replied with “AUTHENTICATE +”, but instead sent: {msg}",
71+
)
72+
# password 'millet'
73+
self.sendLine(1, "AUTHENTICATE amlsbGVzAGppbGxlcwBtaWxsZXQ=")
74+
m = self.getRegistrationMessage(1)
75+
self.assertMessageMatch(
76+
m,
77+
command=ERR_SASLFAIL,
78+
params=[ANYSTR, ANYSTR],
79+
fail_msg="Unexpected reply to incorrect SASL authentication: {msg}",
80+
)
81+
5682
@cases.mark_specifications("IRCv3")
5783
@cases.skipUnlessHasMechanism("PLAIN")
5884
def testPlainNonAscii(self):
@@ -161,11 +187,11 @@ def testMechanismNotAvailable(self):
161187
self.requestCapabilities(1, ["sasl"], skip_if_cap_nak=False)
162188
self.sendLine(1, "AUTHENTICATE FOO")
163189
m = self.getRegistrationMessage(1)
164-
while m.command == "908": # RPL_SASLMECHS
190+
while m.command == RPL_SASLMECHS:
165191
m = self.getRegistrationMessage(1)
166192
self.assertMessageMatch(
167193
m,
168-
command="904",
194+
command=ERR_SASLFAIL,
169195
fail_msg="Did not reply with 904 to “AUTHENTICATE FOO”: {msg}",
170196
)
171197

0 commit comments

Comments
 (0)