Files
@ c7e2635dde99
Branch filter:
Location: libtransport.git/src/tests/basictest.cpp - annotation
c7e2635dde99
6.1 KiB
text/x-c++hdr
user twitter.com as legacy name
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 04cbb3a90713 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 bb4ac38e5089 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 bb4ac38e5089 848f672b07e5 848f672b07e5 848f672b07e5 04cbb3a90713 bb4ac38e5089 04cbb3a90713 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 bb4ac38e5089 848f672b07e5 bb4ac38e5089 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 04cbb3a90713 04cbb3a90713 04cbb3a90713 04cbb3a90713 9e05a8dffbe8 9e05a8dffbe8 9e05a8dffbe8 9e05a8dffbe8 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 848f672b07e5 | #include "basictest.h"
#include "transport/userregistry.h"
#include "transport/config.h"
#include "transport/storagebackend.h"
#include "transport/user.h"
#include "transport/transport.h"
#include "transport/conversation.h"
#include "transport/usermanager.h"
#include "transport/localbuddy.h"
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include <Swiften/Swiften.h>
#include <Swiften/EventLoop/DummyEventLoop.h>
#include <Swiften/Server/Server.h>
#include <Swiften/Network/DummyNetworkFactories.h>
#include <Swiften/Network/DummyConnectionServer.h>
#include "Swiften/Server/ServerStanzaChannel.h"
#include "Swiften/Server/ServerFromClientSession.h"
#include "Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h"
#include "Swiften/Serializer/GenericPayloadSerializer.h"
#include "../storageparser.h"
#include "Swiften/Parser/PayloadParsers/AttentionParser.h"
#include "Swiften/Serializer/PayloadSerializers/AttentionSerializer.h"
#include "Swiften/Parser/PayloadParsers/XHTMLIMParser.h"
#include "Swiften/Serializer/PayloadSerializers/XHTMLIMSerializer.h"
#include "Swiften/Parser/PayloadParsers/StatsParser.h"
#include "Swiften/Serializer/PayloadSerializers/StatsSerializer.h"
#include "Swiften/Parser/PayloadParsers/GatewayPayloadParser.h"
#include "Swiften/Serializer/PayloadSerializers/GatewayPayloadSerializer.h"
#include "Swiften/Serializer/PayloadSerializers/SpectrumErrorSerializer.h"
#include "Swiften/Parser/PayloadParsers/MUCPayloadParser.h"
#include "transport/BlockParser.h"
#include "transport/BlockSerializer.h"
#include "Swiften/Parser/PayloadParsers/InvisibleParser.h"
#include "Swiften/Serializer/PayloadSerializers/InvisibleSerializer.h"
using namespace Transport;
void BasicTest::setMeUp (void) {
streamEnded = false;
std::istringstream ifs("service.server_mode = 1\nservice.jid=localhost");
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);
component->start();
userManager = new UserManager(component, userRegistry);
payloadSerializers = new Swift::FullPayloadSerializerCollection();
payloadParserFactories = new Swift::FullPayloadParserFactoryCollection();
payloadParserFactories->addFactory(new Swift::GenericPayloadParserFactory<StorageParser>("private", "jabber:iq:private"));
payloadParserFactories->addFactory(new Swift::GenericPayloadParserFactory<Swift::AttentionParser>("attention", "urn:xmpp:attention:0"));
payloadParserFactories->addFactory(new Swift::GenericPayloadParserFactory<Swift::XHTMLIMParser>("html", "http://jabber.org/protocol/xhtml-im"));
payloadParserFactories->addFactory(new Swift::GenericPayloadParserFactory<Transport::BlockParser>("block", "urn:xmpp:block:0"));
payloadParserFactories->addFactory(new Swift::GenericPayloadParserFactory<Swift::InvisibleParser>("invisible", "urn:xmpp:invisible:0"));
payloadParserFactories->addFactory(new Swift::GenericPayloadParserFactory<Swift::StatsParser>("query", "http://jabber.org/protocol/stats"));
payloadParserFactories->addFactory(new Swift::GenericPayloadParserFactory<Swift::GatewayPayloadParser>("query", "jabber:iq:gateway"));
payloadParserFactories->addFactory(new Swift::GenericPayloadParserFactory<Swift::MUCPayloadParser>("x", "http://jabber.org/protocol/muc"));
payloadSerializers->addSerializer(new Swift::AttentionSerializer());
payloadSerializers->addSerializer(new Swift::XHTMLIMSerializer());
payloadSerializers->addSerializer(new Transport::BlockSerializer());
payloadSerializers->addSerializer(new Swift::InvisibleSerializer());
payloadSerializers->addSerializer(new Swift::StatsSerializer());
payloadSerializers->addSerializer(new Swift::SpectrumErrorSerializer());
payloadSerializers->addSerializer(new Swift::GatewayPayloadSerializer());
parser = new Swift::XMPPParser(this, payloadParserFactories, factories->getXMLParserFactory());
serverFromClientSession = boost::shared_ptr<Swift::ServerFromClientSession>(new Swift::ServerFromClientSession("id", factories->getConnectionFactory()->createConnection(),
payloadParserFactories, payloadSerializers, userRegistry, factories->getXMLParserFactory(), Swift::JID("user@localhost/resource")));
serverFromClientSession->startSession();
serverFromClientSession->onDataWritten.connect(boost::bind(&BasicTest::handleDataReceived, this, _1));
dynamic_cast<Swift::ServerStanzaChannel *>(component->getStanzaChannel())->addSession(serverFromClientSession);
parser->parse("<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' to='localhost' version='1.0'>");
received.clear();
receivedData.clear();
loop->processEvents();
}
void BasicTest::tearMeDown (void) {
dynamic_cast<Swift::ServerStanzaChannel *>(component->getStanzaChannel())->removeSession(serverFromClientSession);
delete component;
delete userRegistry;
delete factories;
delete factory;
delete loop;
delete cfg;
delete parser;
received.clear();
receivedData.clear();
}
void BasicTest::handleDataReceived(const Swift::SafeByteArray &data) {
// std::cout << safeByteArrayToString(data) << "\n";
receivedData += safeByteArrayToString(data) + "\n";
parser->parse(safeByteArrayToString(data));
}
void BasicTest::handleStreamStart(const Swift::ProtocolHeader&) {
}
void BasicTest::dumpReceived() {
std::cout << receivedData << "\n";
}
void BasicTest::handleElement(boost::shared_ptr<Swift::Element> element) {
received.push_back(element);
}
void BasicTest::handleStreamEnd() {
streamEnded = true;
}
void BasicTest::injectPresence(boost::shared_ptr<Swift::Presence> &response) {
dynamic_cast<Swift::ServerStanzaChannel *>(component->getStanzaChannel())->onPresenceReceived(response);
}
void BasicTest::injectIQ(boost::shared_ptr<Swift::IQ> iq) {
dynamic_cast<Swift::ServerStanzaChannel *>(component->getStanzaChannel())->onIQReceived(iq);
}
Swift::Stanza *BasicTest::getStanza(boost::shared_ptr<Swift::Element> element) {
Swift::Stanza *stanza = dynamic_cast<Swift::Stanza *>(element.get());
CPPUNIT_ASSERT(stanza);
return stanza;
}
|