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