messagingfw/msgtestfw/TestActionUtils/src/CMtfTestActionUtilsPopScripts.cpp
changeset 62 db3f5fa34ec7
parent 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtestfw/TestActionUtils/src/CMtfTestActionUtilsPopScripts.cpp	Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,459 @@
+// 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:
+//
+
+/**
+ @file
+*/
+ 
+ 
+#include "CMtfTestActionUtilsPopScripts.h"
+
+#include <pop3set.h>
+#include <smtpset.h>
+#include <iapprefs.h>
+
+#include "CMtfTestActionUtilsConfigFileParser.h"
+#include "CMtfTestActionUtilsConfigFileMachineName.h"
+
+#include "CMtfTestCase.h"
+#include "CMtfTestActionParameters.h"
+
+// POP Settings 
+
+_LIT(KCfgPopServerAddress, "PopServerAddress"); //*
+_LIT(KEmailAddressExtension, "EmailAddressExtension");
+_LIT(KCfgPopLoginName, "PopLoginName"); //*
+_LIT(KCfgPopPassword, "PopPassword"); //*
+_LIT(KCfgPopMaxEmailSize, "PopMaxEmailSize"); //*
+_LIT(KCfgPopPort, "PopPort"); //*
+_LIT(KCfgPopInboxSynchronisationLimit, "PopInboxSynchronisationLimit"); //*
+_LIT(KCfgPopSecureSockets, "PopSecureSockets"); //*
+_LIT(KCfgPopSSLWrapper, "PopSSLWrapper"); //*
+_LIT(KCfgPopGetMailOptions, "PopGetMailOptions"); //*
+_LIT(KCfgPopPopulationLimit, "PopPopulationLimit"); //*
+_LIT(KCfgPopAutoSendOnConnect, "PopAutoSendOnConnect" ); //* 
+_LIT(KCfgPopDeleteEmailsWhenDisconnecting, "PopDeleteEmailsWhenDisconnecting" ); //*
+_LIT(KCfgPopAcknowledgeReceipts, "PopAcknowledgeReceipts" ); //*
+_LIT(KCfgPopDisconnectedUserMode, "PopDisconnectedUserMode" ); //*
+_LIT(KCfgPopAPOPEncryption, "PopAPOPEncryption" ); //*
+
+
+_LIT(KCfgPopIapList , "PopIapList" );
+
+// SMTP settings
+
+_LIT(KCfgSmtpServerAddress, "SmtpServerAddress");  //*
+_LIT(KCfgSmtpEmailAddress, "SmtpEmailAddress");  //*
+_LIT(KCfgSmtpBodyEncoding, "SmtpBodyEncoding");  //*
+_LIT(KCfgSmtpReceiptAddress, "SmtpReceiptAddress");  //*
+_LIT(KCfgSmtpRequestReceipts, "SmtpRequestReceipts");  //*
+_LIT(KCfgSmtpSendMessageOption, "SmtpSendMessageOption");  //* Constants Added
+_LIT(KCfgSmtpSetPort, "SmtpSetPort");  //*
+_LIT(KCfgSmtpEmailAlias, "SmtpEmailAlias");  //*
+_LIT(KCfgSmtpDefaultMsgCharSet, "SmtpMsgCharSet");  //*
+
+
+
+_LIT(KCfgSmtpSetReplyToAddress, "SmtpSetReplyToAddress");  //*
+_LIT(KCfgSmtpSetAddVCardToEmail, "SmtpSetAddVCardToEmail"); //*
+_LIT(KCfgSmtpSetAddSignatureToEmail, "SmtpSetAddSignatureToEmail");  //*
+_LIT(KCfgSmtpSetSendCopyToSelf, "SmtpSetSendCopyToSelf");  //* 
+_LIT(KCfgSmtpSetLoginName, "SmtpSetLoginName");  //*
+_LIT(KCfgSmtpSetPassword, "SmtpSetPassword");  //*
+_LIT(KCfgSmtpSetSMTPAuth, "SmtpSetSMTPAuth");  //*
+_LIT(KCfgSmtpSetInboxLoginDetails, "SmtpSetInboxLoginDetails");  //*
+
+
+_LIT(KCfgSmtpSecureSockets, "SmtpSetSecureSockets");  //*
+_LIT(KCfgSmtpSSLWrapper, "SmtpSetSSLWrapper");  //*
+	//???? Currently All in same file is this what is intended or are they intended to be in 
+	// seperate files, which would require more index's ?
+
+_LIT(KCfgSmtpIapList , "SmtpIapList" );
+
+
+void CMtfTestActionUtilsPopScripts::ReadPopSettingsFromConfigurationFileL(CMtfTestCase& aTestCase, const TDesC& aSettingsFile, 
+											CImPop3Settings& aPopSet, CImIAPPreferences& aPopIapPref, 
+											CImSmtpSettings& aSmtpSet, CImIAPPreferences& aSmtpIapPref)
+{
+	CMtfTestActionUtilsConfigFileParser* scriptFileParser = CMtfTestActionUtilsConfigFileParser::NewL(aSettingsFile);
+	CleanupStack::PushL(scriptFileParser);
+	
+	TPtrC8 string8Ptr; 
+	TPtrC stringPtr; 
+	TInt intValue;
+
+
+	// POP3 settings
+	if(scriptFileParser->GetFieldAsString(KCfgPopServerAddress, stringPtr) == KErrNone)
+	{	
+		aPopSet.SetServerAddressL(stringPtr);
+	}
+	
+	CMtfTestActionUtilsConfigFileMachineName* machineNameFile = NULL;
+
+	TPtrC emailAddressExtension;
+	if (scriptFileParser->GetFieldAsString(KEmailAddressExtension, emailAddressExtension) == KErrNone)
+		{
+		machineNameFile = CMtfTestActionUtilsConfigFileMachineName::NewLC(emailAddressExtension);
+		}
+	else
+		{
+		machineNameFile = CMtfTestActionUtilsConfigFileMachineName::NewLC(stringPtr);
+		}
+	
+	TPtrC8 machineName(machineNameFile->MachineName());
+
+	if(scriptFileParser->GetFieldAsString8(KCfgPopLoginName, string8Ptr) == KErrNone)
+	{
+		aPopSet.SetLoginNameL(string8Ptr);
+	}
+	else
+	{
+		aPopSet.SetLoginNameL(machineName);
+	}
+	
+	if(scriptFileParser->GetFieldAsString8(KCfgPopPassword, string8Ptr) == KErrNone)
+	{
+		aPopSet.SetPasswordL(string8Ptr);
+	}
+	else
+	{
+		aPopSet.SetPasswordL(machineName);
+	}
+
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopMaxEmailSize, intValue) == KErrNone)
+	{
+		aPopSet.SetMaxEmailSize(intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopPort, intValue) == KErrNone)
+	{
+		aPopSet.SetPort(intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopInboxSynchronisationLimit, intValue) == KErrNone)
+	{
+		aPopSet.SetInboxSynchronisationLimit(intValue); // ??? should this be SetInboxSynchronisation?
+	}
+	
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopSecureSockets, intValue) == KErrNone)
+	{
+		aPopSet.SetSecureSockets((TBool)intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopSSLWrapper, intValue) == KErrNone)
+	{
+		aPopSet.SetSSLWrapper((TBool)intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsString(KCfgPopGetMailOptions, stringPtr) == KErrNone)
+	{
+		TPop3GetMailOptions options = ObtainValueParameterL<TPop3GetMailOptions>(aTestCase, stringPtr);
+		aPopSet.SetGetMailOptions(options);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopPopulationLimit, intValue) == KErrNone)
+	{
+		aPopSet.SetPopulationLimitL(intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopAutoSendOnConnect, intValue) == KErrNone)
+	{	
+		aPopSet.SetAutoSendOnConnect((TBool) intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopDeleteEmailsWhenDisconnecting, intValue) == KErrNone)
+	{	
+		aPopSet.SetDeleteEmailsWhenDisconnecting((TBool) intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopAcknowledgeReceipts, intValue) == KErrNone)
+	{	
+		aPopSet.SetAcknowledgeReceipts((TBool) intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopDisconnectedUserMode, intValue) == KErrNone)
+	{	
+		aPopSet.SetDisconnectedUserMode((TBool) intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgPopAPOPEncryption, intValue) == KErrNone)
+	{	
+		aPopSet.SetApop((TBool) intValue);
+	}
+		
+	scriptFileParser->GetFieldAsString(KCfgPopIapList, stringPtr);
+	
+	ReadIAPAndAddL( aTestCase, scriptFileParser, KCfgPopIapList, aPopIapPref );
+	
+	
+	// SMTP settings
+	if(scriptFileParser->GetFieldAsString(KCfgSmtpServerAddress, stringPtr) == KErrNone)
+	{
+		aSmtpSet.SetServerAddressL(stringPtr);
+	}
+	
+	TPtrC emailAddr(machineNameFile->MachineNameEmail());
+	if(scriptFileParser->GetFieldAsString(KCfgSmtpEmailAddress, stringPtr) == KErrNone)
+	{
+		aSmtpSet.SetEmailAddressL(stringPtr);
+	}
+	else
+	{
+		aSmtpSet.SetEmailAddressL(emailAddr);
+	}
+	
+
+	if(scriptFileParser->GetFieldAsString(KCfgSmtpBodyEncoding, stringPtr) == KErrNone)
+	{
+		TMsgOutboxBodyEncoding setGetMailOptions = ObtainValueParameterL<TMsgOutboxBodyEncoding>(aTestCase, stringPtr);
+		aSmtpSet.SetBodyEncoding(setGetMailOptions);
+	}
+	
+	if(scriptFileParser->GetFieldAsString(KCfgSmtpReceiptAddress, stringPtr) == KErrNone)
+	{
+		aSmtpSet.SetReceiptAddressL(stringPtr);
+	}
+	else
+	{
+		aSmtpSet.SetReceiptAddressL(emailAddr);
+	}
+	
+
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpRequestReceipts, intValue) == KErrNone)
+	{		
+		aSmtpSet.SetRequestReceipts( (TBool) intValue );
+	}
+	
+	if(scriptFileParser->GetFieldAsString(KCfgSmtpSendMessageOption, stringPtr) == KErrNone)
+	{
+		TImSMTPSendMessageOption setSendMessageOption = ObtainValueParameterL<TImSMTPSendMessageOption>(aTestCase, stringPtr);
+		aSmtpSet.SetSendMessageOption(setSendMessageOption);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetPort, intValue) == KErrNone)
+	{
+		aSmtpSet.SetPort(intValue);
+	}
+	
+	if(scriptFileParser->GetFieldAsString(KCfgSmtpEmailAlias, stringPtr) == KErrNone)
+	{
+		aSmtpSet.SetEmailAliasL(stringPtr);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpDefaultMsgCharSet, intValue) == KErrNone)
+	{
+		TUid tmp = { intValue };
+		aSmtpSet.SetDefaultMsgCharSet( tmp );
+	}
+	
+	
+	if(scriptFileParser->GetFieldAsString(KCfgSmtpSetReplyToAddress, stringPtr) == KErrNone)
+	{
+		aSmtpSet.SetReplyToAddressL(stringPtr);
+	}
+	else
+	{
+		aSmtpSet.SetReplyToAddressL(emailAddr);
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetAddVCardToEmail, intValue) == KErrNone)
+	{		
+		aSmtpSet.SetAddVCardToEmail( (TBool) intValue );
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetAddSignatureToEmail, intValue) == KErrNone)
+	{		
+		aSmtpSet.SetAddSignatureToEmail( (TBool) intValue );
+	}
+	
+	if(scriptFileParser->GetFieldAsString(KCfgSmtpSetSendCopyToSelf, stringPtr) == KErrNone)
+	{
+		TImSMTPSendCopyToSelf setSMTPSendCopyToSelf = ObtainValueParameterL<TImSMTPSendCopyToSelf>(aTestCase, stringPtr);
+		aSmtpSet.SetSendCopyToSelf(setSMTPSendCopyToSelf);
+	}
+	
+	if(scriptFileParser->GetFieldAsString8(KCfgSmtpSetLoginName, string8Ptr) == KErrNone)
+	{
+		aSmtpSet.SetLoginNameL(string8Ptr);
+	}
+	else
+	{
+		aSmtpSet.SetLoginNameL(machineName);
+	}
+
+	if(scriptFileParser->GetFieldAsString8(KCfgSmtpSetPassword, string8Ptr) == KErrNone)
+	{
+		aSmtpSet.SetPasswordL(string8Ptr);
+	}
+	else
+	{
+		aSmtpSet.SetPasswordL(machineName);
+	}
+		
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetSMTPAuth, intValue) == KErrNone)
+	{		
+		aSmtpSet.SetSMTPAuth( (TBool) intValue );
+	}
+
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSetInboxLoginDetails, intValue) == KErrNone)
+	{		
+		aSmtpSet.SetInboxLoginDetails( (TBool) intValue );
+	}
+
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSecureSockets, intValue) == KErrNone)
+	{		
+		aSmtpSet.SetSecureSockets( (TBool) intValue );
+	}
+	
+	if(scriptFileParser->GetFieldAsInteger(KCfgSmtpSSLWrapper, intValue) == KErrNone)
+	{		
+		aSmtpSet.SetSSLWrapper( (TBool) intValue );
+	}
+	
+	ReadIAPAndAddL( aTestCase, scriptFileParser, KCfgSmtpIapList, aSmtpIapPref );
+	
+	//Pop and destroy scriptfileParser and machineNameFile	
+	CleanupStack::PopAndDestroy(2,scriptFileParser);	
+}
+
+void CMtfTestActionUtilsPopScripts::ReadIAPAndAddL( CMtfTestCase& aTestCase, 
+	CMtfTestActionUtilsConfigFileParser* aScriptFileParser , 
+	const TDesC& aParamListName , CImIAPPreferences& aIapPref )
+{
+	TPtrC stringPtr; 	
+	TPtrC baseString; 
+	
+	if( aScriptFileParser->GetFieldAsString(aParamListName, stringPtr ) == KErrNone )
+	{
+		
+		TInt start=0;
+		TInt end=stringPtr.Length();
+		
+		while ( GetString( stringPtr , start, end , baseString ) )
+		{
+			_ReadIAPAndAddL( aTestCase, aScriptFileParser, baseString, aIapPref );
+		}
+	}		
+}
+
+TBool CMtfTestActionUtilsPopScripts::GetString( const TDesC& aStringPtr , TInt& aStart, TInt aEnd , TPtrC& aBaseString )
+{
+	TBool ret=EFalse;
+	
+	if (aStart==aEnd)
+	{
+		return EFalse;				
+	}
+	
+	TInt currPos=aStart;
+	
+
+	// strip out any starting spaces.
+	while (currPos<aEnd )
+	{
+		if ( aStringPtr[currPos] == ' ' || aStringPtr[currPos] == '\t' )
+		{			
+			currPos++;	
+		}
+		else
+		{			
+			break;	
+		}
+	}
+	TInt startTmp=currPos;
+	
+	while (currPos<aEnd )
+	{
+		if ( aStringPtr[currPos] == ' ' || aStringPtr[currPos] == '\t' )
+		{			
+			break;
+		}
+		else
+		{
+			currPos++;
+			ret=ETrue;
+		}
+	}
+	
+	if (ret)
+	{	// We have a string.
+		aBaseString.Set( aStringPtr.Mid( startTmp, currPos-startTmp) ); 
+	}
+		
+	aStart=currPos;
+	
+	return ret;
+}
+
+
+void CMtfTestActionUtilsPopScripts::_ReadIAPAndAddL( CMtfTestCase& aTestCase, 
+	CMtfTestActionUtilsConfigFileParser* aScriptFileParser , 
+	const TDesC& aFieldName , CImIAPPreferences& aIapPref )
+{
+	
+	TPtrC stringPtr; 
+	TInt intTmp;
+	
+	TImIAPChoice iapChoice;
+	iapChoice.iIAP = 0;
+	iapChoice.iDialogPref = ECommDbDialogPrefUnknown;
+	
+	TInt index=0;
+	TBool modified=EFalse;
+		
+	HBufC* buf = HBufC::NewLC(100);
+			
+	buf->Des() = aFieldName;
+	buf->Des().Append( _L("_PopIAP") );
+	
+			
+	if(aScriptFileParser->GetFieldAsInteger(buf->Des(), intTmp) == KErrNone)
+	{
+		iapChoice.iIAP = intTmp;
+		modified=ETrue;
+	}
+	
+
+	buf->Des() = aFieldName;
+	buf->Des().Append( _L("_PopCommDbDialogPref") );
+	if(aScriptFileParser->GetFieldAsString(buf->Des(), stringPtr) == KErrNone)
+	{
+		TCommDbDialogPref setCommDbDialogPref = ObtainValueParameterL<TCommDbDialogPref>(aTestCase, stringPtr);
+		iapChoice.iDialogPref= setCommDbDialogPref;
+		modified=ETrue;
+	}
+
+	
+	buf->Des() = aFieldName;
+	buf->Des().Append( _L("_PopIAPIndex") );
+	if(aScriptFileParser->GetFieldAsInteger(buf->Des(), intTmp) == KErrNone)
+	{
+		index = intTmp;
+		modified=ETrue;
+	}
+	
+	if (modified)
+	{	// Note only want to set the values if they are specified. Otherwise leave well alone.
+		// Really should specify iapChoice.iIAP and iapChoice.iDialogPref at the same time.
+		aIapPref.AddIAPL(iapChoice ,index );
+	}
+
+	CleanupStack::PopAndDestroy(buf);
+}
+