email/email/smtp/src/T_SendSmtpMessage.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/email/smtp/src/T_SendSmtpMessage.cpp	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,218 @@
+// 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]
+// SendSmtpMessage
+// [Parameters]
+// ParentFolderName  :   Local folder name in which the message to be sent is 
+// present
+// Subject			  :	  Subject of the message to be sent 	
+// Searches for the message with the specified subject and sends the message if the
+// message is found.  If the local folder name is invalid or if the message is 
+// not found in the given folder,the test step fails.
+// [APIs Used]
+// CMsvEntry::SetEntryL
+// CMsvEntry::CopyL
+// 
+//
+
+
+
+/**
+ @file
+*/
+
+
+
+//User Includes
+#include "T_SendSmtpMessage.h"
+#include <t_utilsenumconverter.h>
+#include <t_utils.h>
+#include <t_utilscentralrepository.h>
+
+
+// Literals Used
+_LIT(KSubject,"Subject");
+_LIT(KParentFolderName,"ParentFolderName");
+
+
+/**
+CT_MsgSendSmtpMessage
+Constructor
+
+@param :
+@return : N/A
+
+
+*/
+CT_MsgSendSmtpMessage::CT_MsgSendSmtpMessage(CT_MsgSharedDataSmtp& aSharedDataSMTP)
+:	CT_MsgAsyncStepSMTP(aSharedDataSMTP)
+,	iOperation(NULL)
+	{
+	SetTestStepName(KSendSmtpMessage);
+	}
+
+
+/**
+NewL()
+Static factory constructor. Uses two phase 
+construction.
+
+@param aSharedDataSMTP
+@leave KErrNoMemory
+@return
+A pointer to the newly created CT_MsgSendSmtpMessage object.
+*/
+CT_MsgSendSmtpMessage* CT_MsgSendSmtpMessage::NewL(CT_MsgSharedDataSmtp& aSharedDataSMTP)
+	{
+	CT_MsgSendSmtpMessage* self = new(ELeave) CT_MsgSendSmtpMessage(aSharedDataSMTP);
+	CleanupStack::PushL(self);
+	self->ConstructL(); 					 // Call CT_AsyncStep::ConstructL()
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+/**
+~CT_MsgSendSmtpMessage()
+Destructor
+*/
+CT_MsgSendSmtpMessage::~CT_MsgSendSmtpMessage()
+	{
+	delete iOperation;
+	iOperation=NULL;
+	}
+
+
+/**
+ProgressL()
+
+@param bFinal
+*/
+void CT_MsgSendSmtpMessage::ProgressL(TBool bFinal)
+	{
+	//	TODO
+	if ( bFinal )
+		{
+		//	Display final progress iOperation
+		}
+	else
+		{
+		//	Display current progress iOperation
+		}
+	}
+
+
+/**
+CancelStep()
+*/
+void CT_MsgSendSmtpMessage::CancelStep()
+	{
+	iOperation->Cancel();
+	}
+
+	
+/**
+doTestStepL()
+Reads the parent folder name, the message subject from the ini file
+Searches for the message under the specified folder, and sends the message
+
+@return
+Returns the test step result
+*/
+TVerdict CT_MsgSendSmtpMessage::doTestStepL()
+	{
+	INFO_PRINTF1( _L("Test Step : Send Smtp Message") );	
+	TPtrC	parentFolderName;
+	if(!GetStringFromConfig( ConfigSection(), KParentFolderName, parentFolderName))
+		{
+		ERR_PRINTF1(_L("Parent Folder is not specified"));
+		SetTestStepResult(EFail);
+		}
+	else
+		{
+		TPtrC	subject;	
+		if( !GetStringFromConfig(ConfigSection(), KSubject, subject ))
+			{
+			ERR_PRINTF1(_L("The subject of the message is not specified"));
+			SetTestStepResult(EFail);
+			}
+		else
+			{
+			// retrieves the folder Id based on the local folder name read from the ini file
+			TMsvId	parentFolderId = CT_MsgUtilsEnumConverter::FindFolderIdByName(parentFolderName);
+			if( parentFolderId == KErrNotFound)
+				{
+				ERR_PRINTF1(_L("Invalid local folder name specified"));
+				SetTestStepResult(EFail);
+				}
+			else
+				{
+				INFO_PRINTF2(_L("The parent folder Id is %d"),parentFolderId );
+
+				// Retrieves the message Id based ont he message subject from the given local folder
+				TMsvId	messageId = CT_MsgUtils::SearchMessageBySubjectL(iSharedDataSMTP.iSession, parentFolderId , subject);
+				if( messageId == KMsvNullIndexEntryId)
+					{
+					ERR_PRINTF1(_L("The given message is not found"));
+					SetTestStepResult(EFail);
+					}
+				// Message found	
+				else
+					{
+					INFO_PRINTF2(_L("The Message Id is %d"),messageId );
+
+					// Retrieve the default Smtp service Id
+					TMsvId	smtpServiceId(0);
+					TRAPD(err, smtpServiceId = CT_MsgUtilsCentralRepository::GetDefaultSmtpServiceIdL());
+					if(err != KErrNone)
+						{
+						ERR_PRINTF2(_L("Failure while getting the default SMTP Service Id.  error = %d"),err);
+						SetTestStepResult(EFail);
+						}
+					else
+						{
+						INFO_PRINTF2(_L("The Default Smtp Service Id is %d"),smtpServiceId );
+
+						// Setting the current context to the parent of the mesage
+						CMsvEntry*	folderEntry = CMsvEntry::NewL(*iSharedDataSMTP.iSession, messageId , TMsvSelectionOrdering());
+						CleanupStack::PushL(folderEntry);
+						folderEntry->SetEntryL(messageId);
+						folderEntry->SetEntryL(folderEntry->Entry().Parent());
+
+						// Sends the message
+						CT_MsgActive&	active=Active();
+						iOperation = folderEntry->CopyL(messageId, smtpServiceId, active.iStatus);
+						active.Activate();
+						CActiveScheduler::Start();
+
+						TImSmtpProgress temp;
+						TPckgC<TImSmtpProgress> paramPack(temp);
+						paramPack.Set(iOperation->ProgressL());
+						TImSmtpProgress progress=paramPack();
+						SetTestStepError(progress.Error());
+
+						if (NULL!=iOperation)
+							{
+							delete iOperation;
+							iOperation=NULL;
+							}
+						CleanupStack::PopAndDestroy(folderEntry); //operation,folderEntry
+						}
+					}
+				}
+			}
+		}
+
+	return TestStepResult();
+	}