email/pop3andsmtpmtm/popservermtm/test/src/CTestPOPSynchroniseTest.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/pop3andsmtpmtm/popservermtm/test/src/CTestPOPSynchroniseTest.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,277 @@
+
+// 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:
+// Name of test harness: T_pops_synchronise
+// Component: POPS
+// 0Brief description of test harness:
+// Tests  the changes to POPS for small devices which permit setting a limit 
+// on the number of emails downloaded at any time. 
+// Detailed description of test harness:
+// Implements a range of tests for POPS testing the following
+// funtionality:
+// -Setting sychronisation limit
+// -Populating the remote mailbox with headers up to the synchronisation limit
+// -Deleting headers from the remote mailbox under the service entry 
+// if message has been deleted from POP3 mailbox.
+// 
+//
+
+
+
+#include "CTestPOPSynchroniseTest.h"
+#include <iapprefs.h>
+
+
+#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_POPsSynchronise");
+_LIT(KPopTeststart, "T_POPsSynchronise - START POPS Synchronise Functionality Testing");
+_LIT(KPopTestend, "T_POPsSynchronise - END POPS Synchronise Functionality Testing");
+
+//_LIT(KPOPServer, "10.192.197.21");
+
+_LIT(KPOPServer,"msexchange01.closedtest.intra");
+_LIT8(KPOPInValidUserPass, "popsyn");
+
+RTest test(KPopsComponent);
+
+
+CTestPOPSynchroniseTest::CTestPOPSynchroniseTest()
+	{
+	}
+
+CTestPOPSynchroniseTest ::~CTestPOPSynchroniseTest()
+	{
+	}
+	
+void CTestPOPSynchroniseTest::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();
+	
+	iTestUtils->GoClientSideL();	
+
+	if(!ipop3Service)
+		ipop3Service = iTestUtils->CreatePopServiceL();	
+
+
+	iaccount = CEmailAccounts::NewLC();
+	isettings = new(ELeave) CImPop3Settings();
+
+	CImIAPPreferences* imapIAP = CImIAPPreferences::NewLC();
+	iSel = new (ELeave) CMsvEntrySelection;
+
+	
+	iaccount->GetPopAccountL(ipop3Service, ipop3AccountId);
+  	iaccount->LoadPopSettingsL(ipop3AccountId, *isettings);
+
+	isettings->SetServerAddressL(KPOPServer);
+	isettings->SetLoginNameL(KPOPInValidUserPass /*iTestUtils->MachineName()*/);
+	isettings->SetPasswordL(KPOPInValidUserPass /*iTestUtils->MachineName()*/);
+	isettings->SetPort(110);
+
+	iaccount->SavePopSettingsL(ipop3AccountId, *isettings);
+	CleanupStack::PopAndDestroy(2, iaccount);
+	
+	iTestUtils->GoServerSideL();
+	iTestUtils->InstantiatePopServerMtmL();
+	iPopServerMtm=iTestUtils->iPopServerMtm;
+	}
+
+void CTestPOPSynchroniseTest::TearDownL()
+	{
+	_LIT(KFunction, "TearDownL");
+	INFO_PRINTF1(KFunction);
+	ipop3Service = NULL;
+	delete isettings;
+	delete iActiveWaiter;
+	delete iTestUtils;
+	iTestUtils = NULL;
+	INFO_PRINTF1(KPopTestend);
+	}
+
+void CTestPOPSynchroniseTest::TestPop3SynchroniseTestL()
+	{
+
+	_LIT(KFunction1, "TestNoPop3FolderMessagesL");
+	INFO_PRINTF1(KFunction1);
+	
+	ConnectToRemoteServerL();
+	
+	TInt totalEntries=0;
+	User::LeaveIfError(iTestUtils->iServerEntry->SetEntry(ipop3Service));
+	CMsvEntrySelection* sel = new (ELeave) CMsvEntrySelection;
+	CleanupStack::PushL(sel);
+	User::LeaveIfError(iTestUtils->iServerEntry->GetChildren(*sel));
+	totalEntries = sel->Count();
+	ASSERT_EQUALS( totalEntries, sel->Count() );
+	sel->Reset();
+	
+	_LIT(KFunction2, "TestNoNewMsgL");
+	INFO_PRINTF1(KFunction2);
+
+	TInt newEntries=0;
+	User::LeaveIfError(iTestUtils->iServerEntry->SetEntry(ipop3Service));
+	User::LeaveIfError(iTestUtils->iServerEntry->GetChildren(*sel));
+
+	for (TInt count =0; count < sel->Count(); count++)
+		{
+		User::LeaveIfError(iTestUtils->iServerEntry->SetEntry(sel->At(count) ) );
+		if (iTestUtils->iServerEntry->Entry().New())
+			newEntries++;
+		}
+	TInt  entry =  newEntries;
+	ASSERT_EQUALS( newEntries, entry );
+	sel->Reset();
+	
+	_LIT(KFunction3, "TestNoOldMsgL");
+	INFO_PRINTF1(KFunction3);
+	
+	TInt oldEntries=0;
+	User::LeaveIfError(iTestUtils->iServerEntry->SetEntry(ipop3Service));
+	User::LeaveIfError(iTestUtils->iServerEntry->GetChildren(*sel));
+
+	for (TInt count =0; count < sel->Count(); count++)
+		{
+		User::LeaveIfError(iTestUtils->iServerEntry->SetEntry(sel->At(count)) );
+		if (! iTestUtils->iServerEntry->Entry().New())
+			oldEntries++;
+		}
+	TInt  oldentry =  oldEntries;
+	ASSERT_EQUALS( oldEntries, oldentry );
+	sel->Reset();
+	
+	DisconnectL();
+	CleanupStack::PopAndDestroy(1, sel);
+	ChangeSynchronisationLimitL();
+	ChangeDownloadModeL();
+	}
+
+void CTestPOPSynchroniseTest::ChangeSynchronisationLimitL()
+	{
+	// Get the settings for the POP3 service and change the synchronisation limit
+	// Used after the settings have been created and set.
+	
+	_LIT(KFunction4, "ChangeSynchronisationLimitL");
+	INFO_PRINTF1(KFunction4);
+
+	
+	TInt aLimit = 2;
+    iTestUtils->GoClientSideL();
+	CEmailAccounts* accounts = CEmailAccounts::NewLC();
+	CImPop3Settings* settings = new(ELeave) CImPop3Settings();
+	CleanupStack::PushL(settings);
+	TPopAccount id;
+ 	accounts->GetPopAccountL(ipop3Service, id);
+ 	accounts->LoadPopSettingsL(id, *settings);
+
+	settings->SetInboxSynchronisationLimit(aLimit);
+ 	accounts->SavePopSettingsL(id, *settings);
+
+	CleanupStack::PopAndDestroy(settings);
+	settings = NULL;
+	settings = new(ELeave) CImPop3Settings();
+	CleanupStack::PushL(settings);
+ 	accounts->LoadPopSettingsL(id, *settings);
+ 	TInt ret = settings->InboxSynchronisationLimit() ;
+ 	ASSERT_EQUALS(ret , aLimit);
+ 	
+ 	CleanupStack::PopAndDestroy(settings);
+	CleanupStack::PopAndDestroy(accounts);
+	}
+
+void CTestPOPSynchroniseTest::ChangeDownloadModeL()
+	{
+	// Get the settings for the POP3 service and change the synchronisation limit
+	// Used after the settings have been created and set.
+	
+	_LIT(KFunction5, "ChangeDownloadModeL");
+	INFO_PRINTF1(KFunction5);
+
+	TBuf<20> downloadType;
+	
+	iTestUtils->GoClientSideL();
+	CEmailAccounts* accounts = CEmailAccounts::NewLC();
+	CImPop3Settings* settings = new(ELeave) CImPop3Settings();
+	CleanupStack::PushL(settings);
+	TPopAccount id;
+ 	accounts->GetPopAccountL(ipop3Service, id);
+ 	accounts->LoadPopSettingsL(id, *settings);
+ 	TPop3GetMailOptions aMode(EGetPop3EmailHeaders);
+ 	settings->SetGetMailOptions(aMode);
+ 	accounts->SavePopSettingsL(id, *settings);
+	CleanupStack::PopAndDestroy(settings);
+	settings = NULL;
+	settings = new(ELeave) CImPop3Settings();
+	CleanupStack::PushL(settings);
+ 	accounts->LoadPopSettingsL(id, *settings);
+	TPop3GetMailOptions aMode1 = settings->GetMailOptions();
+	ASSERT_EQUALS(aMode1 , aMode);
+	CleanupStack::PopAndDestroy(settings);
+	CleanupStack::PopAndDestroy(accounts); 
+	}
+
+//Connect to tyhe Server 
+void CTestPOPSynchroniseTest::ConnectToRemoteServerL()
+	{
+	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();	
+	ASSERT_EQUALS( progress.iErrorCode, KErrNone );
+	}
+//Disconnecting the Connection
+void CTestPOPSynchroniseTest::DisconnectL()
+	{
+	TBuf8<128> parameter;
+	iSel->AppendL(ipop3Service);
+	iPopServerMtm->StartCommandL(*iSel,KPOP3MTMDisconnect , parameter, iActiveWaiter->iStatus);
+	iActiveWaiter->WaitActive();
+	ASSERT_EQUALS( iActiveWaiter->iStatus.Int( ), KErrNone );
+	}
+	
+CTestSuite* CTestPOPSynchroniseTest::CreateSuiteL(const TDesC& aName)
+	{
+	SUB_SUITE;
+	ADD_ASYNC_TEST_STEP(TestPop3SynchroniseTestL);
+	//ADD_ASYNC_TEST_STEP(ChangeSynchronisationLimitL);
+	END_SUITE;
+	}
+