diff options
Diffstat (limited to 'Swiften/Disco/UnitTest')
-rw-r--r-- | Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp b/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp index a8fe5b7..aec3a92 100644 --- a/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp +++ b/Swiften/Disco/UnitTest/CapsInfoGeneratorTest.cpp @@ -12,15 +12,13 @@ using namespace Swift; -class CapsInfoGeneratorTest : public CppUnit::TestFixture -{ +class CapsInfoGeneratorTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(CapsInfoGeneratorTest); CPPUNIT_TEST(testGenerate_XEP0115SimpleExample); + CPPUNIT_TEST(testGenerate_XEP0115ComplexExample); CPPUNIT_TEST_SUITE_END(); public: - CapsInfoGeneratorTest() {} - void testGenerate_XEP0115SimpleExample() { DiscoInfo discoInfo; discoInfo.addIdentity(DiscoInfo::Identity("Exodus 0.9.1", "client", "pc")); @@ -36,6 +34,51 @@ class CapsInfoGeneratorTest : public CppUnit::TestFixture CPPUNIT_ASSERT_EQUAL(String("sha-1"), result.getHash()); CPPUNIT_ASSERT_EQUAL(String("QgayPKawpkPSDYmwT/WM94uAlu0="), result.getVersion()); } + + void testGenerate_XEP0115ComplexExample() { + DiscoInfo discoInfo; + discoInfo.addIdentity(DiscoInfo::Identity("Psi 0.11", "client", "pc", "en")); + discoInfo.addIdentity(DiscoInfo::Identity("\xce\xa8 0.11", "client", "pc", "el")); + discoInfo.addFeature("http://jabber.org/protocol/disco#items"); + discoInfo.addFeature("http://jabber.org/protocol/caps"); + discoInfo.addFeature("http://jabber.org/protocol/disco#info"); + discoInfo.addFeature("http://jabber.org/protocol/muc"); + + Form::ref extension(new Form(Form::ResultType)); + FormField::ref field = HiddenFormField::create("urn:xmpp:dataforms:softwareinfo"); + field->setName("FORM_TYPE"); + extension->addField(field); + std::vector<String> ipVersions; + ipVersions.push_back("ipv6"); + ipVersions.push_back("ipv4"); + field = ListMultiFormField::create(ipVersions); + field->addRawValue("ipv6"); + field->addRawValue("ipv4"); + field->setName("ip_version"); + extension->addField(field); + field = TextSingleFormField::create("Psi"); + field->addRawValue("Psi"); + field->setName("software"); + extension->addField(field); + field = TextSingleFormField::create("0.11"); + field->addRawValue("0.11"); + field->setName("software_version"); + extension->addField(field); + field = TextSingleFormField::create("Mac"); + field->setName("os"); + field->addRawValue("Mac"); + extension->addField(field); + field = TextSingleFormField::create("10.5.1"); + field->setName("os_version"); + field->addRawValue("10.5.1"); + extension->addField(field); + discoInfo.addExtension(extension); + + CapsInfoGenerator testling("http://psi-im.org"); + CapsInfo result = testling.generateCapsInfo(discoInfo); + + CPPUNIT_ASSERT_EQUAL(String("q07IKJEyjvHSyhy//CH0CxmKi8w="), result.getVersion()); + } }; CPPUNIT_TEST_SUITE_REGISTRATION(CapsInfoGeneratorTest); |