diff -r 000000000000 -r bde4ae8d615e os/security/contentmgmt/referencedrmagent/tcaf/source/ManagerStep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/security/contentmgmt/referencedrmagent/tcaf/source/ManagerStep.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,1860 @@ +/* +* Copyright (c) 2003-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 "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: +* +*/ + + +#include +#include + +#include "cafserver.h" +#include "ManagerStep.h" +#include "manager.h" +#include "dirstreamable.h" +#include "virtualpathptr.h" +#include "agent.h" +#include "attributeset.h" +#include "stringattributeset.h" +#include "contentIterator.h" + +using namespace ContentAccess; + + + +/* + * This step deletes a file using the CAF framework + * + */ + +CCAFDeleteStep::~CCAFDeleteStep() + { + } + +CCAFDeleteStep::CCAFDeleteStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFDeleteStep); + } + + +TVerdict CCAFDeleteStep::doTestStepL() + { + TPtrC fileName; + + TInt expectedResult; + TInt result; + + SetTestStepResult(EFail); + + // Find the file to delete and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("filename"),fileName); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF3(_L("Delete File %S Expected result: %d"), &fileName, expectedResult); + + __UHEAP_MARK; + + TRAP(result, CManager::DeleteFileL(fileName)); + + if(result != KErrNone) + { + INFO_PRINTF2(_L("Delete file left: %d"), result); + if(result== expectedResult) + { + SetTestStepResult(EPass); + } + } + else if(result == expectedResult) + { + SetTestStepResult(EPass); + } + else INFO_PRINTF2(_L("Delete file left with error: %d"), result); + + __UHEAP_MARKEND; + return TestStepResult(); + } + + +/* + * This step copies a file using the CAF framework + * + */ + +CCAFCopyFileStep::~CCAFCopyFileStep() + { + } + +CCAFCopyFileStep::CCAFCopyFileStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFCopyFileStep); + } + + +TVerdict CCAFCopyFileStep::doTestStepL() + { + TPtrC source; + TPtrC destination; + + TInt expectedResult; + TInt result; + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("source"),source); + GetStringFromConfig(ConfigSection(),_L("destination"),destination); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF4(_L("Copy %S to %S, Expected result: %d"), &source, &destination, expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + + result = manager->CopyFile(source, destination); + if(result == expectedResult) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("CopyFile(source as filename overload) returned with unexpected error: %d"), result); + } + // set up 2nd overload testing + RFs fs; + RFile file; + + // read the input file and pass it to the CAF + fs.Connect(); + CleanupClosePushL(fs); + User::LeaveIfError(fs.ShareProtected()); + + result = file.Open(fs, source, EFileRead | EFileStream | EFileShareAny); + if (result == KErrNone) + { + CleanupClosePushL(file); + + // test the RFile overload + result = manager->CopyFile(file, destination); + + if ((result == expectedResult)&&(TestStepResult()==EPass)) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("CopyFile(source as RFile handle overload) returned with unexpected error: %d"), result); + } + + CleanupStack::PopAndDestroy(&file); + + } + else if ((result == expectedResult)&&(TestStepResult()==EPass)) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("CopyFile(source as RFile handle overload) returned with unexpected error: %d"), result); + } + + CleanupStack::PopAndDestroy(&fs); + + CleanupStack::PopAndDestroy(manager); + + __UHEAP_MARKEND; + return TestStepResult(); + } +/* + * This step renames a file using the CAF framework + * + */ + +CCAFRenameFileStep::~CCAFRenameFileStep() + { + } + +CCAFRenameFileStep::CCAFRenameFileStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFRenameFileStep); + } + + +TVerdict CCAFRenameFileStep::doTestStepL() + { + TPtrC source; + TPtrC destination; + + TInt expectedResult; + TInt result; + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("source"),source); + GetStringFromConfig(ConfigSection(),_L("destination"),destination); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF4(_L("Rename from %S to %S, Expected result: %d"), &source, &destination, expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + result = manager->RenameFile(source, destination); + CleanupStack::PopAndDestroy(manager); + + if(result == expectedResult) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("RenameFile() returned with unexpected error: %d"), result); + } + + __UHEAP_MARKEND; + return TestStepResult(); + } + + +/* + * This step creates a directory using the CAF framework + * + */ + +CCAFMkDirStep::~CCAFMkDirStep() + { + } + +CCAFMkDirStep::CCAFMkDirStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFMkDirStep); + } + + +TVerdict CCAFMkDirStep::doTestStepL() + { + TPtrC path; + TInt expectedResult; + TInt result; + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("path"),path); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF3(_L("Create directory %S, Expected result: %d"), &path, expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + result = manager->MkDir(path); + CleanupStack::PopAndDestroy(manager); + + if(result == expectedResult) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("MkDir() returned with unexpected error: %d"), result); + } + + __UHEAP_MARKEND; + return TestStepResult(); + } + + +/* + * This step creates several directory using the CAF framework + * + */ + +CCAFMkDirAllStep::~CCAFMkDirAllStep() + { + } + +CCAFMkDirAllStep::CCAFMkDirAllStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFMkDirAllStep); + } + + +TVerdict CCAFMkDirAllStep::doTestStepL() + { + TPtrC path; + TInt expectedResult; + TInt result; + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("path"),path); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF3(_L("Create directory %S, Expected result: %d"), &path, expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + // remove directory in case it already exists + manager->RmDir(path); + result = manager->MkDirAll(path); + CleanupStack::PopAndDestroy(manager); + + if(result == expectedResult) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("MkDirAll() returned with unexpected error: %d"), result); + } + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * This step removes a directory using the CAF framework + * + */ + +CCAFRmDirStep::~CCAFRmDirStep() + { + } + +CCAFRmDirStep::CCAFRmDirStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFRmDirStep); + } + + +TVerdict CCAFRmDirStep::doTestStepL() + { + TPtrC path; + TInt expectedResult; + TInt result; + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("path"),path); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF3(_L("Remove directory %S, Expected result: %d"), &path, expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + result = manager->RmDir(path); + CleanupStack::PopAndDestroy(manager); + + if(result == expectedResult) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("RmDir() returned with unexpected error: %d"), result); + } + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * This step lists the contents of a directory using the CAF framework + * + */ + +CCAFGetDirStep::~CCAFGetDirStep() + { + } + +CCAFGetDirStep::CCAFGetDirStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFGetDirStep); + } + + +TVerdict CCAFGetDirStep::doTestStepL() + { + TPtrC path; + TInt expectedResult; + TInt result; + TInt GetDirAPI = 0; + + CDir *entrylist = NULL; + CDir *dirlist = NULL; + CDir *filelist = NULL; + + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("path"),path); + GetIntFromConfig(ConfigSection(),_L("API"),GetDirAPI); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF3(_L("List contents of directory %S, Expected result: %d"), &path, expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + if(GetDirAPI == 1) + { + result = manager->GetDir(path,ESortByName, KEntryAttNormal, entrylist); + } + else if(GetDirAPI == 2) + { + result = manager->GetDir(path,ESortByName, KEntryAttNormal, entrylist, dirlist); + } + else + { + result = manager->GetDir(path,TUidType(), ESortByName, filelist); + } + CleanupStack::PopAndDestroy(manager); + + if(entrylist) + { + INFO_PRINTF2(_L("%d items in EntryList:"), entrylist->Count()); + DisplayList(*entrylist); + delete entrylist; + entrylist = NULL; + } + + if(dirlist) + { + INFO_PRINTF2(_L("%d items in DirList:"), dirlist->Count()); + DisplayList(*dirlist); + delete dirlist; + dirlist = NULL; + } + + if(filelist) + { + INFO_PRINTF2(_L("%d items in FileList:"), filelist->Count()); + DisplayList(*filelist); + delete filelist; + filelist = NULL; + } + + if(result == expectedResult) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("GetDir() returned with unexpected error: %d"), result); + } + + __UHEAP_MARKEND; + return TestStepResult(); + } + + +void CCAFGetDirStep::DisplayList(CDir& aDir) + { + TInt i = 0; + for(i = 0; i < aDir.Count(); i++) + { + INFO_PRINTF2(_L(" %S"), &aDir[i].iName ); + } + } + + +/* + * This step tests the notification functions + * + */ + +CCAFManagerNotifyStep::~CCAFManagerNotifyStep() + { + } + +CCAFManagerNotifyStep::CCAFManagerNotifyStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerNotifyStep); + } + + +TVerdict CCAFManagerNotifyStep::doTestStepL() + { + TPtrC uri; + TInt result; + TRequestStatus status = KRequestPending; + + TInt Status1; + TInt Cancel1; + TInt Cancel2; + + + SetTestStepResult(EPass); + + // Find the file to copy and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("path"),uri); + GetIntFromConfig(ConfigSection(),_L("Status1"),Status1); + GetIntFromConfig(ConfigSection(),_L("Cancel1"),Cancel1); + GetIntFromConfig(ConfigSection(),_L("Cancel2"),Cancel2); + + INFO_PRINTF2(_L("Performing notification tests on %S"), &uri); + + __UHEAP_MARK; + CManager *manager = CManager::NewLC(); + // Wait for rights + manager->NotifyStatusChange(uri, ERightsAvailable, status); + User::WaitForRequest(status); + if(status.Int() != Status1) + { + INFO_PRINTF3(_L("Status expected: %d returned unexpected status %d"), Status1, status.Int()); + SetTestStepResult(EFail); + } + result = manager->CancelNotifyStatusChange(uri, status); + if(result != Cancel1) + { + INFO_PRINTF3(_L("Cancel request expected return value: %d returned unexpected value %d"), Cancel1, result); + SetTestStepResult(EFail); + } + + // Wait for rights expired but cancel before they arrive + manager->NotifyStatusChange(uri, ERightsExpired, status); + result = manager->CancelNotifyStatusChange(uri, status); + if(result != Cancel2) + { + INFO_PRINTF3(_L("Cancel2 request expected return value: %d returned unexpected value %d"), Cancel2, result); + SetTestStepResult(EFail); + } + + CleanupStack::PopAndDestroy(manager); + + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * This step sets a property in the agents + * + */ + +CCAFManagerSetPropertyStep::~CCAFManagerSetPropertyStep() + { + } + +CCAFManagerSetPropertyStep::CCAFManagerSetPropertyStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerSetPropertyStep); + } + + +TVerdict CCAFManagerSetPropertyStep::doTestStepL() + { + TInt expectedResult; + TInt result; + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF2(_L("Set Property expected result: %d"), expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + result = manager->SetProperty(EAgentPropertyBufferSize, 100); + CleanupStack::PopAndDestroy(manager); + + // dummy test Agent expects KErrNotSupported + if(result == expectedResult || result == KErrNotSupported) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("SetProperty() returned with unexpected error: %d"), result); + } + + __UHEAP_MARKEND; + return TestStepResult(); + } + + +/* + * This step asks the agent to display information about a file + * + */ + +CCAFManagerDisplayInfoStep::~CCAFManagerDisplayInfoStep() + { + } + +CCAFManagerDisplayInfoStep::CCAFManagerDisplayInfoStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerDisplayInfoStep); + } + + +TVerdict CCAFManagerDisplayInfoStep::doTestStepL() + { + TPtrC uri; + TInt expectedResult; + TInt result; + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetStringFromConfig(ConfigSection(),_L("uri"),uri); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF3(_L("DisplayInfo for %S expected result: %d"), &uri, expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + TRAP(result, manager->DisplayInfoL(EFileProperties, TVirtualPathPtr(uri))); + CleanupStack::PopAndDestroy(manager); + + if(result == expectedResult) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("DisplayInfoL() left with unexpected error: %d"), result); + } + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * This step asks CAF for a list of agents + * + */ + +CCAFManagerListAgentsStep::~CCAFManagerListAgentsStep() + { + } + +CCAFManagerListAgentsStep::CCAFManagerListAgentsStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerListAgentsStep); + } + + +TVerdict CCAFManagerListAgentsStep::doTestStepL() + { + TPtrC uri; + TInt expectedResult; + TInt expectedNumber; + TInt result; + + RArray agents; + + SetTestStepResult(EFail); + + // Find the file to copy and the expected return code from the INI file + GetIntFromConfig(ConfigSection(),_L("count"),expectedNumber); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + INFO_PRINTF2(_L("List agents expected result: %d"), expectedResult); + + __UHEAP_MARK; + + CManager *manager = CManager::NewLC(); + TRAP(result, manager->ListAgentsL(agents)); + CleanupStack::PopAndDestroy(manager); + + TInt i = 0; + for (i = 0; i < agents.Count(); i++) + { + TPtrC agentName = agents[i].Name(); + INFO_PRINTF2(_L(" %S"), &agentName); + } + + INFO_PRINTF2(_L("List agents expected result: %d"), expectedResult); + + if(result == expectedResult) + { + if(expectedNumber == agents.Count()) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF2(_L("Expected number of agents: %d"), expectedNumber); + } + } + else + { + INFO_PRINTF2(_L("ListAgents left with unexpected error: %d"), result); + } + + agents.Close(); + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * This step attempts to perform an agent specific command + * + */ + +CCAFManagerAgentSpecificStep::~CCAFManagerAgentSpecificStep() + { + } + +CCAFManagerAgentSpecificStep::CCAFManagerAgentSpecificStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerAgentSpecificStep); + } + + +TVerdict CCAFManagerAgentSpecificStep::doTestStepL() + { + TPtrC input16; + TPtrC output16; + TInt expectedResult; + TInt command; + TInt result; + TBuf8 <100> actualOutput; + TBuf8 <100> output; + TBuf8 <100> input; + TInt index = 0; + + RArray agents; + _LIT(KTestAgentName, "Reference Test Agent"); + + SetTestStepResult(EPass); + + GetIntFromConfig(ConfigSection(),_L("command"),command); + GetStringFromConfig(ConfigSection(),_L("input"),input16); + GetStringFromConfig(ConfigSection(),_L("output"),output16); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + input.Copy(input16); + output.Copy(output16); + + __UHEAP_MARK; + CManager *manager = CManager::NewLC(); + TRAP(result, manager->ListAgentsL(agents)); + + INFO_PRINTF1(_L("Running synchronous Agent specific command")); + actualOutput.SetLength(0); + if(result == KErrNone && agents.Count() > 0) + { + for(index = 0; index < agents.Count(); index++) + { + if(agents[index].Name() == KTestAgentName()) + { + break; + } + } + result = manager->AgentSpecificCommand(agents[index],command, input, actualOutput); + } + else + { + SetTestStepResult(EFail); + } + if(result != expectedResult) + { + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Async Expected result: %d, actual result: %d"), expectedResult, result); + } + else if(actualOutput != output) + { + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Async Expected output: %S, actual output: %S"), &output, &actualOutput); + } + + INFO_PRINTF1(_L("Running asynchronous Agent specific command")); + TRequestStatus status; + actualOutput.SetLength(0); + if((result == KErrNone || result == expectedResult) && agents.Count() > 0) + { + manager->AgentSpecificCommand(agents[index], command, input, actualOutput, status); + User::WaitForRequest(status); + } + else + { + SetTestStepResult(EFail); + } + if(status.Int() != expectedResult) + { + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Async Expected result: %d, actual result: %d"), expectedResult, status.Int()); + } + else if(actualOutput != output) + { + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Async Expected output: %S, actual output: %S"), &output, &actualOutput); + } + + CleanupStack::PopAndDestroy(manager); + agents.Close(); + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * This step attempts to display configuration information + * + */ + +CCAFManagerDisplayConfigStep::~CCAFManagerDisplayConfigStep() + { + } + +CCAFManagerDisplayConfigStep::CCAFManagerDisplayConfigStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerDisplayConfigStep); + } + +TVerdict CCAFManagerDisplayConfigStep::doTestStepL() + { + TInt expectedResult; + TInt result = KErrNone; + + RArray agents; + CManager *manager; + + SetTestStepResult(EPass); + + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + __UHEAP_MARK; + manager = CManager::NewL(); + CleanupStack::PushL(manager); + TRAP(result, manager->ListAgentsL(agents)); + + if(result == KErrNone && agents.Count() > 0) + { + TRAP(result, manager->DisplayManagementInfoL(agents[0])); + } + else + { + SetTestStepResult(EFail); + } + if(result != expectedResult && result != KErrNotSupported) // dummy test agent expects -5 + { + SetTestStepResult(EFail); + INFO_PRINTF3(_L("Expected result: %d, actual result: %d"), expectedResult, result); + } + + CleanupStack::PopAndDestroy(manager); + agents.Close(); + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * Manager attribute step + * + */ + +CCAFManagerAttributeStep::~CCAFManagerAttributeStep() + { + } + +CCAFManagerAttributeStep::CCAFManagerAttributeStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerAttributeStep); + } + +TVerdict CCAFManagerAttributeStep::doTestStepL() + { +#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + TBool wmdrmFlag = EFalse; + GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag); + + if(wmdrmFlag) + { + TVerdict verdict = doWmdrmTestStepL(); + return verdict; + } +#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + + TInt attribute; + TInt value = KErrNone; + TInt expectedValue; + TPtrC uri; + TPtrC uniqueId; + + CManager *manager; + + SetTestStepResult(EPass); + + GetIntFromConfig(ConfigSection(),_L("attribute"),attribute); + GetStringFromConfig(ConfigSection(),_L("uri"),uri); + GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId); + GetIntFromConfig(ConfigSection(),_L("value"),expectedValue); + + __UHEAP_MARK; + manager = CManager::NewL(); + if(manager) + { + CleanupStack::PushL(manager); + User::LeaveIfError(manager->GetAttribute(attribute, value, TVirtualPathPtr(uri, uniqueId))); + if(expectedValue!= value) + { + SetTestStepResult(EFail); + INFO_PRINTF3(_L("CManager::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value); + } + CleanupStack::PopAndDestroy(manager); + } + else + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CManager construction failed")); + } + + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * Manager attributeset step + * + */ + +CCAFManagerAttributeSetStep::~CCAFManagerAttributeSetStep() + { + } + +CCAFManagerAttributeSetStep::CCAFManagerAttributeSetStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerAttributeSetStep); + } + +TVerdict CCAFManagerAttributeSetStep::doTestStepL() + { +#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + TBool wmdrmFlag = EFalse; + GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag); + + if(wmdrmFlag) + { + TVerdict verdict = doWmdrmTestStepL(); + return verdict; + } +#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + + TInt value1; + TInt value2; + TInt expectedValue1; + TInt expectedValue2; + TInt attribute1; + TInt attribute2; + TInt result = KErrNone; + TPtrC uri; + TPtrC uniqueId; + + CManager *manager; + + SetTestStepResult(EPass); + + GetStringFromConfig(ConfigSection(),_L("uri"),uri); + GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId); + GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1); + GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2); + GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1); + GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2); + + __UHEAP_MARK; + manager = CManager::NewL(); + if(manager) + { + CleanupStack::PushL(manager); + RAttributeSet attributeSet; + CleanupClosePushL(attributeSet); + attributeSet.AddL(attribute1); + attributeSet.AddL(attribute2); + result = manager->GetAttributeSet(attributeSet, TVirtualPathPtr(uri, uniqueId)); + if(result != KErrNone) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CManager::GetAttribute() failed")); + } + User::LeaveIfError(attributeSet.GetValue(attribute1, value1)); + User::LeaveIfError(attributeSet.GetValue(attribute2, value2)); + if(expectedValue1 != value1 || expectedValue2 != value2 || attributeSet.Count() != 2) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values")); + } + CleanupStack::PopAndDestroy(&attributeSet); + CleanupStack::PopAndDestroy(manager); + } + else + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CManager construction failed")); + } + + + __UHEAP_MARKEND; + return TestStepResult(); + } + + +/* + * Manager string attribute step + * + */ + +CCAFManagerStringAttributeStep::~CCAFManagerStringAttributeStep() + { + } + +CCAFManagerStringAttributeStep::CCAFManagerStringAttributeStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerStringAttributeStep); + } + +TVerdict CCAFManagerStringAttributeStep::doTestStepL() + { +#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + TBool wmdrmFlag = EFalse; + GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag); + + if(wmdrmFlag) + { + TVerdict verdict = doWmdrmTestStepL(); + return verdict; + } +#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + + TInt expectedResult; + TInt attribute; + TPtrC expectedValue; + TBuf <200> value; + TInt result = KErrNone; + TPtrC uri; + TPtrC uniqueId; + + CManager *manager; + + SetTestStepResult(EPass); + + GetIntFromConfig(ConfigSection(),_L("attribute"),attribute); + GetStringFromConfig(ConfigSection(),_L("uri"),uri); + GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId); + GetStringFromConfig(ConfigSection(),_L("value"),expectedValue); + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + + __UHEAP_MARK; + manager = CManager::NewL(); + if(manager) + { + CleanupStack::PushL(manager); + result = manager->GetStringAttribute(attribute, value, TVirtualPathPtr(uri, uniqueId)); + if(result != expectedResult) + { + SetTestStepResult(EFail); + INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result); + } + if(value != expectedValue) + { + SetTestStepResult(EFail); + INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected value: %S, actual result: %S"), &expectedValue, &value); + } + + CleanupStack::PopAndDestroy(manager); + } + else + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CManager construction failed")); + } + + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * Manager StringAttributeSet step + * + */ + +CCAFManagerStringAttributeSetStep::~CCAFManagerStringAttributeSetStep() + { + } + +CCAFManagerStringAttributeSetStep::CCAFManagerStringAttributeSetStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerStringAttributeSetStep); + } + +TVerdict CCAFManagerStringAttributeSetStep::doTestStepL() + { +#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + TBool wmdrmFlag = EFalse; + GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag); + + if(wmdrmFlag) + { + TVerdict verdict = doWmdrmTestStepL(); + return verdict; + } +#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + + TPtrC expectedValue1; + TPtrC expectedValue2; + TBuf <200> value1; + TBuf <200> value2; + TInt result1; + TInt result2; + TInt attribute1; + TInt attribute2; + TInt result = KErrNone; + TPtrC uri; + TPtrC uniqueId; + + CManager *manager; + + SetTestStepResult(EPass); + + GetStringFromConfig(ConfigSection(),_L("uri"),uri); + GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId); + GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1); + GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2); + GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1); + GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2); + GetIntFromConfig(ConfigSection(),_L("result1"),result1); + GetIntFromConfig(ConfigSection(),_L("result2"),result2); + + + __UHEAP_MARK; + manager = CManager::NewL(); + if(manager) + { + CleanupStack::PushL(manager); + RStringAttributeSet attributeSet; + CleanupClosePushL(attributeSet); + attributeSet.AddL(attribute1); + attributeSet.AddL(attribute2); + result = manager->GetStringAttributeSet(attributeSet, TVirtualPathPtr(uri, uniqueId)); + if(result != KErrNone) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CManager::GetAttribute() failed")); + } + if(result1 != attributeSet.GetValue(attribute1, value1)) + { + INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed")); + } + if(result2 != attributeSet.GetValue(attribute2, value2)) + { + INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed")); + } + if(value1 != expectedValue1 || value2 != expectedValue2 || attributeSet.Count() != 2) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values")); + } + CleanupStack::PopAndDestroy(&attributeSet); + CleanupStack::PopAndDestroy(manager); + } + else + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("CManager construction failed")); + } + + + __UHEAP_MARKEND; + return TestStepResult(); + } + + + + +CIteratorTestStateMachine::CIteratorTestStateMachine(CCAFContentIteratorStep *aParent) : CActive(EPriorityStandard) + { + iParent = aParent; + } + +CIteratorTestStateMachine::~CIteratorTestStateMachine() + { + delete iter; + delete iPath; + delete iMimeType; + } + +void CIteratorTestStateMachine::DoCancel() + { + // Not used + CActiveScheduler::Stop(); + } + + +void CIteratorTestStateMachine::RunTestL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType) + { + iPath = aPath.AllocL(); + iMimeType = aMimeType.AllocL(); + iRecursive = aRecursive; + + // This function will only return once all files have been found + // and the RunL() method calls CActiveScheduler::Stop() + CActiveScheduler::Add(this); + iStatus = KRequestPending; + SetActive(); + TRequestStatus *ptr = &iStatus; + User::RequestComplete(ptr, KErrNone); + CActiveScheduler::Start(); + } + +void CIteratorTestStateMachine::RunL() + { + TBuf mime16; + TVirtualPathPtr location(KNullDesC(), KNullDesC()); + + if(iStatus.Int() != KErrNone) + { + delete iter; + iter = NULL; + CActiveScheduler::Stop(); + } + else + { + switch(iState) + { + case 0: // create iterator + iter = CContentIterator::NewL(*iPath, iRecursive, *iMimeType); + iStatus = KRequestPending; + iter->Next(iStatus); + SetActive(); + iState = 1; + break; + + case 1: // get result of Next request + location = iter->VirtualPath(); + mime16.Copy(iter->MimeType()); + iParent->PrintResult(location.URI(), location.UniqueId(), mime16); + iStatus = KRequestPending; + iter->Next(iStatus); + SetActive(); + break; + default: + CActiveScheduler::Stop(); + break; + }; + } + } + +/* + * Content Iterator Step + * + */ + +CCAFContentIteratorStep::~CCAFContentIteratorStep() + { + } + +CCAFContentIteratorStep::CCAFContentIteratorStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFContentIteratorStep); + } + +TVerdict CCAFContentIteratorStep::doTestStepL() + { + TPtrC path; + TPtrC mimeType; + TBuf8 mimeType8; + + SetTestStepResult(EPass); + + GetStringFromConfig(ConfigSection(),_L("path"),path); + GetStringFromConfig(ConfigSection(),_L("mimetype"),mimeType); + + mimeType8.Copy(mimeType); + + __UHEAP_MARK; + + CIteratorTestStateMachine *t = new CIteratorTestStateMachine(this); + + t->RunTestL(path, ETrue, mimeType8); + + delete t; + __UHEAP_MARKEND; + return TestStepResult(); + } + +void CCAFContentIteratorStep::PrintResult(const TDesC& aFileName, const TDesC& aUniqueId, const TDesC& aMimeType) + { + INFO_PRINTF4(_L("File: %S, UniqueId: %S, MimeType: %S"), &aFileName, &aUniqueId, &aMimeType); + } + + +/* + * This step asks the agent to display information about a file using the file handle + * + */ +CCAFManagerDisplayInfoByFileHandleStep::~CCAFManagerDisplayInfoByFileHandleStep() + { + } + +CCAFManagerDisplayInfoByFileHandleStep::CCAFManagerDisplayInfoByFileHandleStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerDisplayInfoByFileHandleStep); + } + + +TVerdict CCAFManagerDisplayInfoByFileHandleStep::doTestStepL() + { + TInt result; + + //initialisation for testing purposes such as iUri, iFs, iFile, iExpectedResult and iUniqueId. + InitialiseFileHandleParametersL(); + + SetTestStepResult(EFail); + + __UHEAP_MARK; + CManager *manager = CManager::NewLC(); + + TRAP(result, manager->DisplayInfoL(EFileProperties, iFile, iUniqueId)); + if(result == iExpectedResult) + { + SetTestStepResult(EPass); + INFO_PRINTF1(_L("CManager::DisplayInfoL()(RFile handle overload) PASSED")); + } + else + { + INFO_PRINTF1(_L("CManager::DisplayInfoL()(RFile handle overload) returned unexpected error")); + INFO_PRINTF3(_L("CManager::DisplayInfoL()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result); + } + + //cleanup manager instance + CleanupStack::PopAndDestroy(manager); + //cleanup iFs and iFile instances by closing the handles. + CleanupStack::PopAndDestroy(2, &iFs); + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * Manager attribute step using file handle. + * + */ + +CCAFManagerAttributeByFileHandleStep::~CCAFManagerAttributeByFileHandleStep() + { + } + +CCAFManagerAttributeByFileHandleStep::CCAFManagerAttributeByFileHandleStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerAttributeByFileHandleStep); + } + +TVerdict CCAFManagerAttributeByFileHandleStep::doTestStepL() + { + TInt attribute; + TInt value = KErrNone; + TInt result= KErrNone; + TInt expectedValue; + + //initialisation for testing purposes such as iUri, iFs, iFile, iExpectedResult and iUniqueId. + InitialiseFileHandleParametersL(); + GetIntFromConfig(ConfigSection(),_L("attribute"),attribute); + GetIntFromConfig(ConfigSection(),_L("value"),expectedValue); + + SetTestStepResult(EFail); + + __UHEAP_MARK; + CManager *manager = CManager::NewLC(); + + result = manager->GetAttribute(attribute, value, iFile, iUniqueId); + //expectedResult has priority over the values collected. + if(result == iExpectedResult) + { + if(value == expectedValue) + { + SetTestStepResult(EPass); + INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) PASSED")); + } + else + { + INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) values don't match expected values")); + INFO_PRINTF3(_L("CManager::GetAttribute()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue, value); + } + } + else + { + INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) returned unexpected error")); + INFO_PRINTF3(_L("CManager::GetAttribute()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result); + } + + //cleanup manager instance + CleanupStack::PopAndDestroy(manager); + //cleanup iFs and iFile instances by closing the handles. + CleanupStack::PopAndDestroy(2, &iFs); + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * Manager attributeset step by file handle. + * + */ + +CCAFManagerAttributeSetByFileHandleStep::~CCAFManagerAttributeSetByFileHandleStep() + { + } + +CCAFManagerAttributeSetByFileHandleStep::CCAFManagerAttributeSetByFileHandleStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerAttributeSetByFileHandleStep); + } + +TVerdict CCAFManagerAttributeSetByFileHandleStep::doTestStepL() + { + TInt value1; + TInt value2; + TInt expectedValue1; + TInt expectedValue2; + TInt attribute1; + TInt attribute2; + TInt result = KErrNone; + + //initialisation for testing purposes such as iUri, iFs, iFile, iExpectedResult and iUniqueId. + InitialiseFileHandleParametersL(); + GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1); + GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2); + GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1); + GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2); + + SetTestStepResult(EFail); + + __UHEAP_MARK; + CManager *manager = CManager::NewLC(); + + RAttributeSet attributeSet; + CleanupClosePushL(attributeSet); + attributeSet.AddL(attribute1); + attributeSet.AddL(attribute2); + + result = manager->GetAttributeSet(attributeSet, iFile, iUniqueId); + //expectedResult has priority over the values collected. + if(result == iExpectedResult) + { + User::LeaveIfError(attributeSet.GetValue(attribute1, value1)); + User::LeaveIfError(attributeSet.GetValue(attribute2, value2)); + if(value1 == expectedValue1 && value2 == expectedValue2) + { + SetTestStepResult(EPass); + INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) PASSED")); + } + else + { + INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) values don't match expected values")); + INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue1, value1); + INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue2, value2); + } + } + else + { + INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) returned unexpected error")); + INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result); + } + + //cleanup manager and attributeSet instances + CleanupStack::PopAndDestroy(2, manager); + //cleanup iFs and iFile instances by closing the handles. + CleanupStack::PopAndDestroy(2, &iFs); + + __UHEAP_MARKEND; + return TestStepResult(); + } + + +/* + * Manager string attribute step by file handle + * + */ + +CCAFManagerStringAttributeByFileHandleStep::~CCAFManagerStringAttributeByFileHandleStep() + { + } + +CCAFManagerStringAttributeByFileHandleStep::CCAFManagerStringAttributeByFileHandleStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerStringAttributeByFileHandleStep); + } + +TVerdict CCAFManagerStringAttributeByFileHandleStep::doTestStepL() + { + TInt attribute; + TInt result = KErrNone; + TPtrC expectedValue; + TBuf <200> value; + + //initialisation for testing purposes such as iUri, iFs, iFile, iExpectedResult and iUniqueId. + InitialiseFileHandleParametersL(); + GetIntFromConfig(ConfigSection(),_L("attribute"),attribute); + GetStringFromConfig(ConfigSection(),_L("value"),expectedValue); + + SetTestStepResult(EFail); + + __UHEAP_MARK; + CManager* manager = CManager::NewLC(); + + result = manager->GetStringAttribute(attribute, value, iFile, iUniqueId); + //expectedResult has priority over the values collected. + if(result == iExpectedResult) + { + if (value == expectedValue) + { + SetTestStepResult(EPass); + INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) PASSED")); + } + else + { + INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) values don't match expected values")); + INFO_PRINTF3(_L("CManager::GetStringAttribute()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue, &value); + } + } + else + { + INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) returned unexpected error")); + INFO_PRINTF3(_L("CManager::GetStringAttribute()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result); + } + + //cleanup manager instance + CleanupStack::PopAndDestroy(manager); + //cleanup iFs and iFile instances by closing the handles. + CleanupStack::PopAndDestroy(2, &iFs); + + __UHEAP_MARKEND; + return TestStepResult(); + } + +/* + * Manager StringAttributeSet step by file handle. + * + */ + +CCAFManagerStringAttributeSetByFileHandleStep::~CCAFManagerStringAttributeSetByFileHandleStep() + { + } + +CCAFManagerStringAttributeSetByFileHandleStep::CCAFManagerStringAttributeSetByFileHandleStep(CCAFServer& aParent) : iParent(aParent) + { + SetTestStepName(KCAFManagerStringAttributeSetByFileHandleStep); + } + +TVerdict CCAFManagerStringAttributeSetByFileHandleStep::doTestStepL() + { + TInt attribute1; + TInt attribute2; + TInt result = KErrNone; + TPtrC expectedValue1; + TPtrC expectedValue2; + TBuf <200> value1; + TBuf <200> value2; + + //initialisation for testing purposes such as iUri, iFs, iFile, iExpectedResult and iUniqueId. + InitialiseFileHandleParametersL(); + GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1); + GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2); + GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1); + GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2); + + SetTestStepResult(EFail); + + __UHEAP_MARK; + CManager* manager = CManager::NewLC(); + + RStringAttributeSet attributeSet; + CleanupClosePushL(attributeSet); + attributeSet.AddL(attribute1); + attributeSet.AddL(attribute2); + + result = manager->GetStringAttributeSet(attributeSet, iFile, iUniqueId); + //expectedResult has priority over the values collected. + if(result == iExpectedResult) + { + User::LeaveIfError(attributeSet.GetValue(attribute1, value1)); + User::LeaveIfError(attributeSet.GetValue(attribute2, value2)); + if (value1 == expectedValue1 && value2 == expectedValue2) + { + SetTestStepResult(EPass); + INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) PASSED")); + } + else + { + INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) values don't match expected values")); + INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue1, &value1); + INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue2, &value2); + } + } + else + { + INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) returned unexpected error")); + INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result); + } + + //cleanup manager and attributeSet instances + CleanupStack::PopAndDestroy(2, manager); + //cleanup iFs and iFile instances by closing the handles. + CleanupStack::PopAndDestroy(2, &iFs); + + __UHEAP_MARKEND; + return TestStepResult(); + } + +#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + +// The following methods test the various manager attribute APIs for WMDRM content. + +TVerdict CCAFManagerAttributeStep::doWmdrmTestStepL() + { + SetTestStepResult(EFail); + + TInt attribVal; + GetIntFromConfig(ConfigSection(),_L("attribute"), attribVal); + + TInt expectedValue; + GetIntFromConfig(ConfigSection(),_L("value"), expectedValue); + + __UHEAP_MARK; + + TPtrC header; + HBufC8* headerData = NULL; + + if(GetStringFromConfig(ConfigSection(),_L("header"), header)) + { + headerData = ConvertDes16toHBufC8LC(header); + } + else + { + headerData = CreateWmdrmHeaderLC(); + } + + TInt value; + CManager *manager = CManager::NewLC(); + + User::LeaveIfError(manager->GetAttribute(*headerData, attribVal, value)); + if(expectedValue == value) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF3(_L("CManager::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value); + } + + CleanupStack::PopAndDestroy(2, headerData); + + __UHEAP_MARKEND; + return TestStepResult(); + } + + +TVerdict CCAFManagerAttributeSetStep::doWmdrmTestStepL() + { + SetTestStepResult(EFail); + + TInt attribute1; + GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1); + + TInt attribute2; + GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2); + + TInt expectedValue1; + GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1); + + TInt expectedValue2; + GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2); + +__UHEAP_MARK; + + TPtrC header; + HBufC8* headerData = NULL; + + if(GetStringFromConfig(ConfigSection(),_L("header"), header)) + { + headerData = ConvertDes16toHBufC8LC(header); + } + else + { + headerData = CreateWmdrmHeaderLC(); + } + + RAttributeSet attributeSet; + CleanupClosePushL(attributeSet); + attributeSet.AddL(attribute1); + attributeSet.AddL(attribute2); + + CManager *manager = CManager::NewLC(); + TInt result = manager->GetAttributeSet(*headerData, attributeSet); + if(result == KErrNone) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF1(_L("CManager::GetAttributeSet() failed")); + } + + TInt value1; + User::LeaveIfError(attributeSet.GetValue(attribute1, value1)); + + TInt value2; + User::LeaveIfError(attributeSet.GetValue(attribute2, value2)); + + if(expectedValue1 == value1 && expectedValue2 == value2 && attributeSet.Count() == 2) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values")); + } + + CleanupStack::PopAndDestroy(3, headerData); + +__UHEAP_MARKEND; + + return TestStepResult(); + } + + +TVerdict CCAFManagerStringAttributeStep::doWmdrmTestStepL() + { + SetTestStepResult(EFail); + + TInt attribVal; + GetIntFromConfig(ConfigSection(),_L("attribute"),attribVal); + + TPtrC expectedValue; + GetStringFromConfig(ConfigSection(),_L("value"),expectedValue); + + TInt expectedResult; + GetIntFromConfig(ConfigSection(),_L("result"),expectedResult); + +__UHEAP_MARK; + + TPtrC header; + HBufC8* headerData = NULL; + + if(GetStringFromConfig(ConfigSection(),_L("header"), header)) + { + headerData = ConvertDes16toHBufC8LC(header); + } + else + { + headerData = CreateWmdrmHeaderLC(); + } + + CManager* manager = CManager::NewLC(); + TBuf <200> value; + TInt result = manager->GetStringAttribute(*headerData, attribVal, value); + if(result == expectedResult && value == expectedValue) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result); + INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected value: %S, actual value: %S"), &expectedValue, &value); + } + + CleanupStack::PopAndDestroy(2, headerData); + +__UHEAP_MARKEND; + + return TestStepResult(); + } + + +TVerdict CCAFManagerStringAttributeSetStep::doWmdrmTestStepL() + { + SetTestStepResult(EFail); + + TInt attribute1; + GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1); + + TInt attribute2; + GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2); + + TPtrC expectedValue1; + GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1); + + TPtrC expectedValue2; + GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2); + +__UHEAP_MARK; + + TPtrC header; + HBufC8* headerData = NULL; + + if(GetStringFromConfig(ConfigSection(),_L("header"), header)) + { + headerData = ConvertDes16toHBufC8LC(header); + } + else + { + headerData = CreateWmdrmHeaderLC(); + } + + RStringAttributeSet attributeSet; + CleanupClosePushL(attributeSet); + attributeSet.AddL(attribute1); + attributeSet.AddL(attribute2); + + CManager* manager = CManager::NewLC(); + TInt result = manager->GetStringAttributeSet(*headerData, attributeSet); + TBuf <200> value1; + TBuf <200> value2; + if(result == KErrNone) + { + TInt result3 = attributeSet.GetValue(attribute1, value1); + TInt result4 = attributeSet.GetValue(attribute2, value2); + + if(value1 == expectedValue1 && value2 == expectedValue2 && attributeSet.Count() == 2 + && result3 == KErrNone && result4 == KErrNone) + { + SetTestStepResult(EPass); + } + else + { + INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1.Expected value: %S, actual value: %S"), &expectedValue1, &value1); + INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2.Expected value: %S, actual value: %S"), &expectedValue2, &value2); + INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1. Expected result: %d, actual result: %d"), 0, result3); + INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2. Expected result: %d, actual result: %d"), 0, result4); + } + } + else + { + INFO_PRINTF1(_L("CManager::GetStringAttributeSet() failed")); + } + + CleanupStack::PopAndDestroy(3, headerData); + +__UHEAP_MARKEND; + + return TestStepResult(); + } + +#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT