email/pop3andsmtpmtm/popservermtm/test/src/CTestPOPSecureSocketTest.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/pop3andsmtpmtm/popservermtm/test/src/CTestPOPSecureSocketTest.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,241 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Brief description of test harness:
+// Tests SSL/TLS functionality in POPS
+// 
+//
+
+
+#include "CTestPOPSecureSocketTest.h"
+#include <iapprefs.h>
+#include <f32file.h>
+
+//Literals used
+_LIT(KFileName,"C:\\msgtest\\pops\\scripts\\MachineIP.txt");
+
+#define KMaxIpvalue 100
+
+#if defined (__WINS__)
+	#define PDD_NAME		_L("ECDRV")
+	#define LDD_NAME		_L("ECOMM")
+#else
+	#define PDD_NAME		_L("EUART1")
+	#define LDD_NAME		_L("ECOMM")
+#endif
+
+_LIT(KPopsComponent,"T_POPSECURESOCKETS");
+_LIT(KPopTeststart, "T_POPSECURESOCKETS - START POPS SecureSockets Functionality Testing");
+_LIT(KPopTestend, "T_POPSECURESOCKETS - END POPS SecureSockets Functionality Testing");
+
+_LIT8(KPOPtestUserPass, "poptest");
+_LIT8(KPOPInValidUserPass, "InvaliedUserPass");
+_LIT8(KServerDomainname, "stalker.com");
+
+
+RTest test(KPopsComponent);
+
+
+CTestPOPSecureSocketTest::CTestPOPSecureSocketTest()
+	{
+	}
+
+CTestPOPSecureSocketTest ::~CTestPOPSecureSocketTest()
+	{
+	}
+/*
+// Read the Ip from the MachineIP.txt  config file.
+// And connect the server .
+*/
+TPtr16 CTestPOPSecureSocketTest::ReadServerIp()
+	{
+	RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	RFile file;	
+	User::LeaveIfError(file.Open(fs, KFileName, EFileRead));
+	CleanupClosePushL(file);
+	TInt  fileSize;
+	User::LeaveIfError(file.Size(fileSize));
+	HBufC8* iServerIp = HBufC8::NewL(fileSize);
+	TPtr8 ibufferPtr = iServerIp->Des();;
+	User::LeaveIfError(file.Read(ibufferPtr));
+	HBufC16* a16Value = HBufC16::NewL(KMaxIpvalue);
+	TPtr16 i16bufferPtr = a16Value->Des();
+	i16bufferPtr.Copy(ibufferPtr);
+	CleanupStack::PopAndDestroy(2);
+	file.Close();
+	return i16bufferPtr;
+	}
+	
+void CTestPOPSecureSocketTest::SetupL()
+	{
+	_LIT(KFunction, "SetupL");
+	INFO_PRINTF1(KFunction);
+	INFO_PRINTF1(KPopTeststart);
+		TInt err;
+	err=User::LoadPhysicalDevice(PDD_NAME);
+	if (err!=KErrNone && err!=KErrAlreadyExists)
+		User::Leave(err);
+	err=User::LoadLogicalDevice(LDD_NAME);
+	if (err!=KErrNone && err!=KErrAlreadyExists)
+		User::Leave(err);
+	
+	iActiveWaiter = new(ELeave)CActiveWaiter();
+	iTestUtils = CEmailTestUtils::NewL(test);
+	iTestUtils->FileSession().SetSessionPath( _L( "C:\\" ) );
+	iTestUtils->ClearEmailAccountsL();
+	iTestUtils->CreateAllTestDirectories();
+	iTestUtils->CleanMessageFolderL();
+	}
+
+void CTestPOPSecureSocketTest::TearDownL()
+	{
+	_LIT(KFunction, "TearDownL");
+	INFO_PRINTF1(KFunction);
+	
+	delete iActiveWaiter;
+	iActiveWaiter = NULL;
+	delete iTestUtils;
+	iTestUtils = NULL;
+	INFO_PRINTF1(KPopTestend);
+	}
+
+void CTestPOPSecureSocketTest::TestRunPopSSLTLSTestsL()
+	{
+	_LIT(KFunction1, "TestRunNonApopTestsL");
+	INFO_PRINTF1(KFunction1);
+
+	TPtr16 i16testbufferPtr = ReadServerIp();	
+	//-------------------------------
+	//	Test 1 (Support SSl-TLS)
+	//-------------------------------
+	TypeOfTest aType1(EpopApopTLSok);
+	SetSettingsL(aType1,i16testbufferPtr);
+	ConnectToRemoteServerL(aType1);
+	DisconnectL(); 
+	
+	//-------------------------------
+	//	Test 2 (Invalid User)
+	//-------------------------------
+
+	TypeOfTest aType2(EpopTlsInvalidUser);
+	SetSettingsL(aType2,i16testbufferPtr);
+	ConnectToRemoteServerL(aType2);
+	DisconnectL(); 
+
+	}
+
+// Setting up the POP3 Setting in SSL	
+void CTestPOPSecureSocketTest::SetSettingsL(TypeOfTest aType,TPtr16 aServerIp)
+	{
+	iTestUtils->GoClientSideL();	
+
+	if(!ipop3Service)
+		ipop3Service = iTestUtils->CreatePopServiceL();	
+
+
+	CEmailAccounts* account = CEmailAccounts::NewLC();
+	isettings = new(ELeave) CImPop3Settings();
+
+	
+	CImIAPPreferences* imapIAP = CImIAPPreferences::NewLC();
+	iSel = new (ELeave) CMsvEntrySelection;
+
+	TPopAccount pop3AccountId;
+	account->GetPopAccountL(ipop3Service, pop3AccountId);
+  	account->LoadPopSettingsL(pop3AccountId, *isettings);
+	
+	switch(aType)
+		{
+			case EpopApopTLSok :
+				 	isettings->SetServerAddressL(aServerIp );
+					isettings->SetLoginNameL(KPOPtestUserPass);
+					isettings->SetPasswordL(KPOPtestUserPass );
+					isettings->SetSecureSockets(ETrue);
+					isettings->SetSSLWrapper(ETrue);
+					isettings->SetPort(995);//SSL/TLS POP3 port 995 . by default it is 110.
+					isettings->SetTlsSslDomainL(KServerDomainname());
+
+				 break;
+				 
+			case EpopTlsInvalidUser :
+					isettings->SetServerAddressL(aServerIp);
+					isettings->SetLoginNameL(KPOPInValidUserPass);
+					isettings->SetPasswordL(KPOPInValidUserPass);
+					isettings->SetSecureSockets(ETrue);
+					isettings->SetSSLWrapper(ETrue);
+					isettings->SetPort(995);//SSL/TLS POP3 port 995 . by default it is 110.
+					isettings->SetTlsSslDomainL(KServerDomainname());
+				 break;
+		};
+
+	account->SavePopSettingsL(pop3AccountId, *isettings);
+	CleanupStack::PopAndDestroy(2, account);
+	
+	iTestUtils->GoServerSideL();
+	iTestUtils->InstantiatePopServerMtmL();
+	iPopServerMtm=iTestUtils->iPopServerMtm;
+	}
+
+//Connect to tyhe Server 
+void CTestPOPSecureSocketTest::ConnectToRemoteServerL(TypeOfTest aType)
+	{
+	TBuf8<128> parameter;
+	iSel->AppendL(ipop3Service);
+	TPop3Progress temp;	
+	TPckgC<TPop3Progress> paramPack(temp);
+	iPopServerMtm->StartCommandL(*iSel, KPOP3MTMConnect, parameter, iActiveWaiter->iStatus);
+	iActiveWaiter->WaitActive();
+	const TDesC8& progBuf = iTestUtils->iPopServerMtm->Progress();	
+	paramPack.Set(progBuf);
+	TPop3Progress progress=paramPack();	
+		switch(aType)
+		{
+			case EpopApopTLSok :
+				ASSERT_EQUALS( progress.iErrorCode, KErrNone|KErrAbort );
+				break;
+				
+			case EpopTlsInvalidUser :
+				{
+				if(progress.iErrorCode == KErrAbort )
+					{
+					ASSERT_EQUALS( progress.iErrorCode, KErrAbort );
+					}
+				else
+					{
+					ASSERT_EQUALS( progress.iErrorCode, -172 );
+					}
+				}
+				break;
+		};
+	}
+
+//Disconnecting the Connection
+void CTestPOPSecureSocketTest::DisconnectL()
+	{
+	TBuf8<128> parameter;
+	iSel->AppendL(ipop3Service);
+	iPopServerMtm->StartCommandL(*iSel,KPOP3MTMDisconnect , parameter, iActiveWaiter->iStatus);
+	iActiveWaiter->WaitActive();
+	ASSERT_EQUALS( iActiveWaiter->iStatus.Int( ), KErrNone );
+	}
+
+	
+CTestSuite* CTestPOPSecureSocketTest::CreateSuiteL(const TDesC& aName)
+	{
+	SUB_SUITE;
+	ADD_ASYNC_TEST_STEP(TestRunPopSSLTLSTestsL);
+	END_SUITE;
+	}
+