mirror of
https://github.com/znc/znc.git
synced 2026-05-18 15:25:53 +02:00
Add modpython sasl test
This commit is contained in:
@@ -355,5 +355,54 @@ TEST_F(ZNCTest, ModpythonCommand) {
|
||||
client.ReadUntil(":*cmdtest!cmdtest@znc.in PRIVMSG nick :ping понг");
|
||||
}
|
||||
|
||||
TEST_F(ZNCTest, ModpythonSaslAuth) {
|
||||
#ifndef WANT_PYTHON
|
||||
GTEST_SKIP() << "Modpython is disabled";
|
||||
#endif
|
||||
auto znc = Run();
|
||||
znc->CanLeak();
|
||||
|
||||
InstallModule("sasltest.py", R"(
|
||||
import znc
|
||||
|
||||
class sasltest(znc.Module):
|
||||
|
||||
module_types = [znc.CModInfo.GlobalModule]
|
||||
|
||||
def OnClientGetSASLMechanisms(self, ssMechanisms):
|
||||
ssMechanisms.insert("FOO")
|
||||
|
||||
def OnClientSASLServerInitialChallenge(self, sMechanism, sResponse):
|
||||
if sMechanism == "FOO":
|
||||
sResponse.s = "Welcome"
|
||||
return znc.CONTINUE
|
||||
|
||||
def OnClientSASLAuthenticate(self, sMechanism, sMessage):
|
||||
if sMechanism == "FOO":
|
||||
user = znc.CZNC.Get().FindUser("user")
|
||||
self.GetClient().AcceptSASLLogin(user)
|
||||
return znc.HALT
|
||||
return znc.CONTINUE
|
||||
|
||||
)");
|
||||
auto ircd = ConnectIRCd();
|
||||
auto client = LoginClient();
|
||||
client.Write("znc loadmod modpython");
|
||||
client.Write("znc loadmod sasltest");
|
||||
client.ReadUntil("Loaded");
|
||||
|
||||
auto client2 = ConnectClient();
|
||||
client2.Write("CAP LS 302");
|
||||
client2.Write("NICK nick");
|
||||
client2.ReadUntil(" sasl=FOO,PLAIN ");
|
||||
client2.Write("CAP REQ :sasl");
|
||||
client2.Write("AUTHENTICATE FOO");
|
||||
client2.ReadUntil("AUTHENTICATE " + QByteArrayLiteral("Welcome").toBase64());
|
||||
client2.Write("AUTHENTICATE +");
|
||||
client2.ReadUntil(
|
||||
":irc.znc.in 900 nick nick!user@127.0.0.1 user :You are now logged in "
|
||||
"as user");
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace znc_inttest
|
||||
|
||||
Reference in New Issue
Block a user