diff --git a/app/src/androidTest/java/org/fdroid/fdroid/RepoUpdaterTest.java b/app/src/androidTest/java/org/fdroid/fdroid/RepoUpdaterTest.java deleted file mode 100644 index ac77cbd60..000000000 --- a/app/src/androidTest/java/org/fdroid/fdroid/RepoUpdaterTest.java +++ /dev/null @@ -1,175 +0,0 @@ - -package org.fdroid.fdroid; - -import android.app.Instrumentation; -import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; -import android.util.Log; - -import org.fdroid.fdroid.RepoUpdater.UpdateException; -import org.fdroid.fdroid.data.Repo; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.io.File; - -import static org.junit.Assert.fail; -import static org.junit.Assume.assumeTrue; - -@RunWith(AndroidJUnit4.class) -public class RepoUpdaterTest { - public static final String TAG = "RepoUpdaterTest"; - - private Context context; - private Repo repo; - private RepoUpdater repoUpdater; - private File testFilesDir; - - String simpleIndexSigningCert = "308201ee30820157a0030201020204300d845b300d06092a864886f70d01010b0500302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e301e170d3134303432373030303633315a170d3431303931323030303633315a302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e30819f300d06092a864886f70d010101050003818d0030818902818100a439472e4b6d01141bfc94ecfe131c7c728fdda670bb14c57ca60bd1c38a8b8bc0879d22a0a2d0bc0d6fdd4cb98d1d607c2caefbe250a0bd0322aedeb365caf9b236992fac13e6675d3184a6c7c6f07f73410209e399a9da8d5d7512bbd870508eebacff8b57c3852457419434d34701ccbf692267cbc3f42f1c5d1e23762d790203010001a321301f301d0603551d0e041604140b1840691dab909746fde4bfe28207d1cae15786300d06092a864886f70d01010b05000381810062424c928ffd1b6fd419b44daafef01ca982e09341f7077fb865905087aeac882534b3bd679b51fdfb98892cef38b63131c567ed26c9d5d9163afc775ac98ad88c405d211d6187bde0b0d236381cc574ba06ef9080721a92ae5a103a7301b2c397eecc141cc850dd3e123813ebc41c59d31ddbcb6e984168280c53272f6a442b"; - - /** - * Getting a writeable dir during the tests seems to be a flaky prospect. - */ - private boolean canWrite() { - if (testFilesDir.canWrite()) { - return true; - } else { - Log.e(TAG, "ERROR: " + testFilesDir + " is not writable, skipping test"); - return false; - } - } - - @Before - public void setUp() { - Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); - context = instrumentation.getContext(); - testFilesDir = TestUtils.getWriteableDir(instrumentation); - repo = new Repo(); - repo.address = "https://fake.url/fdroid/repo"; - repo.signingCertificate = this.simpleIndexSigningCert; - } - - @Test - public void testExtractIndexFromJar() { - assumeTrue(canWrite()); - File simpleIndexJar = TestUtils.copyAssetToDir(context, "simpleIndex.jar", testFilesDir); - repoUpdater = new RepoUpdater(context, repo); - - // these are supposed to succeed - try { - repoUpdater.processDownloadedFile(simpleIndexJar); - } catch (UpdateException e) { - e.printStackTrace(); - fail(); - } - } - - @Test(expected = UpdateException.class) - public void testExtractIndexFromOutdatedJar() throws UpdateException { - assumeTrue(canWrite()); - File simpleIndexJar = TestUtils.copyAssetToDir(context, "simpleIndex.jar", testFilesDir); - repo.version = 10; - repo.timestamp = System.currentTimeMillis() / 1000L; - repoUpdater = new RepoUpdater(context, repo); - - // these are supposed to fail - repoUpdater.processDownloadedFile(simpleIndexJar); - fail(); - } - - @Test(expected = UpdateException.class) - public void testExtractIndexFromJarWithoutSignatureJar() throws UpdateException { - assumeTrue(canWrite()); - // this is supposed to fail - File jarFile = TestUtils.copyAssetToDir(context, "simpleIndexWithoutSignature.jar", testFilesDir); - repoUpdater = new RepoUpdater(context, repo); - repoUpdater.processDownloadedFile(jarFile); - fail(); - } - - @Test - public void testExtractIndexFromJarWithCorruptedManifestJar() { - assumeTrue(canWrite()); - // this is supposed to fail - try { - File jarFile = TestUtils.copyAssetToDir(context, "simpleIndexWithCorruptedManifest.jar", testFilesDir); - repoUpdater = new RepoUpdater(context, repo); - repoUpdater.processDownloadedFile(jarFile); - fail(); - } catch (UpdateException e) { - e.printStackTrace(); - fail(); - } catch (SecurityException e) { - // success! - } - } - - @Test - public void testExtractIndexFromJarWithCorruptedSignature() { - assumeTrue(canWrite()); - // this is supposed to fail - try { - File jarFile = TestUtils.copyAssetToDir(context, "simpleIndexWithCorruptedSignature.jar", testFilesDir); - repoUpdater = new RepoUpdater(context, repo); - repoUpdater.processDownloadedFile(jarFile); - fail(); - } catch (UpdateException e) { - e.printStackTrace(); - fail(); - } catch (SecurityException e) { - // success! - } - } - - @Test - public void testExtractIndexFromJarWithCorruptedCertificate() { - assumeTrue(canWrite()); - // this is supposed to fail - try { - File jarFile = TestUtils.copyAssetToDir(context, "simpleIndexWithCorruptedCertificate.jar", testFilesDir); - repoUpdater = new RepoUpdater(context, repo); - repoUpdater.processDownloadedFile(jarFile); - fail(); - } catch (UpdateException e) { - e.printStackTrace(); - fail(); - } catch (SecurityException e) { - // success! - } - } - - @Test - public void testExtractIndexFromJarWithCorruptedEverything() { - assumeTrue(canWrite()); - // this is supposed to fail - try { - File jarFile = TestUtils.copyAssetToDir(context, "simpleIndexWithCorruptedEverything.jar", testFilesDir); - repoUpdater = new RepoUpdater(context, repo); - repoUpdater.processDownloadedFile(jarFile); - fail(); - } catch (UpdateException e) { - e.printStackTrace(); - fail(); - } catch (SecurityException e) { - // success! - } - } - - @Test - public void testExtractIndexFromMasterKeyIndexJar() { - assumeTrue(canWrite()); - // this is supposed to fail - try { - File jarFile = TestUtils.copyAssetToDir(context, "masterKeyIndex.jar", testFilesDir); - repoUpdater = new RepoUpdater(context, repo); - repoUpdater.processDownloadedFile(jarFile); - fail(); //NOPMD - } catch (UpdateException e) { - // success! - } catch (SecurityException e) { - // success! - } - } -} diff --git a/app/src/androidTest/java/org/fdroid/fdroid/mock/MockRepoOld.java b/app/src/androidTest/java/org/fdroid/fdroid/mock/MockRepoOld.java deleted file mode 100644 index 43fec57cf..000000000 --- a/app/src/androidTest/java/org/fdroid/fdroid/mock/MockRepoOld.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.fdroid.fdroid.mock; - -import org.fdroid.fdroid.data.Repo; - -public class MockRepoOld extends Repo { - - public MockRepoOld(long repoId) { - id = repoId; - } - -} diff --git a/app/src/androidTest/java/org/fdroid/fdroid/RepoXMLHandlerTest.java b/app/src/test/java/org/fdroid/fdroid/RepoXMLHandlerTest.java similarity index 99% rename from app/src/androidTest/java/org/fdroid/fdroid/RepoXMLHandlerTest.java rename to app/src/test/java/org/fdroid/fdroid/RepoXMLHandlerTest.java index d5bc8c74f..e354320e8 100644 --- a/app/src/androidTest/java/org/fdroid/fdroid/RepoXMLHandlerTest.java +++ b/app/src/test/java/org/fdroid/fdroid/RepoXMLHandlerTest.java @@ -2,16 +2,17 @@ package org.fdroid.fdroid; import android.support.annotation.NonNull; -import android.support.test.runner.AndroidJUnit4; import android.text.TextUtils; import android.util.Log; import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.Repo; -import org.fdroid.fdroid.mock.MockRepoOld; +import org.fdroid.fdroid.mock.MockRepo; import org.junit.Test; import org.junit.runner.RunWith; +import org.robolectric.RobolectricGradleTestRunner; +import org.robolectric.annotation.Config; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; @@ -31,7 +32,8 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; -@RunWith(AndroidJUnit4.class) +@Config(constants = BuildConfig.class) +@RunWith(RobolectricGradleTestRunner.class) public class RepoXMLHandlerTest { private static final String TAG = "RepoXMLHandlerTest"; @@ -673,16 +675,16 @@ public class RepoXMLHandlerTest { @NonNull private RepoDetails getFromFile(String indexFilename) { - SAXParser parser; try { - parser = SAXParserFactory.newInstance().newSAXParser(); + SAXParserFactory factory = SAXParserFactory.newInstance(); + factory.setNamespaceAware(true); + SAXParser parser = factory.newSAXParser(); XMLReader reader = parser.getXMLReader(); RepoDetails repoDetails = new RepoDetails(); - RepoXMLHandler handler = new RepoXMLHandler(new MockRepoOld(100), repoDetails); + RepoXMLHandler handler = new RepoXMLHandler(new MockRepo(100), repoDetails); reader.setContentHandler(handler); - String resName = "assets/" + indexFilename; - Log.i(TAG, "test file: " + getClass().getClassLoader().getResource(resName)); - InputStream input = getClass().getClassLoader().getResourceAsStream(resName); + Log.i(TAG, "test file: " + getClass().getClassLoader().getResource(indexFilename)); + InputStream input = getClass().getClassLoader().getResourceAsStream(indexFilename); InputSource is = new InputSource(new BufferedInputStream(input)); reader.parse(is); return repoDetails; diff --git a/app/src/androidTest/assets/largeRepo.xml b/app/src/test/resources/largeRepo.xml similarity index 100% rename from app/src/androidTest/assets/largeRepo.xml rename to app/src/test/resources/largeRepo.xml diff --git a/app/src/androidTest/assets/mediumRepo.xml b/app/src/test/resources/mediumRepo.xml similarity index 100% rename from app/src/androidTest/assets/mediumRepo.xml rename to app/src/test/resources/mediumRepo.xml diff --git a/app/src/androidTest/assets/simpleIndex.xml b/app/src/test/resources/simpleIndex.xml similarity index 100% rename from app/src/androidTest/assets/simpleIndex.xml rename to app/src/test/resources/simpleIndex.xml diff --git a/app/src/androidTest/assets/smallRepo.xml b/app/src/test/resources/smallRepo.xml similarity index 100% rename from app/src/androidTest/assets/smallRepo.xml rename to app/src/test/resources/smallRepo.xml