applayerpluginsandutils/bookmarksupport/test/Integration/TestBookmarksSuite/TestGetPropertyStep.cpp
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/bookmarksupport/test/Integration/TestBookmarksSuite/TestGetPropertyStep.cpp	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,429 @@
+// Copyright (c) 2005-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:
+// Contains implementation of CTestGetPropertyStep class
+// 
+//
+
+/**
+ @file
+ @internalTechnology 
+*/
+
+// System Includes
+#include <bookmarkdatabase.h>
+#include <escapeutils.h>
+
+// User Include
+#include "TestGetPropertyStep.h"
+
+/**
+Constructor. Sets the test step name
+@internalTechnology
+@test
+*/
+CTestGetPropertyStep::CTestGetPropertyStep(CTestBookmarksServer& aTestServer) : CTestBookmarksBaseStep(aTestServer)
+	{
+	//Call base class method to set human readable name for test step
+	SetTestStepName(KTestGetPropertyStep);
+	}
+
+/**
+Base class pure virtual.
+@internalTechnology
+@test
+@param		None
+@return		EPass or EFail indicating the result of the test step.
+*/
+TVerdict CTestGetPropertyStep::doTestStepL()
+	{
+	TInt property;
+	TPtrC expectedValue;
+	if(!GetIntFromConfig(ConfigSection(), 	 KIniProperty, 		property	  ) ||
+	  (!GetStringFromConfig(ConfigSection(), KIniExpectedValue,	expectedValue ) &&
+	  	property != EBookmarkAuth && property != EDbVersion )
+	  )
+		{
+		ERR_PRINTF3(_L("Problem in reading values from ini.			\
+						\nExpected fields are: \n%S\n%S\n"
+					  ),&KIniProperty, &KIniExpectedValue
+				   );
+		SetTestStepResult(EFail);
+		}
+	else
+		{
+		TRAPD(error, DoTestL(property, expectedValue));
+		if(error != KErrNone)
+			{
+			ERR_PRINTF2(_L("Error occured in CTestGetPropertyStep::DoTestL"), error);
+			SetTestStepResult(EFail);
+			}
+		}
+	return TestStepResult();
+	}	// doTestStepL
+
+/**
+Checks whether DB or item property is to be retreived and calls the
+appropriate function
+@internalTechnology
+@test
+@param		Enumeration indicating the property we have to get
+@param		Expected value for the property
+@return		None
+*/
+void CTestGetPropertyStep::DoTestL(const TInt& aProperty, const TPtrC& aExpectedValue)
+	{
+	TPtrC title;
+	TPtrC typeOfItem;
+	if(aProperty < KDbGeneralPropertiesStart)
+		{
+		if(!GetStringFromConfig(ConfigSection(), KIniTitle, 	 title		) ||
+	   	   !GetStringFromConfig(ConfigSection(), KIniTypeOfItem, typeOfItem	)
+	   	  )
+			{
+			ERR_PRINTF3(_L("%S and %S must also be provided for item property"),&KIniTypeOfItem, &KIniTitle);
+			SetTestStepResult(EFail);
+			}
+		else
+			{// Item property
+			TInt error = KErrNone;
+			RBkNode bkNode;
+			if((error = GetBkNode(title, typeOfItem, bkNode)) != KErrNone)
+				{
+				ERR_PRINTF3(_L("Error occured while opening item %S : %D"), &title, error);
+				SetTestStepError(error);
+				}
+			else
+				{
+				CleanupClosePushL(bkNode);
+				GetAndCompareItemPropertyValueL(bkNode, aProperty, aExpectedValue);
+				CleanupStack::PopAndDestroy(&bkNode);
+				}
+			}
+		}
+	else
+		{// DB property
+		GetAndCompareDbPropertyValueL(aProperty, aExpectedValue);
+		}
+	}	//DoTestL
+
+/**
+Gets and compares item property with expected value
+@internalTechnology
+@test
+@param		Reference to the handle to the node whose property we have to get
+@param		Enumeration indicating the property we have to get
+@param		Expected value for the property
+@return		None
+*/
+void CTestGetPropertyStep::GetAndCompareItemPropertyValueL(const RBkNode& aBkNode, const TInt& aProperty, const TPtrC& aExpectedValue)
+	{
+	TVerdict verdict = EPass;
+	TInt error = KErrNone;
+	TUint32 retTUint32Val;
+	TBool retBoolVal;
+	TPtrC retStrVal;
+	switch(aProperty)
+		{
+		case EItemWritable:
+			retBoolVal = aBkNode.IsWritable();
+			verdict = CompareBools(retBoolVal, CTestBookmarksServer::GetBool(aExpectedValue));
+			break;
+		case EItemPublic:
+			retBoolVal = aBkNode.IsPublic();
+			verdict = CompareBools(retBoolVal, CTestBookmarksServer::GetBool(aExpectedValue));
+			break;
+		case EBookmarkIsHome:
+			{
+			RBkBookmark homePgBkMrk = aBkNode.OpenBookmarkL();
+			retBoolVal = homePgBkMrk.IsHomePage();
+			homePgBkMrk.Close();
+			verdict = CompareBools(retBoolVal, CTestBookmarksServer::GetBool(aExpectedValue));
+			break;
+			}
+		case EItemDescription:
+			TRAP(error, retStrVal.Set(aBkNode.DescriptionL()));
+			if(error == KErrNone)
+				{
+				verdict = CompareStrings(retStrVal, aExpectedValue);
+				}
+			break;
+		case EItemParent:
+			{
+			error = GetItemParent(aBkNode, aExpectedValue, verdict);
+			break;
+			}
+		case EItemTitle	:
+			retStrVal.Set(aBkNode.Title());
+			verdict = CompareStrings(retStrVal, aExpectedValue);
+			break;
+		case EBookmarkNap:
+			{
+			RBkBookmark bkBkMrk = aBkNode.OpenBookmarkL();
+			TRAP(error, retTUint32Val = bkBkMrk.GetNapL());
+			bkBkMrk.Close();
+			if(error == KErrNone)
+				{
+				verdict = CompareTUints(retTUint32Val, CTestBookmarksServer::GetTUint32(aExpectedValue));
+				}
+			break;
+			}
+		case EBookmarkProxy:
+			{
+			RBkBookmark bkBkMrk = aBkNode.OpenBookmarkL();
+			TRAP(error, retTUint32Val = bkBkMrk.ProxyL());
+			bkBkMrk.Close();
+			if(error == KErrNone)
+				{
+				verdict = CompareTUints(retTUint32Val, CTestBookmarksServer::GetTUint32(aExpectedValue));
+				}
+			break;
+			}
+		case EBookmarkUri:
+			{
+			RBkBookmark bkBkMrk = aBkNode.OpenBookmarkL();
+			CleanupClosePushL(bkBkMrk);
+			// Convert to 16-bit
+			HBufC* hBufC = EscapeUtils::ConvertToUnicodeFromUtf8L(bkBkMrk.Uri());
+			verdict = CompareStrings(hBufC->Des(), aExpectedValue);
+			delete hBufC;
+			CleanupStack::PopAndDestroy(&bkBkMrk);
+			break;
+			}
+		case EBookmarkAuth:
+			{
+			RBkBookmark bkBkMrk = aBkNode.OpenBookmarkL();
+			TRAP(error, verdict = DoGetAuthenticationL(bkBkMrk));
+			bkBkMrk.Close();
+			break;
+			}
+		case EBookmarkLastVisited:
+			{
+			TTime retTTimeVal;
+			RBkBookmark bkBkMrk = aBkNode.OpenBookmarkL();
+			TRAP(error, retTTimeVal = bkBkMrk.LastVisited());
+			if(error == KErrNone)
+				{
+				verdict = CompareTTimes(retTTimeVal, TTime(aExpectedValue));
+				}
+			bkBkMrk.Close();
+			break;
+			}
+		case EBookmarkLastModified:
+			{
+			TTime retTTimeVal;
+			RBkBookmark bkBkMrk = aBkNode.OpenBookmarkL();
+			TRAP(error, retTTimeVal = bkBkMrk.LastModifiedL());
+			if(error == KErrNone)
+				{
+				verdict = CompareTTimes(retTTimeVal, TTime(aExpectedValue));
+				}
+			bkBkMrk.Close();
+			break;
+			}
+		case EItemOwner:
+			TRAP(error, retTUint32Val = aBkNode.OwnerL());
+			if(error == KErrNone)
+				{
+				verdict = CompareTUints(retTUint32Val, CTestBookmarksServer::GetTUint32(aExpectedValue));
+				}
+			break;
+		default:
+			INFO_PRINTF2(_L("Invalid property number : %D"), aProperty);
+			SetTestStepResult(EFail);
+		}
+
+	// Examine the result
+	CheckErrorAndVerdict(error, verdict);
+	}	// GetAndCompareItemPropertyValueL
+
+/**
+Gets and compares the item's parent with an expected value
+@internalTechnology
+@test
+@param		Reference to the handle to the node whose parent we have to get
+@param		The title of the expected parent folder
+@param		Refernce to the verdict variable, that will be set by this method
+@return		Error resulting out of the operation, if any. Else, KErrNone
+*/
+TInt CTestGetPropertyStep::GetItemParent(const RBkNode& aBkNode, const TPtrC& aExpectedValue, TVerdict& aVerdict)
+	{
+	RBkNode parentFolder;
+	TRAPD(error, parentFolder = aBkNode.OpenParentL());
+	if(error == KErrNone)
+		{
+		TUint32 retTUint32Val = parentFolder.Id();
+		parentFolder.Close();
+		RBkFolder expectedParentFolder;
+		if((error = GetBkNode(aExpectedValue, KFolder(), expectedParentFolder)) != KErrNone)
+			{
+			ERR_PRINTF3(_L("Error occured while opening item %S : %D"), &aExpectedValue, error);
+			SetTestStepError(error);
+			}
+		else
+			{
+			aVerdict = CompareTUints(retTUint32Val, expectedParentFolder.Id());
+			expectedParentFolder.Close();
+			}
+		}
+		return error;
+	}
+
+/**
+Gets and compares DB property with expected value
+@internalTechnology
+@test
+@param		Enumeration indicating the property we have to get
+@param		Expected value for the property
+@return		None
+*/
+void CTestGetPropertyStep::GetAndCompareDbPropertyValueL(const TInt& aProperty, const TPtrC& aExpectedValue)
+	{
+	TInt error = KErrNone;
+	TVerdict verdict = EPass;
+	TPtrC retStrVal;
+	TUint32 retTUint32Val;
+	switch(aProperty)
+		{
+		case EDbDefaultNap:
+			retTUint32Val = iBkDb.DefaultNap();
+			verdict = CompareTUints(retTUint32Val, CTestBookmarksServer::GetTUint32(aExpectedValue));
+			break;
+		case EDbDefaultProxy:
+			retTUint32Val = iBkDb.DefaultProxy();
+			verdict = CompareTUints(retTUint32Val, CTestBookmarksServer::GetTUint32(aExpectedValue));
+			break;
+		case EDbHome:
+			{
+			error = GetAndCompareHomePageBookmark(aExpectedValue, verdict);
+			break;
+			}
+		case EDbHomePageText:
+			retStrVal.Set(iBkDb.HomePageText());
+			verdict = CompareStrings(retStrVal, aExpectedValue);
+			break;
+		case EDbSearchUri:
+			{
+			// Convert to 16-bit
+			HBufC* hBufC = EscapeUtils::ConvertToUnicodeFromUtf8L(iBkDb.SearchUri());
+			retStrVal.Set(hBufC->Des());
+			verdict = CompareStrings(retStrVal, aExpectedValue);
+			delete hBufC;
+			break;
+			}
+		default:
+			INFO_PRINTF2(_L("Invalid property number : %D"), aProperty);
+			SetTestStepResult(EFail);
+		}
+	
+	// Examine the result
+	CheckErrorAndVerdict(error, verdict);
+	}	// GetAndCompareItemPropertyValueL
+
+/**
+Gets and compares the item's homepage bookmark with an expected value
+@internalTechnology
+@test
+@param		Descriptor indicating the expected bookmark
+@param		Reference to the verdict variable, that will be set by this method
+@return		Error resulting out of the operation, if any. Else, KErrNone
+*/
+TInt CTestGetPropertyStep::GetAndCompareHomePageBookmark(const TPtrC& aExpectedValue, TVerdict& aVerdict)
+	{
+	TInt error = KErrNone;
+	RBkBookmark homePageBkMrk;
+	TRAP(error, homePageBkMrk = iBkDb.OpenHomeL());
+	if(error == KErrNone)
+		{
+		TUint32 retTUint32Val = homePageBkMrk.Id();
+		homePageBkMrk.Close();
+		RBkBookmark expectedNode;
+		if((error = GetBkNode(aExpectedValue, KBookmark(), expectedNode)) != KErrNone)
+			{
+			ERR_PRINTF3(_L("Error occured while opening item %S : %D"), &aExpectedValue, error);
+			SetTestStepError(error);
+			}
+		else
+			{
+			aVerdict = CompareTUints(retTUint32Val, expectedNode.Id());
+			expectedNode.Close();
+			}
+		}
+		return error;
+	}
+
+/**
+Reads expected authentication details from ini, gets the authentication object
+from the bookmark and compares its components with the expected ones
+@internalTechnology
+@test
+@param		Reference to handle to the bookmark whose auth-params we are to get
+@return		EPass or EFail based on the result of the comparison
+*/
+TVerdict CTestGetPropertyStep::DoGetAuthenticationL(const RBkBookmark& bkBkMrk)
+	{
+	TVerdict verdict = EPass;
+	TPtrC name;
+	TPtrC password;
+	TPtrC method;
+	CAuthentication::TMethod tMethod = CAuthentication::EDigest;
+
+	if(!GetStringFromConfig(ConfigSection(), KIniAuthName, 	   name		) ||
+	   !GetStringFromConfig(ConfigSection(), KIniAuthPassword, password	)
+	  )
+		{
+		ERR_PRINTF3(_L("%S and %S must also be mentioned in ini file"),&KIniAuthName, &KIniAuthPassword);
+		SetTestStepResult(EFail);
+		return EFail;
+		}
+	else
+		{
+		if(GetStringFromConfig(ConfigSection(),KIniAuthMethod, method))
+			{
+			if(method.Compare(KMethodBasic) == KErrNone)
+				{
+				tMethod = CAuthentication::EBasic;
+				}
+			}
+
+		// Get auth-params
+		// Construct 16-bit versions of the auth-params, so that we can compare
+		HBufC* retName = EscapeUtils::ConvertToUnicodeFromUtf8L(const_cast<RBkBookmark&>(bkBkMrk).AuthenticationL().Name());
+		CleanupStack::PushL(retName);
+		HBufC* retPassword = EscapeUtils::ConvertToUnicodeFromUtf8L(const_cast<RBkBookmark&>(bkBkMrk).AuthenticationL().Password());
+		CleanupStack::PushL(retPassword);
+
+		CAuthentication::TMethod retTMethod = const_cast<RBkBookmark&>(bkBkMrk).AuthenticationL().Method();
+
+		// Compare and decide on the verdict
+		if(CompareStrings(retName->Des(), name) == EFail)
+			{
+			INFO_PRINTF1(_L("The expected name and returned name did not match"));
+			verdict = EFail;
+			}
+		if(CompareStrings(retPassword->Des(), password) == EFail)
+			{
+			INFO_PRINTF1(_L("The expected password and returned password did not match"));
+			verdict = EFail;
+			}
+		if(CompareTInts(retTMethod, tMethod) == EFail)
+			{
+			INFO_PRINTF1(_L("The expected method and returned method did not match"));
+			verdict = EFail;
+			}
+		CleanupStack::PopAndDestroy(2, retName);
+		}
+	return verdict;
+	}	// DoGetAuthenticationL
+
+