diff --git a/tests/libtransport/util.cpp b/tests/libtransport/util.cpp new file mode 100644 index 0000000000000000000000000000000000000000..eaf6ebcd7c024c5c14f2f53674a5b2aeab1bc670 --- /dev/null +++ b/tests/libtransport/util.cpp @@ -0,0 +1,72 @@ +#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" +#include "transport/utf8.h" + + +using namespace Transport; + +class UtilTest : public CPPUNIT_NS :: TestFixture{ + CPPUNIT_TEST_SUITE(UtilTest); + CPPUNIT_TEST(encryptDecryptPassword); + CPPUNIT_TEST(serializeGroups); + CPPUNIT_TEST(replaceInvalid); + CPPUNIT_TEST_SUITE_END(); + + public: + void setUp (void) { + } + + void tearDown (void) { + + } + + void encryptDecryptPassword() { + std::string encrypted = StorageBackend::encryptPassword("password", "key"); + CPPUNIT_ASSERT_EQUAL(std::string("password"), StorageBackend::decryptPassword(encrypted, "key")); + } + + void serializeGroups() { + std::vector groups; + std::string g = ""; + + CPPUNIT_ASSERT_EQUAL(g, StorageBackend::serializeGroups(groups)); + CPPUNIT_ASSERT_EQUAL(0, (int) StorageBackend::deserializeGroups(g).size()); + + groups.push_back("Buddies"); + g = "Buddies"; + CPPUNIT_ASSERT_EQUAL(g, StorageBackend::serializeGroups(groups)); + CPPUNIT_ASSERT_EQUAL(1, (int) StorageBackend::deserializeGroups(g).size()); + CPPUNIT_ASSERT_EQUAL(g, StorageBackend::deserializeGroups(g)[0]); + + groups.push_back("Buddies2"); + g = "Buddies\nBuddies2"; + CPPUNIT_ASSERT_EQUAL(g, StorageBackend::serializeGroups(groups)); + CPPUNIT_ASSERT_EQUAL(2, (int) StorageBackend::deserializeGroups(g).size()); + CPPUNIT_ASSERT_EQUAL(std::string("Buddies"), StorageBackend::deserializeGroups(g)[0]); + CPPUNIT_ASSERT_EQUAL(std::string("Buddies2"), StorageBackend::deserializeGroups(g)[1]); + } + + void replaceInvalid() { + std::string x("test\x80\xe0\xa0\xc0\xaf\xed\xa0\x80test"); + std::string a; + CPPUNIT_ASSERT(x.end() != utf8::find_invalid(x.begin(), x.end())); + utf8::replace_invalid(x.begin(), x.end(), std::back_inserter(a), '_'); + CPPUNIT_ASSERT_EQUAL(std::string("test____test"), a); + + a = ""; + utf8::remove_invalid(x.begin(), x.end(), std::back_inserter(a)); + CPPUNIT_ASSERT_EQUAL(std::string("testtest"), a); + } + +}; + +CPPUNIT_TEST_SUITE_REGISTRATION (UtilTest);