sl@0: // Create tests
sl@0: 
sl@0: [create1]
sl@0: SPCreateL0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityAllFiles
sl@0: SetDBPolicy2=EReadPolicy,ECapabilityAllFiles
sl@0: CreateSP3=[102827c7]sec.db
sl@0: SPClose4=
sl@0: Exec5=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec7=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec8=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec9=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec10=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close11=
sl@0: EndBlock12=
sl@0: 
sl@0: [create1a]
sl@0: SPCreateL0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityWriteUserData
sl@0: SetDBPolicy2=EReadPolicy,ECapabilityWriteUserData
sl@0: CreateSP3=[102827c7]sec1.db
sl@0: SPClose4=
sl@0: Exec5=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec7=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec8=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec9=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec10=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close11=
sl@0: EndBlock12=
sl@0: 
sl@0: [create1b]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityAllFiles
sl@0: SetDBPolicy2=EWritePolicy,ECapabilityAllFiles
sl@0: SetDBPolicy3=EReadPolicy,ECapabilityWriteUserData
sl@0: CreateSP4=[102827c7]sec4.db
sl@0: SPClose5=
sl@0: Exec6=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec7=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec8=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec9=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec10=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec11=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close12=
sl@0: EndBlock13=
sl@0: 
sl@0: [create2]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityWriteUserData
sl@0: CreateSP2=[102827c7]sec2.db
sl@0: SPClose3=
sl@0: Exec4=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec5=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec7=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec8=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec9=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close10=
sl@0: EndBlock11=
sl@0: 
sl@0: [create3]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityAllFiles
sl@0: CreateSP2=[102827c7]sec.db
sl@0: ExpectedError2=KErrPermissionDenied
sl@0: SPClose3=
sl@0: EndBlock4=
sl@0: 
sl@0: [create4]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityAllFiles
sl@0: CreateSP2=[102827c8]sec.db
sl@0: ExpectedError2=KErrPermissionDenied
sl@0: SPClose3=
sl@0: EndBlock4=
sl@0: 
sl@0: [create5]
sl@0: SPCreate0=
sl@0: CreateSP1=[102827c7]sec.db
sl@0: ExpectedError1=KErrPermissionDenied
sl@0: SPClose2=
sl@0: EndBlock3=
sl@0: 
sl@0: [create6]
sl@0: CreateSP0=[102827c7]sec.db
sl@0: EndBlock1=
sl@0: 
sl@0: [create7]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=EReadPolicy,ECapabilityAllFiles
sl@0: CreateSP2=[102827c7]sec.db
sl@0: ExpectedError2=KErrPermissionDenied
sl@0: SPClose3=
sl@0: EndBlock4=
sl@0: 
sl@0: [create8]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=EWritePolicy,ECapabilityAllFiles
sl@0: CreateSP2=[102827c7]sec.db
sl@0: ExpectedError2=KErrPermissionDenied
sl@0: SPClose3=
sl@0: EndBlock4=
sl@0: 
sl@0: [create9]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=EWritePolicy,ECapabilityAllFiles
sl@0: SetDBPolicy2=EReadPolicy,ECapabilityAllFiles
sl@0: CreateSP3=[102827c7]sec.db
sl@0: ExpectedError3=KErrPermissionDenied
sl@0: SPClose4=
sl@0: EndBlock5=
sl@0: 
sl@0: [create10]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=EWritePolicy,ECapabilityAllFiles
sl@0: SetDBPolicy2=EReadPolicy,ECapabilityAllFiles
sl@0: SetDBPolicy2=ESchemaPolicy,ECapabilityAllFiles
sl@0: CreateSP3=[102827c7]sec3.db
sl@0: ExpectedError3=KErrPermissionDenied
sl@0: SPClose4=
sl@0: EndBlock5=
sl@0: 
sl@0: [create11]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityWriteUserData
sl@0: CreateSP2=[102827c8]sec.db
sl@0: SPClose3=
sl@0: Exec4=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec5=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec7=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec8=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec9=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close10=
sl@0: EndBlock11=
sl@0: 
sl@0: [create12]
sl@0: Create0=c:\private\102827c7\sec.db
sl@0: Exec1=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec2=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec3=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec4=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec5=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close7=
sl@0: EndBlock8=
sl@0: 
sl@0: [create12a]
sl@0: Create0=c:\private\102827c8\sec.db
sl@0: ExpectedError0=KErrPermissionDenied
sl@0: EndBlock1=
sl@0: 
sl@0: [create12b]
sl@0: Create0=c:\private\102827c8\sec3.db
sl@0: Exec1=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec2=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec3=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec4=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec5=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close7=
sl@0: EndBlock8=
sl@0: 
sl@0: // Read tests
sl@0: 
sl@0: [read1]
sl@0: Open0=[102827c7]sec.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Close6=[102827c7]sec.db
sl@0: EndBlock7=
sl@0: 
sl@0: [read2]
sl@0: Open0=[102827c8]sec.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Close6=[102827c8]sec.db
sl@0: EndBlock7=
sl@0: 
sl@0: [read3]
sl@0: Open0=[102827c7]sec.db
sl@0: ExpectedError0=KErrPermissionDenied
sl@0: Close1=[102827c7]sec.db
sl@0: EndBlock2=
sl@0: 
sl@0: [read4]
sl@0: Open0=[102827c7]sec1.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Close6=[102827c7]sec1.db
sl@0: EndBlock7=
sl@0: 
sl@0: // Write tests
sl@0: 
sl@0: [write1]
sl@0: Open0=[102827c7]sec4.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(6, "new", "starter", 1);
sl@0: ExpectedError6=KErrPermissionDenied
sl@0: Prepare7=select count(*) from names;
sl@0: ColumnIndex8=
sl@0: Next9=
sl@0: ColumnInt10=0,5
sl@0: St_Close11=
sl@0: Close12=[102827c7]sec4.db
sl@0: EndBlock13=
sl@0: 
sl@0: [write2]
sl@0: Open0=[102827c7]sec4.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(6, "new", "starter", 1);
sl@0: Prepare7=select count(*) from names;
sl@0: ColumnIndex8=
sl@0: Next9=
sl@0: ColumnInt10=0,6
sl@0: St_Close11=
sl@0: Close12=[102827c7]sec4.db
sl@0: EndBlock13=
sl@0: 
sl@0: // Schema tests
sl@0: 
sl@0: [schema1]
sl@0: Open0=[102827c7]sec4.db
sl@0: Exec1=create table newtab(pkey int primary key, fname text, lname text, ref int);
sl@0: ExpectedError1=KErrPermissionDenied
sl@0: Close2=
sl@0: EndBlock3=
sl@0: 
sl@0: [schema2]
sl@0: Open0=[102827c7]sec4.db
sl@0: Exec1=create table newtab(pkey int primary key, fname text, lname text, ref int);
sl@0: Close2=
sl@0: EndBlock3=
sl@0: 
sl@0: // Attach tests
sl@0: 
sl@0: [attach1]
sl@0: Open0=[102827c7]sec1.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Exec6=attach "C:\private\10281e17\[102827c7]sec1.db" as [102827c7]sec1
sl@0: ExpectedError6=KErrPermissionDenied
sl@0: Close7=
sl@0: EndBlock8=
sl@0: 
sl@0: [attach2]
sl@0: Open0=[102827c7]sec.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Attach6=C:[102827c7]sec1.db,fred
sl@0: Prepare7=select count(*) from fred.names;
sl@0: ColumnIndex8=
sl@0: Next9=
sl@0: ColumnInt10=0,5
sl@0: St_Close11=
sl@0: Detach12=fred
sl@0: Prepare13=select count(*) from fred.names;
sl@0: ExpectedError13=KSqlErrGeneral
sl@0: Close14=
sl@0: EndBlock15=
sl@0: 
sl@0: [attach3]
sl@0: Open0=[102827c7]sec1.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Attach6=C:[102827c7]sec.db,tom
sl@0: ExpectedError6=KErrPermissionDenied
sl@0: Close7=
sl@0: EndBlock8=
sl@0: 
sl@0: [attach4]
sl@0: Open0=[102827c7]sec.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Attach6=c:\private\102827c7\sec.db,bob
sl@0: Prepare7=select count(*) from bob.names;
sl@0: ColumnIndex8=
sl@0: Next9=
sl@0: ColumnInt10=0,5
sl@0: St_Close11=
sl@0: Detach12=bob
sl@0: Prepare13=select count(*) from bob.names;
sl@0: ExpectedError13=KSqlErrGeneral
sl@0: Close14=
sl@0: EndBlock15=
sl@0: 
sl@0: [attach5]
sl@0: Open0=c:\private\102827c7\sec.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Attach6=[102827c7]sec.db,bob
sl@0: Prepare7=select count(*) from bob.names;
sl@0: ColumnIndex8=
sl@0: Next9=
sl@0: ColumnInt10=0,5
sl@0: St_Close11=
sl@0: Detach12=bob
sl@0: Prepare13=select count(*) from bob.names;
sl@0: ExpectedError13=KSqlErrGeneral
sl@0: Close14=
sl@0: EndBlock15=
sl@0: 
sl@0: [attach6]
sl@0: // this is the test case where we try to cheat ATTACH by passing in arguments that will execute SQL while the authorizer is disabled.
sl@0: Open0=[102827c7]sec.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Attach6=[102827c7]sec1.db' AS fred; delete from names;,fred2
sl@0: ExpectedError6=KSqlErrGeneral
sl@0: Prepare7=select count(*) from names;
sl@0: ColumnIndex8=
sl@0: Next9=
sl@0: ColumnInt10=0,5
sl@0: St_Close11=
sl@0: Prepare12=select count(*) from fred.names;
sl@0: ColumnIndex13=
sl@0: Next14=
sl@0: ColumnInt15=0,5
sl@0: St_Close16=
sl@0: Detach17=fred
sl@0: Prepare18=select count(*) from fred.names;
sl@0: ExpectedError18=KSqlErrGeneral
sl@0: Close19=
sl@0: EndBlock20=
sl@0: 
sl@0: // Copy tests
sl@0: 
sl@0: [copy1]
sl@0: Copy0=[102827c7]sec.db,C:\sec_dest.db
sl@0: ExpectedError0=KErrPermissionDenied
sl@0: EndBlock1=
sl@0: 
sl@0: [copy2]
sl@0: Create0=C:\[102827c7]sec_source.db
sl@0: Copy1=C:\[102827c7]sec.db,[102827c7]sec_dest.db
sl@0: ExpectedError1=KErrPermissionDenied
sl@0: Close2=
sl@0: Delete3=C:\[102827c7]sec_source.db
sl@0: EndBlock4=
sl@0: 
sl@0: [copy3]
sl@0: Copy0=C:\private\102827c7\sec.db,[102827c7]sec_dest.db
sl@0: ExpectedError0=KErrPermissionDenied
sl@0: EndBlock1=
sl@0: 
sl@0: [copy4]
sl@0: Copy0=[102827c7]sec.db,C:\private\102827c7\sec_dest.db
sl@0: ExpectedError0=KErrPermissionDenied
sl@0: EndBlock1=
sl@0: 
sl@0: [copy5]
sl@0: Copy0=[102827c7]sec.db,[102827c7]sec_copy.db
sl@0: EndBlock1=
sl@0: 
sl@0: [copy6]
sl@0: Copy0=C:\private\102827c7\sec.db, C:\private\102827c7\sec_copy.db
sl@0: ExpectedError0=KErrPermissionDenied
sl@0: EndBlock1=
sl@0: 
sl@0: [copy7]
sl@0: Copy0=C:\private\102827c7\sec.db, C:\sec_copy.db
sl@0: ExpectedError0=KErrPermissionDenied
sl@0: EndBlock1=
sl@0: 
sl@0: 
sl@0: // Concurrency tests
sl@0: 
sl@0: 
sl@0: // Policy check tests
sl@0: 
sl@0: [policy1]
sl@0: SPCreateL0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityWriteUserData
sl@0: SetDBPolicy2=EReadPolicy,ECapabilityWriteUserData
sl@0: SetPolicy3=ETable,names,EWritePolicy,ECapabilityAllFiles
sl@0: SetPolicy4=ETable,names,EReadPolicy,ECapabilityAllFiles
sl@0: CreateSP5=[102827c7]secpol.db
sl@0: SPClose6=
sl@0: Exec7=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec8=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec9=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec10=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec11=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec12=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close13=
sl@0: EndBlock14=
sl@0: 
sl@0: [policy2]
sl@0: Open0=[102827c7]secpol.db
sl@0: Prepare1=select count(*) from names;
sl@0: ColumnIndex2=
sl@0: Next3=
sl@0: ColumnInt4=0,5
sl@0: St_Close5=
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(6, "new", "starter", 1);
sl@0: Prepare7=select count(*) from names;
sl@0: ColumnIndex8=
sl@0: Next9=
sl@0: ColumnInt10=0,6
sl@0: St_Close11=
sl@0: Close12=
sl@0: EndBlock13=
sl@0: 
sl@0: [policy3]
sl@0: // this test has been deferred as it has duplicated a developer test
sl@0: SPCreateL0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityWriteUserData
sl@0: SetDBPolicy2=EReadPolicy,ECapabilityWriteUserData
sl@0: SetPolicy3=ETable,names,EWritePolicy,ECapabilityAllFiles
sl@0: SetPolicy4=ETable,names,EReadPolicy,ECapabilityAllFiles
sl@0: CreateSP5=[102827c7]secpol1.db
sl@0: 
sl@0: Exec7=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec8=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec9=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec10=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec11=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec12=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close13=
sl@0: Function14=SecurityPolicyCheck
sl@0: 
sl@0: SPClose6=
sl@0: EndBlock14=
sl@0: 
sl@0: 
sl@0: // Inernalize & Externalize tests
sl@0: 
sl@0: [External1]
sl@0: SPCreate0=
sl@0: SetDBPolicy1=ESchemaPolicy,ECapabilityAllFiles
sl@0: SetDBPolicy2=EReadPolicy,ECapabilityAllFiles
sl@0: SetPolicy3=ETable,names,EWritePolicy,ECapabilityAllFiles
sl@0: Delete4=c:\ext.pol
sl@0: ExpectedError4=KErrNotFound
sl@0: SPExternalizeL5=c:\ext.pol
sl@0: EndBlock6=
sl@0: 
sl@0: [External2]
sl@0: SPCreate0=
sl@0: SPInternalizeL1=c:\ext.pol
sl@0: CreateSP2=[102827c7]ext.db
sl@0: SPClose3=
sl@0: Exec4=create table names(pkey int primary key, fname text, lname text, ref int);
sl@0: Exec5=insert into names(pkey, fname, lname, ref) values(1, "tom", "jones", 2);
sl@0: Exec6=insert into names(pkey, fname, lname, ref) values(2, "jim", "davies", 1);
sl@0: Exec7=insert into names(pkey, fname, lname, ref) values(3, "bob", "smith", 1);
sl@0: Exec8=insert into names(pkey, fname, lname, ref) values(4, "dave", "house", 3);
sl@0: Exec9=insert into names(pkey, fname, lname, ref) values(5, "jane", "hobbs", 4);
sl@0: Close10=
sl@0: EndBlock11=
sl@0: 
sl@0: [External3]
sl@0: Open0=[102827c7]ext.db
sl@0: ExpectedError0=KErrPermissionDenied
sl@0: Close1=[102827c7]ext.db
sl@0: EndBlock2=
sl@0: