diff -r 000000000000 -r 72b543305e3a email/pop3andsmtpmtm/popservermtm/test/src/CTestPOPSecureSocketTest.cpp --- /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 +#include + +//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 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; + } +