diff --git a/app/src/test/java/org/fdroid/fdroid/data/DBHelperTest.java b/app/src/test/java/org/fdroid/fdroid/data/DBHelperTest.java index 2159a709b..68eef631f 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/DBHelperTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/DBHelperTest.java @@ -4,7 +4,9 @@ import android.content.Context; import android.support.test.InstrumentationRegistry; import android.text.TextUtils; import android.util.Log; + import org.apache.commons.io.IOUtils; +import org.fdroid.fdroid.R; import org.fdroid.fdroid.TestUtils; import org.junit.Before; import org.junit.Test; @@ -283,22 +285,20 @@ public class DBHelperTest { "22", "1", "0", "ignore", "fffff2313aaaaabcccc111"); List oem1 = Arrays.asList("oem1MyNameIs", "https://www.mynameis.com/rapper/repo", "Who is the first repo?", "22", "0", "0", "ignore", "ddddddd2313aaaaabcccc111"); - List fdroid0 = Arrays.asList("F-Droid", "https://f-droid.org/repo", "The official F-Droid repository. Applications in this repository are mostly built directory from the source code. Some are official binaries built by the original application developers - these will be replaced by source-built versions over time.", - "13", "1", "1", "ignore", "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"); - List fdroid1 = Arrays.asList("F-Droid Archive", "https://f-droid.org/archive", "The archive repository of the F-Droid client. This contains older versions of applications from the main repository.", - "13", "0", "2", "ignore", "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"); - List fdroid2 = Arrays.asList("Guardian Project", "https://guardianproject.info/fdroid/repo", "The official app repository of The Guardian Project. Applications in this repository are official binaries build by the original application developers and signed by the same key as the APKs that are released in the Google Play store.", - "13", "0", "3", "ignore", "308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f"); - List fdroid3 = Arrays.asList("Guardian Project Archive", "https://guardianproject.info/fdroid/archive", "The official repository of The Guardian Project apps for use with F-Droid client. This contains older versions of applications from the main repository.", - "13", "0", "4", "ignore", "308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f"); + + String[] defaultRepos = context.getResources().getStringArray(R.array.default_repos); List shouldBeRepos = new LinkedList<>(); shouldBeRepos.addAll(oem0); shouldBeRepos.addAll(oem1); - shouldBeRepos.addAll(fdroid0); - shouldBeRepos.addAll(fdroid1); - shouldBeRepos.addAll(fdroid2); - shouldBeRepos.addAll(fdroid3); + shouldBeRepos.addAll(Arrays.asList(defaultRepos)); + + // Normalize whitespace in descriptions, just like DBHelper does. + final int descriptionIndex = 2; + for (int i = descriptionIndex; i < shouldBeRepos.size(); i += DBHelper.REPO_XML_ITEM_COUNT) { + String description = shouldBeRepos.get(i); + shouldBeRepos.set(i, description.replaceAll("\\s+", " ")); + } for (int i = 0; i < initialRepos.size(); i++) { assertEquals(shouldBeRepos.get(i), initialRepos.get(i)); diff --git a/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java index a77624248..cfd84b463 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java @@ -26,6 +26,7 @@ import android.content.ContentValues; import android.content.Context; import android.net.Uri; import android.support.annotation.Nullable; + import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; @@ -50,6 +51,14 @@ public class RepoProviderTest extends FDroidProviderTest { private static final String[] COLS = RepoTable.Cols.ALL; + /** + * Returns the number of repos in app/src/main/res/default_repo.xml + */ + public static int getDefaultRepoCount(Context context) { + int itemCount = context.getResources().getStringArray(R.array.default_repos).length; + return itemCount / DBHelper.REPO_XML_ITEM_COUNT; + } + /** * Set to random time zone to make sure that the dates are properly parsed. */ @@ -159,7 +168,7 @@ public class RepoProviderTest extends FDroidProviderTest { @Test public void defaultRepos() { List defaultRepos = RepoProvider.Helper.all(context); - assertEquals(defaultRepos.size(), 4); // based on app/src/main/res/default_repo.xml + assertEquals(defaultRepos.size(), getDefaultRepoCount(context)); String[] reposFromXml = context.getResources().getStringArray(R.array.default_repos); if (reposFromXml.length % DBHelper.REPO_XML_ITEM_COUNT != 0) { @@ -181,7 +190,9 @@ public class RepoProviderTest extends FDroidProviderTest { @Test public void canAddRepo() { - assertEquals(4, RepoProvider.Helper.all(context).size()); + int defaultRepoCount = getDefaultRepoCount(context); + + assertEquals(defaultRepoCount, RepoProvider.Helper.all(context).size()); Repo mock1 = insertRepo( context, @@ -198,7 +209,7 @@ public class RepoProviderTest extends FDroidProviderTest { "0123456789ABCDEF" ); - assertEquals(6, RepoProvider.Helper.all(context).size()); + assertEquals(defaultRepoCount + 2, RepoProvider.Helper.all(context).size()); assertRepo( mock1, @@ -242,16 +253,18 @@ public class RepoProviderTest extends FDroidProviderTest { "0123456789ABCDEF" ); + int defaultRepoCount = getDefaultRepoCount(context); + List beforeDelete = RepoProvider.Helper.all(context); - assertEquals(6, beforeDelete.size()); // Expect six repos, because of the four default ones. - assertEquals(mock1.id, beforeDelete.get(4).id); - assertEquals(mock2.id, beforeDelete.get(5).id); + assertEquals(defaultRepoCount + 2, beforeDelete.size()); + assertEquals(mock1.id, beforeDelete.get(defaultRepoCount).id); + assertEquals(mock2.id, beforeDelete.get(defaultRepoCount + 1).id); RepoProvider.Helper.remove(context, mock1.getId()); List afterDelete = RepoProvider.Helper.all(context); - assertEquals(5, afterDelete.size()); - assertEquals(mock2.id, afterDelete.get(4).id); + assertEquals(defaultRepoCount + 1, afterDelete.size()); + assertEquals(mock2.id, afterDelete.get(defaultRepoCount).id); } public Repo insertRepo(Context context, String address, String description, String fingerprint) { diff --git a/app/src/test/java/org/fdroid/fdroid/updater/MultiIndexUpdaterTest.java b/app/src/test/java/org/fdroid/fdroid/updater/MultiIndexUpdaterTest.java index 60f0cf9c4..2204e2e59 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/MultiIndexUpdaterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/MultiIndexUpdaterTest.java @@ -4,6 +4,7 @@ import android.content.ContentValues; import android.content.Context; import android.support.annotation.NonNull; import android.text.TextUtils; + import org.fdroid.fdroid.IndexUpdater; import org.fdroid.fdroid.IndexUpdater.UpdateException; import org.fdroid.fdroid.IndexV1Updater; @@ -15,6 +16,7 @@ import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.FDroidProviderTest; import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.data.RepoProvider; +import org.fdroid.fdroid.data.RepoProviderTest; import org.fdroid.fdroid.data.Schema; import org.junit.Before; @@ -77,12 +79,10 @@ public abstract class MultiIndexUpdaterTest extends FDroidProviderTest { @Before public final void setupMultiRepo() throws Exception { - // On a fresh database install, there will be F-Droid + GP repos, including their Archive - // repos that we are not interested in. - RepoProvider.Helper.remove(context, 1); - RepoProvider.Helper.remove(context, 2); - RepoProvider.Helper.remove(context, 3); - RepoProvider.Helper.remove(context, 4); + // Remove default repos. + for (int i = 1; i <= RepoProviderTest.getDefaultRepoCount(context); ++i) { + RepoProvider.Helper.remove(context, i); + } Preferences.setupForTests(context); } diff --git a/app/src/testFull/java/org/fdroid/fdroid/panic/PanicResponderActivityTest.java b/app/src/testFull/java/org/fdroid/fdroid/panic/PanicResponderActivityTest.java index b2334b27b..5a415daf7 100644 --- a/app/src/testFull/java/org/fdroid/fdroid/panic/PanicResponderActivityTest.java +++ b/app/src/testFull/java/org/fdroid/fdroid/panic/PanicResponderActivityTest.java @@ -22,8 +22,10 @@ public class PanicResponderActivityTest extends FDroidProviderTest { */ @Test public void defaultRepos() { + int defaultRepoCount = RepoProviderTest.getDefaultRepoCount(context); + List defaultRepos = RepoProvider.Helper.all(context); - assertEquals(defaultRepos.size(), 4); // based on app/src/main/res/default_repo.xml + assertEquals(defaultRepos.size(), defaultRepoCount); Repo gpRepo = RepoProvider.Helper.findByAddress(context, "https://guardianproject.info/fdroid/repo"); setEnabled(gpRepo, true); @@ -32,7 +34,7 @@ public class PanicResponderActivityTest extends FDroidProviderTest { PanicResponderActivity.resetRepos(context); assertEquals(1, RepoProvider.Helper.countEnabledRepos(context)); defaultRepos = RepoProvider.Helper.all(context); - assertEquals(4, defaultRepos.size()); + assertEquals(defaultRepoCount, defaultRepos.size()); RepoProviderTest.insertRepo( context, @@ -42,12 +44,12 @@ public class PanicResponderActivityTest extends FDroidProviderTest { "Mock Repo 1" ); defaultRepos = RepoProvider.Helper.all(context); - assertEquals(5, defaultRepos.size()); + assertEquals(defaultRepoCount + 1, defaultRepos.size()); assertEquals(2, RepoProvider.Helper.countEnabledRepos(context)); PanicResponderActivity.resetRepos(context); defaultRepos = RepoProvider.Helper.all(context); - assertEquals(4, defaultRepos.size()); + assertEquals(defaultRepoCount, defaultRepos.size()); assertEquals(1, RepoProvider.Helper.countEnabledRepos(context)); } }