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 From c307df85c8e7d9bcd4570269bf13c3e92c3f5954 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Wed, 25 Feb 2015 19:05:04 +0100 Subject: Do not handle the "%" char in a special way, in the fixed_server mode Also fix some doc --- src/test.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/test.cpp') diff --git a/src/test.cpp b/src/test.cpp index 9fa2c99..553140f 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -369,13 +369,13 @@ int main() 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(std::to_string(iid2) == "#test%irc.example.org"); + assert(iid2.get_local() == "#test%irc.example.org"); 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 + // Note that it is impossible to adress the IRC server directly, or to // use the virtual channel, in that mode // Iid iid3("%irc.example.org"); @@ -391,8 +391,8 @@ int main() Iid iid6("##channel%"); std::cout << std::to_string(iid6) << std::endl; - assert(std::to_string(iid6) == "##channel"); - assert(iid6.get_local() == "##channel"); + 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); -- cgit v1.2.3