--- /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
+
+