diff options
Diffstat (limited to 'Swiften/Client/UnitTest/ClientSessionTest.cpp')
| -rw-r--r-- | Swiften/Client/UnitTest/ClientSessionTest.cpp | 89 | 
1 files changed, 67 insertions, 22 deletions
| diff --git a/Swiften/Client/UnitTest/ClientSessionTest.cpp b/Swiften/Client/UnitTest/ClientSessionTest.cpp index 756287c..57e53e4 100644 --- a/Swiften/Client/UnitTest/ClientSessionTest.cpp +++ b/Swiften/Client/UnitTest/ClientSessionTest.cpp @@ -11,23 +11,25 @@  #include <boost/optional.hpp>  #include <boost/smart_ptr/make_shared.hpp> -#include "Swiften/Session/SessionStream.h" -#include "Swiften/Client/ClientSession.h" -#include "Swiften/Elements/StartTLSRequest.h" -#include "Swiften/Elements/StreamFeatures.h" -#include "Swiften/Elements/StreamError.h" -#include "Swiften/Elements/TLSProceed.h" -#include "Swiften/Elements/StartTLSFailure.h" -#include "Swiften/Elements/AuthRequest.h" -#include "Swiften/Elements/AuthSuccess.h" -#include "Swiften/Elements/AuthFailure.h" -#include "Swiften/Elements/StreamManagementEnabled.h" -#include "Swiften/Elements/StreamManagementFailed.h" -#include "Swiften/Elements/EnableStreamManagement.h" -#include "Swiften/Elements/IQ.h" -#include "Swiften/Elements/ResourceBind.h" -#include "Swiften/TLS/SimpleCertificate.h" -#include "Swiften/TLS/BlindCertificateTrustChecker.h" +#include <Swiften/Session/SessionStream.h> +#include <Swiften/Client/ClientSession.h> +#include <Swiften/Elements/Message.h> +#include <Swiften/Elements/StartTLSRequest.h> +#include <Swiften/Elements/StreamFeatures.h> +#include <Swiften/Elements/StreamError.h> +#include <Swiften/Elements/TLSProceed.h> +#include <Swiften/Elements/StartTLSFailure.h> +#include <Swiften/Elements/AuthRequest.h> +#include <Swiften/Elements/AuthSuccess.h> +#include <Swiften/Elements/AuthFailure.h> +#include <Swiften/Elements/StreamManagementEnabled.h> +#include <Swiften/Elements/StreamManagementFailed.h> +#include <Swiften/Elements/StanzaAck.h> +#include <Swiften/Elements/EnableStreamManagement.h> +#include <Swiften/Elements/IQ.h> +#include <Swiften/Elements/ResourceBind.h> +#include <Swiften/TLS/SimpleCertificate.h> +#include <Swiften/TLS/BlindCertificateTrustChecker.h>  using namespace Swift; @@ -45,6 +47,7 @@ class ClientSessionTest : public CppUnit::TestFixture {  		CPPUNIT_TEST(testAuthenticate_NoValidAuthMechanisms);  		CPPUNIT_TEST(testStreamManagement);  		CPPUNIT_TEST(testStreamManagement_Failed); +		CPPUNIT_TEST(testFinishAcksStanzas);  		/*  		CPPUNIT_TEST(testResourceBind);  		CPPUNIT_TEST(testResourceBind_ChangeResource); @@ -178,7 +181,7 @@ class ClientSessionTest : public CppUnit::TestFixture {  			server->sendStreamFeaturesWithPLAINAuthentication();  			CPPUNIT_ASSERT(needCredentials);  			CPPUNIT_ASSERT_EQUAL(ClientSession::WaitingForCredentials, session->getState()); -			session->sendCredentials("mypass"); +			session->sendCredentials(createSafeByteArray("mypass"));  			server->receiveAuthRequest("PLAIN");  			server->sendAuthSuccess();  			server->receiveStreamStart(); @@ -194,7 +197,7 @@ class ClientSessionTest : public CppUnit::TestFixture {  			server->sendStreamFeaturesWithPLAINAuthentication();  			CPPUNIT_ASSERT(needCredentials);  			CPPUNIT_ASSERT_EQUAL(ClientSession::WaitingForCredentials, session->getState()); -			session->sendCredentials("mypass"); +			session->sendCredentials(createSafeByteArray("mypass"));  			server->receiveAuthRequest("PLAIN");  			server->sendAuthFailure(); @@ -234,7 +237,7 @@ class ClientSessionTest : public CppUnit::TestFixture {  			server->receiveStreamStart();  			server->sendStreamStart();  			server->sendStreamFeaturesWithPLAINAuthentication(); -			session->sendCredentials("mypass"); +			session->sendCredentials(createSafeByteArray("mypass"));  			server->receiveAuthRequest("PLAIN");  			server->sendAuthSuccess();  			server->receiveStreamStart(); @@ -258,7 +261,7 @@ class ClientSessionTest : public CppUnit::TestFixture {  			server->receiveStreamStart();  			server->sendStreamStart();  			server->sendStreamFeaturesWithPLAINAuthentication(); -			session->sendCredentials("mypass"); +			session->sendCredentials(createSafeByteArray("mypass"));  			server->receiveAuthRequest("PLAIN");  			server->sendAuthSuccess();  			server->receiveStreamStart(); @@ -275,6 +278,17 @@ class ClientSessionTest : public CppUnit::TestFixture {  			session->finish();  		} +		void testFinishAcksStanzas() { +			boost::shared_ptr<ClientSession> session(createSession()); +			initializeSession(session); +			server->sendMessage(); +			server->sendMessage(); +			server->sendMessage(); + +			session->finish(); + +			server->receiveAck(3); +		}  	private:  		boost::shared_ptr<ClientSession> createSession() { @@ -285,6 +299,23 @@ class ClientSessionTest : public CppUnit::TestFixture {  			return session;  		} +		void initializeSession(boost::shared_ptr<ClientSession> session) { +			session->start(); +			server->receiveStreamStart(); +			server->sendStreamStart(); +			server->sendStreamFeaturesWithPLAINAuthentication(); +			session->sendCredentials(createSafeByteArray("mypass")); +			server->receiveAuthRequest("PLAIN"); +			server->sendAuthSuccess(); +			server->receiveStreamStart(); +			server->sendStreamStart(); +			server->sendStreamFeaturesWithBindAndStreamManagement(); +			server->receiveBind(); +			server->sendBindResult(); +			server->receiveStreamManagementEnable(); +			server->sendStreamManagementEnabled(); +		} +  		void handleSessionFinished(boost::shared_ptr<Error> error) {  			sessionFinishedReceived = true;  			sessionFinishedError = error; @@ -447,6 +478,12 @@ class ClientSessionTest : public CppUnit::TestFixture {  					onElementReceived(iq);  				} +				void sendMessage() { +					boost::shared_ptr<Message> message = boost::make_shared<Message>(); +					message->setTo(JID("foo@bar.com/bla")); +					onElementReceived(message); +				} +  				void receiveStreamStart() {  					Event event = popEvent();  					CPPUNIT_ASSERT(event.header); @@ -481,8 +518,16 @@ class ClientSessionTest : public CppUnit::TestFixture {  					bindID = iq->getID();  				} +				void receiveAck(unsigned int n) { +					Event event = popEvent(); +					CPPUNIT_ASSERT(event.element); +					boost::shared_ptr<StanzaAck> ack = boost::dynamic_pointer_cast<StanzaAck>(event.element); +					CPPUNIT_ASSERT(ack); +					CPPUNIT_ASSERT_EQUAL(n, ack->getHandledStanzasCount()); +				} +  				Event popEvent() { -					CPPUNIT_ASSERT(receivedEvents.size() > 0); +					CPPUNIT_ASSERT(!receivedEvents.empty());  					Event event = receivedEvents.front();  					receivedEvents.pop_front();  					return event; | 
 Swift
 Swift