contentmgmt/referencedrmagent/tcaf/source/RightsManagerStep.cpp
changeset 15 da2ae96f639b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/RightsManagerStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,297 @@
+/*
+* 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 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 <test/testexecutelog.h>
+#include "cafserver.h"
+#include "RightsManagerStep.h"
+#include "manager.h"
+#include "rightsmanager.h"
+#include "virtualpathptr.h"
+#include "streamableptrarray.h"
+#include "agent.h"
+#include "rightsinfo.h"
+#include "virtualpath.h"
+
+
+using namespace ContentAccess;
+
+
+/* 
+ * This step creates a rights manager
+ *
+ */
+
+CCAFRightsManagerStep::~CCAFRightsManagerStep()
+	{
+	}
+
+CCAFRightsManagerStep::CCAFRightsManagerStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRightsManagerStep);
+	}
+
+
+TVerdict CCAFRightsManagerStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result;
+	CRightsManager *rightsmanager = NULL;
+	
+	RArray <TAgent> agents;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to delete and the expected return code from the INI file
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF2(_L("CreateAgentResolver Expected result: %d"), expectedResult);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewL();
+	CleanupStack::PushL(manager);
+	TRAP(result, manager->ListAgentsL(agents));
+		
+	if(result == KErrNone && agents.Count() > 0)
+		{
+		TRAP(result, rightsmanager = manager->CreateRightsManagerL(agents[0]));
+		CleanupStack::PushL(rightsmanager);
+		if(result != expectedResult && rightsmanager)
+			{	
+			INFO_PRINTF3(_L("Create Rights Manager Expected result: %d, actual result: %d"), expectedResult, result);
+			}
+		else
+			{
+			SetTestStepResult(EPass);	
+			}
+		CleanupStack::PopAndDestroy(rightsmanager);
+		}
+
+	CleanupStack::PopAndDestroy(manager);		
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step creates tests the rights manager listing functions
+ *
+ */
+
+CCAFRightsManagerListStep::~CCAFRightsManagerListStep()
+	{
+	}
+
+CCAFRightsManagerListStep::CCAFRightsManagerListStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRightsManagerListStep);
+	}
+
+
+TVerdict CCAFRightsManagerListStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result;
+	TInt ListAPI;
+	TPtrC uri;
+	CRightsManager *rightsManager = NULL;
+	
+	RArray <TAgent> agents;
+	RStreamablePtrArray <CRightsInfo> rights;
+	RStreamablePtrArray <CVirtualPath> contentList;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to delete and the expected return code from the INI file
+	GetIntFromConfig(ConfigSection(),_L("API"),ListAPI);
+	
+	if(ListAPI !=8 && ListAPI !=9)
+		{
+		GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+		GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+		}
+		
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewL();
+	CleanupStack::PushL(manager);
+	TRAP(result, manager->ListAgentsL(agents));
+		
+	if(result == KErrNone && agents.Count() > 0)
+		{
+		TRAP(result, rightsManager = manager->CreateRightsManagerL(agents[0]));
+		CleanupStack::PopAndDestroy(manager);		
+		if(rightsManager)
+			{	
+			CleanupStack::PushL(rightsManager);
+			if(ListAPI == 1)
+				{
+				rightsManager->ListAllRightsL(rights);
+				CleanupClosePushL(rights);
+				if(rights.Count() == 1)
+					{
+					SetTestStepResult(EPass);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("ListAllRights() is empty"));			
+					}
+				CleanupStack::PopAndDestroy(&rights);
+				}
+			else if(ListAPI == 2)
+				{
+				rightsManager->ListRightsL(rights, uri);
+				CleanupClosePushL(rights);
+				if(rights.Count() == 1)
+					{
+					SetTestStepResult(EPass);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("ListRights(uri) is empty"));			
+					}
+				CleanupStack::PopAndDestroy(&rights);
+				}
+			else if(ListAPI == 3)
+				{
+				TVirtualPathPtr virtualPath = uri;
+				rightsManager->ListRightsL(rights, virtualPath );
+				CleanupClosePushL(rights);
+				if(rights.Count() == 1)
+					{
+					SetTestStepResult(EPass);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("ListRights(TVirtualPathPtr) is empty"));			
+					}
+				CleanupStack::PopAndDestroy(&rights);
+				}
+			else if(ListAPI == 4)
+				{
+				CRightsInfo *rightsInfo = CRightsInfo::NewL(KNullDesC(), KNullDesC(), ERightsTypeConsumable , ERightsStatusNone);
+				CleanupStack::PushL(rightsInfo);
+				rightsManager->ListContentL(contentList, *rightsInfo);
+				CleanupStack::PopAndDestroy(rightsInfo);
+				CleanupClosePushL(contentList);
+				if(contentList.Count() == 1)
+					{
+					SetTestStepResult(EPass);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("ListContent(CRightsInfo) is empty"));			
+					}
+				CleanupStack::PopAndDestroy(&contentList);
+				}
+			else if(ListAPI == 5)
+				{
+				CRightsInfo *rightsInfo = CRightsInfo::NewL(KNullDesC(), KNullDesC(), ERightsTypeConsumable , ERightsStatusNone);
+				CleanupStack::PushL(rightsInfo);
+				MAgentRightsBase *ptr = rightsManager->GetRightsDataL(*rightsInfo);
+				CleanupStack::PopAndDestroy(rightsInfo);
+				if(ptr == NULL)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			else if(ListAPI == 6)
+				{
+				CRightsInfo *rightsInfo = CRightsInfo::NewL(KNullDesC(), KNullDesC(), ERightsTypeStateless  , ERightsStatusNone);
+				CleanupStack::PushL(rightsInfo);
+				result = rightsManager->DeleteRightsObject(*rightsInfo);
+				CleanupStack::PopAndDestroy(rightsInfo);
+				if(result == KErrNone)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			else if(ListAPI == 7)
+				{
+				TVirtualPathPtr virtualPath = uri;
+				result = rightsManager->DeleteAllRightsObjects(virtualPath);
+				if(result == KErrNone)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			else if(ListAPI == 8 || ListAPI == 9)
+				{
+				//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+				InitialiseFileHandleParametersL();
+				
+				// test the RFile overload
+				if (ListAPI ==8)
+					{
+					TRAP(result,rightsManager->ListRightsL(rights, iFile, iUniqueId));
+					CleanupClosePushL(rights);	
+											
+					if(result == iExpectedResult)
+						{
+						SetTestStepResult(EPass);
+						INFO_PRINTF1(_L("CRightsManager::ListRightsL()(RFile handle overload) PASSED"));
+						}
+					else
+						{
+						INFO_PRINTF1(_L("CRightsManager::ListRightsL()(RFile handle overload) returned unexpected error"));
+						INFO_PRINTF3(_L("CRightsManager::ListRightsL()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+						}	
+					CleanupStack::PopAndDestroy(&rights);	
+					}
+				else if (ListAPI ==9)
+					{
+					result = rightsManager->DeleteAllRightsObjects(iFile, iUniqueId);
+				
+					if(result == iExpectedResult)
+						{
+						SetTestStepResult(EPass);
+						INFO_PRINTF1(_L("CRightsManager::DeleteAllRightsObjects()(RFile handle overload) PASSED"));
+						}
+					else
+						{
+						INFO_PRINTF1(_L("CRightsManager::DeleteAllRightsObjects()(RFile handle overload) returned unexpected error"));		
+						INFO_PRINTF3(_L("CRightsManager::DeleteAllRightsObjects()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+						}						
+					}
+				//cleanup iFs and iFile instances by closing the handles.
+				CleanupStack::PopAndDestroy(2, &iFs);	
+				}
+			CleanupStack::PopAndDestroy(rightsManager);
+			}
+		else
+			{
+			if (result == KErrNotSupported) // dummy test agent expects -5
+				{
+				SetTestStepResult(EPass);
+				}
+			else
+				{
+				INFO_PRINTF1(_L("Create CRightsManager Failed"));		
+				}
+			}
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Create CManager Failed"));
+		}
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+