Preparation for better tests

This commit is contained in:
Jan Kaluza 2011-10-19 14:35:27 +02:00
parent 9f2c95fe77
commit c86358c64f
6 changed files with 58 additions and 8 deletions

View file

@ -17,6 +17,7 @@ DummyNetworkFactories::DummyNetworkFactories(EventLoop* eventLoop) {
connectionFactory = new DummyConnectionFactory(eventLoop);
domainNameResolver = new PlatformDomainNameResolver(eventLoop);
connectionServerFactory = new DummyConnectionServerFactory(eventLoop);
m_platformXMLParserFactory = new PlatformXMLParserFactory();
}
DummyNetworkFactories::~DummyNetworkFactories() {
@ -24,6 +25,7 @@ DummyNetworkFactories::~DummyNetworkFactories() {
delete domainNameResolver;
delete connectionFactory;
delete timerFactory;
delete m_platformXMLParserFactory;
}
}

View file

@ -7,6 +7,7 @@
#pragma once
#include <Swiften/Network/NetworkFactories.h>
#include <Swiften/Parser/PlatformXMLParserFactory.h>
namespace Swift {
class EventLoop;
@ -37,7 +38,7 @@ namespace Swift {
}
Swift::XMLParserFactory* getXMLParserFactory() const {
return 0;
return m_platformXMLParserFactory;
}
Swift::TLSContextFactory* getTLSContextFactory() const {
@ -49,6 +50,7 @@ namespace Swift {
}
private:
PlatformXMLParserFactory *m_platformXMLParserFactory;
TimerFactory* timerFactory;
ConnectionFactory* connectionFactory;
DomainNameResolver* domainNameResolver;

View file

@ -36,7 +36,8 @@ ServerFromClientSession::ServerFromClientSession(
PayloadParserFactoryCollection* payloadParserFactories,
PayloadSerializerCollection* payloadSerializers,
UserRegistry* userRegistry,
XMLParserFactory* factory) :
XMLParserFactory* factory,
Swift::JID remoteJID) :
Session(connection, payloadParserFactories, payloadSerializers, factory),
id_(id),
userRegistry_(userRegistry),
@ -45,6 +46,7 @@ ServerFromClientSession::ServerFromClientSession(
allowSASLEXTERNAL(false),
tlsLayer(0),
tlsConnected(false) {
setRemoteJID(remoteJID);
}
ServerFromClientSession::~ServerFromClientSession() {

View file

@ -39,7 +39,8 @@ namespace Swift {
PayloadParserFactoryCollection* payloadParserFactories,
PayloadSerializerCollection* payloadSerializers,
UserRegistry* userRegistry,
XMLParserFactory* factory);
XMLParserFactory* factory,
Swift::JID remoteJID = Swift::JID());
~ServerFromClientSession();
boost::signal<void ()> onSessionStarted;

View file

@ -29,7 +29,6 @@ namespace {
}
void ServerStanzaChannel::addSession(boost::shared_ptr<ServerFromClientSession> session) {
std::cout << "ADDING SESSION\n";
sessions[session->getRemoteJID().toBare().toString()].push_back(session);
session->onSessionFinished.connect(boost::bind(&ServerStanzaChannel::handleSessionFinished, this, _1, session));
session->onElementReceived.connect(boost::bind(&ServerStanzaChannel::handleElement, this, _1, session));

View file

@ -5,10 +5,14 @@
#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"
using namespace Transport;
@ -48,9 +52,9 @@ class TestingFactory : public Factory {
}
};
class ComponentTest : public CPPUNIT_NS :: TestFixture {
class ComponentTest : public CPPUNIT_NS :: TestFixture, public Swift::XMPPParserClient {
CPPUNIT_TEST_SUITE(ComponentTest);
CPPUNIT_TEST(presence);
CPPUNIT_TEST(handlePresenceWithNode);
CPPUNIT_TEST_SUITE_END();
public:
@ -69,24 +73,64 @@ class ComponentTest : public CPPUNIT_NS :: TestFixture {
component = new Component(loop, factories, cfg, factory, userRegistry);
component->start();
payloadSerializers = new Swift::FullPayloadSerializerCollection();
payloadParserFactories = new Swift::FullPayloadParserFactoryCollection();
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(&ComponentTest::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();
loop->processEvents();
}
void tearDown (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();
}
void presence() {
void handleDataReceived(const Swift::SafeByteArray &data) {
parser->parse(safeByteArrayToString(data));
}
void handleStreamStart(const Swift::ProtocolHeader&) {
}
void handleElement(boost::shared_ptr<Swift::Element> element) {
received.push_back(element);
}
void handleStreamEnd() {
}
void handlePresenceWithNode() {
Swift::Presence::ref response = Swift::Presence::create();
response->setTo("localhost");
response->setFrom("user@localhost/resource");
dynamic_cast<Swift::ServerStanzaChannel *>(component->getStanzaChannel())->onPresenceReceived(response);
loop->processEvents();
}
private:
boost::shared_ptr<Swift::ServerFromClientSession> serverFromClientSession;
Swift::FullPayloadSerializerCollection* payloadSerializers;
Swift::FullPayloadParserFactoryCollection* payloadParserFactories;
Swift::XMPPParser *parser;
UserRegistry *userRegistry;
Config *cfg;
Swift::Server *server;
@ -94,7 +138,7 @@ class ComponentTest : public CPPUNIT_NS :: TestFixture {
Swift::DummyEventLoop *loop;
TestingFactory *factory;
Component *component;
std::vector<std::string> received;
std::vector<boost::shared_ptr<Swift::Element> > received;
};
CPPUNIT_TEST_SUITE_REGISTRATION (ComponentTest);