Skip to content

Commit 5cbbbea

Browse files
author
Christopher J. Brody
committed
Basic error message tests
(with some incorrect error messages)
1 parent 7404057 commit 5cbbbea

7 files changed

+229
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package net.zetetic.tests;
2+
3+
import android.database.Cursor;
4+
5+
import net.sqlcipher.database.SQLiteDatabase;
6+
import net.sqlcipher.database.SQLiteStatement;
7+
import net.sqlcipher.database.SQLiteException;
8+
9+
import net.zetetic.ZeteticApplication;
10+
11+
import android.util.Log;
12+
13+
public class CompileStatementSyntaxErrorMessageTest extends SQLCipherTest {
14+
15+
@Override
16+
public boolean execute(SQLiteDatabase database) {
17+
try {
18+
SQLiteStatement ignored = database.compileStatement("INSERT INTO mytable (mydata) VALUES");
19+
} catch (SQLiteException e) {
20+
Log.v(ZeteticApplication.TAG, "EXPECTED RESULT: DID throw SQLiteException", e);
21+
String message = e.getMessage();
22+
setMessage(message);
23+
// TBD missing error code etc.
24+
if (!message.matches("near \"VALUES\": syntax error: .*\\, while compiling: INSERT INTO mytable \\(mydata\\) VALUES")) {
25+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: INCORRECT exception message: " + message);
26+
return false;
27+
}
28+
return true;
29+
} catch (Exception e) {
30+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: DID throw other exception", e);
31+
return false;
32+
}
33+
34+
return false;
35+
}
36+
37+
@Override
38+
public String getName() {
39+
return "Compile statement syntax error message Test";
40+
}
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package net.zetetic.tests;
2+
3+
import android.database.Cursor;
4+
5+
import net.sqlcipher.database.SQLiteDatabase;
6+
import net.sqlcipher.database.SQLiteStatement;
7+
import net.sqlcipher.database.SQLiteConstraintException;
8+
9+
import net.zetetic.ZeteticApplication;
10+
11+
import android.util.Log;
12+
13+
public class ExecuteInsertConstraintErrorMessageTest extends SQLCipherTest {
14+
15+
@Override
16+
public boolean execute(SQLiteDatabase database) {
17+
database.execSQL("CREATE TABLE tt(a UNIQUE, b)");
18+
database.execSQL("INSERT INTO tt VALUES (101, 'Alice')");
19+
try {
20+
SQLiteStatement insertStatement = database.compileStatement("INSERT INTO tt VALUES (101, 'Betty')");
21+
long ignored = insertStatement.executeInsert();
22+
} catch (SQLiteConstraintException e) {
23+
Log.v(ZeteticApplication.TAG, "EXPECTED RESULT: DID throw SQLiteConstraintException", e);
24+
String message = e.getMessage();
25+
setMessage(message);
26+
if (!message.matches("error code 19: UNIQUE constraint failed: tt\\.a")) {
27+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: INCORRECT exception message: " + message);
28+
return false;
29+
}
30+
return true;
31+
} catch (Exception e) {
32+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: DID throw other exception", e);
33+
return false;
34+
}
35+
36+
return false;
37+
}
38+
39+
@Override
40+
public String getName() {
41+
return "Execute insert constraint error message Test";
42+
}
43+
}

src/main/java/net/zetetic/tests/RawExecSQLExceptionTest.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
11
package net.zetetic.tests;
22

33
import net.sqlcipher.database.SQLiteDatabase;
4+
import net.sqlcipher.database.SQLiteException;
5+
6+
import net.zetetic.ZeteticApplication;
7+
8+
import android.util.Log;
49

510
public class RawExecSQLExceptionTest extends SQLCipherTest {
611

712
@Override
813
public boolean execute(SQLiteDatabase database) {
914

10-
try{
15+
try {
1116
database.rawExecSQL("select foo from bar");
12-
}catch (Exception e){
17+
} catch (SQLiteException e) {
18+
Log.v(ZeteticApplication.TAG, "EXPECTED RESULT: DID throw SQLiteException", e);
19+
String message = e.getMessage();
20+
setMessage(message);
21+
if (!message.matches("no such table: bar")) {
22+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: INCORRECT exception message: " + message);
23+
return false;
24+
}
1325
return true;
26+
} catch (Exception e) {
27+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: DID throw other exception", e);
28+
return false;
1429
}
30+
1531
return false;
1632
}
1733

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package net.zetetic.tests;
2+
3+
import android.database.Cursor;
4+
5+
import net.sqlcipher.database.SQLiteDatabase;
6+
import net.sqlcipher.database.SQLiteException;
7+
8+
import net.zetetic.ZeteticApplication;
9+
10+
import android.util.Log;
11+
12+
public class RawQueryNoSuchFunctionErrorMessageTest extends SQLCipherTest {
13+
14+
@Override
15+
public boolean execute(SQLiteDatabase database) {
16+
try {
17+
Cursor ignored = database.rawQuery("SELECT UPER('Test')", null);
18+
} catch (SQLiteException e) {
19+
Log.v(ZeteticApplication.TAG, "EXPECTED RESULT: DID throw SQLiteException", e);
20+
String message = e.getMessage();
21+
setMessage(message);
22+
// TBD missing error code etc.
23+
if (!message.matches("no such function: UPER: .*\\, while compiling: SELECT UPER\\('Test'\\)")) {
24+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: INCORRECT exception message: " + message);
25+
return false;
26+
}
27+
return true;
28+
} catch (Exception e) {
29+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: DID throw other exception", e);
30+
return false;
31+
}
32+
33+
return false;
34+
}
35+
36+
@Override
37+
public String getName() {
38+
return "rawQuery no such function error message Test";
39+
}
40+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package net.zetetic.tests;
2+
3+
import android.database.Cursor;
4+
5+
import net.sqlcipher.database.SQLiteDatabase;
6+
import net.sqlcipher.database.SQLiteException;
7+
8+
import net.zetetic.ZeteticApplication;
9+
10+
import android.util.Log;
11+
12+
import java.util.regex.Pattern;
13+
14+
public class RawQueryNonsenseStatementErrorMessageTest extends SQLCipherTest {
15+
16+
@Override
17+
public boolean execute(SQLiteDatabase database) {
18+
try {
19+
Cursor ignored = database.rawQuery("101", null);
20+
} catch (SQLiteException e) {
21+
Log.v(ZeteticApplication.TAG, "EXPECTED RESULT: DID throw SQLiteException", e);
22+
String message = e.getMessage();
23+
setMessage(message);
24+
// TBD missing error code etc.
25+
if (!message.matches("near \"101\": syntax error: .*\\, while compiling: 101")) {
26+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: INCORRECT exception message: " + message);
27+
return false;
28+
}
29+
return true;
30+
} catch (Exception e) {
31+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: DID throw other exception", e);
32+
return false;
33+
}
34+
35+
return false;
36+
}
37+
38+
@Override
39+
public String getName() {
40+
return "rawQuery nonsense statement error message Test";
41+
}
42+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package net.zetetic.tests;
2+
3+
import android.database.Cursor;
4+
5+
import net.sqlcipher.database.SQLiteDatabase;
6+
import net.sqlcipher.database.SQLiteException;
7+
8+
import net.zetetic.ZeteticApplication;
9+
10+
import android.util.Log;
11+
12+
public class RawQuerySyntaxErrorMessageTest extends SQLCipherTest {
13+
14+
@Override
15+
public boolean execute(SQLiteDatabase database) {
16+
try {
17+
Cursor ignored = database.rawQuery("SLCT 1", null);
18+
} catch (SQLiteException e) {
19+
Log.v(ZeteticApplication.TAG, "EXPECTED RESULT: DID throw SQLiteException", e);
20+
String message = e.getMessage();
21+
setMessage(message);
22+
// TBD missing error code etc.
23+
if (!message.matches("near \"SLCT\": syntax error: .*\\, while compiling: SLCT 1")) {
24+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: INCORRECT exception message: " + message);
25+
return false;
26+
}
27+
return true;
28+
} catch (Exception e) {
29+
Log.e(ZeteticApplication.TAG, "NOT EXPECTED: DID throw other exception", e);
30+
return false;
31+
}
32+
33+
return false;
34+
}
35+
36+
@Override
37+
public String getName() {
38+
return "rawQuery syntax error message Test";
39+
}
40+
}

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

+5
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,11 @@ private List<SQLCipherTest> getTestsToRun(){
112112
tests.add(new VerifyCipherProviderTest());
113113
tests.add(new VerifyCipherProviderVersionTest());
114114
tests.add(new AES256GCMCipherTest());
115+
tests.add(new RawQuerySyntaxErrorMessageTest());
116+
tests.add(new RawQueryNonsenseStatementErrorMessageTest());
117+
tests.add(new RawQueryNoSuchFunctionErrorMessageTest());
118+
tests.add(new CompileStatementSyntaxErrorMessageTest());
119+
tests.add(new ExecuteInsertConstraintErrorMessageTest());
115120
return tests;
116121
}
117122
}

0 commit comments

Comments
 (0)