Skip to content

Commit e0920a0

Browse files
committed
migrate over some more complex tests
1 parent 69c8928 commit e0920a0

15 files changed

+1000
-19
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package net.zetetic.tests.support;
2+
3+
import android.database.Cursor;
4+
import net.sqlcipher.database.SQLiteDatabase;
5+
import net.sqlcipher.database.SupportFactory;
6+
import net.zetetic.ZeteticApplication;
7+
import net.zetetic.tests.TestResult;
8+
import androidx.sqlite.db.SupportSQLiteDatabase;
9+
import androidx.sqlite.db.SupportSQLiteOpenHelper;
10+
11+
public class AES128CipherTest implements ISupportTest {
12+
public TestResult run() {
13+
TestResult result = new TestResult(getName(), false);
14+
15+
byte[] passphrase = SQLiteDatabase.getBytes(ZeteticApplication.DATABASE_PASSWORD.toCharArray());
16+
SupportFactory factory = new SupportFactory(passphrase, "PRAGMA cipher = 'aes-128-cbc'");
17+
SupportSQLiteOpenHelper.Configuration cfg =
18+
SupportSQLiteOpenHelper.Configuration.builder(ZeteticApplication.getInstance())
19+
.name(ZeteticApplication.DATABASE_NAME)
20+
.callback(new SupportSQLiteOpenHelper.Callback(1) {
21+
@Override
22+
public void onCreate(SupportSQLiteDatabase db) {
23+
// unused
24+
}
25+
26+
@Override
27+
public void onUpgrade(SupportSQLiteDatabase db, int oldVersion,
28+
int newVersion) {
29+
// unused
30+
}
31+
})
32+
.build();
33+
SupportSQLiteOpenHelper helper = factory.create(cfg);
34+
SupportSQLiteDatabase database = helper.getWritableDatabase();
35+
36+
String actual = "";
37+
String value = "hey";
38+
database.execSQL("create table t1(a)");
39+
database.execSQL("insert into t1(a) values (?)", new Object[]{value});
40+
Cursor c = database.query("select * from t1", new String[]{});
41+
if(c != null){
42+
c.moveToFirst();
43+
actual = c.getString(0);
44+
c.close();
45+
}
46+
result.setResult(actual.equals(value));
47+
48+
return result;
49+
}
50+
51+
@Override
52+
public String getName() {
53+
return "AES-128 Bit Cipher Test";
54+
}
55+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package net.zetetic.tests.support;
2+
3+
import net.sqlcipher.database.SQLiteDatabase;
4+
import net.zetetic.QueryHelper;
5+
import net.zetetic.ZeteticApplication;
6+
import net.zetetic.tests.SQLCipherTest;
7+
import java.io.File;
8+
9+
public class AttachDatabaseTest extends SupportTest {
10+
@Override
11+
public boolean execute(SQLiteDatabase database) {
12+
boolean status;
13+
String password = "test123";
14+
File fooDatabase = ZeteticApplication.getInstance().getDatabasePath("foo.db");
15+
if(fooDatabase.exists()){
16+
fooDatabase.delete();
17+
}
18+
database.execSQL("ATTACH database ? AS encrypted KEY ?", new Object[]{fooDatabase.getAbsolutePath(), password});
19+
database.execSQL("create table encrypted.t1(a,b);");
20+
database.execSQL("insert into encrypted.t1(a,b) values(?,?);", new Object[]{"one for the money", "two for the show"});
21+
int rowCount = QueryHelper.singleIntegerValueFromQuery(database, "select count(*) from encrypted.t1;");
22+
status = rowCount == 1;
23+
database.close();
24+
return status;
25+
}
26+
27+
@Override
28+
public String getName() {
29+
return "Attach database test";
30+
}
31+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package net.zetetic.tests.support;
2+
3+
import net.sqlcipher.database.SQLiteDatabase;
4+
import net.zetetic.ZeteticApplication;
5+
import net.zetetic.tests.SQLCipherTest;
6+
import java.io.File;
7+
8+
public class AttachNewDatabaseTest extends SupportTest {
9+
@Override
10+
public boolean execute(SQLiteDatabase encryptedDatabase) {
11+
12+
encryptedDatabase.execSQL("create table t1(a,b)");
13+
encryptedDatabase.execSQL("insert into t1(a,b) values(?, ?)", new Object[]{"one", "two"});
14+
15+
String newKey = "foo";
16+
File newDatabasePath = ZeteticApplication.getInstance().getDatabasePath("normal.db");
17+
String attachCommand = "ATTACH DATABASE ? as encrypted KEY ?";
18+
String createCommand = "create table encrypted.t1(a,b)";
19+
String insertCommand = "insert into encrypted.t1 SELECT * from t1";
20+
String detachCommand = "DETACH DATABASE encrypted";
21+
encryptedDatabase.execSQL(attachCommand, new Object[]{newDatabasePath.getAbsolutePath(), newKey});
22+
encryptedDatabase.execSQL(createCommand);
23+
encryptedDatabase.execSQL(insertCommand);
24+
encryptedDatabase.execSQL(detachCommand);
25+
26+
return true;
27+
}
28+
29+
@Override
30+
protected void tearDown(SQLiteDatabase database) {
31+
File newDatabasePath = ZeteticApplication.getInstance().getDatabasePath("normal.db");
32+
newDatabasePath.delete();
33+
}
34+
35+
@Override
36+
public String getName() {
37+
return "Attach New Database Test";
38+
}
39+
}

0 commit comments

Comments
 (0)