@@ -6,10 +6,12 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
66import androidx.test.filters.SmallTest
77import androidx.test.platform.app.InstrumentationRegistry
88import com.google.common.base.Optional
9+ import org.cryptomator.data.BuildConfig
910import org.cryptomator.data.db.entities.CloudEntityDao
1011import org.cryptomator.data.db.entities.UpdateCheckEntityDao
1112import org.cryptomator.data.db.entities.VaultEntityDao
1213import org.cryptomator.domain.CloudType
14+ import org.cryptomator.util.FlavorConfig
1315import org.cryptomator.util.SharedPreferencesHandler
1416import org.cryptomator.util.crypto.CredentialCryptor
1517import org.cryptomator.util.crypto.CryptoMode
@@ -28,17 +30,19 @@ import org.junit.runner.RunWith
2830class UpgradeDatabaseTest {
2931
3032 private val context = InstrumentationRegistry .getInstrumentation().context
31- private val sharedPreferencesHandler = SharedPreferencesHandler (context)
3233 private lateinit var db: Database
34+ private lateinit var sharedPreferencesHandler: SharedPreferencesHandler
3335
3436 @Before
3537 fun setup () {
3638 db = StandardDatabase (SQLiteDatabase .create(null ))
39+ sharedPreferencesHandler = SharedPreferencesHandler (context)
3740 }
3841
3942 @After
4043 fun tearDown () {
4144 db.close()
45+ sharedPreferencesHandler.removeAllEntries()
4246 }
4347
4448 @Test
@@ -56,6 +60,7 @@ class UpgradeDatabaseTest {
5660 Upgrade10To11 ().applyTo(db, 10 )
5761 Upgrade11To12 (sharedPreferencesHandler).applyTo(db, 11 )
5862 Upgrade12To13 (context).applyTo(db, 12 )
63+ Upgrade13To14 (sharedPreferencesHandler).applyTo(db, 13 )
5964
6065 CloudEntityDao (DaoConfig (db, CloudEntityDao ::class .java)).loadAll()
6166 VaultEntityDao (DaoConfig (db, VaultEntityDao ::class .java)).loadAll()
@@ -839,7 +844,6 @@ class UpgradeDatabaseTest {
839844 }
840845 }
841846
842-
843847 @Test
844848 fun upgrade12To13OneDrive () {
845849 Upgrade0To1 ().applyTo(db, 0 )
@@ -951,4 +955,99 @@ class UpgradeDatabaseTest {
951955 Assert .assertThat(it.getString(it.getColumnIndex(" ACCESS_TOKEN_CRYPTO_MODE" )), CoreMatchers .`is `(CryptoMode .GCM .name))
952956 }
953957 }
958+
959+ @Test
960+ fun upgrade13To14ExistingLicense () {
961+ Upgrade0To1 ().applyTo(db, 0 )
962+ Upgrade1To2 ().applyTo(db, 1 )
963+ Upgrade2To3 (context).applyTo(db, 2 )
964+ Upgrade3To4 ().applyTo(db, 3 )
965+ Upgrade4To5 ().applyTo(db, 4 )
966+ Upgrade5To6 ().applyTo(db, 5 )
967+ Upgrade6To7 ().applyTo(db, 6 )
968+ Upgrade7To8 ().applyTo(db, 7 )
969+ Upgrade8To9 (sharedPreferencesHandler).applyTo(db, 8 )
970+ Upgrade9To10 (sharedPreferencesHandler).applyTo(db, 9 )
971+ Upgrade10To11 ().applyTo(db, 10 )
972+ Upgrade11To12 (sharedPreferencesHandler).applyTo(db, 11 )
973+ Upgrade12To13 (context).applyTo(db, 12 )
974+
975+ val licenseToken = " licenseToken"
976+ val releaseNote = " releaseNote"
977+ val version = " version"
978+ val urlApk = " urlApk"
979+ val apkSha256 = " apkSha256"
980+ val urlReleaseNote = " urlReleaseNote"
981+
982+ Sql .update(" UPDATE_CHECK_ENTITY" )
983+ .set(" LICENSE_TOKEN" , Sql .toString(licenseToken))
984+ .set(" RELEASE_NOTE" , Sql .toString(releaseNote))
985+ .set(" VERSION" , Sql .toString(version))
986+ .set(" URL_TO_APK" , Sql .toString(urlApk))
987+ .set(" APK_SHA256" , Sql .toString(apkSha256))
988+ .set(" URL_TO_RELEASE_NOTE" , Sql .toString(urlReleaseNote))
989+ .executeOn(db)
990+
991+ Upgrade13To14 (sharedPreferencesHandler).applyTo(db, 13 )
992+
993+ Assert .assertThat(sharedPreferencesHandler.hasCompletedWelcomeFlow(), CoreMatchers .`is `(true ))
994+ if (! FlavorConfig .isPremiumFlavor) {
995+ Assert .assertThat(sharedPreferencesHandler.licenseToken(), CoreMatchers .`is `(licenseToken))
996+ }
997+
998+ Sql .query(" UPDATE_CHECK_ENTITY" ).executeOn(db).use {
999+ it.moveToFirst()
1000+ Assert .assertThat(it.getString(it.getColumnIndex(" RELEASE_NOTE" )), CoreMatchers .`is `(releaseNote))
1001+ Assert .assertThat(it.getString(it.getColumnIndex(" VERSION" )), CoreMatchers .`is `(version))
1002+ Assert .assertThat(it.getString(it.getColumnIndex(" URL_TO_APK" )), CoreMatchers .`is `(urlApk))
1003+ Assert .assertThat(it.getString(it.getColumnIndex(" APK_SHA256" )), CoreMatchers .`is `(apkSha256))
1004+ Assert .assertThat(it.getString(it.getColumnIndex(" URL_TO_RELEASE_NOTE" )), CoreMatchers .`is `(urlReleaseNote))
1005+ }
1006+ }
1007+
1008+
1009+ @Test
1010+ fun upgrade13To14NoLicense () {
1011+ Upgrade0To1 ().applyTo(db, 0 )
1012+ Upgrade1To2 ().applyTo(db, 1 )
1013+ Upgrade2To3 (context).applyTo(db, 2 )
1014+ Upgrade3To4 ().applyTo(db, 3 )
1015+ Upgrade4To5 ().applyTo(db, 4 )
1016+ Upgrade5To6 ().applyTo(db, 5 )
1017+ Upgrade6To7 ().applyTo(db, 6 )
1018+ Upgrade7To8 ().applyTo(db, 7 )
1019+ Upgrade8To9 (sharedPreferencesHandler).applyTo(db, 8 )
1020+ Upgrade9To10 (sharedPreferencesHandler).applyTo(db, 9 )
1021+ Upgrade10To11 ().applyTo(db, 10 )
1022+ Upgrade11To12 (sharedPreferencesHandler).applyTo(db, 11 )
1023+ Upgrade12To13 (context).applyTo(db, 12 )
1024+
1025+ val releaseNote = " releaseNote"
1026+ val version = " version"
1027+ val urlApk = " urlApk"
1028+ val apkSha256 = " apkSha256"
1029+ val urlReleaseNote = " urlReleaseNote"
1030+
1031+ Sql .update(" UPDATE_CHECK_ENTITY" )
1032+ .set(" RELEASE_NOTE" , Sql .toString(releaseNote))
1033+ .set(" VERSION" , Sql .toString(version))
1034+ .set(" URL_TO_APK" , Sql .toString(urlApk))
1035+ .set(" APK_SHA256" , Sql .toString(apkSha256))
1036+ .set(" URL_TO_RELEASE_NOTE" , Sql .toString(urlReleaseNote))
1037+ .executeOn(db)
1038+
1039+ Upgrade13To14 (sharedPreferencesHandler).applyTo(db, 13 )
1040+
1041+ Assert .assertThat(sharedPreferencesHandler.hasCompletedWelcomeFlow(), CoreMatchers .`is `(true ))
1042+ Assert .assertThat(sharedPreferencesHandler.licenseToken(), CoreMatchers .`is `(" " ))
1043+
1044+ Sql .query(" UPDATE_CHECK_ENTITY" ).executeOn(db).use {
1045+ it.moveToFirst()
1046+ Assert .assertThat(it.getString(it.getColumnIndex(" RELEASE_NOTE" )), CoreMatchers .`is `(releaseNote))
1047+ Assert .assertThat(it.getString(it.getColumnIndex(" VERSION" )), CoreMatchers .`is `(version))
1048+ Assert .assertThat(it.getString(it.getColumnIndex(" URL_TO_APK" )), CoreMatchers .`is `(urlApk))
1049+ Assert .assertThat(it.getString(it.getColumnIndex(" APK_SHA256" )), CoreMatchers .`is `(apkSha256))
1050+ Assert .assertThat(it.getString(it.getColumnIndex(" URL_TO_RELEASE_NOTE" )), CoreMatchers .`is `(urlReleaseNote))
1051+ }
1052+ }
9541053}
0 commit comments