kickrejoin: Modernize and add test.
This commit is contained in:
1 parent
ec49f11be6
commit
9dbf062d87
2 files changed
+23
-5
No files matched your search
@@ -109,15 +109,16 @@ class CRejoinMod : public CModule {
|
||||
PutModule(t_s("Rejoin delay is disabled"));
|
||||
}
|
||||
|
||||
void OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& pChan,
|
||||
const CString& sMessage) override {
|
||||
void OnKickMessage(CKickMessage& Message) override {
|
||||
const CString sKickedNick = Message.GetKickedNick();
|
||||
CChan& Channel = *Message.GetChan();
|
||||
if (GetNetwork()->GetCurNick().Equals(sKickedNick)) {
|
||||
if (!delay) {
|
||||
PutIRC("JOIN " + pChan.GetName() + " " + pChan.GetKey());
|
||||
pChan.Enable();
|
||||
PutIRC("JOIN " + Channel.GetName() + " " + Channel.GetKey());
|
||||
Channel.Enable();
|
||||
return;
|
||||
}
|
||||
AddTimer(new CRejoinJob(this, delay, 1, "Rejoin " + pChan.GetName(),
|
||||
AddTimer(new CRejoinJob(this, delay, 1, "Rejoin " + Channel.GetName(),
|
||||
"Rejoin channel after a delay"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -911,5 +911,22 @@ TEST_F(ZNCTest, FloodDetachModule) {
|
||||
client.ReadUntil("Channel #test-ctcp was flooded");
|
||||
}
|
||||
|
||||
TEST_F(ZNCTest, KickRejoinModule) {
|
||||
auto znc = Run();
|
||||
auto ircd = ConnectIRCd();
|
||||
auto client = LoginClient();
|
||||
|
||||
client.Write("znc loadmod kickrejoin");
|
||||
client.ReadUntil("Loaded module");
|
||||
|
||||
ircd.Write(":server 001 nick :Hello");
|
||||
ircd.Write(":nick JOIN :#test");
|
||||
ircd.Write(":server 353 nick = #test :nick @foobar");
|
||||
ircd.Write(":server 366 nick #test :End of /NAMES list");
|
||||
|
||||
ircd.Write(":foobar!user@host KICK #test nick :Kicked!");
|
||||
ircd.ReadUntil("JOIN #test");
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace znc_inttest
|
||||
Reference in new issue
Block a user