port all but Provider tests to JUnit4 semantics
Android recently switched from JUnit 3 to 4 for its base testing classes. It doesn't seem to support the old JUnit3 methods with gradle and AS. So all the tests need to be ported to JUnit4 to work again. #607 https://gitlab.com/fdroid/fdroidclient/issues/607
This commit is contained in:
parent
6b3004160f
commit
22e40bfee1
@ -30,6 +30,10 @@ dependencies {
|
|||||||
compile 'io.reactivex:rxandroid:0.23.0'
|
compile 'io.reactivex:rxandroid:0.23.0'
|
||||||
|
|
||||||
testCompile 'junit:junit:4.12'
|
testCompile 'junit:junit:4.12'
|
||||||
|
|
||||||
|
androidTestCompile 'com.android.support:support-annotations:23.2.1'
|
||||||
|
androidTestCompile 'com.android.support.test:runner:0.5'
|
||||||
|
androidTestCompile 'com.android.support.test:rules:0.5'
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasProperty('sourceDeps')) {
|
if (!hasProperty('sourceDeps')) {
|
||||||
@ -147,6 +151,10 @@ android {
|
|||||||
targetCompatibility JavaVersion.VERSION_1_7
|
targetCompatibility JavaVersion.VERSION_1_7
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
|
}
|
||||||
|
|
||||||
testOptions {
|
testOptions {
|
||||||
// prevent tests from dying on android.util.Log calls
|
// prevent tests from dying on android.util.Log calls
|
||||||
unitTests.returnDefaultValues = true
|
unitTests.returnDefaultValues = true
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
package org.fdroid.fdroid;
|
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.test.ActivityInstrumentationTestCase2;
|
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.CUPCAKE)
|
|
||||||
public class FDroidTest extends ActivityInstrumentationTestCase2<FDroid> {
|
|
||||||
|
|
||||||
public FDroidTest() {
|
|
||||||
super("org.fdroid.fdroid", FDroid.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,17 +1,32 @@
|
|||||||
package org.fdroid.fdroid;
|
package org.fdroid.fdroid;
|
||||||
|
|
||||||
|
import android.app.Instrumentation;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.test.InstrumentationTestCase;
|
import android.support.test.InstrumentationRegistry;
|
||||||
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.fdroid.fdroid.compat.FileCompatForTest;
|
import org.fdroid.fdroid.compat.FileCompatForTest;
|
||||||
import org.fdroid.fdroid.data.SanitizedFile;
|
import org.fdroid.fdroid.data.SanitizedFile;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@SuppressWarnings("PMD") // TODO port this to JUnit 4 semantics
|
import static org.junit.Assert.assertFalse;
|
||||||
public class FileCompatTest extends InstrumentationTestCase {
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This test needs to run on the emulator, even though it technically could
|
||||||
|
* run as a plain JUnit test, because it is testing the specifics of
|
||||||
|
* Android's symlink handling.
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class FileCompatTest {
|
||||||
|
|
||||||
private static final String TAG = "FileCompatTest";
|
private static final String TAG = "FileCompatTest";
|
||||||
|
|
||||||
@ -19,14 +34,17 @@ public class FileCompatTest extends InstrumentationTestCase {
|
|||||||
private SanitizedFile sourceFile;
|
private SanitizedFile sourceFile;
|
||||||
private SanitizedFile destFile;
|
private SanitizedFile destFile;
|
||||||
|
|
||||||
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
dir = TestUtils.getWriteableDir(getInstrumentation());
|
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
|
||||||
sourceFile = SanitizedFile.knownSanitized(TestUtils.copyAssetToDir(getInstrumentation().getContext(), "simpleIndex.jar", dir));
|
dir = TestUtils.getWriteableDir(instrumentation);
|
||||||
|
sourceFile = SanitizedFile.knownSanitized(TestUtils.copyAssetToDir(instrumentation.getContext(), "simpleIndex.jar", dir));
|
||||||
destFile = new SanitizedFile(dir, "dest-" + UUID.randomUUID() + ".testproduct");
|
destFile = new SanitizedFile(dir, "dest-" + UUID.randomUUID() + ".testproduct");
|
||||||
assertFalse(destFile.exists());
|
assertFalse(destFile.exists());
|
||||||
assertTrue(sourceFile.getAbsolutePath() + " should exist.", sourceFile.exists());
|
assertTrue(sourceFile.getAbsolutePath() + " should exist.", sourceFile.exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
if (!sourceFile.delete()) {
|
if (!sourceFile.delete()) {
|
||||||
System.out.println("Can't delete " + sourceFile.getAbsolutePath() + ".");
|
System.out.println("Can't delete " + sourceFile.getAbsolutePath() + ".");
|
||||||
@ -37,11 +55,13 @@ public class FileCompatTest extends InstrumentationTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSymlinkRuntime() {
|
public void testSymlinkRuntime() {
|
||||||
FileCompatForTest.symlinkRuntimeTest(sourceFile, destFile);
|
FileCompatForTest.symlinkRuntimeTest(sourceFile, destFile);
|
||||||
assertTrue(destFile.getAbsolutePath() + " should exist after symlinking", destFile.exists());
|
assertTrue(destFile.getAbsolutePath() + " should exist after symlinking", destFile.exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSymlinkLibcore() {
|
public void testSymlinkLibcore() {
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 19) {
|
if (Build.VERSION.SDK_INT >= 19) {
|
||||||
@ -52,6 +72,7 @@ public class FileCompatTest extends InstrumentationTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSymlinkOs() {
|
public void testSymlinkOs() {
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= 21) {
|
if (Build.VERSION.SDK_INT >= 21) {
|
||||||
|
@ -1,16 +1,23 @@
|
|||||||
|
|
||||||
package org.fdroid.fdroid;
|
package org.fdroid.fdroid;
|
||||||
|
|
||||||
|
import android.app.Instrumentation;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.test.InstrumentationTestCase;
|
import android.support.test.InstrumentationRegistry;
|
||||||
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
import org.fdroid.fdroid.RepoUpdater.UpdateException;
|
import org.fdroid.fdroid.RepoUpdater.UpdateException;
|
||||||
import org.fdroid.fdroid.data.Repo;
|
import org.fdroid.fdroid.data.Repo;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@SuppressWarnings("PMD") // TODO port this to JUnit 4 semantics
|
import static org.junit.Assert.fail;
|
||||||
public class RepoUpdaterTest extends InstrumentationTestCase {
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class RepoUpdaterTest {
|
||||||
private static final String TAG = "RepoUpdaterTest";
|
private static final String TAG = "RepoUpdaterTest";
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
@ -19,15 +26,17 @@ public class RepoUpdaterTest extends InstrumentationTestCase {
|
|||||||
|
|
||||||
String simpleIndexPubkey = "308201ee30820157a0030201020204300d845b300d06092a864886f70d01010b0500302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e301e170d3134303432373030303633315a170d3431303931323030303633315a302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e30819f300d06092a864886f70d010101050003818d0030818902818100a439472e4b6d01141bfc94ecfe131c7c728fdda670bb14c57ca60bd1c38a8b8bc0879d22a0a2d0bc0d6fdd4cb98d1d607c2caefbe250a0bd0322aedeb365caf9b236992fac13e6675d3184a6c7c6f07f73410209e399a9da8d5d7512bbd870508eebacff8b57c3852457419434d34701ccbf692267cbc3f42f1c5d1e23762d790203010001a321301f301d0603551d0e041604140b1840691dab909746fde4bfe28207d1cae15786300d06092a864886f70d01010b05000381810062424c928ffd1b6fd419b44daafef01ca982e09341f7077fb865905087aeac882534b3bd679b51fdfb98892cef38b63131c567ed26c9d5d9163afc775ac98ad88c405d211d6187bde0b0d236381cc574ba06ef9080721a92ae5a103a7301b2c397eecc141cc850dd3e123813ebc41c59d31ddbcb6e984168280c53272f6a442b";
|
String simpleIndexPubkey = "308201ee30820157a0030201020204300d845b300d06092a864886f70d01010b0500302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e301e170d3134303432373030303633315a170d3431303931323030303633315a302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e30819f300d06092a864886f70d010101050003818d0030818902818100a439472e4b6d01141bfc94ecfe131c7c728fdda670bb14c57ca60bd1c38a8b8bc0879d22a0a2d0bc0d6fdd4cb98d1d607c2caefbe250a0bd0322aedeb365caf9b236992fac13e6675d3184a6c7c6f07f73410209e399a9da8d5d7512bbd870508eebacff8b57c3852457419434d34701ccbf692267cbc3f42f1c5d1e23762d790203010001a321301f301d0603551d0e041604140b1840691dab909746fde4bfe28207d1cae15786300d06092a864886f70d01010b05000381810062424c928ffd1b6fd419b44daafef01ca982e09341f7077fb865905087aeac882534b3bd679b51fdfb98892cef38b63131c567ed26c9d5d9163afc775ac98ad88c405d211d6187bde0b0d236381cc574ba06ef9080721a92ae5a103a7301b2c397eecc141cc850dd3e123813ebc41c59d31ddbcb6e984168280c53272f6a442b";
|
||||||
|
|
||||||
@Override
|
@Before
|
||||||
protected void setUp() {
|
public void setUp() {
|
||||||
context = getInstrumentation().getContext();
|
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
|
||||||
testFilesDir = TestUtils.getWriteableDir(getInstrumentation());
|
context = instrumentation.getContext();
|
||||||
|
testFilesDir = TestUtils.getWriteableDir(instrumentation);
|
||||||
Repo repo = new Repo();
|
Repo repo = new Repo();
|
||||||
repo.pubkey = this.simpleIndexPubkey;
|
repo.pubkey = this.simpleIndexPubkey;
|
||||||
repoUpdater = new RepoUpdater(context, repo);
|
repoUpdater = new RepoUpdater(context, repo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testExtractIndexFromJar() {
|
public void testExtractIndexFromJar() {
|
||||||
if (!testFilesDir.canWrite()) {
|
if (!testFilesDir.canWrite()) {
|
||||||
return;
|
return;
|
||||||
@ -43,20 +52,17 @@ public class RepoUpdaterTest extends InstrumentationTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testExtractIndexFromJarWithoutSignatureJar() {
|
@Test(expected = UpdateException.class)
|
||||||
|
public void testExtractIndexFromJarWithoutSignatureJar() throws UpdateException {
|
||||||
if (!testFilesDir.canWrite()) {
|
if (!testFilesDir.canWrite()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// this is supposed to fail
|
// this is supposed to fail
|
||||||
try {
|
File jarFile = TestUtils.copyAssetToDir(context, "simpleIndexWithoutSignature.jar", testFilesDir);
|
||||||
File jarFile = TestUtils.copyAssetToDir(context, "simpleIndexWithoutSignature.jar", testFilesDir);
|
repoUpdater.processDownloadedFile(jarFile);
|
||||||
repoUpdater.processDownloadedFile(jarFile);
|
|
||||||
fail();
|
|
||||||
} catch (UpdateException e) {
|
|
||||||
// success!
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testExtractIndexFromJarWithCorruptedManifestJar() {
|
public void testExtractIndexFromJarWithCorruptedManifestJar() {
|
||||||
if (!testFilesDir.canWrite()) {
|
if (!testFilesDir.canWrite()) {
|
||||||
return;
|
return;
|
||||||
@ -74,6 +80,7 @@ public class RepoUpdaterTest extends InstrumentationTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testExtractIndexFromJarWithCorruptedSignature() {
|
public void testExtractIndexFromJarWithCorruptedSignature() {
|
||||||
if (!testFilesDir.canWrite()) {
|
if (!testFilesDir.canWrite()) {
|
||||||
return;
|
return;
|
||||||
@ -91,6 +98,7 @@ public class RepoUpdaterTest extends InstrumentationTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testExtractIndexFromJarWithCorruptedCertificate() {
|
public void testExtractIndexFromJarWithCorruptedCertificate() {
|
||||||
if (!testFilesDir.canWrite()) {
|
if (!testFilesDir.canWrite()) {
|
||||||
return;
|
return;
|
||||||
@ -108,6 +116,7 @@ public class RepoUpdaterTest extends InstrumentationTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testExtractIndexFromJarWithCorruptedEverything() {
|
public void testExtractIndexFromJarWithCorruptedEverything() {
|
||||||
if (!testFilesDir.canWrite()) {
|
if (!testFilesDir.canWrite()) {
|
||||||
return;
|
return;
|
||||||
@ -125,6 +134,7 @@ public class RepoUpdaterTest extends InstrumentationTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testExtractIndexFromMasterKeyIndexJar() {
|
public void testExtractIndexFromMasterKeyIndexJar() {
|
||||||
if (!testFilesDir.canWrite()) {
|
if (!testFilesDir.canWrite()) {
|
||||||
return;
|
return;
|
||||||
@ -133,8 +143,10 @@ public class RepoUpdaterTest extends InstrumentationTestCase {
|
|||||||
try {
|
try {
|
||||||
File jarFile = TestUtils.copyAssetToDir(context, "masterKeyIndex.jar", testFilesDir);
|
File jarFile = TestUtils.copyAssetToDir(context, "masterKeyIndex.jar", testFilesDir);
|
||||||
repoUpdater.processDownloadedFile(jarFile);
|
repoUpdater.processDownloadedFile(jarFile);
|
||||||
fail();
|
fail(); //NOPMD
|
||||||
} catch (UpdateException | SecurityException e) {
|
} catch (UpdateException e) {
|
||||||
|
// success!
|
||||||
|
} catch (SecurityException e) {
|
||||||
// success!
|
// success!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
package org.fdroid.fdroid;
|
package org.fdroid.fdroid;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.test.AndroidTestCase;
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@ -10,6 +10,8 @@ import org.fdroid.fdroid.data.Apk;
|
|||||||
import org.fdroid.fdroid.data.App;
|
import org.fdroid.fdroid.data.App;
|
||||||
import org.fdroid.fdroid.data.Repo;
|
import org.fdroid.fdroid.data.Repo;
|
||||||
import org.fdroid.fdroid.mock.MockRepo;
|
import org.fdroid.fdroid.mock.MockRepo;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
import org.xml.sax.InputSource;
|
import org.xml.sax.InputSource;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.XMLReader;
|
import org.xml.sax.XMLReader;
|
||||||
@ -24,20 +26,18 @@ import javax.xml.parsers.ParserConfigurationException;
|
|||||||
import javax.xml.parsers.SAXParser;
|
import javax.xml.parsers.SAXParser;
|
||||||
import javax.xml.parsers.SAXParserFactory;
|
import javax.xml.parsers.SAXParserFactory;
|
||||||
|
|
||||||
@SuppressWarnings("PMD") // TODO port this to JUnit 4 semantics
|
import static org.junit.Assert.assertEquals;
|
||||||
public class RepoXMLHandlerTest extends AndroidTestCase {
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class RepoXMLHandlerTest {
|
||||||
private static final String TAG = "RepoXMLHandlerTest";
|
private static final String TAG = "RepoXMLHandlerTest";
|
||||||
|
|
||||||
private static final String FAKE_PUBKEY = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345";
|
private static final String FAKE_PUBKEY = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345";
|
||||||
|
|
||||||
public RepoXMLHandlerTest() {
|
@Test
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setUp() throws Exception {
|
|
||||||
super.setUp();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSimpleIndex() {
|
public void testSimpleIndex() {
|
||||||
Repo expectedRepo = new Repo();
|
Repo expectedRepo = new Repo();
|
||||||
expectedRepo.name = "F-Droid";
|
expectedRepo.name = "F-Droid";
|
||||||
@ -47,6 +47,7 @@ public class RepoXMLHandlerTest extends AndroidTestCase {
|
|||||||
handlerTestSuite(expectedRepo, actualDetails, 0, 0, -1, 12);
|
handlerTestSuite(expectedRepo, actualDetails, 0, 0, -1, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testSmallRepo() {
|
public void testSmallRepo() {
|
||||||
Repo expectedRepo = new Repo();
|
Repo expectedRepo = new Repo();
|
||||||
expectedRepo.name = "Android-Nexus-7-20139453 on UNSET";
|
expectedRepo.name = "Android-Nexus-7-20139453 on UNSET";
|
||||||
@ -70,6 +71,7 @@ public class RepoXMLHandlerTest extends AndroidTestCase {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testMediumRepo() {
|
public void testMediumRepo() {
|
||||||
Repo expectedRepo = new Repo();
|
Repo expectedRepo = new Repo();
|
||||||
expectedRepo.name = "Guardian Project Official Releases";
|
expectedRepo.name = "Guardian Project Official Releases";
|
||||||
@ -96,6 +98,7 @@ public class RepoXMLHandlerTest extends AndroidTestCase {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLargeRepo() {
|
public void testLargeRepo() {
|
||||||
Repo expectedRepo = new Repo();
|
Repo expectedRepo = new Repo();
|
||||||
expectedRepo.name = "F-Droid";
|
expectedRepo.name = "F-Droid";
|
||||||
|
@ -1,10 +1,19 @@
|
|||||||
|
|
||||||
package org.fdroid.fdroid;
|
package org.fdroid.fdroid;
|
||||||
|
|
||||||
import android.test.AndroidTestCase;
|
import android.content.Context;
|
||||||
|
import android.support.test.InstrumentationRegistry;
|
||||||
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
@SuppressWarnings("PMD") // TODO port this to JUnit 4 semantics
|
import org.junit.Test;
|
||||||
public class UtilsTest extends AndroidTestCase {
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class UtilsTest {
|
||||||
|
|
||||||
String fdroidFingerprint = "43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB";
|
String fdroidFingerprint = "43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB";
|
||||||
String fdroidPubkey = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef";
|
String fdroidPubkey = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef";
|
||||||
@ -34,57 +43,60 @@ public class UtilsTest extends AndroidTestCase {
|
|||||||
String fingerprintLongByOneFingerprint = "59050C8155DCA377F23D5A15B77D37134000CDBD8B42FBFBE0E3F38096E68CECE";
|
String fingerprintLongByOneFingerprint = "59050C8155DCA377F23D5A15B77D37134000CDBD8B42FBFBE0E3F38096E68CECE";
|
||||||
String fingerprintLongByOnePubkey = "308203c5308202ada00302010202047b7cf549300d06092a864886f70d01010b0500308192310b30090603550406130255533111300f060355040813084e657720596f726b3111300f060355040713084e657720596f726b311d301b060355040a131454686520477561726469616e2050726f6a656374311f301d060355040b1316477561726469616e20462d44726f6964204275696c64311d301b06035504031314677561726469616e70726f6a6563742e696e666f301e170d3132313032393130323530305a170d3430303331363130323530305a308192310b30090603550406130255533111300f060355040813084e657720596f726b3111300f060355040713084e657720596f726b311d301b060355040a131454686520477561726469616e2050726f6a656374311f301d060355040b1316477561726469616e20462d44726f6964204275696c64311d301b06035504031314677561726469616e70726f6a6563742e696e666f30820122300d06092a864886f70d01010105000382010f003082010a0282010100b7f1f635fa3fce1a8042aaa960c2dc557e4ad2c082e5787488cba587fd26207cf59507919fc4dcebda5c8c0959d14146d0445593aa6c29dc639570b71712451fd5c231b0c9f5f0bec380503a1c2a3bc00048bc5db682915afa54d1ecf67b45e1e05c0934b3037a33d3a565899131f27a72c03a5de93df17a2376cc3107f03ee9d124c474dfab30d4053e8f39f292e2dcb6cc131bce12a0c5fc307985195d256bf1d7a2703d67c14bf18ed6b772bb847370b20335810e337c064fef7e2795a524c664a853cd46accb8494f865164dabfb698fa8318236432758bc40d52db00d5ce07fe2210dc06cd95298b4f09e6c9b7b7af61c1d62ea43ea36a2331e7b2d4e250203010001a321301f301d0603551d0e0416041404d763e981cf3a295b94a790d8536a783097232b300d06092a864886f70d01010b05000382010100654e6484ff032c54fed1d96d3c8e731302be9dbd7bb4fe635f2dac05b69f3ecbb5acb7c9fe405e2a066567a8f5c2beb8b199b5a4d5bb1b435cf02df026d4fb4edd9d8849078f085b00950083052d57467d65c6eebd98f037cff9b148d621cf8819c4f7dc1459bf8fc5c7d76f901495a7caf35d1e5c106e1d50610c4920c3c1b50adcfbd4ad83ce7353cdea7d856bba0419c224f89a2f3ebc203d20eb6247711ad2b55fd4737936dc42ced7a047cbbd24012079204a2883b6d55d5d5b66d9fd82fb51fca9a5db5fad9af8564cb380ff30ae8263dbbf01b46e01313f53279673daa3f893380285646b244359203e7eecde94ae141b7dfa8e6499bb8e7e0b25ab85";
|
String fingerprintLongByOnePubkey = "308203c5308202ada00302010202047b7cf549300d06092a864886f70d01010b0500308192310b30090603550406130255533111300f060355040813084e657720596f726b3111300f060355040713084e657720596f726b311d301b060355040a131454686520477561726469616e2050726f6a656374311f301d060355040b1316477561726469616e20462d44726f6964204275696c64311d301b06035504031314677561726469616e70726f6a6563742e696e666f301e170d3132313032393130323530305a170d3430303331363130323530305a308192310b30090603550406130255533111300f060355040813084e657720596f726b3111300f060355040713084e657720596f726b311d301b060355040a131454686520477561726469616e2050726f6a656374311f301d060355040b1316477561726469616e20462d44726f6964204275696c64311d301b06035504031314677561726469616e70726f6a6563742e696e666f30820122300d06092a864886f70d01010105000382010f003082010a0282010100b7f1f635fa3fce1a8042aaa960c2dc557e4ad2c082e5787488cba587fd26207cf59507919fc4dcebda5c8c0959d14146d0445593aa6c29dc639570b71712451fd5c231b0c9f5f0bec380503a1c2a3bc00048bc5db682915afa54d1ecf67b45e1e05c0934b3037a33d3a565899131f27a72c03a5de93df17a2376cc3107f03ee9d124c474dfab30d4053e8f39f292e2dcb6cc131bce12a0c5fc307985195d256bf1d7a2703d67c14bf18ed6b772bb847370b20335810e337c064fef7e2795a524c664a853cd46accb8494f865164dabfb698fa8318236432758bc40d52db00d5ce07fe2210dc06cd95298b4f09e6c9b7b7af61c1d62ea43ea36a2331e7b2d4e250203010001a321301f301d0603551d0e0416041404d763e981cf3a295b94a790d8536a783097232b300d06092a864886f70d01010b05000382010100654e6484ff032c54fed1d96d3c8e731302be9dbd7bb4fe635f2dac05b69f3ecbb5acb7c9fe405e2a066567a8f5c2beb8b199b5a4d5bb1b435cf02df026d4fb4edd9d8849078f085b00950083052d57467d65c6eebd98f037cff9b148d621cf8819c4f7dc1459bf8fc5c7d76f901495a7caf35d1e5c106e1d50610c4920c3c1b50adcfbd4ad83ce7353cdea7d856bba0419c224f89a2f3ebc203d20eb6247711ad2b55fd4737936dc42ced7a047cbbd24012079204a2883b6d55d5d5b66d9fd82fb51fca9a5db5fad9af8564cb380ff30ae8263dbbf01b46e01313f53279673daa3f893380285646b244359203e7eecde94ae141b7dfa8e6499bb8e7e0b25ab85";
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testFormatFingerprint() {
|
public void testFormatFingerprint() {
|
||||||
String badResult = Utils.formatFingerprint(getContext(), "");
|
Context context = InstrumentationRegistry.getTargetContext();
|
||||||
|
String badResult = Utils.formatFingerprint(context, "");
|
||||||
// real fingerprints
|
// real fingerprints
|
||||||
String formatted;
|
String formatted;
|
||||||
formatted = Utils.formatFingerprint(getContext(), fdroidFingerprint);
|
formatted = Utils.formatFingerprint(context, fdroidFingerprint);
|
||||||
assertFalse(formatted.equals(badResult));
|
assertFalse(formatted.equals(badResult));
|
||||||
assertTrue(formatted.matches("[A-Z0-9][A-Z0-9] [A-Z0-9 ]+"));
|
assertTrue(formatted.matches("[A-Z0-9][A-Z0-9] [A-Z0-9 ]+"));
|
||||||
formatted = Utils.formatFingerprint(getContext(), gpRepoFingerprint);
|
formatted = Utils.formatFingerprint(context, gpRepoFingerprint);
|
||||||
assertFalse(formatted.equals(badResult));
|
assertFalse(formatted.equals(badResult));
|
||||||
assertTrue(formatted.matches("[A-Z0-9][A-Z0-9] [A-Z0-9 ]+"));
|
assertTrue(formatted.matches("[A-Z0-9][A-Z0-9] [A-Z0-9 ]+"));
|
||||||
formatted = Utils.formatFingerprint(getContext(), gpTest1Fingerprint);
|
formatted = Utils.formatFingerprint(context, gpTest1Fingerprint);
|
||||||
assertFalse(formatted.equals(badResult));
|
assertFalse(formatted.equals(badResult));
|
||||||
assertTrue(formatted.matches("[A-Z0-9][A-Z0-9] [A-Z0-9 ]+"));
|
assertTrue(formatted.matches("[A-Z0-9][A-Z0-9] [A-Z0-9 ]+"));
|
||||||
// random garbage
|
// random garbage
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "234k2lk3jljwlk4j2lk3jlkmqwekljrlkj34lk2jlk2j34lkjl2k3j4lk2j34lja"));
|
Utils.formatFingerprint(context, "234k2lk3jljwlk4j2lk3jlkmqwekljrlkj34lk2jlk2j34lkjl2k3j4lk2j34lja"));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "g000000000000000000000000000000000000000000000000000000000000000"));
|
Utils.formatFingerprint(context, "g000000000000000000000000000000000000000000000000000000000000000"));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "98273498723948728934789237489273p1928731982731982739182739817238"));
|
Utils.formatFingerprint(context, "98273498723948728934789237489273p1928731982731982739182739817238"));
|
||||||
// too short
|
// too short
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "C63AED1AC79D37C7B0474472AC6EFA6C3AB2B11A767A4F42CF360FA5496E3C5"));
|
Utils.formatFingerprint(context, "C63AED1AC79D37C7B0474472AC6EFA6C3AB2B11A767A4F42CF360FA5496E3C5"));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "C63AED1"));
|
Utils.formatFingerprint(context, "C63AED1"));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "f"));
|
Utils.formatFingerprint(context, "f"));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), ""));
|
Utils.formatFingerprint(context, ""));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), null));
|
Utils.formatFingerprint(context, null));
|
||||||
// real digits but too long
|
// real digits but too long
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB"));
|
Utils.formatFingerprint(context, "43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB"));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "C63AED1AC79D37C7B0474472AC6EFA6C3AB2B11A767A4F42CF360FA5496E3C50F"));
|
Utils.formatFingerprint(context, "C63AED1AC79D37C7B0474472AC6EFA6C3AB2B11A767A4F42CF360FA5496E3C50F"));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
badResult,
|
badResult,
|
||||||
Utils.formatFingerprint(getContext(), "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"));
|
Utils.formatFingerprint(context, "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testCalcFingerprintString() {
|
public void testCalcFingerprintString() {
|
||||||
// these should pass
|
// these should pass
|
||||||
assertEquals(fdroidFingerprint, Utils.calcFingerprint(fdroidPubkey));
|
assertEquals(fdroidFingerprint, Utils.calcFingerprint(fdroidPubkey));
|
||||||
@ -124,7 +136,5 @@ public class UtilsTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCalcFingerprintCertificate() {
|
// TODO write tests that work with a Certificate
|
||||||
// TODO write tests that work with a Certificate
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user