diff --git a/tests/libtransport/config.cpp b/tests/libtransport/config.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fea9ada11c53bb5d50a556af3ae635710c23c7a6 --- /dev/null +++ b/tests/libtransport/config.cpp @@ -0,0 +1,93 @@ +#include +#include +#include +#include +#include +#include +#include +#include "Swiften/Server/ServerStanzaChannel.h" +#include "Swiften/Server/ServerFromClientSession.h" +#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h" +#include "basictest.h" + + +using namespace Transport; + +class ConfigTest : public CPPUNIT_NS :: TestFixture{ + CPPUNIT_TEST_SUITE(ConfigTest); + CPPUNIT_TEST(setStringTwice); + CPPUNIT_TEST(updateBackendConfig); + CPPUNIT_TEST(updateBackendConfigJIDEscaping); + CPPUNIT_TEST(unregisteredList); + CPPUNIT_TEST(unregisteredString); + CPPUNIT_TEST(unregisteredListAsString); + CPPUNIT_TEST(unregisteredStringAsList); + CPPUNIT_TEST_SUITE_END(); + + public: + void setUp (void) { + } + + void tearDown (void) { + + } + + void setStringTwice() { + char *argv[3] = {"binary", "--service.jids=localhost", NULL}; + Config cfg(2, argv); + std::istringstream ifs("service.jids = irc.freenode.org\n"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), CONFIG_STRING(&cfg, "service.jids")); + } + + void updateBackendConfig() { + Config cfg; + CPPUNIT_ASSERT(!cfg.hasKey("registration.needPassword")); + + cfg.updateBackendConfig("[registration]\nneedPassword=0\n"); + CPPUNIT_ASSERT(cfg.hasKey("registration.needPassword")); + CPPUNIT_ASSERT_EQUAL(false, CONFIG_BOOL(&cfg, "registration.needPassword")); + } + + void updateBackendConfigJIDEscaping() { + Config cfg; + std::istringstream ifs("service.jids = irc.freenode.org\n"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(true, CONFIG_BOOL(&cfg, "service.jid_escaping")); + + cfg.updateBackendConfig("[features]\ndisable_jid_escaping=1\n"); + CPPUNIT_ASSERT_EQUAL(false, CONFIG_BOOL(&cfg, "service.jid_escaping")); + } + + void unregisteredList() { + Config cfg; + std::istringstream ifs("service.irc_server = irc.freenode.org\nservice.irc_server=localhost\n"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(2, (int) CONFIG_LIST(&cfg, "service.irc_server").size()); + } + + void unregisteredString() { + Config cfg; + std::istringstream ifs("service.irc_server = irc.freenode.org"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(std::string("irc.freenode.org"), CONFIG_STRING(&cfg, "service.irc_server")); + } + + void unregisteredListAsString() { + Config cfg; + std::istringstream ifs("service.irc_server = irc.freenode.orgn\nservice.irc_server = irc2.freenode.org"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(std::string(""), CONFIG_STRING_DEFAULTED(&cfg, "service.irc_server", "")); + } + + void unregisteredStringAsList() { + Config cfg; + std::istringstream ifs("service.irc_server = irc.freenode.org"); + cfg.load(ifs); + std::list list; + CPPUNIT_ASSERT_EQUAL(0, (int) CONFIG_LIST_DEFAULTED(&cfg, "service.irc_server", list).size()); + } + +}; + +CPPUNIT_TEST_SUITE_REGISTRATION (ConfigTest);