messagingfw/msgtestfw/TestActions/SendAs/src/CMtfTestActionSendAsAddMultipleRecipient.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtestfw/TestActions/SendAs/src/CMtfTestActionSendAsAddMultipleRecipient.cpp Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,242 @@
+// Copyright (c) 2004-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:
+// __ACTION_INFO_BEGIN__
+// [Action Name]
+// SendAsAddMultipleRecipient
+// [Action Parameters]
+// RSendAsMessage sendAsMessage <input> : Reference of the RSendAsMessage object
+// TDesC recipientAddress<input> : Recipient address
+// TDesC alias <input> : Alias of recipient addresses. Default value implies no Alias information is provided
+// TDesC recipientAddress1<input> : Second Recipient address
+// TSendAsRecipientType recipientType <input> : Type of recipient (ESendAsRecipientTo or ESendAsRecipientCc or ESendAsRecipientBcc)
+// TMsvId paramServiceId <input> : Value of the SMTP service id. Recipient address determined using this ID for SMTP message.
+// [Action Description]
+// SendAsAddMultipleRecipient Test Action is intended to add a new recipient to the
+// created message.
+// [APIs Used]
+// 1. RSendAsMessage::AddRecipient(const TDesC& aAddress, TSendAsRecipientType aRecipientType)
+// 2. RSendAsMessage::AddRecipient(const TDesC& aAddress, const TDesC& aAlias,
+// TSendAsRecipientType aRecipientType);
+// __ACTION_INFO_END__
+//
+//
+
+/**
+ @file
+ @internalTechnology
+*/
+
+// User include
+#include "CMtfTestActionSendAsAddMultipleRecipient.h"
+#include "CMtfTestCase.h"
+#include "CMtfTestActionParameters.h"
+#include "TestFrameworkActionsUtils.h"
+#include "CMtfTestActionUtilsMessage.h"
+#include "CMtfTestActionUtilsConfigFileMachineName.h"
+
+#include <btmsgtypeuid.h>
+#include <cemailaccounts.h>
+/**
+ NewL()
+ Constructs a CMtfTestActionSendAsAddMultipleRecipient object.
+ Uses two phase construction and leaves nothing on the CleanupStack.
+ @internalTechnology
+ @param aTestCase Test Case to which this Test Action belongs
+ @param aActionParameters Action parameters, must not be NULL
+ @return Created object of type CMtfTestActionSendAsAddMultipleRecipient
+ @pre None
+ @post CMtfTestActionSendAsAddMultipleRecipient object is created
+*/
+CMtfTestAction* CMtfTestActionSendAsAddMultipleRecipient::
+ NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters)
+ {
+ CMtfTestActionSendAsAddMultipleRecipient* self =
+ new (ELeave) CMtfTestActionSendAsAddMultipleRecipient(aTestCase);
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aActionParameters);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+/**
+ CMtfTestActionSendAsAddMultipleRecipient constructor
+ Calls the base class' constructor
+ @internalTechnology
+ @param aTestCase Test Case to which this Test Action belongs
+ @pre None
+ @post None
+*/
+CMtfTestActionSendAsAddMultipleRecipient::CMtfTestActionSendAsAddMultipleRecipient(CMtfTestCase& aTestCase)
+ : CMtfSynchronousTestAction(aTestCase)
+ {
+ }
+
+/**
+ Function : ~CMtfTestActionSendAsCloseAndDeleteMessage
+ Description : Destructor
+ @internalTechnology
+ @param :
+ @return :
+ @pre
+ @post
+*/
+CMtfTestActionSendAsAddMultipleRecipient::~CMtfTestActionSendAsAddMultipleRecipient()
+ {
+ }
+
+
+/**
+ ExecuteActionL
+ Obtain the input parameters
+ 1. sendAsMessage
+ 2. recipientAddress
+ 3. alias (Default value implies empty string)
+ 4. recipientAddress1
+ 5. recipientType
+ IF alias for recipient address is provided as input
+ Call RSendAsMessage::AddRecipient (const TDesC& aAddress, const TDesC& aAlias,
+ TSendAsRecipientType aRecipientType) passing recipientAddress, alias and
+ recipientType as input parameters
+ ELSE
+ Call RSendAsMessage::AddRecipient (const TDesC& aAddress, TSendAsRecipientType aRecipientType) passing recipientAddress and recipientType as input parameters
+
+ @internalTechnology
+ @pre None
+ @post None
+ @leave System wide errors
+*/
+void CMtfTestActionSendAsAddMultipleRecipient::ExecuteActionL()
+ {
+ if((TestCase().TestStepResult()) == EPass)
+ {
+ TestCase().INFO_PRINTF2(_L("Test Action %S start..."), &KTestActionSendAsAddMultipleRecipient);
+
+ // Get test action input parameters
+ RSendAsMessage sendAsMessage = ObtainValueParameterL<RSendAsMessage>(TestCase(),
+ ActionParameters().Parameter(0));
+
+ HBufC* recipientAddress = ObtainParameterReferenceL<HBufC>(TestCase(),
+ ActionParameters().Parameter(1), NULL);
+
+
+ HBufC* alias = ObtainParameterReferenceL<HBufC>(TestCase(),
+ ActionParameters().Parameter(2), NULL);
+
+
+ RSendAsMessage::TSendAsRecipientType recipientType
+ = ObtainValueParameterL<RSendAsMessage::TSendAsRecipientType>(TestCase(),
+ ActionParameters().Parameter(3));
+
+ TUid msgTypeId = ObtainValueParameterL<TUid>(TestCase(),
+ ActionParameters().Parameter(4));
+
+ TInt expectedErr = ObtainValueParameterL<TInt>(TestCase(),
+ ActionParameters().Parameter(5));
+ //Get the second recipient address
+ HBufC* recipientAddress1 = ObtainParameterReferenceL<HBufC>(TestCase(),
+ ActionParameters().Parameter(6), NULL);
+
+ TInt err = KErrNone;
+ TBuf16<3> btAddress;
+
+
+ if(recipientAddress == NULL)
+ {
+ if( msgTypeId.operator == (KUidMsgTypeSMTP))
+ {
+ TMsvId paramServiceId = ObtainValueParameterL<TMsvId>(TestCase(), ActionParameters().Parameter(7), 0);
+ CImSmtpSettings* settings = new(ELeave) CImSmtpSettings();
+ CleanupStack::PushL(settings);
+
+ CEmailAccounts* accounts = CEmailAccounts::NewLC();
+ TSmtpAccount smtpAccount;
+ accounts->GetSmtpAccountL(paramServiceId, smtpAccount);
+ accounts->LoadSmtpSettingsL(smtpAccount, *settings);
+ CleanupStack::PopAndDestroy(accounts);
+
+ recipientAddress=settings->EmailAddress().AllocL();
+ CleanupStack::PopAndDestroy(settings);
+ }
+ else
+ {
+ TestCase().ERR_PRINTF1(_L("Recipient address is not provided"));
+ TestCase().SetTestStepResult(EFail);
+ }
+ }
+ else
+ {
+ if( msgTypeId.operator == (KUidMsgTypeBt))
+ {
+ CMtfTestActionUtilsMessage::FormatBtRecipientAddress(*recipientAddress, btAddress);
+ }
+ }
+ if((TestCase().TestStepResult()) == EPass)
+ {
+ if(alias == NULL )
+ {
+ if( msgTypeId.operator == (KUidMsgTypeBt))
+ {
+ TRAP(err,sendAsMessage.AddRecipientL(btAddress, recipientType));
+ }
+ else
+ {
+ TRAP(err,sendAsMessage.AddRecipientL(*recipientAddress, recipientType));
+ TRAP(err, sendAsMessage.AddRecipientL(*recipientAddress1, recipientType));
+ }
+ if(err == expectedErr)
+ {
+ TestCase().INFO_PRINTF1(_L("Recipient address added successfully"));
+ }
+ else
+ {
+ TestCase().ERR_PRINTF2(_L("Add Recipient address failed with error %d"), err);
+ }
+ }
+ else
+ {
+ if( msgTypeId.operator == (KUidMsgTypeBt))
+ {
+ TRAP(err,sendAsMessage.AddRecipientL(btAddress, alias->Des(), recipientType));
+ }
+ else
+ {
+ TRAP(err, sendAsMessage.AddRecipientL(recipientAddress->Des(), alias->Des(), recipientType));
+ }
+
+ if (err == expectedErr)
+ {
+ if(err == KErrNone)
+ {
+ TestCase().INFO_PRINTF1(_L("Recipient address with alias added successfully"));
+ }
+ else
+ {
+ TestCase().INFO_PRINTF1(_L("Recipient address with alias failed with expected error"));
+ }
+ }
+ else
+ {
+ TestCase().ERR_PRINTF2(_L("Add Recipient address with alias failed with error %d"), err);
+ }
+ }
+
+ }
+
+ TestCase().INFO_PRINTF2(_L("Test Action %S completed."), &KTestActionSendAsAddMultipleRecipient);
+ }
+ TestCase().ActionCompletedL(*this);
+ }
+