From 1b2b3ce2d10e97ff7ca37ee912af63da9b322428 Mon Sep 17 00:00:00 2001 From: vitorhugods Date: Tue, 7 Feb 2023 21:00:52 -0300 Subject: [PATCH] test: add tests covering SupportHelperTest --- .../sqlcipher_cts/SupportHelperTest.java | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/SupportHelperTest.java diff --git a/sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/SupportHelperTest.java b/sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/SupportHelperTest.java new file mode 100644 index 0000000..75c5c70 --- /dev/null +++ b/sqlcipher/src/androidTest/java/net/zetetic/database/sqlcipher_cts/SupportHelperTest.java @@ -0,0 +1,105 @@ +package net.zetetic.database.sqlcipher_cts; + +import android.content.Context; +import androidx.annotation.CallSuper; +import androidx.annotation.NonNull; +import androidx.sqlite.db.SupportSQLiteDatabase; +import androidx.sqlite.db.SupportSQLiteOpenHelper; +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; +import net.zetetic.database.sqlcipher.SupportHelper; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.assertEquals; + +@RunWith(AndroidJUnit4.class) +public class SupportHelperTest { + + private static final String DATABASE_NAME = "DB-Test.db"; + private static final int CREATION_INDEX = 0; + private static final int UPGRADE_INDEX = 0; + + @Before + public void setup() { + Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); + for (String databaseName : context.databaseList()) { + context.deleteDatabase(databaseName); + } + } + + @Test + public void shouldCreateDatabaseNormallyWithInitialVersion() { + FakeCallback callbackWrapper = new FakeCallback(1); + + SupportSQLiteOpenHelper.Configuration configuration = createConfiguration(callbackWrapper); + SupportHelper helper = new SupportHelper(configuration, null, null, true); + + helper.getWritableDatabase(); + helper.close(); + + assertEquals(1, callbackWrapper.callbackCount[CREATION_INDEX]); + assertEquals(1, callbackWrapper.callbackCount[UPGRADE_INDEX]); + } + + @Test + public void shouldRunUpgradeFromVersion1ToVersion2() { + FakeCallback initialCallback = new FakeCallback(1); + + SupportHelper initialHelper = new SupportHelper(createConfiguration(initialCallback), null, null, true); + + initialHelper.getWritableDatabase(); + initialHelper.close(); + + FakeCallback callbackWrapper = new FakeCallback(2); + + SupportHelper helper = new SupportHelper(createConfiguration(callbackWrapper), null, null, true); + + helper.getWritableDatabase(); + helper.close(); + + assertEquals(0, callbackWrapper.callbackCount[CREATION_INDEX]); + assertEquals(1, callbackWrapper.callbackCount[UPGRADE_INDEX]); + } + + private SupportSQLiteOpenHelper.Configuration createConfiguration(SupportSQLiteOpenHelper.Callback callback) { + Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); + return SupportSQLiteOpenHelper.Configuration.builder(context) + .name(DATABASE_NAME) + .callback(callback) + .build(); + } + + private static class FakeCallback extends SupportSQLiteOpenHelper.Callback { + public final int[] callbackCount = {0, 0}; + + public FakeCallback(int version) { + super(version); + } + + SupportSQLiteOpenHelper.Callback callback = new SupportSQLiteOpenHelper.Callback(version) { + @Override + public void onCreate(@NonNull SupportSQLiteDatabase db) { + callbackCount[CREATION_INDEX] += 1; + } + + @Override + public void onUpgrade(@NonNull SupportSQLiteDatabase db, int oldVersion, int newVersion) { + callbackCount[UPGRADE_INDEX] += 1; + } + }; + + @Override + @CallSuper + public void onCreate(@NonNull SupportSQLiteDatabase db) { + callback.onCreate(db); + } + + @Override + @CallSuper + public void onUpgrade(@NonNull SupportSQLiteDatabase db, int oldVersion, int newVersion) { + callback.onUpgrade(db, oldVersion, newVersion); + } + } +}