[app] Fix or remove UI tests

Tests for v0 index have been removed with their assets.

AntiFeaturesTest is not needed anymore, because filtering doesn't happen in new DB

PanicResponderActivityTest can not be tested as easily anymore

MultiIndexUpdaterTests are now spread over various database tests

LocaleSelectionTest is now in org.fdroid.database.BestLocaleTest

Most tests org.fdroid.fdroid.data now have equivalents in the new database library
This commit is contained in:
Torsten Grote
2022-06-01 09:36:59 -03:00
committed by Hans-Christoph Steiner
parent d61ecbfa08
commit cf913ffefa
71 changed files with 138 additions and 6153 deletions

View File

@@ -1,7 +1,13 @@
package org.fdroid.fdroid.nearby;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import android.content.Context;
import androidx.test.core.app.ApplicationProvider;
import org.fdroid.fdroid.FDroidApp;
import org.fdroid.fdroid.Utils;
import org.junit.Ignore;
@@ -13,12 +19,6 @@ import org.robolectric.shadows.ShadowLog;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import androidx.test.core.app.ApplicationProvider;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
* Test that this can start and stop the webserver.

View File

@@ -168,23 +168,13 @@ public class LocalHTTPDTest {
assertTrue(string.indexOf("test.html") > 0);
connection.disconnect();
IOUtils.copy(classLoader.getResourceAsStream("index.microg.jar"),
new FileOutputStream(new File(webRoot, "index.microg.jar")));
url = new URL(baseUrl + "/index.microg.jar");
connection = (HttpURLConnection) url.openConnection();
assertEquals(200, connection.getResponseCode());
byte[] actual = IOUtils.toByteArray(connection.getInputStream());
byte[] expected = IOUtils.toByteArray(classLoader.getResourceAsStream("index.microg.jar"));
Assert.assertArrayEquals(expected, actual);
connection.disconnect();
IOUtils.copy(classLoader.getResourceAsStream("extendedPerms.xml"),
new FileOutputStream(new File(webRoot, "extendedPerms.xml")));
url = new URL(baseUrl + "/extendedPerms.xml");
connection = (HttpURLConnection) url.openConnection();
assertEquals(200, connection.getResponseCode());
actual = IOUtils.toByteArray(connection.getInputStream());
expected = IOUtils.toByteArray(classLoader.getResourceAsStream("extendedPerms.xml"));
byte[] actual = IOUtils.toByteArray(connection.getInputStream());
byte[] expected = IOUtils.toByteArray(classLoader.getResourceAsStream("extendedPerms.xml"));
Assert.assertArrayEquals(expected, actual);
connection.disconnect();
}

View File

@@ -38,7 +38,8 @@ public class LocalRepoKeyStoreTest {
JarOutputStream jo = new JarOutputStream(bo);
JarEntry je = new JarEntry(IndexUpdater.DATA_FILE_NAME);
jo.putNextEntry(je);
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("smallRepo.xml");
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream("all_fields_index-v1.json");
IOUtils.copy(inputStream, jo);
jo.close();
bo.close();
@@ -53,7 +54,7 @@ public class LocalRepoKeyStoreTest {
JarFile jarFile = new JarFile(xmlIndexJar, true);
JarEntry indexEntry = (JarEntry) jarFile.getEntry(IndexUpdater.DATA_FILE_NAME);
byte[] data = IOUtils.toByteArray(jarFile.getInputStream(indexEntry));
assertEquals(17187, data.length);
assertEquals(6431, data.length);
assertNotNull(IndexUpdater.getSigningCertFromJar(indexEntry));
}
}

View File

@@ -1,55 +0,0 @@
package org.fdroid.fdroid.panic;
import org.fdroid.fdroid.data.DBHelper;
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.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import java.util.List;
import static org.junit.Assert.assertEquals;
@RunWith(RobolectricTestRunner.class)
public class PanicResponderActivityTest extends FDroidProviderTest {
/**
* The {@link DBHelper} class populates the default repos when it first creates a database.
* The names/URLs/signing certificates for these repos are all hard coded in the source/res.
*/
@Test
public void defaultRepos() {
int defaultRepoCount = RepoProviderTest.getDefaultRepoCount(context);
List<Repo> defaultRepos = RepoProvider.Helper.all(context);
assertEquals(defaultRepos.size(), defaultRepoCount);
Repo gpRepo = RepoProvider.Helper.findByAddress(context, "https://guardianproject.info/fdroid/repo");
setEnabled(gpRepo, true);
assertEquals(2, RepoProvider.Helper.countEnabledRepos(context));
PanicResponderActivity.resetRepos(context);
assertEquals(1, RepoProvider.Helper.countEnabledRepos(context));
defaultRepos = RepoProvider.Helper.all(context);
assertEquals(defaultRepoCount, defaultRepos.size());
RepoProviderTest.insertRepo(
context,
"https://mock-repo-1.example.com/fdroid/repo",
"Just a made up repo",
"ABCDEF1234567890",
"Mock Repo 1"
);
defaultRepos = RepoProvider.Helper.all(context);
assertEquals(defaultRepoCount + 1, defaultRepos.size());
assertEquals(2, RepoProvider.Helper.countEnabledRepos(context));
PanicResponderActivity.resetRepos(context);
defaultRepos = RepoProvider.Helper.all(context);
assertEquals(defaultRepoCount, defaultRepos.size());
assertEquals(1, RepoProvider.Helper.countEnabledRepos(context));
}
}

View File

@@ -1,6 +1,8 @@
package org.fdroid.fdroid.updater;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
@@ -80,11 +82,6 @@ public class SwapRepoTest {
}
};
TestUtils.registerContentProvider(ApkProvider.getAuthority(), ApkProvider.class);
TestUtils.registerContentProvider(AppProvider.getAuthority(), AppProvider.class);
TestUtils.registerContentProvider(RepoProvider.getAuthority(), RepoProvider.class);
TestUtils.registerContentProvider(TempAppProvider.getAuthority(), TempAppProvider.class);
Preferences.setupForTests(context);
}
@@ -147,8 +144,7 @@ public class SwapRepoTest {
assertFalse(TextUtils.isEmpty(signingCert));
assertFalse(TextUtils.isEmpty(Utils.calcFingerprint(localCert)));
Repo repo = MultiIndexUpdaterTest.createRepo("", FDroidApp.repo.getAddress(),
context, signingCert);
Repo repo = createRepo("", FDroidApp.repo.getAddress(), context, signingCert);
IndexUpdater updater = new IndexUpdater(context, repo);
updater.update();
assertTrue(updater.hasChanged());
@@ -164,11 +160,11 @@ public class SwapRepoTest {
assertTrue(foundRepo);
assertNotEquals(-1, repo.getId());
List<Apk> apks = ApkProvider.Helper.findByRepo(context, repo, Schema.ApkTable.Cols.ALL);
assertEquals(1, apks.size());
for (Apk apk : apks) {
System.out.println(apk);
}
// List<Apk> apks = ApkProvider.Helper.findByRepo(context, repo, Schema.ApkTable.Cols.ALL);
// assertEquals(1, apks.size());
// for (Apk apk : apks) {
// System.out.println(apk);
// }
//MultiIndexUpdaterTest.assertApksExist(apks, context.getPackageName(), new int[]{BuildConfig.VERSION_CODE});
Thread.sleep(10000);
} finally {
@@ -177,4 +173,17 @@ public class SwapRepoTest {
}
}
}
/**
* Creates a real instance of {@code Repo} by loading it from the database,
* that ensures it includes the primary key from the database.
*/
static Repo createRepo(String name, String uri, Context context, String signingCert) {
ContentValues values = new ContentValues(3);
values.put(Schema.RepoTable.Cols.SIGNING_CERT, signingCert);
values.put(Schema.RepoTable.Cols.ADDRESS, uri);
values.put(Schema.RepoTable.Cols.NAME, name);
RepoProvider.Helper.insert(context, values);
return RepoProvider.Helper.findByAddress(context, uri);
}
}