email/email/pop/src/T_ConnectPop3Server.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/email/pop/src/T_ConnectPop3Server.cpp	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,180 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// [TestStep Name]
+// ConnectPop3Server
+// [Paramaters]
+// PopAccountName			<input>	: Name of the Pop account
+// Connects to the Pop3 Server
+// [APIs Used]
+// CMsvEntry::SetEntryL
+// CMsvEntrySelection::AppendL
+// CPop3ClientMtm::InvokeAsyncFunctionL
+// 
+//
+
+
+
+/**
+ @file
+*/
+
+// User Includes
+#include "T_ConnectPop3Server.h"
+#include <t_utilscentralrepository.h>
+
+
+// Epoc includes
+#include <miutset.h>
+#include <pop3cmds.h>
+#include <mtclbase.h>
+#include <pop3set.h>
+
+// Literals Used
+_LIT(KPopAccountName,"PopAccountName");
+
+const TInt KMaxLenghtOfChar = 1;
+
+/**
+CT_MsgConnectPop3Server()
+Sets the teststep name to KConnectPop3Server
+
+@param aSharedDataPOP
+Data shared across the POP test steps. Ex. Session
+*/
+CT_MsgConnectPop3Server::CT_MsgConnectPop3Server(CT_MsgSharedDataPop& aSharedDataPOP)
+:	CT_MsgAsyncStepPOP(aSharedDataPOP) 
+,	iOperation(NULL)
+	{
+	SetTestStepName(KConnectPop3Server);
+	}
+
+/**
+NewL()
+Allocates and creates a new CT_MsgConnectPop3Server object
+
+@param aSharedDataPOP
+Data shared across the POP test steps. Ex. Session
+
+@leave KErrNoMemory
+@return
+Returns pointer to an object of CT_MsgComparePopEmailMsgs
+*/
+CT_MsgConnectPop3Server* CT_MsgConnectPop3Server::NewL(CT_MsgSharedDataPop& aSharedDataPOP)
+	{
+	CT_MsgConnectPop3Server* self = new(ELeave) CT_MsgConnectPop3Server(aSharedDataPOP);
+	CleanupStack::PushL(self);
+	self->ConstructL(); 					 // Call CT_AsyncStep::ConstructL()
+	CleanupStack::Pop(self);
+	return self;
+	}		
+
+
+/**
+~CT_MsgConnectPop3Server()
+Destructor
+*/
+CT_MsgConnectPop3Server::~CT_MsgConnectPop3Server()
+	{
+	delete iOperation;
+	iOperation=NULL;
+	}
+
+
+/**
+ProgressL()
+
+@param
+*/
+void CT_MsgConnectPop3Server::ProgressL(TBool bFinal)
+	{
+	//	TODO
+	if (bFinal)
+		{
+		//	Display final progress iOperation
+		}
+	else
+		{
+		//	Display current progress iOperation
+		}
+	}
+
+
+/**
+CancelStep()
+
+@param
+*/
+void CT_MsgConnectPop3Server::CancelStep()
+	{
+	iOperation->Cancel();
+	}
+
+
+/**
+doTestStepL()
+It establishes connection with the Pop server using a POP account.
+The account is identified by the account name that is read from the INI file.
+
+@return
+Returns the test step result
+*/
+TVerdict CT_MsgConnectPop3Server::doTestStepL()
+	{	
+	INFO_PRINTF1(_L(" Test Step : ConnectPop3Server"));
+	TPtrC popAccountName;
+	if(!GetStringFromConfig(ConfigSection(), KPopAccountName, popAccountName))
+		{
+		ERR_PRINTF1(_L("Pop Account Name is not specified"));
+		SetTestStepResult(EFail);
+		}
+
+	else
+		{
+		// Retrieving the Pop service Id for the given Pop account
+		TMsvId popServiceId = CT_MsgUtilsCentralRepository::GetPopServiceIdL((TDes&)popAccountName);
+		INFO_PRINTF2(_L("Pop service id is %d"),popServiceId);
+
+		// Change the current context
+		iSharedDataPOP.iMtm->SwitchCurrentEntryL(popServiceId);
+
+		CMsvEntrySelection* selection = new (ELeave) CMsvEntrySelection;
+		CleanupStack::PushL(selection);
+
+		// Appends the popServiceId onto the end of the array
+		selection->AppendL(popServiceId);
+		
+		TBuf8<KMaxLenghtOfChar> param;
+
+		CT_MsgActive&	active=Active();
+		// Attempts to connect to the Pop3 Service
+		iOperation = iSharedDataPOP.iMtm->InvokeAsyncFunctionL(KPOP3MTMConnect,*selection,param, active.iStatus);
+
+		active.Activate();
+		CActiveScheduler::Start();
+	
+		// Get the error code from TPop3Progress
+		TPop3Progress temp;
+		TPckgC<TPop3Progress> paramPack(temp);
+		paramPack.Set(iOperation->ProgressL());
+		TPop3Progress progress=paramPack();
+		SetTestStepError(progress.iErrorCode);
+
+		delete iOperation;
+		iOperation=NULL;
+		
+		CleanupStack::PopAndDestroy(selection); //operation,selection
+	//	User::LeaveIfError(active.Result());
+		}
+	return TestStepResult();
+	}