Skip to content

Commit f698781

Browse files
Tests for direct byte array access, local aar community debug build
1 parent d3c2dde commit f698781

File tree

5 files changed

+233
-114
lines changed

5 files changed

+233
-114
lines changed

app/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ dependencies {
2626

2727
// For testing local AAR packages:
2828
//implementation (name: 'android-database-sqlcipher-4.0.1', ext: 'aar')
29+
implementation (name: 'android-database-sqlcipher-4.0.1-debug', ext: 'aar')
2930

3031
// For testing on remote AAR references:
31-
implementation 'net.zetetic:android-database-sqlcipher:4.0.1@aar'
32+
//implementation 'net.zetetic:android-database-sqlcipher:4.0.1@aar'
3233
}
6.42 MB
Binary file not shown.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package net.zetetic.tests;
2+
3+
import net.sqlcipher.Cursor;
4+
import net.sqlcipher.database.SQLiteDatabase;
5+
import net.zetetic.ZeteticApplication;
6+
7+
import java.io.File;
8+
9+
public class CreateOpenDatabaseWithByteArrayTest extends SQLCipherTest {
10+
11+
private String databaseName = "foo.db";
12+
13+
@Override
14+
public boolean execute(SQLiteDatabase database) {
15+
boolean status = false;
16+
database.close();
17+
byte[] key = generateRandomByteArray(32);
18+
File newDatabasePath = ZeteticApplication.getInstance().getDatabasePath(databaseName);
19+
newDatabasePath.delete();
20+
database = SQLiteDatabase.openOrCreateDatabase(newDatabasePath.getPath(), key, null);
21+
database.execSQL("create table t1(a,b);");
22+
database.execSQL("insert into t1(a,b) values(?, ?);", new Object[]{1, 2});
23+
database.close();
24+
database = SQLiteDatabase.openOrCreateDatabase(newDatabasePath.getPath(), key, null);
25+
Cursor cursor = database.rawQuery("select * from t1;", null);
26+
if (cursor != null) {
27+
cursor.moveToNext();
28+
int a = cursor.getInt(0);
29+
int b = cursor.getInt(1);
30+
cursor.close();
31+
status = a == 1 && b == 2;
32+
}
33+
return status;
34+
}
35+
36+
@Override
37+
public String getName() {
38+
return "Create/Open with Byte Array Test";
39+
}
40+
41+
@Override
42+
protected void tearDown(SQLiteDatabase database) {
43+
super.tearDown(database);
44+
File newDatabasePath = ZeteticApplication.getInstance().getDatabasePath(databaseName);
45+
newDatabasePath.delete();
46+
}
47+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package net.zetetic.tests;
2+
3+
import android.content.Context;
4+
5+
import net.sqlcipher.Cursor;
6+
import net.sqlcipher.database.SQLiteDatabase;
7+
import net.sqlcipher.database.SQLiteOpenHelper;
8+
import net.zetetic.ZeteticApplication;
9+
10+
import java.io.File;
11+
12+
public class SQLiteOpenHelperWithByteArrayKeyTest extends SQLCipherTest {
13+
14+
15+
private String databaseName = "foo.db";
16+
17+
@Override
18+
public boolean execute(SQLiteDatabase database) {
19+
boolean status = false;
20+
database.close();
21+
byte[] key = generateRandomByteArray(32);
22+
File databasePath = ZeteticApplication.getInstance().getDatabasePath(databaseName);
23+
SQLiteOpenHelper helper = new TestHelper(ZeteticApplication.getInstance(), databasePath.getPath());
24+
database = helper.getWritableDatabase(key);
25+
database.execSQL("insert into t1(a,b) values(?, ?);", new Object[]{1, 2});
26+
database.close();
27+
helper.close();
28+
29+
helper = new TestHelper(ZeteticApplication.getInstance(), databasePath.getPath());
30+
database = helper.getWritableDatabase(key);
31+
Cursor cursor = database.rawQuery("select * from t1;", null);
32+
if (cursor != null) {
33+
cursor.moveToNext();
34+
int a = cursor.getInt(0);
35+
int b = cursor.getInt(1);
36+
cursor.close();
37+
status = a == 1 && b == 2;
38+
}
39+
return status;
40+
}
41+
42+
@Override
43+
public String getName() {
44+
return "SQLiteOpenHelper with Byte Array Key";
45+
}
46+
47+
private class TestHelper extends SQLiteOpenHelper {
48+
49+
private static final int version = 1;
50+
51+
public TestHelper(Context context, String databasePath){
52+
super(context, databaseName, null, version, null);
53+
}
54+
55+
public TestHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
56+
super(context, databaseName, factory, version);
57+
}
58+
59+
@Override
60+
public void onCreate(SQLiteDatabase database) {
61+
database.execSQL("create table t1(a,b);");
62+
}
63+
64+
@Override
65+
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
66+
}
67+
}
68+
69+
}

app/src/main/java/net/zetetic/tests/TestSuiteRunner.java

Lines changed: 115 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -72,119 +72,121 @@ private void runSuite() {
7272
private List<SQLCipherTest> getTestsToRun() {
7373
List<SQLCipherTest> tests = new ArrayList<>();
7474
tests.add(new LoopingInsertTest());
75-
// tests.add(new FIPSTest());
76-
// tests.add(new PragmaCipherVersionTest());
77-
// tests.add(new VerifyCipherProviderTest());
78-
// tests.add(new VerifyCipherProviderVersionTest());
79-
// tests.add(new JavaClientLibraryVersionTest());
80-
// tests.add(new ReadWriteUserVersionTest());
81-
// tests.add(new QueryDataSizeTest());
82-
// tests.add(new FixedCursorWindowAllocationTest());
83-
// tests.add(new GrowingCursorWindowAllocationTest());
84-
// tests.add(new ReadWriteWriteAheadLoggingTest());
85-
// tests.add(new SQLiteOpenHelperEnableWriteAheadLogBeforeGetDatabaseTest());
86-
// tests.add(new SQLiteOpenHelperEnableWriteAheadLogAfterGetDatabaseTest());
87-
// tests.add(new SQLiteOpenHelperGetNameTest());
88-
// tests.add(new SQLiteOpenHelperOnDowngradeTest());
89-
// tests.add(new SQLiteOpenHelperConfigureTest());
90-
// tests.add(new CheckIsDatabaseIntegrityOkTest());
91-
// tests.add(new GetAttachedDatabasesTest());
92-
// tests.add(new EnableForeignKeyConstraintsTest());
93-
// tests.add(new ForeignKeyConstraintsEnabledWithTransactionTest());
94-
// tests.add(new EnableWriteAheadLoggingTest());
95-
// tests.add(new DisableWriteAheadLoggingTest());
96-
// tests.add(new CheckIsWriteAheadLoggingEnabledTest());
97-
// tests.add(new WriteAheadLoggingWithTransactionTest());
98-
// tests.add(new WriteAheadLoggingWithInMemoryDatabaseTest());
99-
// tests.add(new WriteAheadLoggingWithAttachedDatabaseTest());
100-
// tests.add(new TransactionNonExclusiveTest());
101-
// tests.add(new TransactionWithListenerTest());
102-
// tests.add(new LargeDatabaseCursorAccessTest());
103-
104-
// tests.add(new TimeLargeByteArrayQueryTest());
105-
106-
// tests.add(new QueryLimitTest());
107-
// tests.add(new RTreeTest());
108-
// tests.add(new ReadWriteDatabaseToExternalStorageTest());
109-
// tests.add(new BeginTransactionTest());
110-
// tests.add(new QueryTenThousandDataTest());
111-
// tests.add(new CompileBeginTest());
112-
// tests.add(new TimeQueryExecutionTest());
113-
// tests.add(new UnicodeTest());
114-
// tests.add(new QueryIntegerToStringTest());
115-
// tests.add(new QueryFloatToStringTest());
116-
// tests.add(new ClosedDatabaseTest());
117-
// tests.add(new AttachDatabaseTest());
118-
// tests.add(new CipherMigrateTest());
119-
// tests.add(new GetTypeFromCrossProcessCursorWrapperTest());
120-
// tests.add(new InvalidPasswordTest());
121-
// tests.add(new NullQueryResultTest());
122-
// tests.add(new CrossProcessCursorQueryTest());
123-
// tests.add(new InterprocessBlobQueryTest());
124-
// tests.add(new LoopingQueryTest());
125-
// tests.add(new LoopingCountQueryTest());
126-
// tests.add(new AttachNewDatabaseTest());
127-
// tests.add(new AttachExistingDatabaseTest());
128-
// tests.add(new CanThrowSQLiteExceptionTest());
129-
// tests.add(new RawExecSQLTest());
130-
// tests.add(new RawExecSQLExceptionTest());
131-
// tests.add(new CompiledSQLUpdateTest());
132-
// tests.add(new AES128CipherTest());
133-
// tests.add(new MigrateDatabaseFrom1xFormatToCurrentFormat());
134-
// tests.add(new StatusMemoryUsedTest());
135-
// tests.add(new ImportUnencryptedDatabaseTest());
136-
// tests.add(new FullTextSearchTest());
137-
// tests.add(new ReadableDatabaseTest());
138-
// tests.add(new AutoVacuumOverReadTest());
139-
// tests.add(new ReadableWritableAccessTest());
140-
// tests.add(new CursorAccessTest());
141-
// tests.add(new VerifyOnUpgradeIsCalledTest());
142-
// tests.add(new MigrationUserVersion());
143-
// tests.add(new ExportToUnencryptedDatabase());
144-
// tests.add(new QueryNonEncryptedDatabaseTest());
145-
// tests.add(new EnableForeignKeySupportTest());
146-
// tests.add(new AverageOpenTimeTest());
147-
// tests.add(new NestedTransactionsTest());
148-
// tests.add(new ComputeKDFTest());
149-
// tests.add(new SoundexTest());
150-
// tests.add(new RawQueryTest());
151-
// tests.add(new OpenReadOnlyDatabaseTest());
152-
// tests.add(new RawRekeyTest());
153-
// tests.add(new CorruptDatabaseTest());
154-
// tests.add(new CustomCorruptionHandlerTest());
155-
// tests.add(new MultiThreadReadWriteTest());
156-
// tests.add(new VerifyUTF8EncodingForKeyTest());
157-
// tests.add(new TextAsIntegerTest());
158-
// tests.add(new TextAsDoubleTest());
159-
// tests.add(new TextAsLongTest());
160-
// tests.add(new CreateNonEncryptedDatabaseTest());
161-
// tests.add(new ChangePasswordTest());
162-
// tests.add(new ReadableWritableInvalidPasswordTest());
163-
// tests.add(new InvalidOpenArgumentTest());
164-
// tests.add(new CopyStringToBufferTestFloatSmallBuffer());
165-
// tests.add(new CopyStringToBufferTestFloatLargeBuffer());
166-
// tests.add(new CopyStringToBufferTestIntegerSmallBuffer());
167-
// tests.add(new CopyStringToBufferTestIntegerLargeBuffer());
168-
// tests.add(new CopyStringToBufferTestStringSmallBuffer());
169-
// tests.add(new CopyStringToBufferTestStringLargeBuffer());
170-
// tests.add(new CopyStringToBufferNullTest());
171-
// tests.add(new OpenSQLCipher3DatabaseTest());
172-
// tests.add(new MUTF8ToUTF8WithNullMigrationTest());
173-
// tests.add(new RawQuerySyntaxErrorMessageTest());
174-
// tests.add(new RawQueryNonsenseStatementErrorMessageTest());
175-
// tests.add(new RawQueryNoSuchFunctionErrorMessageTest());
176-
// tests.add(new CompileStatementSyntaxErrorMessageTest());
177-
// tests.add(new ExecuteInsertConstraintErrorMessageTest());
178-
// tests.add(new InsertWithOnConflictTest());
179-
// tests.add(new FTS5Test());
180-
// tests.add(new BindBooleanRawQueryTest());
181-
// tests.add(new BindStringRawQueryTest());
182-
// tests.add(new BindDoubleRawQueryTest());
183-
// tests.add(new BindLongRawQueryTest());
184-
// tests.add(new BindFloatRawQueryTest());
185-
// tests.add(new BindByteArrayRawQueryTest());
186-
// tests.add(new NullRawQueryTest());
187-
// tests.add(new ReadWriteDatabaseToExternalStorageTest());
75+
tests.add(new FIPSTest());
76+
tests.add(new PragmaCipherVersionTest());
77+
tests.add(new VerifyCipherProviderTest());
78+
tests.add(new VerifyCipherProviderVersionTest());
79+
tests.add(new JavaClientLibraryVersionTest());
80+
tests.add(new ReadWriteUserVersionTest());
81+
tests.add(new QueryDataSizeTest());
82+
tests.add(new FixedCursorWindowAllocationTest());
83+
tests.add(new GrowingCursorWindowAllocationTest());
84+
tests.add(new ReadWriteWriteAheadLoggingTest());
85+
tests.add(new CreateOpenDatabaseWithByteArrayTest());
86+
tests.add(new SQLiteOpenHelperWithByteArrayKeyTest());
87+
tests.add(new SQLiteOpenHelperEnableWriteAheadLogBeforeGetDatabaseTest());
88+
tests.add(new SQLiteOpenHelperEnableWriteAheadLogAfterGetDatabaseTest());
89+
tests.add(new SQLiteOpenHelperGetNameTest());
90+
tests.add(new SQLiteOpenHelperOnDowngradeTest());
91+
tests.add(new SQLiteOpenHelperConfigureTest());
92+
tests.add(new CheckIsDatabaseIntegrityOkTest());
93+
tests.add(new GetAttachedDatabasesTest());
94+
tests.add(new EnableForeignKeyConstraintsTest());
95+
tests.add(new ForeignKeyConstraintsEnabledWithTransactionTest());
96+
tests.add(new EnableWriteAheadLoggingTest());
97+
tests.add(new DisableWriteAheadLoggingTest());
98+
tests.add(new CheckIsWriteAheadLoggingEnabledTest());
99+
tests.add(new WriteAheadLoggingWithTransactionTest());
100+
tests.add(new WriteAheadLoggingWithInMemoryDatabaseTest());
101+
tests.add(new WriteAheadLoggingWithAttachedDatabaseTest());
102+
tests.add(new TransactionNonExclusiveTest());
103+
tests.add(new TransactionWithListenerTest());
104+
tests.add(new LargeDatabaseCursorAccessTest());
105+
106+
//// tests.add(new TimeLargeByteArrayQueryTest());
107+
108+
tests.add(new QueryLimitTest());
109+
tests.add(new RTreeTest());
110+
tests.add(new ReadWriteDatabaseToExternalStorageTest());
111+
tests.add(new BeginTransactionTest());
112+
tests.add(new QueryTenThousandDataTest());
113+
tests.add(new CompileBeginTest());
114+
tests.add(new TimeQueryExecutionTest());
115+
tests.add(new UnicodeTest());
116+
tests.add(new QueryIntegerToStringTest());
117+
tests.add(new QueryFloatToStringTest());
118+
tests.add(new ClosedDatabaseTest());
119+
tests.add(new AttachDatabaseTest());
120+
tests.add(new CipherMigrateTest());
121+
tests.add(new GetTypeFromCrossProcessCursorWrapperTest());
122+
tests.add(new InvalidPasswordTest());
123+
tests.add(new NullQueryResultTest());
124+
tests.add(new CrossProcessCursorQueryTest());
125+
tests.add(new InterprocessBlobQueryTest());
126+
tests.add(new LoopingQueryTest());
127+
tests.add(new LoopingCountQueryTest());
128+
tests.add(new AttachNewDatabaseTest());
129+
tests.add(new AttachExistingDatabaseTest());
130+
tests.add(new CanThrowSQLiteExceptionTest());
131+
tests.add(new RawExecSQLTest());
132+
tests.add(new RawExecSQLExceptionTest());
133+
tests.add(new CompiledSQLUpdateTest());
134+
tests.add(new AES128CipherTest());
135+
tests.add(new MigrateDatabaseFrom1xFormatToCurrentFormat());
136+
tests.add(new StatusMemoryUsedTest());
137+
tests.add(new ImportUnencryptedDatabaseTest());
138+
tests.add(new FullTextSearchTest());
139+
tests.add(new ReadableDatabaseTest());
140+
tests.add(new AutoVacuumOverReadTest());
141+
tests.add(new ReadableWritableAccessTest());
142+
tests.add(new CursorAccessTest());
143+
tests.add(new VerifyOnUpgradeIsCalledTest());
144+
tests.add(new MigrationUserVersion());
145+
tests.add(new ExportToUnencryptedDatabase());
146+
tests.add(new QueryNonEncryptedDatabaseTest());
147+
tests.add(new EnableForeignKeySupportTest());
148+
tests.add(new AverageOpenTimeTest());
149+
tests.add(new NestedTransactionsTest());
150+
tests.add(new ComputeKDFTest());
151+
tests.add(new SoundexTest());
152+
tests.add(new RawQueryTest());
153+
tests.add(new OpenReadOnlyDatabaseTest());
154+
tests.add(new RawRekeyTest());
155+
tests.add(new CorruptDatabaseTest());
156+
tests.add(new CustomCorruptionHandlerTest());
157+
tests.add(new MultiThreadReadWriteTest());
158+
tests.add(new VerifyUTF8EncodingForKeyTest());
159+
tests.add(new TextAsIntegerTest());
160+
tests.add(new TextAsDoubleTest());
161+
tests.add(new TextAsLongTest());
162+
tests.add(new CreateNonEncryptedDatabaseTest());
163+
tests.add(new ChangePasswordTest());
164+
tests.add(new ReadableWritableInvalidPasswordTest());
165+
tests.add(new InvalidOpenArgumentTest());
166+
tests.add(new CopyStringToBufferTestFloatSmallBuffer());
167+
tests.add(new CopyStringToBufferTestFloatLargeBuffer());
168+
tests.add(new CopyStringToBufferTestIntegerSmallBuffer());
169+
tests.add(new CopyStringToBufferTestIntegerLargeBuffer());
170+
tests.add(new CopyStringToBufferTestStringSmallBuffer());
171+
tests.add(new CopyStringToBufferTestStringLargeBuffer());
172+
tests.add(new CopyStringToBufferNullTest());
173+
tests.add(new OpenSQLCipher3DatabaseTest());
174+
tests.add(new MUTF8ToUTF8WithNullMigrationTest());
175+
tests.add(new RawQuerySyntaxErrorMessageTest());
176+
tests.add(new RawQueryNonsenseStatementErrorMessageTest());
177+
tests.add(new RawQueryNoSuchFunctionErrorMessageTest());
178+
tests.add(new CompileStatementSyntaxErrorMessageTest());
179+
tests.add(new ExecuteInsertConstraintErrorMessageTest());
180+
tests.add(new InsertWithOnConflictTest());
181+
tests.add(new FTS5Test());
182+
tests.add(new BindBooleanRawQueryTest());
183+
tests.add(new BindStringRawQueryTest());
184+
tests.add(new BindDoubleRawQueryTest());
185+
tests.add(new BindLongRawQueryTest());
186+
tests.add(new BindFloatRawQueryTest());
187+
tests.add(new BindByteArrayRawQueryTest());
188+
tests.add(new NullRawQueryTest());
189+
tests.add(new ReadWriteDatabaseToExternalStorageTest());
188190

189191
return tests;
190192
}

0 commit comments

Comments
 (0)