diff options
Diffstat (limited to 'Swiften/FileTransfer/UnitTest/IncomingJingleFileTransferTest.cpp')
| -rw-r--r-- | Swiften/FileTransfer/UnitTest/IncomingJingleFileTransferTest.cpp | 93 | 
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); | 
 Swift
 Swift