--- /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;
+ }
+