From 1621d7001dbc560df9d5e497db47cf315a2c83a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Sun, 22 Nov 2009 12:35:54 +0100
Subject: Added SCRAM-SHA-1 unit test for final client message.


diff --git a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h
index ec800cc..9504b35 100644
--- a/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h
+++ b/Swiften/SASL/SCRAMSHA1ClientAuthenticator.h
@@ -11,8 +11,8 @@ namespace Swift {
 		public:
 			SCRAMSHA1ClientAuthenticator(const String& nonce);
 			
-			ByteArray getResponse();
-			bool setChallenge(const ByteArray&);
+			virtual ByteArray getResponse();
+			virtual bool setChallenge(const ByteArray&);
 
 		private:
 			ByteArray getInitialBareClientMessage() const;
diff --git a/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp b/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp
index 9f7ef38..9f18ff0 100644
--- a/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp
+++ b/Swiften/SASL/UnitTest/SCRAMSHA1ClientAuthenticatorTest.cpp
@@ -10,15 +10,15 @@ class SCRAMSHA1ClientAuthenticatorTest : public CppUnit::TestFixture {
 		CPPUNIT_TEST_SUITE(SCRAMSHA1ClientAuthenticatorTest);
 		CPPUNIT_TEST(testGetInitialResponse);
 		CPPUNIT_TEST(testGetInitialResponse_UsernameHasSpecialChars);
+		CPPUNIT_TEST(testGetFinalResponse);
 		CPPUNIT_TEST_SUITE_END();
 
 	public:
 		void setUp() {
-			nonce = String("abcdefghABCDEFGH");
 		}
 
 		void testGetInitialResponse() {
-			SCRAMSHA1ClientAuthenticator testling(nonce);
+			SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH");
 			testling.setCredentials("user", "pass", "");
 
 			ByteArray response = testling.getResponse();
@@ -27,7 +27,7 @@ class SCRAMSHA1ClientAuthenticatorTest : public CppUnit::TestFixture {
 		}
 
 		void testGetInitialResponse_UsernameHasSpecialChars() {
-			SCRAMSHA1ClientAuthenticator testling(nonce);
+			SCRAMSHA1ClientAuthenticator testling("abcdefghABCDEFGH");
 			testling.setCredentials(",us=,er=", "pass", "");
 
 			ByteArray response = testling.getResponse();
@@ -35,8 +35,15 @@ class SCRAMSHA1ClientAuthenticatorTest : public CppUnit::TestFixture {
 			CPPUNIT_ASSERT_EQUAL(String("n,,n==2Cus=3D=2Cer=3D,r=abcdefghABCDEFGH"), testling.getResponse().toString());
 		}
 
-	private:
-		String nonce;
+		void testGetFinalResponse() {
+			SCRAMSHA1ClientAuthenticator testling("abcdefgh");
+			testling.setCredentials("user", "pass", "");
+			testling.setChallenge(ByteArray("r=abcdefghABCDEFGH,s=MTIzNDU2NzgK,i=4096"));
+
+			ByteArray response = testling.getResponse();
+
+			CPPUNIT_ASSERT_EQUAL(String("c=biwsCg==,r=abcdefghABCDEFGH,p=bVzb1EAf2hXw5Z+QIMYPTy5TOsU="), testling.getResponse().toString());
+		}
 };
 
 CPPUNIT_TEST_SUITE_REGISTRATION(SCRAMSHA1ClientAuthenticatorTest);
-- 
cgit v0.10.2-6-g49f6