email/email/pop/src/T_ComparePopSettings.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/email/pop/src/T_ComparePopSettings.cpp	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,310 @@
+// 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]
+// ComparePopSettings
+// [Paramaters]
+// PopAccountName		:		Name of the Pop account
+// ConfigFileName		:		Config file from which the Pop account settings are read 
+// ComparePopSettings is intended to compare the Pop account settings.
+// 
+//
+
+
+
+/**
+ @file cexppop3mailinfo.h
+*/
+
+
+// User includes
+#include "T_ComparePopSettings.h"
+#include <t_utilsconfigfileparserutility.h>
+#include <t_utilsreademailsettingsfromconfigfile.h>
+#include <t_utilscentralrepository.h>
+
+
+// Epoc includes
+#include <cemailaccounts.h>
+#include <iapprefs.h>
+#include <pop3set.h>
+#include <smtpset.h>
+
+
+// Literals Used
+_LIT(KPopAccountName,"PopAccountName");
+_LIT(KPopConfigFileName,"PopConfigFileName");
+_LIT(KMatchExpected,"MatchExpected");
+
+
+/**
+CT_MsgComparePopSettings()
+Constructor - Initializes the data members.
+
+@param aSharedDataPOP
+Data shared across the POP test steps. Ex. Session
+*/
+CT_MsgComparePopSettings::CT_MsgComparePopSettings(CT_MsgSharedDataPop& aSharedDataPOP)
+:	CT_MsgSyncStepPOP(aSharedDataPOP) 
+	{
+	SetTestStepName(KComparePopSettings);
+	}
+
+
+/**
+~CT_MsgComparePopSettings
+Destructor
+*/
+CT_MsgComparePopSettings::~CT_MsgComparePopSettings()
+	{
+	}
+
+
+/**
+doTestStepL()
+Reads the Pop account name and config file name from the ini file
+Compares the settings of the Imap account.
+  
+@return
+Returns the test step result
+*/
+TVerdict CT_MsgComparePopSettings::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test Step : ComparePopSettings"));
+	// Read the POP account name from the ini file
+	TPtrC popAccountName;
+	if(!GetStringFromConfig(ConfigSection(), KPopAccountName, popAccountName))
+		{
+		ERR_PRINTF1(_L("PopAccount Name is not specified"));
+		SetTestStepResult(EFail);
+		}
+	else
+		{
+		// Retrieving the Pop service Id for the given Pop account
+		TMsvId popServiceId = KMsvNullIndexEntryId;
+		TRAPD(err,popServiceId = CT_MsgUtilsCentralRepository::GetPopServiceIdL((TDes&)popAccountName));
+		INFO_PRINTF2(_L("Pop service id is %d"),popServiceId);
+		
+		TBool matchExpected = ETrue;
+		GetBoolFromConfig(ConfigSection(), KMatchExpected, matchExpected);
+		
+		TVerdict result = EPass;
+		TPtrC configFileName;
+		
+		if(popServiceId == KMsvNullIndexEntryId)
+			{
+			INFO_PRINTF1(_L("Invalid POP account name is specified"));
+			result = EFail;	
+			}
+		else
+			{
+			if(!GetStringFromConfig(ConfigSection(), KPopConfigFileName, configFileName))
+				{
+				ERR_PRINTF1(_L("Configuration file path is not specified"));
+				SetTestStepResult(EFail);
+				}
+			else
+				{
+				CEmailAccounts* emailAccounts = CEmailAccounts::NewLC();
+
+				// Creating the first set of settings objects
+				CImPop3Settings* popSettings1 = new(ELeave) CImPop3Settings();
+				CleanupStack::PushL(popSettings1);
+				
+				CImIAPPreferences* popIapPrefs1 = CImIAPPreferences::NewLC();
+				
+				CImSmtpSettings* smtpSettings1 = new(ELeave) CImSmtpSettings();
+				CleanupStack::PushL(smtpSettings1);
+
+				CImIAPPreferences* smtpIapPrefs1 = CImIAPPreferences::NewLC();
+				
+				// Creating the second set of settings objects	
+				CImPop3Settings* popSettings2= new(ELeave) CImPop3Settings();
+				CleanupStack::PushL(popSettings2);
+				
+				CImIAPPreferences* popIapPrefs2 = CImIAPPreferences::NewLC();
+				
+				CImSmtpSettings* smtpSettings2 = new(ELeave) CImSmtpSettings();
+				CleanupStack::PushL(smtpSettings2);
+
+				CImIAPPreferences* smtpIapPrefs2 = CImIAPPreferences::NewLC();
+					
+				emailAccounts->PopulateDefaultPopSettingsL(*popSettings2, *popIapPrefs2);
+				emailAccounts->PopulateDefaultSmtpSettingsL(*smtpSettings2, *smtpIapPrefs2);
+					
+				TPopAccount popAccount;
+				emailAccounts->	GetPopAccountL(popServiceId, popAccount);
+					
+				TRAPD(error1, LoadAccountSettingsL(*emailAccounts,popAccount,
+					*popSettings1,*popIapPrefs1,*smtpSettings1,*smtpIapPrefs1));
+				
+				if(error1 != KErrNone)
+					{
+					ERR_PRINTF2(_L("LoadPOPPSettingsL Failed with error code %d"), error1);
+					result = EFail;
+					SetTestStepResult(EFail);
+					}
+				else
+					{
+					if(configFileName.CompareF(_L("none")) != 0)
+						{
+						TRAPD(err, CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadPopSettingsFromConfigurationFileL(configFileName, *popSettings2, *popIapPrefs2));
+						if(err)
+							{	
+							ERR_PRINTF2(_L("Failure while setting the Pop setting parameters, failed with error %d"), err);
+							SetTestStepResult(EFail);															  
+							}
+						else
+							{
+							TRAPD(error, CT_MsgUtilsReadEmailSettingsFromConfigFile::ReadSmtpSettingsFromConfigurationFileL(configFileName, *smtpSettings2, *smtpIapPrefs2));
+							if(error)
+								{
+								ERR_PRINTF2(_L("Failure while setting the SMTP setting parameters, failed with error %d"), error);
+								SetTestStepResult(EFail);															  
+								}							
+							}							
+						}
+					if(TestStepResult() == EPass)
+						{
+						result = CompareSettings(*popSettings1 , *popSettings2 ,
+											*smtpSettings1,*smtpSettings2,
+											*popIapPrefs1,*popIapPrefs2,
+											*smtpIapPrefs1,*smtpIapPrefs2);
+						}
+					}
+				CleanupStack::PopAndDestroy(9,emailAccounts);
+					
+				}				
+			}
+
+		// if the parameters did not match and we expected them to then fail the test
+		if(result == EPass && matchExpected)
+			{
+			INFO_PRINTF1(_L("*********Passed As Expected*******"));
+			SetTestStepResult(EPass);
+			}
+		else if(result == EFail && !matchExpected)
+			{
+			INFO_PRINTF1(_L("*******Failed as Expected********"));
+			SetTestStepResult(EPass); // This is required as some checks where it will fail, at that pt teststep might have been set to fail
+			}
+		else
+			{
+			ERR_PRINTF1(_L("Pop settings Comparison Failed"));
+			SetTestStepResult(EFail);					
+			}
+		INFO_PRINTF1(_L("ComparePopSettings completed"));
+		}
+	return TestStepResult();
+	}
+	
+/**
+CompareSettings()
+Compares the two sets of POP settings, IAPPrefernces, and SMTP settings.
+  
+@param aPopSettings1
+An object of type CImPop3Settings
+
+@param aPopSettings2
+An object of type CImPop3Settings
+
+@param aPopIapPrefs1
+An object of type CImIAPPreferences
+
+@param aPopIapPrefs2
+An object of type CImIAPPreferences
+
+@param aSmtpIapPrefs1
+An object of type CImIAPPreferences
+
+@param aSmtpIapPrefs2
+An object of type CImIAPPreferences
+
+@param aSmtpSettings
+An object of type CImSmtpSettings
+
+@param aSmtpIapSettings
+An object of type CImIAPPreferences
+
+@return
+Returns EPass if exactly the same for all values in the two sets of parameters.
+Returns EFail if any value is different between the two sets of parameters.
+*/
+TVerdict CT_MsgComparePopSettings::CompareSettings(CImPop3Settings& aPopSettings1, CImPop3Settings& aPopSettings2,
+						 CImSmtpSettings& aSmtpSettings1,CImSmtpSettings& aSmtpSettings2, CImIAPPreferences& aPopIapPrefs1,
+							CImIAPPreferences& aPopIapPrefs2, CImIAPPreferences& aSmtpIapPrefs1, CImIAPPreferences& aSmtpIapPrefs2)
+	{
+	TVerdict result = EPass;
+	if (!(aPopSettings1 == aPopSettings2))   
+		{
+		// failed
+		ERR_PRINTF1(_L("Pop3 Settings objects do not match !"));
+		result = EFail;
+		}
+	else if (!(aSmtpSettings1 == aSmtpSettings2))
+		{
+		// failed
+		ERR_PRINTF1(_L("SMTP Settings objects do not match !"));
+		result = EFail;
+		}
+	else if (!CT_MsgUtilsReadEmailSettingsFromConfigFile::CompareIapPrefs(aPopIapPrefs1, aPopIapPrefs2))
+		{
+		// failed
+		ERR_PRINTF1(_L("Pop3 IAP Preference objects do not match !"));
+		result = EFail;
+		}
+	else if (!CT_MsgUtilsReadEmailSettingsFromConfigFile::CompareIapPrefs(aSmtpIapPrefs1, aSmtpIapPrefs2))
+		{
+		// failed
+		ERR_PRINTF1(_L("SMTP IAP Preference objects do not match !"));
+		result = EFail;
+		}
+	
+	return result;
+	}
+	
+/**
+LoadAccountSettingsL()
+This function loads the IMAP and SMTP settings object from the IMAP account given
+
+@param aEmailAccount
+An object of type CEmailAccounts
+
+@param aAccount
+An object of type TPopAccount
+
+@param aPopSettings
+An object of type CImPop3Settings
+
+@param aPopIapSettings
+An object of type CImIAPPreferences
+
+@param aSmtpSettings
+An object of type CImSmtpSettings
+
+@param aSmtpIapSettings
+An object of type CImIAPPreferences
+
+@return : void
+*/	
+void CT_MsgComparePopSettings::LoadAccountSettingsL(CEmailAccounts& aEmailAccount, const TPopAccount& aAccount, CImPop3Settings& aPopSettings, 
+		CImIAPPreferences& aPopIapSettings,CImSmtpSettings& aSmtpSettings, CImIAPPreferences& aSmtpIapSettings)
+	{
+	aEmailAccount.LoadPopSettingsL(aAccount, aPopSettings);
+	aEmailAccount.LoadPopIapSettingsL(aAccount, aPopIapSettings);
+	
+	TSmtpAccount smtpAccount;
+	aEmailAccount.GetSmtpAccountL(aAccount.iSmtpService, smtpAccount);
+	aEmailAccount.LoadSmtpSettingsL(smtpAccount, aSmtpSettings);
+	aEmailAccount.LoadSmtpIapSettingsL(smtpAccount, aSmtpIapSettings);
+	}