diff --git a/src/tests/component.cpp b/src/tests/component.cpp index 8d4b3be9247c1f02b201c967eae888dfff9d2e4d..a3f709b5950814046224a98c9a4a48a900f2836b 100644 --- a/src/tests/component.cpp +++ b/src/tests/component.cpp @@ -14,45 +14,11 @@ #include "Swiften/Server/ServerFromClientSession.h" #include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h" -using namespace Transport; +#include "basictest.h" -class TestingConversation : public Conversation { - public: - TestingConversation(ConversationManager *conversationManager, const std::string &legacyName, bool muc = false) : Conversation(conversationManager, legacyName, muc) { - } - - // Called when there's new message to legacy network from XMPP network - void sendMessage(boost::shared_ptr &message) { - - } -}; - -class TestingFactory : public Factory { - public: - TestingFactory() { - } - - // Creates new conversation (NetworkConversation in this case) - Conversation *createConversation(ConversationManager *conversationManager, const std::string &legacyName) { - Conversation *nc = new TestingConversation(conversationManager, legacyName); - return nc; - } - - // Creates new LocalBuddy - Buddy *createBuddy(RosterManager *rosterManager, const BuddyInfo &buddyInfo) { - LocalBuddy *buddy = new LocalBuddy(rosterManager, buddyInfo.id); - buddy->setAlias(buddyInfo.alias); - buddy->setName(buddyInfo.legacyName); - buddy->setSubscription(buddyInfo.subscription); - buddy->setGroups(buddyInfo.groups); - buddy->setFlags((BuddyFlag) buddyInfo.flags); - if (buddyInfo.settings.find("icon_hash") != buddyInfo.settings.end()) - buddy->setIconHash(buddyInfo.settings.find("icon_hash")->second.s); - return buddy; - } -}; +using namespace Transport; -class ComponentTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPParserClient { +class ComponentTest : public CPPUNIT_NS :: TestFixture, public BasicTest { CPPUNIT_TEST_SUITE(ComponentTest); CPPUNIT_TEST(handlePresenceWithNode); CPPUNIT_TEST(handlePresenceWithoutNode); @@ -62,48 +28,14 @@ class ComponentTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPParser void setUp (void) { onUserPresenceReceived = false; onUserDiscoInfoReceived = false; - std::istringstream ifs("service.server_mode = 1\n"); - cfg = new Config(); - cfg->load(ifs); - - factory = new TestingFactory(); - - loop = new Swift::DummyEventLoop(); - factories = new Swift::DummyNetworkFactories(loop); - userRegistry = new UserRegistry(cfg, factories); - - component = new Component(loop, factories, cfg, factory, userRegistry); + setMeUp(); component->onUserPresenceReceived.connect(boost::bind(&ComponentTest::handleUserPresenceReceived, this, _1)); component->onUserDiscoInfoReceived.connect(boost::bind(&ComponentTest::handleUserDiscoInfoReceived, this, _1, _2)); - component->start(); - - payloadSerializers = new Swift::FullPayloadSerializerCollection(); - payloadParserFactories = new Swift::FullPayloadParserFactoryCollection(); - parser = new Swift::XMPPParser(this, payloadParserFactories, factories->getXMLParserFactory()); - - serverFromClientSession = boost::shared_ptr(new Swift::ServerFromClientSession("id", factories->getConnectionFactory()->createConnection(), - payloadParserFactories, payloadSerializers, userRegistry, factories->getXMLParserFactory(), Swift::JID("user@localhost/resource"))); - serverFromClientSession->startSession(); - - serverFromClientSession->onDataWritten.connect(boost::bind(&ComponentTest::handleDataReceived, this, _1)); - - dynamic_cast(component->getStanzaChannel())->addSession(serverFromClientSession); - parser->parse(""); - received.clear(); - loop->processEvents(); } void tearDown (void) { - dynamic_cast(component->getStanzaChannel())->removeSession(serverFromClientSession); - delete component; - delete userRegistry; - delete factories; - delete factory; - delete loop; - delete cfg; - delete parser; - received.clear(); + tearMeDown(); } void handleUserDiscoInfoReceived(const Swift::JID& jid, boost::shared_ptr info) { @@ -114,22 +46,6 @@ class ComponentTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPParser onUserPresenceReceived = true; } - void handleDataReceived(const Swift::SafeByteArray &data) { - parser->parse(safeByteArrayToString(data)); - } - - void handleStreamStart(const Swift::ProtocolHeader&) { - - } - - void handleElement(boost::shared_ptr element) { - received.push_back(element); - } - - void handleStreamEnd() { - - } - void handlePresenceWithNode() { Swift::Presence::ref response = Swift::Presence::create(); response->setTo("somebody@localhost"); @@ -151,27 +67,9 @@ class ComponentTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPParser CPPUNIT_ASSERT(onUserPresenceReceived); } - Swift::Stanza *getStanza(boost::shared_ptr element) { - Swift::Stanza *stanza = dynamic_cast(element.get()); - CPPUNIT_ASSERT(stanza); - return stanza; - } - private: bool onUserPresenceReceived; bool onUserDiscoInfoReceived; - boost::shared_ptr serverFromClientSession; - Swift::FullPayloadSerializerCollection* payloadSerializers; - Swift::FullPayloadParserFactoryCollection* payloadParserFactories; - Swift::XMPPParser *parser; - UserRegistry *userRegistry; - Config *cfg; - Swift::Server *server; - Swift::DummyNetworkFactories *factories; - Swift::DummyEventLoop *loop; - TestingFactory *factory; - Component *component; - std::vector > received; }; CPPUNIT_TEST_SUITE_REGISTRATION (ComponentTest);