messagingfw/msgtestfw/TestActions/SendAs/src/CMtfTestActionSendAsAddRecipient.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtestfw/TestActions/SendAs/src/CMtfTestActionSendAsAddRecipient.cpp Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,237 @@
+// 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]
+// SendAsAddRecipient
+// [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
+// 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]
+// SendAsAddRecipient Test Action is intended to add a recipient of type
+// 'To' or 'Cc' or 'Bcc' address to the created message. The type ('To' or 'Cc' or 'Bcc')
+// is specified as an input to the Test Action. If the alias information is provided,
+// the alias information will be set along
+// with the recipient address, otherwise, only the recipient address will be set.
+// [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 "CMtfTestActionSendAsAddRecipient.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 CMtfTestActionSendAsAddRecipient 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 CMtfTestActionSendAsAddRecipient
+ @pre None
+ @post CMtfTestActionSendAsAddRecipient object is created
+*/
+CMtfTestAction* CMtfTestActionSendAsAddRecipient::
+ NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters)
+ {
+ CMtfTestActionSendAsAddRecipient* self =
+ new (ELeave) CMtfTestActionSendAsAddRecipient(aTestCase);
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aActionParameters);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+/**
+ CMtfTestActionSendAsAddRecipient constructor
+ Calls the base class' constructor
+ @internalTechnology
+ @param aTestCase Test Case to which this Test Action belongs
+ @pre None
+ @post None
+*/
+CMtfTestActionSendAsAddRecipient::CMtfTestActionSendAsAddRecipient(CMtfTestCase& aTestCase)
+ : CMtfSynchronousTestAction(aTestCase)
+ {
+ }
+
+/**
+ Function : ~CMtfTestActionSendAsCloseAndDeleteMessage
+ Description : Destructor
+ @internalTechnology
+ @param :
+ @return :
+ @pre
+ @post
+*/
+CMtfTestActionSendAsAddRecipient::~CMtfTestActionSendAsAddRecipient()
+ {
+ }
+
+
+/**
+ ExecuteActionL
+ Obtain the input parameters
+ 1. sendAsMessage
+ 2. recipientAddress
+ 3. alias (Default value implies empty string)
+ 4. 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 CMtfTestActionSendAsAddRecipient::ExecuteActionL()
+ {
+ if((TestCase().TestStepResult()) == EPass)
+ {
+ TestCase().INFO_PRINTF2(_L("Test Action %S start..."), &KTestActionSendAsAddRecipient);
+
+ // 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));
+
+ TInt err = KErrNone;
+ TBuf16<3> btAddress;
+
+ if(recipientAddress == NULL)
+ {
+ if( msgTypeId.operator == (KUidMsgTypeSMTP))
+ {
+ TMsvId paramServiceId = ObtainValueParameterL<TMsvId>(TestCase(), ActionParameters().Parameter(6), 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));
+ }
+ 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);
+ }
+ }
+ }
+ StoreParameterL<HBufC>(TestCase(),*recipientAddress,ActionParameters().Parameter(7));
+ TestCase().INFO_PRINTF2(_L("Test Action %S completed."), &KTestActionSendAsAddRecipient);
+ }
+ TestCase().ActionCompletedL(*this);
+ }
+