persistentstorage/sql/TEST/t_sqlsecurity6.cpp
changeset 29 cce6680bbf1c
child 55 44f437012c90
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/persistentstorage/sql/TEST/t_sqlsecurity6.cpp	Thu Jul 01 17:02:22 2010 +0100
@@ -0,0 +1,127 @@
+// Copyright (c) 2010 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 <e32test.h>
+#include <bautils.h>
+#include <sqldb.h>
+
+///////////////////////////////////////////////////////////////////////////////////////
+
+RSqlDatabase TheDb;
+RTest TheTest(_L("t_sqlsecurity6 test"));
+
+///////////////////////////////////////////////////////////////////////////////////////
+
+void DestroyTestEnv()
+	{
+	TheDb.Close();
+	(void)RSqlDatabase::Delete(_L("c:[00009876]"));
+	}
+
+///////////////////////////////////////////////////////////////////////////////////////
+//Test macros and functions
+void Check1(TInt aValue, TInt aLine)
+	{
+	if(!aValue)
+		{
+		DestroyTestEnv();
+		RDebug::Print(_L("*** Boolean expression evaluated to false. Line %d\r\n"), aLine);
+		TheTest(EFalse, aLine);
+		}
+	}
+void Check2(TInt aValue, TInt aExpected, TInt aLine)
+	{
+	if(aValue != aExpected)
+		{
+		DestroyTestEnv();
+		RDebug::Print(_L("*** Line %d, Expected error: %d, got: %d\r\n"), aLine, aExpected, aValue);
+		TheTest(EFalse, aLine);
+		}
+	}
+#define TEST(arg) ::Check1((arg), __LINE__)
+#define TEST2(aValue, aExpected) ::Check2(aValue, aExpected, __LINE__)
+
+///////////////////////////////////////////////////////////////////////////////////////
+
+/**
+@SYMTestCaseID          PDS-SQL-CT-4199
+@SYMTestCaseDesc        Invalid secure database UIDs test.
+@SYMTestPriority        High
+@SYMTestActions         The test attempts to create a secure database using invalid UIDs:
+						- with length less than 8 hes digits;
+						- with invalid characters in the UID;
+						- wiht database name containing the UID only;
+@SYMTestExpectedResults Test must not fail
+@SYMDEF                 DEF145236
+*/  
+void InvalidSecureUidsTest()
+	{
+	RSqlSecurityPolicy policy;
+	TInt err = policy.Create(TSecurityPolicy::EAlwaysPass);
+	TEST2(err, KErrNone);
+	
+	//The UID in the database name is too short. It must be 8 hex digits UID. 
+	err = TheDb.Create(_L("c:[9876]t_sqlsecurity6.db"), policy);
+	TEST2(err, KErrArgument);
+	
+	//Short UID, used as a database name. 
+	err = TheDb.Create(_L("c:[9876]"), policy);
+	TEST2(err, KErrArgument);
+
+	//Invalid UID. 
+	err = TheDb.Create(_L("c:[KH0A0Q0J]"), policy);
+	TEST2(err, KErrArgument);
+	
+	//UID, used as a database name. 
+	err = TheDb.Create(_L("c:[00009876]"), policy);
+	TEST2(err, KErrNone);
+	err = TheDb.Exec(_L("CREATE TABLE A(I INTEGER)"));
+	TEST(err >= 0);
+	TheDb.Close();
+	err = RSqlDatabase::Delete(_L("c:[00009876]"));
+	TEST2(err, KErrNone);
+	
+	policy.Close();
+	}
+
+void DoTestsL()
+	{
+	TheTest.Start(_L("@SYMTestCaseID:PDS-SQL-CT-4199 Invalid secure UIDs test"));
+	InvalidSecureUidsTest();
+	}
+
+TInt E32Main()
+	{
+	TheTest.Title();
+	
+	CTrapCleanup* tc = CTrapCleanup::New();
+	TheTest(tc != NULL);
+	
+	__UHEAP_MARK;
+		
+	TRAPD(err, DoTestsL());
+	DestroyTestEnv();
+	TEST2(err, KErrNone);
+
+	__UHEAP_MARKEND;
+	
+	TheTest.End();
+	TheTest.Close();
+	
+	delete tc;
+
+	User::Heap().Check();
+	return KErrNone;
+	}