From 2df0ebf2dfed1dcbf80c92bff8361e2a04581bec Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Wed, 25 Feb 2015 18:35:30 +0100 Subject: Add support for a fixed_irc_server configuration This option lets the administrator choose a specific IRC server, and only that server can be used with this biboumi instance. In this mode, JIDs to use are changed like this: - #chan%irc.example.com@biboumi.example.com -> #chan@biboumi.example.com - user!irc.example.com@biboumi.example.com -> user!@biboumi.example.com - #chan%irc.example.com@biboumi.example.com/Nick -> #chan@biboumi.example.com/Nick - %irc.example.com@biboumi.example.com -> no equivalent - irc.example.com@biboumi.example.com -> no equivalent --- src/test.cpp | 126 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 94 insertions(+), 32 deletions(-) (limited to 'src/test.cpp') diff --git a/src/test.cpp b/src/test.cpp index a4371b2..9fa2c99 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -303,38 +303,100 @@ int main() /** * IID parsing */ - std::cout << color << "Testing IID parsing…" << reset << std::endl; - Iid iid1("foo!irc.example.org"); - std::cout << std::to_string(iid1) << std::endl; - assert(std::to_string(iid1) == "foo!irc.example.org"); - assert(iid1.get_local() == "foo"); - assert(iid1.get_server() == "irc.example.org"); - assert(!iid1.is_channel); - assert(iid1.is_user); - - Iid iid2("#test%irc.example.org"); - std::cout << std::to_string(iid2) << std::endl; - assert(std::to_string(iid2) == "#test%irc.example.org"); - assert(iid2.get_local() == "#test"); - assert(iid2.get_server() == "irc.example.org"); - assert(iid2.is_channel); - assert(!iid2.is_user); - - Iid iid3("%irc.example.org"); - std::cout << std::to_string(iid3) << std::endl; - assert(std::to_string(iid3) == "%irc.example.org"); - assert(iid3.get_local() == ""); - assert(iid3.get_server() == "irc.example.org"); - assert(iid3.is_channel); - assert(!iid3.is_user); - - Iid iid4("irc.example.org"); - std::cout << std::to_string(iid4) << std::endl; - assert(std::to_string(iid4) == "irc.example.org"); - assert(iid4.get_local() == ""); - assert(iid4.get_server() == "irc.example.org"); - assert(!iid4.is_channel); - assert(!iid4.is_user); + { + std::cout << color << "Testing IID parsing…" << reset << std::endl; + Iid iid1("foo!irc.example.org"); + std::cout << std::to_string(iid1) << std::endl; + assert(std::to_string(iid1) == "foo!irc.example.org"); + assert(iid1.get_local() == "foo"); + assert(iid1.get_server() == "irc.example.org"); + assert(!iid1.is_channel); + assert(iid1.is_user); + + Iid iid2("#test%irc.example.org"); + std::cout << std::to_string(iid2) << std::endl; + assert(std::to_string(iid2) == "#test%irc.example.org"); + assert(iid2.get_local() == "#test"); + assert(iid2.get_server() == "irc.example.org"); + assert(iid2.is_channel); + assert(!iid2.is_user); + + Iid iid3("%irc.example.org"); + std::cout << std::to_string(iid3) << std::endl; + assert(std::to_string(iid3) == "%irc.example.org"); + assert(iid3.get_local() == ""); + assert(iid3.get_server() == "irc.example.org"); + assert(iid3.is_channel); + assert(!iid3.is_user); + + Iid iid4("irc.example.org"); + std::cout << std::to_string(iid4) << std::endl; + assert(std::to_string(iid4) == "irc.example.org"); + assert(iid4.get_local() == ""); + assert(iid4.get_server() == "irc.example.org"); + assert(!iid4.is_channel); + assert(!iid4.is_user); + + Iid iid5("nick!"); + std::cout << std::to_string(iid5) << std::endl; + assert(std::to_string(iid5) == "nick!"); + assert(iid5.get_local() == "nick"); + assert(iid5.get_server() == ""); + assert(!iid5.is_channel); + assert(iid5.is_user); + + Iid iid6("##channel%"); + std::cout << std::to_string(iid6) << std::endl; + assert(std::to_string(iid6) == "##channel%"); + assert(iid6.get_local() == "##channel"); + assert(iid6.get_server() == ""); + assert(iid6.is_channel); + assert(!iid6.is_user); + } + + { + std::cout << color << "Testing IID parsing with a fixed server configured…" << reset << std::endl; + // Now do the same tests, but with a configured fixed_irc_server + Config::set("fixed_irc_server", "fixed.example.com", false); + + Iid iid1("foo!irc.example.org"); + std::cout << std::to_string(iid1) << std::endl; + assert(std::to_string(iid1) == "foo!"); + assert(iid1.get_local() == "foo"); + assert(iid1.get_server() == "fixed.example.com"); + assert(!iid1.is_channel); + assert(iid1.is_user); + + Iid iid2("#test%irc.example.org"); + std::cout << std::to_string(iid2) << std::endl; + assert(std::to_string(iid2) == "#test"); + assert(iid2.get_local() == "#test"); + assert(iid2.get_server() == "fixed.example.com"); + assert(iid2.is_channel); + assert(!iid2.is_user); + + // Note that it is impossible to adress the XMPP server directly, or to + // use the virtual channel, in that mode + + // Iid iid3("%irc.example.org"); + // Iid iid4("irc.example.org"); + + Iid iid5("nick!"); + std::cout << std::to_string(iid5) << std::endl; + assert(std::to_string(iid5) == "nick!"); + assert(iid5.get_local() == "nick"); + assert(iid5.get_server() == "fixed.example.com"); + assert(!iid5.is_channel); + assert(iid5.is_user); + + Iid iid6("##channel%"); + std::cout << std::to_string(iid6) << std::endl; + assert(std::to_string(iid6) == "##channel"); + assert(iid6.get_local() == "##channel"); + assert(iid6.get_server() == "fixed.example.com"); + assert(iid6.is_channel); + assert(!iid6.is_user); + } return 0; } -- cgit v1.2.3