Skip to content

Commit 2cb21dd

Browse files
Adding test for exporting to unencrypted database
1 parent 71bae04 commit 2cb21dd

File tree

3 files changed

+124
-68
lines changed

3 files changed

+124
-68
lines changed

net.zetetic.sqlcipher.test.iws

Lines changed: 64 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -87,57 +87,41 @@
8787
</component>
8888
<component name="FileEditorManager">
8989
<leaf>
90-
<file leaf-file-name="SQLCipherTest.java" pinned="false" current="false" current-in-tab="false">
91-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/SQLCipherTest.java">
92-
<provider selected="true" editor-type-id="text-editor">
93-
<state line="28" column="20" selection-start="840" selection-end="840" vertical-scroll-proportion="0.0">
94-
<folding />
95-
</state>
96-
</provider>
97-
</entry>
98-
</file>
99-
<file leaf-file-name="MigrationFromDatabaseFormat1To2.java" pinned="false" current="false" current-in-tab="false">
100-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationFromDatabaseFormat1To2.java">
101-
<provider selected="true" editor-type-id="text-editor">
102-
<state line="14" column="12" selection-start="334" selection-end="621" vertical-scroll-proportion="0.0">
103-
<folding />
104-
</state>
105-
</provider>
106-
</entry>
107-
</file>
108-
<file leaf-file-name="ZeteticApplication.java" pinned="false" current="false" current-in-tab="false">
90+
<file leaf-file-name="ZeteticApplication.java" pinned="false" current="true" current-in-tab="true">
10991
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/ZeteticApplication.java">
11092
<provider selected="true" editor-type-id="text-editor">
111-
<state line="16" column="82" selection-start="575" selection-end="575" vertical-scroll-proportion="0.0">
93+
<state line="16" column="82" selection-start="575" selection-end="575" vertical-scroll-proportion="0.01978022">
11294
<folding />
11395
</state>
11496
</provider>
11597
</entry>
11698
</file>
117-
<file leaf-file-name="TestSuiteRunner.java" pinned="false" current="false" current-in-tab="false">
118-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/TestSuiteRunner.java">
99+
<file leaf-file-name="MigrationUserVersion.java" pinned="false" current="false" current-in-tab="false">
100+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationUserVersion.java">
119101
<provider selected="true" editor-type-id="text-editor">
120-
<state line="42" column="7" selection-start="1138" selection-end="1138" vertical-scroll-proportion="0.0">
121-
<folding />
102+
<state line="14" column="0" selection-start="393" selection-end="393" vertical-scroll-proportion="0.0">
103+
<folding>
104+
<element signature="imports" expanded="true" />
105+
</folding>
122106
</state>
123107
</provider>
124108
</entry>
125109
</file>
126-
<file leaf-file-name="MigrationUserVersion.java" pinned="false" current="true" current-in-tab="true">
127-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationUserVersion.java">
110+
<file leaf-file-name="ExportToUnencryptedDatabase.java" pinned="false" current="false" current-in-tab="false">
111+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/ExportToUnencryptedDatabase.java">
128112
<provider selected="true" editor-type-id="text-editor">
129-
<state line="39" column="5" selection-start="1750" selection-end="1750" vertical-scroll-proportion="0.7905405">
113+
<state line="27" column="37" selection-start="1067" selection-end="1067" vertical-scroll-proportion="0.0">
130114
<folding>
131115
<element signature="imports" expanded="true" />
132116
</folding>
133117
</state>
134118
</provider>
135119
</entry>
136120
</file>
137-
<file leaf-file-name="FullTextSearchTest.java" pinned="false" current="false" current-in-tab="false">
138-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/FullTextSearchTest.java">
121+
<file leaf-file-name="LoopingQueryTest.java" pinned="false" current="false" current-in-tab="false">
122+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/LoopingQueryTest.java">
139123
<provider selected="true" editor-type-id="text-editor">
140-
<state line="15" column="22" selection-start="610" selection-end="610" vertical-scroll-proportion="0.0">
124+
<state line="5" column="13" selection-start="120" selection-end="120" vertical-scroll-proportion="0.0">
141125
<folding />
142126
</state>
143127
</provider>
@@ -162,7 +146,6 @@
162146
<component name="IdeDocumentHistory">
163147
<option name="changedFiles">
164148
<list>
165-
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/tests/SQLCipherTest.java" />
166149
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/tests/ReadOnlyDatabaseTest.java" />
167150
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/TestSuiteActivity.java" />
168151
<option value="$PROJECT_DIR$/res/layout/main.xml" />
@@ -176,8 +159,9 @@
176159
<option value="$PROJECT_DIR$/pom.xml" />
177160
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/ZeteticApplication.java" />
178161
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationFromDatabaseFormat1To2.java" />
179-
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/tests/TestSuiteRunner.java" />
180162
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationUserVersion.java" />
163+
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/tests/ExportToUnencryptedDatabase.java" />
164+
<option value="$PROJECT_DIR$/src/main/java/net/zetetic/tests/TestSuiteRunner.java" />
181165
</list>
182166
</option>
183167
</component>
@@ -802,7 +786,6 @@
802786
<layout>
803787
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
804788
<window_info id="JetGradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
805-
<window_info id="Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32959402" sideWeight="0.4909285" order="3" side_tool="false" content_ui="tabs" />
806789
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
807790
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
808791
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.34685165" sideWeight="0.0" order="3" side_tool="false" content_ui="tabs" />
@@ -818,6 +801,7 @@
818801
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2409188" sideWeight="0.65314835" order="0" side_tool="false" content_ui="combo" />
819802
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3276414" sideWeight="0.0" order="2" side_tool="false" content_ui="tabs" />
820803
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
804+
<window_info id="Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32959402" sideWeight="0.4909285" order="3" side_tool="false" content_ui="tabs" />
821805
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
822806
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32977587" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
823807
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
@@ -885,99 +869,111 @@
885869
<option name="FILTER_TARGETS" value="false" />
886870
</component>
887871
<component name="editorHistoryManager">
888-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/ReadableDatabaseTest.java">
889-
<provider selected="true" editor-type-id="text-editor">
890-
<state line="15" column="0" selection-start="376" selection-end="651" vertical-scroll-proportion="0.0" />
891-
</provider>
892-
</entry>
893-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/AutoVacuumOverReadTest.java">
872+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/TestSuiteActivity.java">
894873
<provider selected="true" editor-type-id="text-editor">
895-
<state line="4" column="35" selection-start="88" selection-end="110" vertical-scroll-proportion="0.0" />
874+
<state line="18" column="53" selection-start="566" selection-end="566" vertical-scroll-proportion="0.2027027" />
896875
</provider>
897876
</entry>
898-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/PragmaCipherVersionTest.java">
877+
<entry file="file://$PROJECT_DIR$/res/layout/main.xml">
899878
<provider selected="true" editor-type-id="text-editor">
900-
<state line="18" column="21" selection-start="595" selection-end="595" vertical-scroll-proportion="0.3445946" />
879+
<state line="9" column="46" selection-start="482" selection-end="482" vertical-scroll-proportion="0.18243243" />
901880
</provider>
902881
</entry>
903-
<entry file="jar://$PROJECT_DIR$/libs/sqlcipher.jar!/net/sqlcipher/database/SQLiteOpenHelper.class">
882+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/ReadableWritableAccessTest.java">
904883
<provider selected="true" editor-type-id="text-editor">
905-
<state line="18" column="62" selection-start="935" selection-end="935" vertical-scroll-proportion="0.4857143" />
884+
<state line="27" column="0" selection-start="1168" selection-end="1168" vertical-scroll-proportion="0.16891892" />
906885
</provider>
907886
</entry>
908-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/VerifyOnUpgradeIsCalledTest.java">
887+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/AttachExistingDatabaseTest.java">
909888
<provider selected="true" editor-type-id="text-editor">
910-
<state line="28" column="0" selection-start="1055" selection-end="1055" vertical-scroll-proportion="0.0" />
889+
<state line="15" column="112" selection-start="456" selection-end="456" vertical-scroll-proportion="0.0" />
911890
</provider>
912891
</entry>
913-
<entry file="file://$PROJECT_DIR$/pom.xml">
892+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationUserVersion.java">
914893
<provider selected="true" editor-type-id="text-editor">
915-
<state line="39" column="0" selection-start="1547" selection-end="1547" vertical-scroll-proportion="0.0" />
894+
<state line="14" column="0" selection-start="393" selection-end="393" vertical-scroll-proportion="0.0">
895+
<folding>
896+
<element signature="imports" expanded="true" />
897+
</folding>
898+
</state>
916899
</provider>
917900
</entry>
918901
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/FullTextSearchTest.java">
919902
<provider selected="true" editor-type-id="text-editor">
920-
<state line="15" column="22" selection-start="610" selection-end="610" vertical-scroll-proportion="0.0" />
903+
<state line="15" column="22" selection-start="610" selection-end="610" vertical-scroll-proportion="0.2837838">
904+
<folding />
905+
</state>
921906
</provider>
922907
</entry>
923-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/AttachExistingDatabaseTest.java">
908+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/LoopingQueryTest.java">
924909
<provider selected="true" editor-type-id="text-editor">
925-
<state line="15" column="112" selection-start="456" selection-end="456" vertical-scroll-proportion="0.0" />
910+
<state line="5" column="13" selection-start="120" selection-end="120" vertical-scroll-proportion="0.0">
911+
<folding />
912+
</state>
926913
</provider>
927914
</entry>
928-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationFromDatabaseFormat1To2.java">
915+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/ReadableDatabaseTest.java">
929916
<provider selected="true" editor-type-id="text-editor">
930-
<state line="14" column="12" selection-start="334" selection-end="621" vertical-scroll-proportion="0.0">
917+
<state line="10" column="13" selection-start="261" selection-end="261" vertical-scroll-proportion="0.08108108">
931918
<folding />
932919
</state>
933920
</provider>
934921
</entry>
935-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/TestSuiteActivity.java">
922+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/RawExecSQLExceptionTest.java">
936923
<provider selected="true" editor-type-id="text-editor">
937-
<state line="18" column="53" selection-start="566" selection-end="566" vertical-scroll-proportion="0.2027027">
924+
<state line="4" column="13" selection-start="88" selection-end="88" vertical-scroll-proportion="0.08108108">
938925
<folding />
939926
</state>
940927
</provider>
941928
</entry>
942-
<entry file="file://$PROJECT_DIR$/res/layout/main.xml">
929+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationFromDatabaseFormat1To2.java">
943930
<provider selected="true" editor-type-id="text-editor">
944-
<state line="9" column="46" selection-start="482" selection-end="482" vertical-scroll-proportion="0.18243243">
931+
<state line="15" column="33" selection-start="423" selection-end="423" vertical-scroll-proportion="0.22297297">
945932
<folding />
946933
</state>
947934
</provider>
948935
</entry>
949-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/ReadableWritableAccessTest.java">
936+
<entry file="jar://$MAVEN_REPOSITORY$/com/google/android/android/2.1.2/android-2.1.2.jar!/android/content/ContextWrapper.class">
950937
<provider selected="true" editor-type-id="text-editor">
951-
<state line="27" column="0" selection-start="1168" selection-end="1168" vertical-scroll-proportion="0.16891892">
938+
<state line="59" column="19" selection-start="2652" selection-end="2652" vertical-scroll-proportion="0.34235293">
952939
<folding />
953940
</state>
954941
</provider>
955942
</entry>
956943
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/SQLCipherTest.java">
957944
<provider selected="true" editor-type-id="text-editor">
958-
<state line="28" column="20" selection-start="840" selection-end="840" vertical-scroll-proportion="0.0" />
945+
<state line="29" column="0" selection-start="869" selection-end="869" vertical-scroll-proportion="0.47297296">
946+
<folding />
947+
</state>
959948
</provider>
960949
</entry>
961-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/ZeteticApplication.java">
950+
<entry file="jar://$PROJECT_DIR$/libs/sqlcipher.jar!/net/sqlcipher/database/SQLiteDatabase.class">
962951
<provider selected="true" editor-type-id="text-editor">
963-
<state line="16" column="82" selection-start="575" selection-end="575" vertical-scroll-proportion="0.0">
952+
<state line="125" column="56" selection-start="6082" selection-end="6082" vertical-scroll-proportion="0.20588236">
964953
<folding />
965954
</state>
966955
</provider>
967956
</entry>
957+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/ExportToUnencryptedDatabase.java">
958+
<provider selected="true" editor-type-id="text-editor">
959+
<state line="27" column="37" selection-start="1067" selection-end="1067" vertical-scroll-proportion="0.0">
960+
<folding>
961+
<element signature="imports" expanded="true" />
962+
</folding>
963+
</state>
964+
</provider>
965+
</entry>
968966
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/TestSuiteRunner.java">
969967
<provider selected="true" editor-type-id="text-editor">
970-
<state line="42" column="7" selection-start="1138" selection-end="1138" vertical-scroll-proportion="0.0">
968+
<state line="62" column="53" selection-start="2170" selection-end="2170" vertical-scroll-proportion="0.82197803">
971969
<folding />
972970
</state>
973971
</provider>
974972
</entry>
975-
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/tests/MigrationUserVersion.java">
973+
<entry file="file://$PROJECT_DIR$/src/main/java/net/zetetic/ZeteticApplication.java">
976974
<provider selected="true" editor-type-id="text-editor">
977-
<state line="39" column="5" selection-start="1750" selection-end="1750" vertical-scroll-proportion="0.7905405">
978-
<folding>
979-
<element signature="imports" expanded="true" />
980-
</folding>
975+
<state line="16" column="82" selection-start="575" selection-end="575" vertical-scroll-proportion="0.01978022">
976+
<folding />
981977
</state>
982978
</provider>
983979
</entry>
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package net.zetetic.tests;
2+
3+
import android.database.Cursor;
4+
import net.sqlcipher.database.SQLiteDatabase;
5+
import net.sqlcipher.database.SQLiteDatabaseHook;
6+
import net.zetetic.ZeteticApplication;
7+
8+
import java.io.File;
9+
10+
public class ExportToUnencryptedDatabase extends SQLCipherTest {
11+
12+
File unencryptedFile;
13+
14+
@Override
15+
public boolean execute(SQLiteDatabase database) {
16+
17+
database.close();
18+
ZeteticApplication.getInstance().deleteDatabase(ZeteticApplication.DATABASE_NAME);
19+
File databaseFile = ZeteticApplication.getInstance().getDatabasePath(ZeteticApplication.DATABASE_NAME);
20+
SQLiteDatabaseHook hook = new SQLiteDatabaseHook() {
21+
public void preKey(SQLiteDatabase sqLiteDatabase) {
22+
sqLiteDatabase.rawExecSQL("PRAGMA cipher_default_use_hmac = off;");
23+
}
24+
public void postKey(SQLiteDatabase sqLiteDatabase) {}
25+
};
26+
database = SQLiteDatabase.openOrCreateDatabase(databaseFile, ZeteticApplication.DATABASE_PASSWORD, null, hook);
27+
28+
database.rawExecSQL("create table t1(a,b);");
29+
database.execSQL("insert into t1(a,b) values(?, ?);", new Object[]{"one for the money", "two for the show"});
30+
unencryptedFile = ZeteticApplication.getInstance().getDatabasePath("plaintext.db");
31+
database.rawExecSQL(String.format("ATTACH DATABASE '%s' as plaintext KEY '';",
32+
unencryptedFile.getAbsolutePath()));
33+
database.rawExecSQL("SELECT sqlcipher_export('plaintext');");
34+
database.rawExecSQL("DETACH DATABASE plaintext;");
35+
36+
SQLiteDatabase unencryptedDatabase = SQLiteDatabase.openOrCreateDatabase(unencryptedFile, "", null, hook);
37+
Cursor cursor = unencryptedDatabase.rawQuery("select * from t1;", new String[]{});
38+
String a = "";
39+
String b = "";
40+
while(cursor.moveToNext()){
41+
a = cursor.getString(0);
42+
b = cursor.getString(1);
43+
}
44+
cursor.close();
45+
return a.equals("one for the money") &&
46+
b.equals("two for the show");
47+
}
48+
49+
@Override
50+
protected void tearDown() {
51+
super.tearDown();
52+
unencryptedFile.delete();
53+
}
54+
55+
@Override
56+
public String getName() {
57+
return "Export to Unencrypted Database";
58+
}
59+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ private List<SQLCipherTest> getTestsToRun(){
6060
tests.add(new ReadableWritableAccessTest());
6161
tests.add(new VerifyOnUpgradeIsCalledTest());
6262
tests.add(new MigrationUserVersion());
63+
tests.add(new ExportToUnencryptedDatabase());
6364
return tests;
6465
}
6566
}

0 commit comments

Comments
 (0)