summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/FileTransfer/UnitTest/IncomingJingleFileTransferTest.cpp')
-rw-r--r--Swiften/FileTransfer/UnitTest/IncomingJingleFileTransferTest.cpp93
1 files changed, 56 insertions, 37 deletions
diff --git a/Swiften/FileTransfer/UnitTest/IncomingJingleFileTransferTest.cpp b/Swiften/FileTransfer/UnitTest/IncomingJingleFileTransferTest.cpp
index a296b33..207f590 100644
--- a/Swiften/FileTransfer/UnitTest/IncomingJingleFileTransferTest.cpp
+++ b/Swiften/FileTransfer/UnitTest/IncomingJingleFileTransferTest.cpp
@@ -5,7 +5,7 @@
*/
/*
- * Copyright (c) 2013 Isode Limited.
+ * Copyright (c) 2013-2014 Isode Limited.
* All rights reserved.
* See the COPYING file for more information.
*/
@@ -22,14 +22,20 @@
#include <Swiften/Elements/IBB.h>
#include <Swiften/Elements/JingleIBBTransportPayload.h>
#include <Swiften/Elements/JingleS5BTransportPayload.h>
+#include <Swiften/Elements/JingleFileTransferDescription.h>
+#include <Swiften/FileTransfer/DefaultFileTransferTransporterFactory.h>
#include <Swiften/FileTransfer/ByteArrayWriteBytestream.h>
#include <Swiften/FileTransfer/IncomingJingleFileTransfer.h>
#include <Swiften/FileTransfer/SOCKS5BytestreamRegistry.h>
+#include <Swiften/Network/PlatformNetworkEnvironment.h>
#include <Swiften/FileTransfer/SOCKS5BytestreamProxiesManager.h>
+#include <Swiften/FileTransfer/SOCKS5BytestreamServerManager.h>
#include <Swiften/Jingle/FakeJingleSession.h>
+#include <Swiften/Network/NATTraverser.h>
#include <Swiften/Network/DummyTimerFactory.h>
#include <Swiften/EventLoop/DummyEventLoop.h>
#include <Swiften/Network/DummyConnectionFactory.h>
+#include <Swiften/Network/DummyConnectionServerFactory.h>
#include <Swiften/Network/PlatformNATTraversalWorker.h>
#include <Swiften/Queries/IQRouter.h>
#include <Swiften/Crypto/CryptoProvider.h>
@@ -42,53 +48,61 @@ using namespace boost;
class IncomingJingleFileTransferTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(IncomingJingleFileTransferTest);
- //CPPUNIT_TEST(test_AcceptOnyIBBSendsSessionAccept);
- //CPPUNIT_TEST(test_OnlyIBBTransferReceiveWorks);
+ CPPUNIT_TEST(test_AcceptOnyIBBSendsSessionAccept);
+ CPPUNIT_TEST(test_OnlyIBBTransferReceiveWorks);
//CPPUNIT_TEST(test_AcceptFailingS5BFallsBackToIBB);
CPPUNIT_TEST_SUITE_END();
public:
- // shared_ptr<IncomingJingleFileTransfer> createTestling() {
- // JID ourJID("our@jid.org/full");
- // return boost::shared_ptr<IncomingJingleFileTransfer>(new IncomingJingleFileTransfer(ourJID, shared_ptr<JingleSession>(session), jingleContentPayload, fakeRJTCSF.get(), fakeLJTCF.get(), iqRouter, bytestreamRegistry, bytestreamProxy, timerFactory, crypto.get()));
- // }
+ shared_ptr<IncomingJingleFileTransfer> createTestling() {
+ JID ourJID("our@jid.org/full");
+ return boost::make_shared<IncomingJingleFileTransfer>(ourJID, shared_ptr<JingleSession>(session), jingleContentPayload, ftTransporterFactory, timerFactory, crypto.get());
+ }
- // IQ::ref createIBBRequest(IBB::ref ibb, const JID& from, const std::string& id) {
- // IQ::ref request = IQ::createRequest(IQ::Set, JID("foo@bar.com/baz"), id, ibb);
- // request->setFrom(from);
- // return request;
- // }
+ IQ::ref createIBBRequest(IBB::ref ibb, const JID& from, const std::string& id) {
+ IQ::ref request = IQ::createRequest(IQ::Set, JID("foo@bar.com/baz"), id, ibb);
+ request->setFrom(from);
+ return request;
+ }
void setUp() {
crypto = boost::shared_ptr<CryptoProvider>(PlatformCryptoProvider::create());
eventLoop = new DummyEventLoop();
session = boost::make_shared<FakeJingleSession>("foo@bar.com/baz", "mysession");
- // jingleContentPayload = make_shared<JingleContentPayload>();
+ jingleContentPayload = make_shared<JingleContentPayload>();
// fakeRJTCSF = make_shared<FakeRemoteJingleTransportCandidateSelectorFactory>();
// fakeLJTCF = make_shared<FakeLocalJingleTransportCandidateGeneratorFactory>();
- // stanzaChannel = new DummyStanzaChannel();
- // iqRouter = new IQRouter(stanzaChannel);
- // bytestreamRegistry = new SOCKS5BytestreamRegistry();
- // timerFactory = new DummyTimerFactory();
- // connectionFactory = new DummyConnectionFactory(eventLoop);
- // bytestreamProxy = new SOCKS5BytestreamProxiesManager(connectionFactory, timerFactory);
+ stanzaChannel = new DummyStanzaChannel();
+ connectionFactory = new DummyConnectionFactory(eventLoop);
+ serverConnectionFactory = new DummyConnectionServerFactory(eventLoop);
+ iqRouter = new IQRouter(stanzaChannel);
+ bytestreamRegistry = new SOCKS5BytestreamRegistry();
+ networkEnvironment = new PlatformNetworkEnvironment();
+ natTraverser = new PlatformNATTraversalWorker(eventLoop);
+ bytestreamServerManager = new SOCKS5BytestreamServerManager(bytestreamRegistry, serverConnectionFactory, networkEnvironment, natTraverser);
+ idGenerator = new SimpleIDGenerator();
+ timerFactory = new DummyTimerFactory();
+ bytestreamProxy = new SOCKS5BytestreamProxiesManager(connectionFactory, timerFactory);
+ ftTransporterFactory = new DefaultFileTransferTransporterFactory(bytestreamRegistry, bytestreamServerManager, bytestreamProxy, idGenerator, connectionFactory, timerFactory, crypto.get(), iqRouter);
}
void tearDown() {
- // delete bytestreamProxy;
- // delete connectionFactory;
- // delete timerFactory;
- // delete bytestreamRegistry;
- // delete iqRouter;
- // delete stanzaChannel;
+ delete ftTransporterFactory;
+ delete bytestreamServerManager;
+ delete bytestreamProxy;
+ delete connectionFactory;
+ delete timerFactory;
+ delete bytestreamRegistry;
+ delete iqRouter;
+ delete stanzaChannel;
delete eventLoop;
+ Log::setLogLevel(Log::error);
}
// Tests whether IncomingJingleFileTransfer would accept a IBB only file transfer.
-#if 0
void test_AcceptOnyIBBSendsSessionAccept() {
//1. create your test incoming file transfer
shared_ptr<JingleFileTransferDescription> desc = make_shared<JingleFileTransferDescription>();
- desc->addOffer(StreamInitiationFileInfo("foo.txt", "", 10));
+ desc->setFileInfo(JingleFileTransferFileInfo("foo.txt", "", 10));
jingleContentPayload->addDescription(desc);
JingleIBBTransportPayload::ref tpRef = make_shared<JingleIBBTransportPayload>();
tpRef->setSessionID("mysession");
@@ -107,7 +121,7 @@ public:
void test_OnlyIBBTransferReceiveWorks() {
//1. create your test incoming file transfer
shared_ptr<JingleFileTransferDescription> desc = make_shared<JingleFileTransferDescription>();
- desc->addOffer(StreamInitiationFileInfo("file.txt", "", 10));
+ desc->setFileInfo(JingleFileTransferFileInfo("file.txt", "", 10));
jingleContentPayload->addDescription(desc);
JingleIBBTransportPayload::ref tpRef = make_shared<JingleIBBTransportPayload>();
tpRef->setSessionID("mysession");
@@ -139,6 +153,8 @@ public:
shared_ptr<ByteArrayWriteBytestream> byteStream = make_shared<ByteArrayWriteBytestream>();
fileTransfer->accept(byteStream);
+ // candidates are gathered
+
// check whether accept has been called
FakeJingleSession::AcceptCall acceptCall = getCall<FakeJingleSession::AcceptCall>(0);
CPPUNIT_ASSERT_EQUAL(payLoad->getSessionID(), acceptCall.payload->getSessionID());
@@ -149,7 +165,7 @@ public:
CPPUNIT_ASSERT(s5bPayload->hasCandidateError());
// indicate transport replace (Romeo)
- session->onTransportReplaceReceived(getContentID(), addJingleIBBPayload());
+ session->handleTransportReplaceReceived(getContentID(), addJingleIBBPayload());
FakeJingleSession::AcceptTransportCall acceptTransportCall = getCall<FakeJingleSession::AcceptTransportCall>(2);
@@ -158,16 +174,16 @@ public:
stanzaChannel->onIQReceived(createIBBRequest(IBB::createIBBData("mysession", 0, createByteArray("abc")), "foo@bar.com/baz", "id-a"));
CPPUNIT_ASSERT(createByteArray("abc") == byteStream->getData());
}
-
+#if 0
void test_S5BTransferReceiveTest() {
addFileTransferDescription();
JingleS5BTransportPayload::ref payLoad = addJingleS5BPayload();
}
-
+#endif
private:
void addFileTransferDescription() {
shared_ptr<JingleFileTransferDescription> desc = make_shared<JingleFileTransferDescription>();
- desc->addOffer(StreamInitiationFileInfo("file.txt", "", 10));
+ desc->setFileInfo(JingleFileTransferFileInfo("file.txt", "", 10));
jingleContentPayload->addDescription(desc);
}
@@ -196,23 +212,26 @@ private:
CPPUNIT_ASSERT(cmd);
return *cmd;
}
-#endif
private:
EventLoop* eventLoop;
boost::shared_ptr<CryptoProvider> crypto;
boost::shared_ptr<FakeJingleSession> session;
-#if 0
shared_ptr<JingleContentPayload> jingleContentPayload;
- shared_ptr<FakeRemoteJingleTransportCandidateSelectorFactory> fakeRJTCSF;
- shared_ptr<FakeLocalJingleTransportCandidateGeneratorFactory> fakeLJTCF;
+// shared_ptr<FakeRemoteJingleTransportCandidateSelectorFactory> fakeRJTCSF;
+// shared_ptr<FakeLocalJingleTransportCandidateGeneratorFactory> fakeLJTCF;
+ FileTransferTransporterFactory* ftTransporterFactory;
+ SOCKS5BytestreamServerManager* bytestreamServerManager;
DummyStanzaChannel* stanzaChannel;
IQRouter* iqRouter;
SOCKS5BytestreamRegistry* bytestreamRegistry;
DummyConnectionFactory* connectionFactory;
+ DummyConnectionServerFactory* serverConnectionFactory;
SOCKS5BytestreamProxiesManager* bytestreamProxy;
DummyTimerFactory* timerFactory;
-#endif
+ NetworkEnvironment* networkEnvironment;
+ NATTraverser* natTraverser;
+ IDGenerator* idGenerator;
};
CPPUNIT_TEST_SUITE_REGISTRATION(IncomingJingleFileTransferTest);