loggingservices/eventlogger/test/src/t_logsecureview.cpp
changeset 0 08ec8eefde2f
child 9 667e88a979d7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loggingservices/eventlogger/test/src/t_logsecureview.cpp	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,232 @@
+// 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:
+//
+
+#include "TEST.H"
+#include <logview.h>
+
+#undef test  //there is a "test" macro which hides "RTest test" declaration.
+
+#define PRECONDITION_TRUE(x) TEST((x))
+#define PRECONDITION_EQ(x,y) TEST2((x),(y))
+
+// If LOWCAP is defined in the .mmp file 'hiCapabilityTest' will be set to FALSE.
+#ifdef LOWCAP
+	TBool hiCapabilityTest = EFalse;
+	RTest test(_L("Log Client Low Capability Secure View Test"));
+	_LIT(KTestTitle, "t_logsecureview (low capability)");
+#else
+	TBool hiCapabilityTest = ETrue;
+	RTest test(_L("Log Client High Capability Secure View Test"));
+	_LIT(KTestTitle, "t_logsecureview (high capability)");
+#endif
+
+
+/**
+@SYMTestCaseID SYSLIB-LOGENG-CT-0135
+@SYMTestCaseDesc Ensures only a capable client can remove an event from a recent list
+@SYMTestActions See the description and expected results.
+@SYMTestPriority High
+@SYMTestExpectedResults Should always succeed
+@SYMREQ REQ3431
+*/
+LOCAL_C void TestDuplicateRemoveIdL(CLogViewDuplicate* aView)
+	{
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0135 "));
+	TLogId id = aView->Event().Id();
+	TRAPD(error, aView->RemoveL(id));
+	
+	if(hiCapabilityTest)
+		{
+		TEST2(error, KErrNone);
+		TEST2(aView->CountL(), 3);
+		}
+	else
+		{
+		TEST2(error, KErrPermissionDenied);
+		TEST2(aView->CountL(), 4);
+		}
+	}
+	
+/**
+@SYMTestCaseID SYSLIB-LOGENG-CT-0136
+@SYMTestCaseDesc Ensures only a capable client can remove an event from a recent list
+@SYMTestActions See the description and expected results.
+@SYMTestPriority High
+@SYMTestExpectedResults Should always succeed
+@SYMREQ REQ3431
+*/
+LOCAL_C void TestDuplicateRemoveCurrentL(CLogViewDuplicate* aView, CTestActive* aTestActive)
+	{
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0136 "));
+	aTestActive->StartL();
+	PRECONDITION_TRUE(aView->FirstL(aTestActive->iStatus));
+	CActiveScheduler::Start();
+	PRECONDITION_EQ(aTestActive->iStatus.Int(), KErrNone);
+
+	if(hiCapabilityTest)
+		{
+		aTestActive->StartL();
+		PRECONDITION_TRUE(aView->RemoveL(aTestActive->iStatus));
+		CActiveScheduler::Start();
+		PRECONDITION_EQ(aTestActive->iStatus.Int(), KErrNone);
+		
+		TEST2(aView->CountL(), 2);
+		}
+	else
+		{
+		TRAPD(error, aView->RemoveL(aTestActive->iStatus));
+	
+		TEST2(error, KErrPermissionDenied);
+		TEST2(aView->CountL(), 4);
+		}
+	}
+
+/**
+@SYMTestCaseID SYSLIB-LOGENG-CT-0137
+@SYMTestCaseDesc Ensures only a capable client can clear duplicate events from a recent list
+@SYMTestActions See the description and expected results.
+@SYMTestPriority High
+@SYMTestExpectedResults Should always succeed
+@SYMREQ REQ3431
+*/
+LOCAL_C void TestRecentClearDuplicatesL(CLogViewRecent* aRecentView, CLogViewDuplicate* aDuplicateView)
+	{
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0137 "));
+	TRAPD(error, aRecentView->ClearDuplicatesL());
+
+	if(hiCapabilityTest)
+		{
+		TEST2(error, KErrNone);
+		TEST2(aDuplicateView->CountL(), 0);
+		}
+	else
+		{
+		TEST2(error, KErrPermissionDenied);
+		TEST2(aDuplicateView->CountL(), 4);
+		}
+	}
+	
+/**
+@SYMTestCaseID SYSLIB-LOGENG-CT-0138
+@SYMTestCaseDesc Ensures only a capable client can remove an event from a duplicate list
+@SYMTestActions See the description and expected results.
+@SYMTestPriority High
+@SYMTestExpectedResults Should always succeed
+@SYMREQ REQ3431
+*/
+LOCAL_C void TestRecentRemoveIdL(CLogViewRecent* aView)
+	{
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0138 "));
+	TLogId id = aView->Event().Id();
+	TRAPD(error, aView->RemoveL(id));
+	
+	if(hiCapabilityTest)
+		{
+		TEST2(error, KErrNone);
+		TEST2(aView->CountL(), 1);
+		}
+	else
+		{
+		TEST2(error, KErrPermissionDenied);
+		TEST2(aView->CountL(), 2);
+		}
+	}
+
+/**
+@SYMTestCaseID SYSLIB-LOGENG-CT-0139
+@SYMTestCaseDesc Ensures only a capable client can remove an event from a duplicate list
+@SYMTestActions See the description and expected results.
+@SYMTestPriority High
+@SYMTestExpectedResults Should always succeed
+@SYMREQ REQ3431
+*/
+LOCAL_C void TestRecentRemoveCurrentL(CLogViewRecent* aView, CTestActive* aTestActive)
+	{
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0139 "));
+	aTestActive->StartL();
+	PRECONDITION_TRUE(aView->FirstL(aTestActive->iStatus));
+	CActiveScheduler::Start();
+	PRECONDITION_EQ(aTestActive->iStatus.Int(), KErrNone);
+
+	TRAPD(error, aView->RemoveL(aTestActive->iStatus));
+
+	if(hiCapabilityTest)
+		{
+		TEST2(error, KErrNone);
+		TEST2(aView->CountL(), 0);
+		}
+	else
+		{
+		TEST2(error, KErrPermissionDenied);
+		TEST2(aView->CountL(), 2);
+		}
+	}
+	
+LOCAL_C void TestViewsL()
+	{
+	CLogClient* client = CLogClient::NewL(theFs);
+	CleanupStack::PushL(client);
+
+	CTestActive* testActive = new(ELeave)CTestActive();
+	CleanupStack::PushL(testActive);
+
+	CLogViewRecent* recentView = CLogViewRecent::NewL(*client);
+	CleanupStack::PushL(recentView);
+
+	testActive->StartL();
+	PRECONDITION_TRUE(recentView->SetRecentListL(KLogRecentIncomingCalls, testActive->iStatus));
+	CActiveScheduler::Start();
+	PRECONDITION_EQ(testActive->iStatus.Int(), KErrNone);
+	PRECONDITION_EQ(recentView->CountL(), 2);
+
+	CLogViewDuplicate* duplicateView = CLogViewDuplicate::NewL(*client);
+	CleanupStack::PushL(duplicateView);
+
+	testActive->StartL();
+	PRECONDITION_TRUE(recentView->DuplicatesL(*duplicateView, testActive->iStatus));
+	CActiveScheduler::Start();
+	PRECONDITION_EQ(testActive->iStatus.Int(), KErrNone);
+	PRECONDITION_EQ(duplicateView->CountL(), 4);
+	
+	test.Start(_L("RemoveL on duplicate view with id as argument"));
+	TestDuplicateRemoveIdL(duplicateView);
+
+	test.Next(_L("RemoveL on duplicate view at current cursor position"));
+	TestDuplicateRemoveCurrentL(duplicateView, testActive);
+
+	test.Next(_L("ClearDuplicatesL on recent view"));
+	TestRecentClearDuplicatesL(recentView, duplicateView);
+
+	test.Next(_L("RemoveL on recent view with id as argument"));
+	TestRecentRemoveIdL(recentView);
+	
+	test.Next(_L("RemoveL on recent view at current cursor position"));
+	TestRecentRemoveCurrentL(recentView, testActive);
+
+	CleanupStack::PopAndDestroy(4);
+	}
+
+//.............................................................................
+
+void doTestsL()
+	{
+	TestUtils::Initialize(KTestTitle);
+	TestUtils::DeleteDatabaseL();
+	TestUtils::AddViewTestEventsL();
+
+	TestViewsL();
+
+	TestUtils::DeleteDatabaseL();
+	}