diff options
| author | Remko Tronçon <git@el-tramo.be> | 2009-11-22 10:20:58 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2009-11-22 10:27:01 (GMT) | 
| commit | 4e244a9d1967ad416530aa3b9b07faad54097327 (patch) | |
| tree | 413ee864cb85976178eaf9efee7cf6ff92acd4b7 | |
| parent | 38fbde49ec4ff77708237d768581a47e6dd7d553 (diff) | |
| download | swift-4e244a9d1967ad416530aa3b9b07faad54097327.zip swift-4e244a9d1967ad416530aa3b9b07faad54097327.tar.bz2 | |
Added SCRAM-SHA-1 unit test.
| -rw-r--r-- | Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp | 16 | ||||
| -rw-r--r-- | Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp | 5 | ||||
| -rw-r--r-- | Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp | 42 | ||||
| -rw-r--r-- | Swiften/SConscript | 1 | 
4 files changed, 58 insertions, 6 deletions
| diff --git a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp index 41e8f72..15c8ab6 100644 --- a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp +++ b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.cpp @@ -87,8 +87,20 @@ std::map<char, String> SCRAMSHA1ClientAuthenticator::parseMap(const String& s) {  }  ByteArray SCRAMSHA1ClientAuthenticator::getInitialBareClientMessage() const { -	// TODO: Replace , and = -	return ByteArray(String("n=" + getAuthenticationID() + ",r=" + clientnonce)); +	String authenticationID = getAuthenticationID(); +	String escapedAuthenticationID; +	for (size_t i = 0; i < authenticationID.getUTF8Size(); ++i) { +		if (authenticationID[i] == ',') { +			escapedAuthenticationID += "=2C"; +		} +		else if (authenticationID[i] == '=') { +			escapedAuthenticationID += "=3D"; +		} +		else { +			escapedAuthenticationID += authenticationID[i]; +		} +	} +	return ByteArray(String("n=" + escapedAuthenticationID + ",r=" + clientnonce));  }  } diff --git a/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp b/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp index b83e1f5..e92cd34 100644 --- a/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp +++ b/Swiften/SASL/UnitTest/PLAINClientAuthenticatorTest.cpp @@ -5,16 +5,13 @@  using namespace Swift; -class PLAINClientAuthenticatorTest : public CppUnit::TestFixture -{ +class PLAINClientAuthenticatorTest : public CppUnit::TestFixture {  		CPPUNIT_TEST_SUITE(PLAINClientAuthenticatorTest);  		CPPUNIT_TEST(testGetResponse_WithoutAuthzID);  		CPPUNIT_TEST(testGetResponse_WithAuthzID);  		CPPUNIT_TEST_SUITE_END();  	public: -		PLAINClientAuthenticatorTest() {} -  		void testGetResponse_WithoutAuthzID() {  			PLAINClientAuthenticator testling; diff --git a/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp b/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp new file mode 100644 index 0000000..9f7ef38 --- /dev/null +++ b/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp @@ -0,0 +1,42 @@ +#include <cppunit/extensions/HelperMacros.h> +#include <cppunit/extensions/TestFactoryRegistry.h> + +#include "Swiften/SASL/SCRAMSHA1ClientAuthenticator.h" +#include "Swiften/Base/ByteArray.h" + +using namespace Swift; + +class SCRAMSHA1ClientAuthenticatorTest : public CppUnit::TestFixture { +		CPPUNIT_TEST_SUITE(SCRAMSHA1ClientAuthenticatorTest); +		CPPUNIT_TEST(testGetInitialResponse); +		CPPUNIT_TEST(testGetInitialResponse_UsernameHasSpecialChars); +		CPPUNIT_TEST_SUITE_END(); + +	public: +		void setUp() { +			nonce = String("abcdefghABCDEFGH"); +		} + +		void testGetInitialResponse() { +			SCRAMSHA1ClientAuthenticator testling(nonce); +			testling.setCredentials("user", "pass", ""); + +			ByteArray response = testling.getResponse(); + +			CPPUNIT_ASSERT_EQUAL(String("n,,n=user,r=abcdefghABCDEFGH"), testling.getResponse().toString()); +		} + +		void testGetInitialResponse_UsernameHasSpecialChars() { +			SCRAMSHA1ClientAuthenticator testling(nonce); +			testling.setCredentials(",us=,er=", "pass", ""); + +			ByteArray response = testling.getResponse(); + +			CPPUNIT_ASSERT_EQUAL(String("n,,n==2Cus=3D=2Cer=3D,r=abcdefghABCDEFGH"), testling.getResponse().toString()); +		} + +	private: +		String nonce; +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(SCRAMSHA1ClientAuthenticatorTest); diff --git a/Swiften/SConscript b/Swiften/SConscript index d04c9fb..3b37f90 100644 --- a/Swiften/SConscript +++ b/Swiften/SConscript @@ -166,6 +166,7 @@ env.Append(UNITTEST_SOURCES = [  		File("Roster/UnitTest/XMPPRosterTest.cpp"),  		File("SASL/UnitTest/PLAINMessageTest.cpp"),  		File("SASL/UnitTest/PLAINClientAuthenticatorTest.cpp"), +		File("SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp"),  		File("Serializer/PayloadSerializers/UnitTest/PayloadsSerializer.cpp"),  		File("Serializer/PayloadSerializers/UnitTest/CapsInfoSerializerTest.cpp"),  		File("Serializer/PayloadSerializers/UnitTest/DiscoInfoSerializerTest.cpp"), | 
 Swift
 Swift