Skip to content

Commit 6c132c9

Browse files
Close non-primary connections after password change on primary connection
1 parent 8f0b86e commit 6c132c9

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/SupportAPIRoomTest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,34 @@
2424
import androidx.test.core.app.ApplicationProvider;
2525
import androidx.test.ext.junit.runners.AndroidJUnit4;
2626

27+
import net.zetetic.database.sqlcipher.SQLiteDatabase;
2728
import net.zetetic.database.sqlcipher.SupportOpenHelperFactory;
2829

2930
import org.junit.After;
3031
import org.junit.Before;
32+
import org.junit.Ignore;
3133
import org.junit.Test;
3234
import org.junit.runner.RunWith;
3335

36+
import java.io.File;
3437
import java.nio.charset.StandardCharsets;
3538
import java.util.List;
39+
import java.util.UUID;
3640

3741
@RunWith(AndroidJUnit4.class)
3842
public class SupportAPIRoomTest {
3943

4044
private AppDatabase db;
4145
private UserDao userDao;
46+
private File databaseFile;
4247

4348
@Before
4449
public void before(){
4550
Context context = ApplicationProvider.getApplicationContext();
4651
System.loadLibrary("sqlcipher");
52+
databaseFile = context.getDatabasePath("users.db");
4753
SupportOpenHelperFactory factory = new SupportOpenHelperFactory("user".getBytes(StandardCharsets.UTF_8));
48-
db = Room.databaseBuilder(context, AppDatabase.class, "users.db")
54+
db = Room.databaseBuilder(context, AppDatabase.class, databaseFile.getAbsolutePath())
4955
.openHelperFactory(factory).build();
5056
db.clearAllTables();
5157
userDao = db.userDao();
@@ -92,10 +98,22 @@ public void shouldQueryDataByParametersViaDao(){
9298
assertThat(foundUser.lastName, is(user.lastName));
9399
}
94100

101+
@Test
102+
public void shouldSupportChangingPasswordWithRoom(){
103+
userDao.insert(new User("foo", "bar"));
104+
SQLiteDatabase database = (SQLiteDatabase)db.getOpenHelper().getWritableDatabase();
105+
database.changePassword(UUID.randomUUID().toString());
106+
List<User> users = userDao.getAll();
107+
assertThat(users.size(), is(1));
108+
}
109+
95110
@After
96111
public void after(){
97112
if(db != null){
98113
db.close();
114+
if(databaseFile != null){
115+
databaseFile.delete();
116+
}
99117
}
100118
}
101119

sqlcipher/src/main/java/net/zetetic/database/sqlcipher/SQLiteConnectionPool.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ public void reconfigure(SQLiteDatabaseConfiguration configuration) {
299299
if(passwordChanged){
300300
mAvailablePrimaryConnection.changePassword(configuration.password);
301301
mConfiguration.updateParametersFrom(configuration);
302+
closeAvailableNonPrimaryConnectionsAndLogExceptionsLocked();
302303
reconfigureAllConnectionsLocked();
303304
}
304305

0 commit comments

Comments
 (0)