Add test for controlpanel

This commit is contained in:
KindOne
2015-11-06 20:45:38 -05:00
parent 622c07b864
commit 6ac59ee4df
+859
View File
@@ -383,6 +383,865 @@ TEST_F(ZNCTest, InvalidConfigInChan) {
znc->ShouldFinishItself(1);
}
TEST_F(ZNCTest, ControlpanelModule) {
auto znc = Run();Z;
auto ircd = ConnectIRCd();Z;
auto client = LoginClient();Z;
const QString request = "PRIVMSG *controlpanel :";
const QByteArray response = ":*controlpanel!znc@znc.in PRIVMSG nick :";
// TODO: Figure out how to check for "HAVE_ICU" to test encoding.
// TODO: Test the CTCP VERSION.
// 1. Test everything on "user".
// 2. Test everything on another user "KindOne" from "user".
// 3. Test one thing on "foobar" as the user does not exist from "user".
// Add myself so I can test other things along with "user".
client.Write(request + "AddUser KindOne hunter2");
client.ReadUntil(response + "User [KindOne] added!");Z;
client.Write(request + "AddUser KindOne hunter2");
client.ReadUntil(response + "Error: User [KindOne] already exists!");Z;
client.Write(request + "AddCTCP user VERSION Test");
client.ReadUntil(response + "Added!");Z;
client.Write(request + "AddNetwork user freenode");
client.ReadUntil(response + "Network [freenode] added for user [user].");Z;
client.Write(request + "AddServer user freenode 127.0.0.1 6667");
client.ReadUntil(response + "Added IRC Server [127.0.0.1 6667] for network [freenode] for user [user].");Z;
client.Write(request + "AddChan user freenode #znc");
client.ReadUntil(response + "Channel [#znc] for user [user] added.");Z;
client.Write(request + "AddChan user freenode #znc");
client.ReadUntil(response + "Error: [user] already has a channel named [#znc].");Z;
client.Write(request + "AddUser user hunter2");
client.ReadUntil(response + "Error: User [user] already exists!");Z;
client.Write(request + "CloneUser user user_clone");
client.ReadUntil(response + "User [user_clone] added!");Z;
client.Write(request + "CloneUser user user_clone");
client.ReadUntil(response + "Error: User not added! [User already exists]");Z;
client.Write(request + "DelCTCP user VERSION");
client.ReadUntil(response + "Successfully removed [VERSION] for user [user].");Z;
client.Write(request + "DelCTCP user VERSION");
client.ReadUntil(response + "Error: [VERSION] not found for user [user]!");Z;
client.Write(request + "DelChan user freenode #znc");
client.ReadUntil(response + "Channel(s) [#znc] for user [user] deleted.");Z;
client.Write(request + "DelChan user freenode #znc");
client.ReadUntil(response + "Error: User [user] does not have any channel matching [#znc].");Z;
client.Write(request + "DelNetwork freenode");
client.ReadUntil(response + "Network [freenode] deleted on user [user].");Z;
client.Write(request + "DelNetwork freenode");
client.ReadUntil(response + "Error: [user] does not have a network named [freenode].");Z;
client.Write(request + "AddNetwork user freenode");
client.ReadUntil(response + "Network [freenode] added for user [user].");Z;
client.Write(request + "AddChan user freenode #znc");
client.ReadUntil(response + "Channel [#znc] for user [user] added.");Z;
client.Write(request + "DelUser user_clone");
client.ReadUntil(response + "User [user_clone] deleted!");Z;
client.Write(request + "DelUser user_clone");
client.ReadUntil(response + "Error: User [user_clone] does not exist!");Z;
client.Write(request + "Disconnect user freenode");
client.ReadUntil(response + "Closed IRC connection for network [freenode] on user [user].");Z;
client.Write(request + "Disconnect user EFnet");
client.ReadUntil(response + "Error: [user] does not have a network named [EFnet].");Z;
client.Write(request + "Get Nick");
client.ReadUntil(response + "Nick = user");Z;
client.Write(request + "Get Altnick");
client.ReadUntil(response + "AltNick = user_");Z;
client.Write(request + "Get Ident");
client.ReadUntil(response + "Ident = user");Z;
client.Write(request + "Get RealName");
client.ReadUntil(response + "RealName = ZNC");Z;
client.Write(request + "Get BindHost");
client.ReadUntil(response + "BindHost = ");Z;
client.Write(request + "Get DefaultChanModes");
client.ReadUntil(response + "DefaultChanModes = ");Z;
client.Write(request + "Get QuitMsg");
client.ReadUntil(response + "QuitMsg = ");Z;
client.Write(request + "Get Password");
client.ReadUntil(response + "Error: Unknown variable");Z;
client.Write(request + "Get Timezone");
client.ReadUntil(response + "Timezone = ");Z;
client.Write(request + "Get TimestampFormat");
client.ReadUntil(response + "TimestampFormat = ");Z;
client.Write(request + "Get DCCBindHost");
client.ReadUntil(response + "DCCBindHost = ");Z;
client.Write(request + "Get StatusPrefix");
client.ReadUntil(response + "StatusPrefix = *");Z;
client.Write(request + "Get BufferCount");
client.ReadUntil(response + "BufferCount = 50");Z;
client.Write(request + "Get JoinTries");
client.ReadUntil(response + "JoinTries = ");Z;
client.Write(request + "Get MaxJoins");
client.ReadUntil(response + "MaxJoins = ");Z;
client.Write(request + "Get MaxNetworks");
client.ReadUntil(response + "MaxNetworks = ");Z;
client.Write(request + "Get MaxQueryBuffers");
client.ReadUntil(response + "MaxQueryBuffers = ");Z;
client.Write(request + "Get Admin");
client.ReadUntil(response + "Admin = true");Z;
client.Write(request + "Get AppendTimestamp");
client.ReadUntil(response + "AppendTimestamp = false");Z;
client.Write(request + "Get AutoClearChanBuffer");
client.ReadUntil(response + "AutoClearChanBuffer = true");Z;
client.Write(request + "Get AutoClearQueryBuffer");
client.ReadUntil(response + "AutoClearQueryBuffer = true");Z;
client.Write(request + "Get DenyLoadMod");
client.ReadUntil(response + "DenyLoadMod = false");Z;
client.Write(request + "Get DenySetBindHost");
client.ReadUntil(response + "DenySetBindHost = false");Z;
client.Write(request + "Get MultiClients");
client.ReadUntil(response + "MultiClients = true");Z;
client.Write(request + "Get PrependTimestamp");
client.ReadUntil(response + "PrependTimestamp = true");Z;
client.Write(request + "GetChan DefModes user freenode #znc");
client.ReadUntil(response + "#znc: DefModes = ");Z;
client.Write(request + "GetChan Key user freenode #znc");
client.ReadUntil(response + "#znc: Key = ");Z;
client.Write(request + "GetChan BufferSize user freenode #znc");
client.ReadUntil(response + "#znc: BufferSize = 50 (default)");Z;
client.Write(request + "GetChan InConfig user freenode #znc");
client.ReadUntil(response + "#znc: InConfig = true");Z;
client.Write(request + "GetChan AutoClearChanBuffer user freenode #znc");
client.ReadUntil(response + "#znc: AutoClearChanBuffer = true (default)");Z;
client.Write(request + "GetChan Detached user freenode #znc");
client.ReadUntil(response + "#znc: Detached = false");Z;
client.Write(request + "GetNetwork Nick user freenode");
client.ReadUntil(response + "Nick = user");Z;
client.Write(request + "GetNetwork Altnick user freenode");
client.ReadUntil(response + "AltNick = user_");Z;
client.Write(request + "GetNetwork Ident user freenode");
client.ReadUntil(response + "Ident = user");Z;
client.Write(request + "GetNetwork BindHost user freenode");
client.ReadUntil(response + "BindHost = ");Z;
client.Write(request + "GetNetwork FloodRate user freenode");
client.ReadUntil(response + "FloodRate = 1.00");Z;
client.Write(request + "GetNetwork FloodBurst user freenode");
client.ReadUntil(response + "FloodBurst = 4");Z;
client.Write(request + "GetNetwork JoinDelay user freenode");
client.ReadUntil(response + "JoinDelay = 0");Z;
client.Write(request + "GetNetwork QuitMsg user freenode");
client.ReadUntil(response + "QuitMsg = ");Z;
client.Write(request + "AddCTCP user VERSION Test");
client.ReadUntil(response + "Added!");Z;
client.Write(request + "ListCTCPs");
client.ReadUntil(response + "Request: VERSION");Z;
client.Write(request + "ListMods");
client.ReadUntil(response + "Usage: ListMods <username>");Z;
client.Write(request + "ListNetMods");
client.ReadUntil(response + "Usage: ListNetMods <username> <network>");Z;
client.Write(request + "ListNetworks");
client.ReadUntil(response + "Network: test");Z;
client.Write(request + "ListUsers");
client.ReadUntil(response + "Username: user");Z;
client.Write(request + "LoadModule");
client.ReadUntil(response + "Usage: LoadModule <username> <modulename> [args]");Z;
client.Write(request + "LoadModule user");
client.ReadUntil(response + "Usage: LoadModule <username> <modulename> [args]");Z;
client.Write(request + "LoadModule user log");
client.ReadUntil(response + "Loaded module [log]");Z;
client.Write(request + "LoadModule user log");
client.ReadUntil(response + "Unable to load module [log] because it is already loaded");Z;
client.Write(request + "LoadModule user autoop");
client.ReadUntil(response + "Unable to load module [autoop] [Module [autoop] does not support module type [User].");Z;
client.Write(request + "LoadNetModule user freenode log");
client.ReadUntil(response + "Loaded module [log]");Z;
client.Write(request + "LoadNetModule user freenode log");
client.ReadUntil(response + "Unable to load module [log] because it is already loaded");Z;
client.Write(request + "LoadNetModule user EFnet log");
client.ReadUntil(response + "Error: [user] does not have a network named [EFnet].");Z;
client.Write(request + "Reconnect user freenode");
client.ReadUntil(response + "Queued network [freenode] for user [user] for a reconnect.");Z;
client.Write(request + "Reconnect user EFnet");
client.ReadUntil(response + "Error: [user] does not have a network named [EFnet].");Z;
client.Write(request + "Set Nick user user1");
client.ReadUntil(response + "Nick = user1");Z;
client.Write(request + "Set Altnick user user_1");
client.ReadUntil(response + "AltNick = user_1");Z;
client.Write(request + "Set Ident user user1");
client.ReadUntil(response + "Ident = user1");Z;
client.Write(request + "Set RealName user lol");
client.ReadUntil(response + "RealName = lol");Z;
client.Write(request + "Set BindHost user 0.0.0.0");
client.ReadUntil(response + "BindHost = 0.0.0.0");Z;
client.Write(request + "Set BindHost user 0.0.0.0");
client.ReadUntil(response + "This bind host is already set!");Z;
// Need to clear the bindhost for testing in the 'setnetwork'.
client.Write("PRIVMSG *status :ClearUserBindHost");
client.ReadUntil(":*status!znc@znc.in PRIVMSG nick :Bind host cleared for your user.");Z;
client.Write(request + "Set DefaultChanModes user +znst");
client.ReadUntil(response + "DefaultChanModes = +znst");Z;
client.Write(request + "Set QuitMsg user Writing this took forever.");
client.ReadUntil(response + "QuitMsg = Writing this took forever");Z;
client.Write(request + "Set Password user hunter2");
client.ReadUntil(response + "Password has been changed!");Z;
client.Write(request + "Set Timezone user America/New_York");
client.ReadUntil(response + "Timezone = America/New_York");Z;
client.Write(request + "Set TimestampFormat user [%H:%M]");
client.ReadUntil(response + "TimestampFormat = [%H:%M]");Z;
client.Write(request + "Set DCCBindHost user 0.0.0.0");
client.ReadUntil(response + "DCCBindHost = 0.0.0.0");Z;
client.Write(request + "Set StatusPrefix user &");
client.ReadUntil(":&controlpanel!znc@znc.in PRIVMSG nick :StatusPrefix = &");Z;
client.Write("PRIVMSG &controlpanel :Set StatusPrefix user *");
client.ReadUntil(response + "StatusPrefix = *");Z;
client.Write(request + "SetChan DefModes user freenode #znc ms");
client.ReadUntil(response + "#znc: DefModes = ms");Z;
client.Write(request + "SetChan Key user freenode #znc KindOneRules");
client.ReadUntil(response + "#znc: Key = KindOneRules");Z;
client.Write(request + "SetChan BufferSize user freenode #znc 9001");
client.ReadUntil(response + "#znc: BufferSize = 9001");Z;
client.Write(request + "SetChan InConfig user freenode #znc true");
client.ReadUntil(response + "#znc: InConfig = true");Z;
client.Write(request + "SetChan AutoClearChanBuffer user freenode #znc false");
client.ReadUntil(response + "#znc: AutoClearChanBuffer = false");Z;
client.Write(request + "SetChan Detached user freenode #znc false");
client.ReadUntil(response + "#znc: Detached = false");Z;
client.Write(request + "SetNetwork Nick user freenode NotUser");
client.ReadUntil(response + "Nick = NotUser");Z;
client.Write(request + "SetNetwork Altnick user freenode NotUser_");
client.ReadUntil(response + "AltNick = NotUser_");Z;
client.Write(request + "SetNetwork Ident user freenode identd");
client.ReadUntil(response + "Ident = identd");Z;
client.Write(request + "SetNetwork BindHost user freenode 0.0.0.0");
client.ReadUntil(response + "BindHost = 0.0.0.0");Z;
client.Write(request + "SetNetwork FloodRate user freenode 66.00");
client.ReadUntil(response + "FloodRate = 66.00");Z;
client.Write(request + "SetNetwork FloodBurst user freenode 55");
client.ReadUntil(response + "FloodBurst = 55");Z;
client.Write(request + "SetNetwork JoinDelay user freenode 22");
client.ReadUntil(response + "JoinDelay = 22");Z;
client.Write(request + "SetNetwork QuitMsg user freenode telnet");
client.ReadUntil(response + "QuitMsg = telnet");Z;
client.Write(request + "Get Nick user");
client.ReadUntil(response + "Nick = user1");Z;
client.Write(request + "Get Altnick user");
client.ReadUntil(response + "AltNick = user_1");Z;
client.Write(request + "Get Ident user");
client.ReadUntil(response + "Ident = user1");Z;
client.Write(request + "Get RealName user");
client.ReadUntil(response + "RealName = lol");Z;
client.Write(request + "Get BindHost user");
client.ReadUntil(response + "BindHost = ");Z;
client.Write(request + "Get DefaultChanModes user");
client.ReadUntil(response + "DefaultChanModes = +znst");Z;
client.Write(request + "Get QuitMsg user");
client.ReadUntil(response + "QuitMsg = Writing this took forever");Z;
client.Write(request + "Get Password user");
client.ReadUntil(response + "Error: Unknown variable");Z;
client.Write(request + "Get Timezone user");
client.ReadUntil(response + "Timezone = America/New_York");Z;
client.Write(request + "Get TimestampFormat user");
client.ReadUntil(response + "TimestampFormat = [%H:%M]");Z;
client.Write(request + "Get DCCBindHost user");
client.ReadUntil(response + "DCCBindHost = 0.0.0.0");Z;
client.Write(request + "Get StatusPrefix user");
client.ReadUntil(response + "StatusPrefix = *");Z;
client.Write(request + "GetChan DefModes user freenode #znc");
client.ReadUntil(response + "#znc: DefModes = ms");Z;
client.Write(request + "GetChan Key user freenode #znc");
client.ReadUntil(response + "#znc: Key = KindOneRules");Z;
client.Write(request + "GetChan BufferSize user freenode #znc");
client.ReadUntil(response + "#znc: BufferSize = 9001");Z;
client.Write(request + "GetChan InConfig user freenode #znc");
client.ReadUntil(response + "#znc: InConfig = true");Z;
client.Write(request + "GetChan AutoClearChanBuffer user freenode #znc");
client.ReadUntil(response + "#znc: AutoClearChanBuffer = false");Z;
client.Write(request + "GetChan Detached user freenode #znc");
client.ReadUntil(response + "#znc: Detached = false");Z;
client.Write(request + "GetNetwork Nick user freenode");
client.ReadUntil(response + "Nick = NotUser");Z;
client.Write(request + "GetNetwork Altnick user freenode");
client.ReadUntil(response + "AltNick = NotUser_");Z;
client.Write(request + "GetNetwork Ident user freenode");
client.ReadUntil(response + "Ident = identd");Z;
client.Write(request + "GetNetwork BindHost user freenode");
client.ReadUntil(response + "BindHost = 0.0.0.0");Z;
client.Write(request + "GetNetwork FloodRate user freenode");
client.ReadUntil(response + "FloodRate = 66.00");Z;
client.Write(request + "GetNetwork FloodBurst user freenode 55");
client.ReadUntil(response + "FloodBurst = 55");Z;
client.Write(request + "GetNetwork JoinDelay user freenode 22");
client.ReadUntil(response + "JoinDelay = 22");Z;
client.Write(request + "GetNetwork QuitMsg user freenode");
client.ReadUntil(response + "QuitMsg = telnet");Z;
client.Write(request + "UnLoadModule");
client.ReadUntil(response + "Usage: UnloadModule <username> <modulename>");Z;
client.Write(request + "UnLoadModule user");
client.ReadUntil(response + "Usage: UnloadModule <username> <modulename>");Z;
// https://github.com/znc/znc/issues/194
client.Write(request + "UnloadModule user controlpanel");
client.ReadUntil(response + "Please use /znc unloadmod controlpanel");Z;
client.Write(request + "UnLoadModule user log");
client.ReadUntil(response + "Unloaded module [log]");Z;
client.Write(request + "UnLoadModule user log");
client.ReadUntil(response + "Unable to unload module [log] [Module [log] not loaded.]");Z;
client.Write(request + "UnLoadNetModule user freenode log");
client.ReadUntil(response + "Unloaded module [log]");Z;
client.Write(request + "UnLoadNetModule user freenode log");
client.ReadUntil(response + "Unable to unload module [log] [Module [log] not loaded.]");Z;
client.Write(request + "UnLoadNetModule user EFnet log");
client.ReadUntil(response + "Error: [user] does not have a network named [EFnet].");Z;
// Test on second user "KindOne" from "user".
client.Write(request + "AddCTCP KindOne VERSION Test");
client.ReadUntil(response + "Added!");Z;
// Added at the very beginning.
client.Write(request + "AddNetwork KindOne freenode");
client.ReadUntil(response + "Network [freenode] added for user [KindOne].");Z;
client.Write(request + "AddServer KindOne freenode 127.0.0.1 6667");
client.ReadUntil(response + "Added IRC Server [127.0.0.1 6667] for network [freenode] for user [KindOne].");Z;
client.Write(request + "AddChan KindOne freenode #znc");
client.ReadUntil(response + "Channel [#znc] for user [KindOne] added.");Z;
client.Write(request + "AddChan KindOne freenode #znc");
client.ReadUntil(response + "Error: [KindOne] already has a channel named [#znc].");Z;
client.Write(request + "AddUser KindOne hunter2");
client.ReadUntil(response + "Error: User [KindOne] already exists!");Z;
client.Write(request + "CloneUser KindOne KindOne_clone");
client.ReadUntil(response + "User [KindOne_clone] added!");Z;
client.Write(request + "CloneUser KindOne KindOne_clone");
client.ReadUntil(response + "Error: User not added! [User already exists]");Z;
client.Write(request + "DelCTCP KindOne VERSION");
client.ReadUntil(response + "Successfully removed [VERSION] for user [KindOne].");Z;
client.Write(request + "DelCTCP KindOne VERSION");
client.ReadUntil(response + "Error: [VERSION] not found for user [KindOne]!");Z;
client.Write(request + "DelChan KindOne freenode #znc");
client.ReadUntil(response + "Channel(s) [#znc] for user [KindOne] deleted.");Z;
client.Write(request + "DelChan KindOne freenode #znc");
client.ReadUntil(response + "Error: User [KindOne] does not have any channel matching [#znc].");Z;
client.Write(request + "DelNetwork KindOne freenode");
client.ReadUntil(response + "Network [freenode] deleted on user [KindOne].");Z;
client.Write(request + "DelNetwork KindOne freenode");
client.ReadUntil(response + "Error: [KindOne] does not have a network named [freenode].");Z;
client.Write(request + "AddNetwork KindOne freenode");
client.ReadUntil(response + "Network [freenode] added for user [KindOne].");Z;
client.Write(request + "AddChan KindOne freenode #znc");
client.ReadUntil(response + "Channel [#znc] for user [KindOne] added.");Z;
client.Write(request + "DelUser KindOne_clone");
client.ReadUntil(response + "User [KindOne_clone] deleted!");Z;
client.Write(request + "DelUser KindOne_clone");
client.ReadUntil(response + "Error: User [KindOne_clone] does not exist!");Z;
client.Write(request + "Disconnect KindOne freenode");
client.ReadUntil(response + "Closed IRC connection for network [freenode] on user [KindOne].");Z;
client.Write(request + "Disconnect KindOne EFnet");
client.ReadUntil(response + "Error: [KindOne] does not have a network named [EFnet].");Z;
client.Write(request + "Get Nick KindOne");
client.ReadUntil(response + "Nick = KindOne");Z;
client.Write(request + "Get AltNick KindOne");
client.ReadUntil(response + "AltNick = KindOne");Z;
client.Write(request + "Get Ident KindOne");
client.ReadUntil(response + "Ident = KindOne");Z;
client.Write(request + "Get RealName KindOne");
client.ReadUntil(response + "RealName = ");Z;
client.Write(request + "Get BindHost KindOne");
client.ReadUntil(response + "BindHost = ");Z;
client.Write(request + "Get DefaultChanModes KindOne");
client.ReadUntil(response + "DefaultChanModes = ");Z;
client.Write(request + "Get QuitMsg KindOne");
client.ReadUntil(response + "QuitMsg = ");Z;
client.Write(request + "Get Password KindOne");
client.ReadUntil(response + "Error: Unknown variable");Z;
client.Write(request + "Get Timezone KindOne");
client.ReadUntil(response + "Timezone = ");Z;
client.Write(request + "Get TimestampFormat KindOne");
client.ReadUntil(response + "TimestampFormat = ");Z;
client.Write(request + "Get DCCBindHost KindOne");
client.ReadUntil(response + "DCCBindHost = ");Z;
client.Write(request + "Get StatusPrefix KindOne");
client.ReadUntil(response + "StatusPrefix = *");Z;
client.Write(request + "Get BufferCount KindOne");
client.ReadUntil(response + "BufferCount = 50");Z;
client.Write(request + "Get JoinTries KindOne");
client.ReadUntil(response + "JoinTries = ");Z;
client.Write(request + "Get MaxJoins KindOne");
client.ReadUntil(response + "MaxJoins = ");Z;
client.Write(request + "Get MaxNetworks KindOne");
client.ReadUntil(response + "MaxNetworks = ");Z;
client.Write(request + "Get MaxQueryBuffers KindOne");
client.ReadUntil(response + "MaxQueryBuffers = ");Z;
client.Write(request + "Get Admin KindOne");
client.ReadUntil(response + "Admin = false");Z;
client.Write(request + "Get AppendTimestamp KindOne");
client.ReadUntil(response + "AppendTimestamp = false");Z;
client.Write(request + "Get AutoClearChanBuffer KindOne");
client.ReadUntil(response + "AutoClearChanBuffer = true");Z;
client.Write(request + "Get AutoClearQueryBuffer KindOne");
client.ReadUntil(response + "AutoClearQueryBuffer = true");Z;
client.Write(request + "Get DenyLoadMod KindOne");
client.ReadUntil(response + "DenyLoadMod = false");Z;
client.Write(request + "Get DenySetBindHost KindOne");
client.ReadUntil(response + "DenySetBindHost = false");Z;
client.Write(request + "Get MultiClients KindOne");
client.ReadUntil(response + "MultiClients = true");Z;
client.Write(request + "Get PrependTimestamp KindOne");
client.ReadUntil(response + "PrependTimestamp = true");Z;
client.Write(request + "GetChan DefModes KindOne freenode #znc");
client.ReadUntil(response + "#znc: DefModes = ");Z;
client.Write(request + "GetChan Key KindOne freenode #znc");
client.ReadUntil(response + "#znc: Key = ");Z;
client.Write(request + "GetChan BufferSize KindOne freenode #znc");
client.ReadUntil(response + "#znc: BufferSize = 50 (default)");Z;
client.Write(request + "GetChan InConfig KindOne freenode #znc");
client.ReadUntil(response + "#znc: InConfig = true");Z;
client.Write(request + "GetChan AutoClearChanBuffer KindOne freenode #znc");
client.ReadUntil(response + "#znc: AutoClearChanBuffer = true (default)");Z;
client.Write(request + "GetChan Detached KindOne freenode #znc");
client.ReadUntil(response + "#znc: Detached = false");Z;
client.Write(request + "GetNetwork Nick KindOne freenode");
client.ReadUntil(response + "Nick = KindOne");Z;
client.Write(request + "GetNetwork Altnick KindOne freenode");
client.ReadUntil(response + "AltNick = KindOne");Z;
client.Write(request + "GetNetwork Ident KindOne freenode");
client.ReadUntil(response + "Ident = KindOne");Z;
client.Write(request + "GetNetwork BindHost KindOne freenode");
client.ReadUntil(response + "BindHost = ");Z;
client.Write(request + "GetNetwork FloodRate KindOne freenode");
client.ReadUntil(response + "FloodRate = 1.00");Z;
client.Write(request + "GetNetwork FloodBurst KindOne freenode");
client.ReadUntil(response + "FloodBurst = 4");Z;
client.Write(request + "GetNetwork JoinDelay KindOne freenode");
client.ReadUntil(response + "JoinDelay = 0");Z;
client.Write(request + "GetNetwork QuitMsg KindOne freenode");
client.ReadUntil(response + "QuitMsg = ");Z;
client.Write(request + "AddCTCP KindOne VERSION Test");
client.ReadUntil(response + "Added!");Z;
client.Write(request + "ListCTCPs KindOne");
client.ReadUntil(response + "Request: VERSION");Z;
client.Write(request + "ListMods KindOne");
client.ReadUntil(response + "User [KindOne] has no modules loaded.");Z;
client.Write(request + "LoadModule KindOne autoop");
client.ReadUntil(response + "Unable to load module [autoop] [Module [autoop] does not support module type [User].]");Z;
client.Write(request + "LoadModule KindOne perform");
client.ReadUntil(response + "Loaded module [perform]");Z;
client.Write(request + "ListMods KindOne");
client.ReadUntil(response + "Name: perform");Z;
client.Write(request + "ListNetMods KindOne");
client.ReadUntil(response + "Usage: ListNetMods <username> <network>");Z;
client.Write(request + "ListNetworks KindOne");
client.ReadUntil(response + "Network: freenode");Z;
client.Write(request + "ListUsers");
client.ReadUntil(response + "Username: user");Z;
client.Write(request + "LoadModule");
client.ReadUntil(response + "Usage: LoadModule <username> <modulename> [args]");Z;
client.Write(request + "LoadModule KindOne");
client.ReadUntil(response + "Usage: LoadModule <username> <modulename> [args]");Z;
client.Write(request + "LoadModule KindOne log");
client.ReadUntil(response + "Loaded module [log]");Z;
client.Write(request + "LoadModule KindOne log");
client.ReadUntil(response + "Unable to load module [log] because it is already loaded");Z;
client.Write(request + "LoadNetModule KindOne freenode log");
client.ReadUntil(response + "Loaded module [log]");Z;
client.Write(request + "LoadNetModule KindOne freenode log");
client.ReadUntil(response + "Unable to load module [log] because it is already loaded");Z;
client.Write(request + "LoadNetModule KindOne EFnet log");
client.ReadUntil(response + "Error: [KindOne] does not have a network named [EFnet].");Z;
client.Write(request + "Reconnect KindOne freenode");
client.ReadUntil(response + "Queued network [freenode] for user [KindOne] for a reconnect.");Z;
client.Write(request + "Reconnect KindOne EFnet");
client.ReadUntil(response + "Error: [KindOne] does not have a network named [EFnet].");Z;
client.Write(request + "Set Nick KindOne KindTwo");
client.ReadUntil(response + "Nick = KindTwo");Z;
client.Write(request + "Set Altnick KindOne KindTwo_");
client.ReadUntil(response + "AltNick = KindTwo_");Z;
client.Write(request + "Set Ident KindOne znc");
client.ReadUntil(response + "Ident = znc");Z;
client.Write(request + "Set RealName KindOne real_name");
client.ReadUntil(response + "RealName = real_name");Z;
client.Write(request + "Set BindHost KindOne 0.0.0.0");
client.ReadUntil(response + "BindHost = 0.0.0.0");Z;
client.Write(request + "Set DefaultChanModes KindOne +inst");
client.ReadUntil(response + "DefaultChanModes = +inst");Z;
client.Write(request + "Set QuitMsg KindOne Writing this took forever.");
client.ReadUntil(response + "QuitMsg = Writing this took forever");Z;
client.Write(request + "Set Password KindOne hunter2");
client.ReadUntil(response + "Password has been changed!");Z;
client.Write(request + "Set Timezone KindOne America/New_York");
client.ReadUntil(response + "Timezone = America/New_York");Z;
client.Write(request + "Set TimestampFormat KindOne [%H:%M]");
client.ReadUntil(response + "TimestampFormat = [%H:%M]");Z;
client.Write(request + "Set DCCBindHost KindOne 0.0.0.0");
client.ReadUntil(response + "DCCBindHost = 0.0.0.0");Z;
client.Write(request + "Set StatusPrefix KindOne &");
client.ReadUntil(response + "StatusPrefix = &");Z;
client.Write(request + "Set StatusPrefix KindOne *");
client.ReadUntil(response + "StatusPrefix = *");Z;
client.Write(request + "SetChan DefModes KindOne freenode #znc is");
client.ReadUntil(response + "#znc: DefModes = is");Z;
client.Write(request + "SetChan Key KindOne freenode #znc KindOneRules");
client.ReadUntil(response + "#znc: Key = KindOneRules");Z;
client.Write(request + "SetChan BufferSize KindOne freenode #znc 9001");
client.ReadUntil(response + "#znc: BufferSize = 9001");Z;
client.Write(request + "SetChan InConfig KindOne freenode #znc true");
client.ReadUntil(response + "#znc: InConfig = true");Z;
client.Write(request + "SetChan AutoClearChanBuffer KindOne freenode #znc false");
client.ReadUntil(response + "#znc: AutoClearChanBuffer = false");Z;
client.Write(request + "SetChan Detached KindOne freenode #znc false");
client.ReadUntil(response + "#znc: Detached = false");Z;
client.Write(request + "SetNetwork Nick KindOne freenode KindTwo");
client.ReadUntil(response + "Nick = KindTwo");Z;
client.Write(request + "SetNetwork Altnick KindOne freenode KindTwo_");
client.ReadUntil(response + "AltNick = KindTwo_");Z;
client.Write(request + "SetNetwork Ident KindOne freenode znc");
client.ReadUntil(response + "Ident = znc");Z;
client.Write(request + "SetNetwork BindHost KindOne freenode 0.0.0.0");
client.ReadUntil(response + "This bind host is already set!");Z;
client.Write(request + "SetNetwork FloodRate KindOne freenode 42.00");
client.ReadUntil(response + "FloodRate = 42.00");Z;
client.Write(request + "SetNetwork FloodBurst KindOne freenode 20");
client.ReadUntil(response + "FloodBurst = 20");Z;
client.Write(request + "SetNetwork JoinDelay KindOne freenode 5");
client.ReadUntil(response + "JoinDelay = 5");Z;
client.Write(request + "SetNetwork QuitMsg KindOne freenode telnet");
client.ReadUntil(response + "QuitMsg = telnet");Z;
client.Write(request + "Get Nick KindOne");
client.ReadUntil(response + "Nick = KindTwo");Z;
client.Write(request + "Get Altnick KindOne");
client.ReadUntil(response + "AltNick = KindTwo_");Z;
client.Write(request + "Get Ident KindOne");
client.ReadUntil(response + "Ident = znc");Z;
client.Write(request + "Get RealName KindOne");
client.ReadUntil(response + "RealName = real_name");Z;
client.Write(request + "Get BindHost KindOne");
client.ReadUntil(response + "BindHost = 0.0.0.0");Z;
client.Write(request + "Get DefaultChanModes KindOne");
client.ReadUntil(response + "DefaultChanModes = +inst");Z;
client.Write(request + "Get QuitMsg KindOne");
client.ReadUntil(response + "QuitMsg = Writing this took forever");Z;
client.Write(request + "Get Password KindOne");
client.ReadUntil(response + "Error: Unknown variable");Z;
client.Write(request + "Get Timezone KindOne");
client.ReadUntil(response + "Timezone = America/New_York");Z;
client.Write(request + "Get TimestampFormat KindOne");
client.ReadUntil(response + "TimestampFormat = [%H:%M]");Z;
client.Write(request + "Get DCCBindHost KindOne");
client.ReadUntil(response + "DCCBindHost = 0.0.0.0");Z;
client.Write(request + "Get StatusPrefix KindOne");
client.ReadUntil(response + "StatusPrefix = *");Z;
client.Write(request + "GetChan DefModes KindOne freenode #znc");
client.ReadUntil(response + "#znc: DefModes = is");Z;
client.Write(request + "GetChan Key KindOne freenode #znc");
client.ReadUntil(response + "#znc: Key = KindOneRules");Z;
client.Write(request + "GetChan BufferSize KindOne freenode #znc");
client.ReadUntil(response + "#znc: BufferSize = 9001");Z;
client.Write(request + "GetChan InConfig KindOne freenode #znc");
client.ReadUntil(response + "#znc: InConfig = true");Z;
client.Write(request + "GetChan AutoClearChanBuffer KindOne freenode #znc");
client.ReadUntil(response + "#znc: AutoClearChanBuffer = false");Z;
client.Write(request + "GetChan Detached KindOne freenode #znc");
client.ReadUntil(response + "#znc: Detached = false");Z;
client.Write(request + "GetNetwork Nick KindOne freenode");
client.ReadUntil(response + "Nick = KindTwo");Z;
client.Write(request + "GetNetwork Altnick KindOne freenode");
client.ReadUntil(response + "AltNick = KindTwo_");Z;
client.Write(request + "GetNetwork Ident KindOne freenode");
client.ReadUntil(response + "Ident = znc");Z;
client.Write(request + "GetNetwork BindHost KindOne freenode");
client.ReadUntil(response + "BindHost = 0.0.0.0");Z;
client.Write(request + "GetNetwork FloodRate KindOne freenode");
client.ReadUntil(response + "FloodRate = 42.00");Z;
client.Write(request + "GetNetwork FloodBurst KindOne freenode");
client.ReadUntil(response + "FloodBurst = 20");Z;
client.Write(request + "GetNetwork JoinDelay KindOne freenode");
client.ReadUntil(response + "JoinDelay = 5");Z;
client.Write(request + "GetNetwork QuitMsg KindOne freenode");
client.ReadUntil(response + "QuitMsg = telnet");Z;
client.Write(request + "UnLoadModule");
client.ReadUntil(response + "Usage: UnloadModule <username> <modulename>");Z;
client.Write(request + "UnLoadModule KindOne");
client.ReadUntil(response + "Usage: UnloadModule <username> <modulename>");Z;
client.Write(request + "UnLoadModule KindOne log");
client.ReadUntil(response + "Unloaded module [log]");Z;
client.Write(request + "UnLoadModule KindOne log");
client.ReadUntil(response + "Unable to unload module [log] [Module [log] not loaded.]");Z;
client.Write(request + "UnLoadNetModule KindOne freenode log");
client.ReadUntil(response + "Unloaded module [log]");Z;
client.Write(request + "UnLoadNetModule KindOne freenode log");
client.ReadUntil(response + "Unable to unload module [log] [Module [log] not loaded.]");Z;
client.Write(request + "UnLoadNetModule KindOne EFnet log");
client.ReadUntil(response + "Error: [KindOne] does not have a network named [EFnet].");Z;
// Test on "foobar", a user that does not exist.
client.Write(request + "AddCTCP foobar VERSION Test");
client.ReadUntil(response + "Error: User [foobar] not found.");Z;
}
TEST_F(ZNCTest, ShellModule) {
auto znc = Run();Z;
auto ircd = ConnectIRCd();Z;