diff --git a/app/src/test/java/dev/msfjarvis/aps/util/settings/MigrationsTest.kt b/app/src/test/java/dev/msfjarvis/aps/util/settings/MigrationsTest.kt index 835815e8..520d51ac 100644 --- a/app/src/test/java/dev/msfjarvis/aps/util/settings/MigrationsTest.kt +++ b/app/src/test/java/dev/msfjarvis/aps/util/settings/MigrationsTest.kt @@ -2,12 +2,12 @@ * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. * SPDX-License-Identifier: GPL-3.0-only */ - @file:Suppress("DEPRECATION") package dev.msfjarvis.aps.util.settings import android.content.Context +import android.content.SharedPreferences import androidx.core.content.edit import com.github.ivanshafran.sharedpreferencesmock.SPMockBuilder import dev.msfjarvis.aps.util.extensions.getString @@ -15,12 +15,32 @@ import dev.msfjarvis.aps.util.extensions.sharedPrefs import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertNull +import org.junit.Before +import org.junit.Rule import org.junit.Test +import org.junit.rules.TemporaryFolder class MigrationsTest { - private fun checkOldKeysAreRemoved(context: Context) = - with(context.sharedPrefs) { + @get:Rule val tempFolder = TemporaryFolder() + + private lateinit var context: Context + private lateinit var filesDir: String + private lateinit var sharedPrefs: SharedPreferences + private lateinit var encryptedSharedPreferences: SharedPreferences + private lateinit var proxySharedPreferences: SharedPreferences + + @Before + fun setup() { + context = SPMockBuilder().createContext() + filesDir = tempFolder.root.path + sharedPrefs = SPMockBuilder().createSharedPreferences() + encryptedSharedPreferences = SPMockBuilder().createSharedPreferences() + proxySharedPreferences = SPMockBuilder().createSharedPreferences() + } + + private fun checkOldKeysAreRemoved() = + with(sharedPrefs) { assertNull(getString(PreferenceKeys.GIT_REMOTE_PORT)) assertNull(getString(PreferenceKeys.GIT_REMOTE_USERNAME)) assertNull(getString(PreferenceKeys.GIT_REMOTE_SERVER)) @@ -30,8 +50,7 @@ class MigrationsTest { @Test fun verifySshWithCustomPortMigration() { - val context = SPMockBuilder().createContext() - context.sharedPrefs.edit { + sharedPrefs.edit { clear() putString(PreferenceKeys.GIT_REMOTE_PORT, "2200") putString(PreferenceKeys.GIT_REMOTE_USERNAME, "msfjarvis") @@ -40,18 +59,17 @@ class MigrationsTest { putString(PreferenceKeys.GIT_REMOTE_PROTOCOL, Protocol.Ssh.pref) putString(PreferenceKeys.GIT_REMOTE_AUTH, AuthMode.Password.pref) } - runMigrations(context) - checkOldKeysAreRemoved(context) + runMigrations(filesDir, sharedPrefs, GitSettings(sharedPrefs, encryptedSharedPreferences, proxySharedPreferences, filesDir)) + checkOldKeysAreRemoved() assertEquals( - context.sharedPrefs.getString(PreferenceKeys.GIT_REMOTE_URL), + sharedPrefs.getString(PreferenceKeys.GIT_REMOTE_URL), "ssh://msfjarvis@192.168.0.102:2200/mnt/disk3/pass-repo" ) } @Test fun verifySshWithDefaultPortMigration() { - val context = SPMockBuilder().createContext() - context.sharedPrefs.edit { + sharedPrefs.edit { clear() putString(PreferenceKeys.GIT_REMOTE_USERNAME, "msfjarvis") putString(PreferenceKeys.GIT_REMOTE_LOCATION, "/mnt/disk3/pass-repo") @@ -59,18 +77,17 @@ class MigrationsTest { putString(PreferenceKeys.GIT_REMOTE_PROTOCOL, Protocol.Ssh.pref) putString(PreferenceKeys.GIT_REMOTE_AUTH, AuthMode.SshKey.pref) } - runMigrations(context) + runMigrations(filesDir, sharedPrefs, GitSettings(sharedPrefs, encryptedSharedPreferences, proxySharedPreferences, filesDir)) checkOldKeysAreRemoved(context) assertEquals( - context.sharedPrefs.getString(PreferenceKeys.GIT_REMOTE_URL), + sharedPrefs.getString(PreferenceKeys.GIT_REMOTE_URL), "msfjarvis@192.168.0.102:/mnt/disk3/pass-repo" ) } @Test fun verifyHttpsWithGitHubMigration() { - val context = SPMockBuilder().createContext() - context.sharedPrefs.edit { + sharedPrefs.edit { clear() putString(PreferenceKeys.GIT_REMOTE_USERNAME, "msfjarvis") putString(PreferenceKeys.GIT_REMOTE_LOCATION, "Android-Password-Store/pass-test") @@ -78,47 +95,44 @@ class MigrationsTest { putString(PreferenceKeys.GIT_REMOTE_PROTOCOL, Protocol.Https.pref) putString(PreferenceKeys.GIT_REMOTE_AUTH, AuthMode.None.pref) } - runMigrations(context) + runMigrations(filesDir, sharedPrefs, GitSettings(sharedPrefs, encryptedSharedPreferences, proxySharedPreferences, filesDir)) checkOldKeysAreRemoved(context) assertEquals( - context.sharedPrefs.getString(PreferenceKeys.GIT_REMOTE_URL), + sharedPrefs.getString(PreferenceKeys.GIT_REMOTE_URL), "https://github.com/Android-Password-Store/pass-test" ) } @Test fun verifyHiddenFoldersMigrationIfDisabled() { - val context = SPMockBuilder().createContext() - context.sharedPrefs.edit { clear() } - runMigrations(context) - assertEquals(true, context.sharedPrefs.getBoolean(PreferenceKeys.SHOW_HIDDEN_FOLDERS, true)) - assertEquals(false, context.sharedPrefs.getBoolean(PreferenceKeys.SHOW_HIDDEN_CONTENTS, false)) + sharedPrefs.edit { clear() } + runMigrations(filesDir, sharedPrefs, GitSettings(sharedPrefs, encryptedSharedPreferences, proxySharedPreferences, filesDir)) + assertEquals(true, sharedPrefs.getBoolean(PreferenceKeys.SHOW_HIDDEN_FOLDERS, true)) + assertEquals(false, sharedPrefs.getBoolean(PreferenceKeys.SHOW_HIDDEN_CONTENTS, false)) } @Test fun verifyHiddenFoldersMigrationIfEnabled() { - val context = SPMockBuilder().createContext() - context.sharedPrefs.edit { + sharedPrefs.edit { clear() putBoolean(PreferenceKeys.SHOW_HIDDEN_FOLDERS, true) } - runMigrations(context) - assertEquals(false, context.sharedPrefs.getBoolean(PreferenceKeys.SHOW_HIDDEN_FOLDERS, false)) - assertEquals(true, context.sharedPrefs.getBoolean(PreferenceKeys.SHOW_HIDDEN_CONTENTS, false)) + runMigrations(filesDir, sharedPrefs, GitSettings(sharedPrefs, encryptedSharedPreferences, proxySharedPreferences, filesDir)) + assertEquals(false, sharedPrefs.getBoolean(PreferenceKeys.SHOW_HIDDEN_FOLDERS, false)) + assertEquals(true, sharedPrefs.getBoolean(PreferenceKeys.SHOW_HIDDEN_CONTENTS, false)) } @Test fun verifyClearClipboardHistoryMigration() { - val context = SPMockBuilder().createContext() - context.sharedPrefs.edit { + sharedPrefs.edit { clear() putBoolean(PreferenceKeys.CLEAR_CLIPBOARD_20X, true) } - runMigrations(context) + runMigrations(filesDir, sharedPrefs, GitSettings(sharedPrefs, encryptedSharedPreferences, proxySharedPreferences, filesDir)) assertEquals( true, - context.sharedPrefs.getBoolean(PreferenceKeys.CLEAR_CLIPBOARD_HISTORY, false) + sharedPrefs.getBoolean(PreferenceKeys.CLEAR_CLIPBOARD_HISTORY, false) ) - assertFalse(context.sharedPrefs.contains(PreferenceKeys.CLEAR_CLIPBOARD_20X)) + assertFalse(sharedPrefs.contains(PreferenceKeys.CLEAR_CLIPBOARD_20X)) } }