mirror of
https://github.com/f-droid/fdroidclient.git
synced 2026-10-08 03:54:53 -04:00
Auto-format all files with ktfmt
This commit is contained in:
328 files changed
+27233
-28139
No files matched your search
@@ -1,72 +1,72 @@
|
||||
package org.fdroid.database
|
||||
|
||||
import org.fdroid.test.TestUtils.getRandomString
|
||||
import org.junit.Test
|
||||
import kotlin.random.Random
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
import org.fdroid.test.TestUtils.getRandomString
|
||||
import org.junit.Test
|
||||
|
||||
internal class AppPrefsTest {
|
||||
|
||||
@Test
|
||||
fun testDefaults() {
|
||||
val prefs = AppPrefs(getRandomString())
|
||||
assertFalse(prefs.ignoreAllUpdates)
|
||||
for (i in 1..1337L) assertFalse(prefs.shouldIgnoreUpdate(i))
|
||||
assertEquals(emptyList(), prefs.releaseChannels)
|
||||
}
|
||||
@Test
|
||||
fun testDefaults() {
|
||||
val prefs = AppPrefs(getRandomString())
|
||||
assertFalse(prefs.ignoreAllUpdates)
|
||||
for (i in 1..1337L) assertFalse(prefs.shouldIgnoreUpdate(i))
|
||||
assertEquals(emptyList(), prefs.releaseChannels)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIgnoreVersionCodeUpdate() {
|
||||
val ignoredCode = Random.nextLong(1, Long.MAX_VALUE - 1)
|
||||
val prefs = AppPrefs(getRandomString(), ignoredCode)
|
||||
assertFalse(prefs.ignoreAllUpdates)
|
||||
assertTrue(prefs.shouldIgnoreUpdate(ignoredCode - 1))
|
||||
assertTrue(prefs.shouldIgnoreUpdate(ignoredCode))
|
||||
assertFalse(prefs.shouldIgnoreUpdate(ignoredCode + 1))
|
||||
@Test
|
||||
fun testIgnoreVersionCodeUpdate() {
|
||||
val ignoredCode = Random.nextLong(1, Long.MAX_VALUE - 1)
|
||||
val prefs = AppPrefs(getRandomString(), ignoredCode)
|
||||
assertFalse(prefs.ignoreAllUpdates)
|
||||
assertTrue(prefs.shouldIgnoreUpdate(ignoredCode - 1))
|
||||
assertTrue(prefs.shouldIgnoreUpdate(ignoredCode))
|
||||
assertFalse(prefs.shouldIgnoreUpdate(ignoredCode + 1))
|
||||
|
||||
// after toggling, it is not ignored anymore
|
||||
assertFalse(prefs.toggleIgnoreVersionCodeUpdate(ignoredCode)
|
||||
.shouldIgnoreUpdate(ignoredCode))
|
||||
}
|
||||
// after toggling, it is not ignored anymore
|
||||
assertFalse(prefs.toggleIgnoreVersionCodeUpdate(ignoredCode).shouldIgnoreUpdate(ignoredCode))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIgnoreAllUpdates() {
|
||||
val prefs = AppPrefs(getRandomString()).toggleIgnoreAllUpdates()
|
||||
assertTrue(prefs.ignoreAllUpdates)
|
||||
assertTrue(prefs.shouldIgnoreUpdate(Random.nextLong()))
|
||||
assertTrue(prefs.shouldIgnoreUpdate(Random.nextLong()))
|
||||
assertTrue(prefs.shouldIgnoreUpdate(Random.nextLong()))
|
||||
@Test
|
||||
fun testIgnoreAllUpdates() {
|
||||
val prefs = AppPrefs(getRandomString()).toggleIgnoreAllUpdates()
|
||||
assertTrue(prefs.ignoreAllUpdates)
|
||||
assertTrue(prefs.shouldIgnoreUpdate(Random.nextLong()))
|
||||
assertTrue(prefs.shouldIgnoreUpdate(Random.nextLong()))
|
||||
assertTrue(prefs.shouldIgnoreUpdate(Random.nextLong()))
|
||||
|
||||
// after toggling, all are not ignored anymore
|
||||
val toggled = prefs.toggleIgnoreAllUpdates()
|
||||
assertFalse(toggled.ignoreAllUpdates)
|
||||
assertFalse(toggled.shouldIgnoreUpdate(Random.nextLong(1, Long.MAX_VALUE - 1)))
|
||||
assertFalse(toggled.shouldIgnoreUpdate(Random.nextLong(1, Long.MAX_VALUE - 1)))
|
||||
assertFalse(toggled.shouldIgnoreUpdate(Random.nextLong(1, Long.MAX_VALUE - 1)))
|
||||
}
|
||||
// after toggling, all are not ignored anymore
|
||||
val toggled = prefs.toggleIgnoreAllUpdates()
|
||||
assertFalse(toggled.ignoreAllUpdates)
|
||||
assertFalse(toggled.shouldIgnoreUpdate(Random.nextLong(1, Long.MAX_VALUE - 1)))
|
||||
assertFalse(toggled.shouldIgnoreUpdate(Random.nextLong(1, Long.MAX_VALUE - 1)))
|
||||
assertFalse(toggled.shouldIgnoreUpdate(Random.nextLong(1, Long.MAX_VALUE - 1)))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testReleaseChannels() {
|
||||
// no release channels initially
|
||||
val prefs = AppPrefs(getRandomString())
|
||||
assertEquals(emptyList(), prefs.releaseChannels)
|
||||
@Test
|
||||
fun testReleaseChannels() {
|
||||
// no release channels initially
|
||||
val prefs = AppPrefs(getRandomString())
|
||||
assertEquals(emptyList(), prefs.releaseChannels)
|
||||
|
||||
// A gets toggled and is then in channels
|
||||
val a = prefs.toggleReleaseChannel("A")
|
||||
assertEquals(listOf("A"), a.releaseChannels)
|
||||
// A gets toggled and is then in channels
|
||||
val a = prefs.toggleReleaseChannel("A")
|
||||
assertEquals(listOf("A"), a.releaseChannels)
|
||||
|
||||
// toggling it off returns empty list again
|
||||
assertEquals(emptyList(), a.toggleReleaseChannel("A").releaseChannels)
|
||||
// toggling it off returns empty list again
|
||||
assertEquals(emptyList(), a.toggleReleaseChannel("A").releaseChannels)
|
||||
|
||||
// toggling A and B returns both
|
||||
val ab = prefs.toggleReleaseChannel("A").toggleReleaseChannel("B")
|
||||
assertEquals(setOf("A", "B"), ab.releaseChannels.toSet())
|
||||
|
||||
// toggling both off returns empty list again
|
||||
assertEquals(emptyList(),
|
||||
ab.toggleReleaseChannel("A").toggleReleaseChannel("B").releaseChannels)
|
||||
}
|
||||
// toggling A and B returns both
|
||||
val ab = prefs.toggleReleaseChannel("A").toggleReleaseChannel("B")
|
||||
assertEquals(setOf("A", "B"), ab.releaseChannels.toSet())
|
||||
|
||||
// toggling both off returns empty list again
|
||||
assertEquals(
|
||||
emptyList(),
|
||||
ab.toggleReleaseChannel("A").toggleReleaseChannel("B").releaseChannels,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1,41 +1,40 @@
|
||||
package org.fdroid.database
|
||||
|
||||
import org.fdroid.test.TestRepoUtils.getRandomLocalizedFileV2
|
||||
import org.fdroid.test.TestUtils.getRandomList
|
||||
import org.fdroid.test.TestUtils.getRandomString
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNull
|
||||
import org.fdroid.test.TestRepoUtils.getRandomLocalizedFileV2
|
||||
import org.fdroid.test.TestUtils.getRandomList
|
||||
import org.fdroid.test.TestUtils.getRandomString
|
||||
|
||||
internal class ConvertersTest {
|
||||
|
||||
@Test
|
||||
fun testListConversion() {
|
||||
val list = getRandomList { getRandomString() }
|
||||
@Test
|
||||
fun testListConversion() {
|
||||
val list = getRandomList { getRandomString() }
|
||||
|
||||
val str = Converters.listStringToString(list)
|
||||
val convertedList = Converters.fromStringToListString(str)
|
||||
assertEquals(list, convertedList)
|
||||
}
|
||||
val str = Converters.listStringToString(list)
|
||||
val convertedList = Converters.fromStringToListString(str)
|
||||
assertEquals(list, convertedList)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testEmptyListConversion() {
|
||||
val list = emptyList<String>()
|
||||
@Test
|
||||
fun testEmptyListConversion() {
|
||||
val list = emptyList<String>()
|
||||
|
||||
val str = Converters.listStringToString(list)
|
||||
assertNull(str)
|
||||
assertNull(Converters.listStringToString(null))
|
||||
val convertedList = Converters.fromStringToListString(str)
|
||||
assertEquals(list, convertedList)
|
||||
}
|
||||
val str = Converters.listStringToString(list)
|
||||
assertNull(str)
|
||||
assertNull(Converters.listStringToString(null))
|
||||
val convertedList = Converters.fromStringToListString(str)
|
||||
assertEquals(list, convertedList)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFileV2Conversion() {
|
||||
val file = getRandomLocalizedFileV2()
|
||||
|
||||
val str = Converters.localizedFileV2toString(file)
|
||||
val convertedFile = Converters.fromStringToLocalizedFileV2(str)
|
||||
assertEquals(file, convertedFile)
|
||||
}
|
||||
@Test
|
||||
fun testFileV2Conversion() {
|
||||
val file = getRandomLocalizedFileV2()
|
||||
|
||||
val str = Converters.localizedFileV2toString(file)
|
||||
val convertedFile = Converters.fromStringToLocalizedFileV2(str)
|
||||
assertEquals(file, convertedFile)
|
||||
}
|
||||
}
|
||||
@@ -3,49 +3,44 @@ package org.fdroid.database
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import kotlin.test.assertFailsWith
|
||||
import kotlinx.serialization.SerializationException
|
||||
import org.fdroid.CompatibilityChecker
|
||||
import org.fdroid.index.v2.FileV2
|
||||
import org.fdroid.index.v2.RepoV2
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import kotlin.test.assertFailsWith
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
internal class DbV2StreamReceiverTest {
|
||||
|
||||
private val db: FDroidDatabaseInt = mockk()
|
||||
private val compatChecker: CompatibilityChecker = mockk()
|
||||
private val dbV2StreamReceiver = DbV2StreamReceiver(db, 42L, compatChecker)
|
||||
private val db: FDroidDatabaseInt = mockk()
|
||||
private val compatChecker: CompatibilityChecker = mockk()
|
||||
private val dbV2StreamReceiver = DbV2StreamReceiver(db, 42L, compatChecker)
|
||||
|
||||
@Test
|
||||
fun testFileV2Verified() {
|
||||
// proper icon file passes
|
||||
val repoV2 = RepoV2(
|
||||
icon = mapOf("en" to FileV2(name = "/foo", sha256 = "bar", size = 23L)),
|
||||
address = "http://example.org",
|
||||
timestamp = 42L,
|
||||
)
|
||||
every { db.getRepositoryDao() } returns mockk(relaxed = true)
|
||||
dbV2StreamReceiver.receive(repoV2, 42L)
|
||||
@Test
|
||||
fun testFileV2Verified() {
|
||||
// proper icon file passes
|
||||
val repoV2 =
|
||||
RepoV2(
|
||||
icon = mapOf("en" to FileV2(name = "/foo", sha256 = "bar", size = 23L)),
|
||||
address = "http://example.org",
|
||||
timestamp = 42L,
|
||||
)
|
||||
every { db.getRepositoryDao() } returns mockk(relaxed = true)
|
||||
dbV2StreamReceiver.receive(repoV2, 42L)
|
||||
|
||||
// icon file without leading / does not pass
|
||||
val repoV2NoSlash =
|
||||
repoV2.copy(icon = mapOf("en" to FileV2(name = "foo", sha256 = "bar", size = 23L)))
|
||||
assertFailsWith<SerializationException> {
|
||||
dbV2StreamReceiver.receive(repoV2NoSlash, 42L)
|
||||
}
|
||||
// icon file without leading / does not pass
|
||||
val repoV2NoSlash =
|
||||
repoV2.copy(icon = mapOf("en" to FileV2(name = "foo", sha256 = "bar", size = 23L)))
|
||||
assertFailsWith<SerializationException> { dbV2StreamReceiver.receive(repoV2NoSlash, 42L) }
|
||||
|
||||
// icon file without sha256 hash fails
|
||||
val repoNoSha256 = repoV2.copy(icon = mapOf("en" to FileV2(name = "/foo", size = 23L)))
|
||||
assertFailsWith<SerializationException> {
|
||||
dbV2StreamReceiver.receive(repoNoSha256, 42L)
|
||||
}
|
||||
// icon file without sha256 hash fails
|
||||
val repoNoSha256 = repoV2.copy(icon = mapOf("en" to FileV2(name = "/foo", size = 23L)))
|
||||
assertFailsWith<SerializationException> { dbV2StreamReceiver.receive(repoNoSha256, 42L) }
|
||||
|
||||
// icon file without size fails
|
||||
val repoNoSize = repoV2.copy(icon = mapOf("en" to FileV2(name = "/foo", sha256 = "bar")))
|
||||
assertFailsWith<SerializationException> {
|
||||
dbV2StreamReceiver.receive(repoNoSize, 42L)
|
||||
}
|
||||
}
|
||||
// icon file without size fails
|
||||
val repoNoSize = repoV2.copy(icon = mapOf("en" to FileV2(name = "/foo", sha256 = "bar")))
|
||||
assertFailsWith<SerializationException> { dbV2StreamReceiver.receive(repoNoSize, 42L) }
|
||||
}
|
||||
}
|
||||
@@ -1,32 +1,34 @@
|
||||
package org.fdroid.download
|
||||
|
||||
import android.net.Uri
|
||||
import java.io.File
|
||||
import org.fdroid.IndexFile
|
||||
import org.fdroid.database.Repository
|
||||
import java.io.File
|
||||
|
||||
internal class TestDownloadFactory(private val httpManager: HttpManager) : DownloaderFactory() {
|
||||
override fun create(
|
||||
repo: Repository,
|
||||
uri: Uri,
|
||||
indexFile: IndexFile,
|
||||
destFile: File,
|
||||
): Downloader = HttpDownloaderV2(
|
||||
httpManager = httpManager,
|
||||
request = DownloadRequest(indexFile, repo.getMirrors()),
|
||||
destFile = destFile
|
||||
override fun create(
|
||||
repo: Repository,
|
||||
uri: Uri,
|
||||
indexFile: IndexFile,
|
||||
destFile: File,
|
||||
): Downloader =
|
||||
HttpDownloaderV2(
|
||||
httpManager = httpManager,
|
||||
request = DownloadRequest(indexFile, repo.getMirrors()),
|
||||
destFile = destFile,
|
||||
)
|
||||
|
||||
override fun create(
|
||||
repo: Repository,
|
||||
mirrors: List<Mirror>,
|
||||
uri: Uri,
|
||||
indexFile: IndexFile,
|
||||
destFile: File,
|
||||
tryFirst: Mirror?,
|
||||
): Downloader = HttpDownloaderV2(
|
||||
httpManager = httpManager,
|
||||
request = DownloadRequest(indexFile, repo.getMirrors()),
|
||||
destFile = destFile
|
||||
override fun create(
|
||||
repo: Repository,
|
||||
mirrors: List<Mirror>,
|
||||
uri: Uri,
|
||||
indexFile: IndexFile,
|
||||
destFile: File,
|
||||
tryFirst: Mirror?,
|
||||
): Downloader =
|
||||
HttpDownloaderV2(
|
||||
httpManager = httpManager,
|
||||
request = DownloadRequest(indexFile, repo.getMirrors()),
|
||||
destFile = destFile,
|
||||
)
|
||||
}
|
||||
@@ -8,6 +8,12 @@ import io.mockk.MockKException
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.slot
|
||||
import java.util.concurrent.Callable
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertIs
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.fdroid.CompatibilityChecker
|
||||
@@ -27,133 +33,122 @@ import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.TemporaryFolder
|
||||
import org.junit.runner.RunWith
|
||||
import java.util.concurrent.Callable
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertIs
|
||||
import kotlin.test.assertNotNull
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
internal class RepoAdderIntegrationTest {
|
||||
|
||||
@get:Rule
|
||||
var folder: TemporaryFolder = TemporaryFolder()
|
||||
@get:Rule var folder: TemporaryFolder = TemporaryFolder()
|
||||
|
||||
private val context = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
private val db = mockk<FDroidDatabaseInt>()
|
||||
private val repoDao = mockk<RepositoryDaoInt>()
|
||||
private val tempFileProvider = TempFileProvider { folder.newFile() }
|
||||
private val httpManager = HttpManager("test")
|
||||
private val downloaderFactory = TestDownloadFactory(httpManager)
|
||||
private val compatibilityChecker = mockk<CompatibilityChecker>()
|
||||
private val context = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
private val db = mockk<FDroidDatabaseInt>()
|
||||
private val repoDao = mockk<RepositoryDaoInt>()
|
||||
private val tempFileProvider = TempFileProvider { folder.newFile() }
|
||||
private val httpManager = HttpManager("test")
|
||||
private val downloaderFactory = TestDownloadFactory(httpManager)
|
||||
private val compatibilityChecker = mockk<CompatibilityChecker>()
|
||||
|
||||
private val repoAdder: RepoAdder
|
||||
private val repoAdder: RepoAdder
|
||||
|
||||
init {
|
||||
every { db.getRepositoryDao() } returns repoDao
|
||||
repoAdder = RepoAdder(
|
||||
context = context,
|
||||
db = db,
|
||||
tempFileProvider = tempFileProvider,
|
||||
downloaderFactory = downloaderFactory,
|
||||
httpManager = httpManager,
|
||||
compatibilityChecker = compatibilityChecker,
|
||||
)
|
||||
init {
|
||||
every { db.getRepositoryDao() } returns repoDao
|
||||
repoAdder =
|
||||
RepoAdder(
|
||||
context = context,
|
||||
db = db,
|
||||
tempFileProvider = tempFileProvider,
|
||||
downloaderFactory = downloaderFactory,
|
||||
httpManager = httpManager,
|
||||
compatibilityChecker = compatibilityChecker,
|
||||
)
|
||||
}
|
||||
|
||||
@Before
|
||||
fun optIn() {
|
||||
assumeTrue(false) // don't run integration tests with real repos all the time
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFedilabV1() = runTest {
|
||||
// repo not in DB
|
||||
every { repoDao.getRepository(any<String>()) } returns null
|
||||
|
||||
repoAdder.fetchRepository(
|
||||
url =
|
||||
"https://fdroid.fedilab.app/repo/" +
|
||||
"?fingerprint=11F0A69910A4280E2CD3CCC3146337D006BE539B18E1A9FEACE15FF757A94FEB",
|
||||
proxy = null,
|
||||
)
|
||||
repoAdder.addRepoState.test {
|
||||
assertEquals(None, awaitItem())
|
||||
val firstFetching = awaitItem()
|
||||
assertTrue(firstFetching is Fetching)
|
||||
assertNull(firstFetching.receivedRepo)
|
||||
assertTrue(firstFetching.apps.isEmpty())
|
||||
|
||||
val secondFetching = awaitItem()
|
||||
assertTrue(secondFetching is Fetching, "$secondFetching")
|
||||
val repo = secondFetching.receivedRepo
|
||||
assertNotNull(repo)
|
||||
assertEquals("https://fdroid.fedilab.app/repo", repo.address)
|
||||
println(repo.getName(LocaleListCompat.getDefault()) ?: "null")
|
||||
println(repo.certificate)
|
||||
|
||||
assertEquals(1, (awaitItem() as Fetching).apps.size)
|
||||
assertEquals(2, (awaitItem() as Fetching).apps.size)
|
||||
assertEquals(3, (awaitItem() as Fetching).apps.size)
|
||||
assertEquals(4, (awaitItem() as Fetching).apps.size)
|
||||
assertEquals(5, (awaitItem() as Fetching).apps.size)
|
||||
assertTrue((awaitItem() as Fetching).done)
|
||||
}
|
||||
|
||||
@Before
|
||||
fun optIn() {
|
||||
assumeTrue(false) // don't run integration tests with real repos all the time
|
||||
val state = repoAdder.addRepoState.value
|
||||
assertTrue(state is Fetching, state.toString())
|
||||
assertTrue(state.apps.isNotEmpty())
|
||||
state.apps.forEach { app -> println(" ${app.packageName} ${app.summary}") }
|
||||
|
||||
val runSlot = slot<Callable<Any>>()
|
||||
every { db.runInTransaction(capture(runSlot)) } answers { runSlot.captured.call() }
|
||||
val newRepo: Repository = mockk()
|
||||
every { newRepo.formatVersion } returns IndexFormatVersion.TWO
|
||||
every { repoDao.insert(any<NewRepository>()) } returns 42L
|
||||
every { repoDao.getRepository(42L) } returns newRepo
|
||||
|
||||
repoAdder.addFetchedRepository()
|
||||
repoAdder.addRepoState.test {
|
||||
val addedState = awaitItem()
|
||||
assertTrue(addedState is Added, addedState.toString())
|
||||
assertEquals(newRepo, addedState.repo)
|
||||
// we are not mocking all the actual repo adding,
|
||||
// so just assert that this fails due to mocking
|
||||
assertIs<IndexUpdateResult.Error>(addedState.updateResult)
|
||||
assertIs<MockKException>(addedState.updateResult.e)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFedilabV1() = runTest {
|
||||
// repo not in DB
|
||||
every { repoDao.getRepository(any<String>()) } returns null
|
||||
@Test
|
||||
fun testIzzy() = runBlocking {
|
||||
// repo not in DB
|
||||
every { repoDao.getRepository(any<String>()) } returns null
|
||||
|
||||
repoAdder.fetchRepository(
|
||||
url = "https://fdroid.fedilab.app/repo/" +
|
||||
"?fingerprint=11F0A69910A4280E2CD3CCC3146337D006BE539B18E1A9FEACE15FF757A94FEB",
|
||||
proxy = null
|
||||
)
|
||||
repoAdder.addRepoState.test {
|
||||
assertEquals(None, awaitItem())
|
||||
val firstFetching = awaitItem()
|
||||
assertTrue(firstFetching is Fetching)
|
||||
assertNull(firstFetching.receivedRepo)
|
||||
assertTrue(firstFetching.apps.isEmpty())
|
||||
repoAdder.fetchRepositoryInt(
|
||||
url =
|
||||
"https://apt.izzysoft.de/fdroid/repo" +
|
||||
"?fingerprint=3BF0D6ABFEAE2F401707B6D966BE743BF0EEE49C2561B9BA39073711F628937A"
|
||||
)
|
||||
val state = repoAdder.addRepoState.value
|
||||
assertTrue(state is Fetching, state.toString())
|
||||
assertTrue(state.apps.isNotEmpty())
|
||||
|
||||
val secondFetching = awaitItem()
|
||||
assertTrue(secondFetching is Fetching, "$secondFetching")
|
||||
val repo = secondFetching.receivedRepo
|
||||
assertNotNull(repo)
|
||||
assertEquals("https://fdroid.fedilab.app/repo", repo.address)
|
||||
println(repo.getName(LocaleListCompat.getDefault()) ?: "null")
|
||||
println(repo.certificate)
|
||||
|
||||
assertEquals(1, (awaitItem() as Fetching).apps.size)
|
||||
assertEquals(2, (awaitItem() as Fetching).apps.size)
|
||||
assertEquals(3, (awaitItem() as Fetching).apps.size)
|
||||
assertEquals(4, (awaitItem() as Fetching).apps.size)
|
||||
assertEquals(5, (awaitItem() as Fetching).apps.size)
|
||||
assertTrue((awaitItem() as Fetching).done)
|
||||
}
|
||||
|
||||
val state = repoAdder.addRepoState.value
|
||||
assertTrue(state is Fetching, state.toString())
|
||||
assertTrue(state.apps.isNotEmpty())
|
||||
state.apps.forEach { app ->
|
||||
println(" ${app.packageName} ${app.summary}")
|
||||
}
|
||||
|
||||
val runSlot = slot<Callable<Any>>()
|
||||
every { db.runInTransaction(capture(runSlot)) } answers {
|
||||
runSlot.captured.call()
|
||||
}
|
||||
val newRepo: Repository = mockk()
|
||||
every { newRepo.formatVersion } returns IndexFormatVersion.TWO
|
||||
every { repoDao.insert(any<NewRepository>()) } returns 42L
|
||||
every { repoDao.getRepository(42L) } returns newRepo
|
||||
|
||||
repoAdder.addFetchedRepository()
|
||||
repoAdder.addRepoState.test {
|
||||
val addedState = awaitItem()
|
||||
assertTrue(addedState is Added, addedState.toString())
|
||||
assertEquals(newRepo, addedState.repo)
|
||||
// we are not mocking all the actual repo adding,
|
||||
// so just assert that this fails due to mocking
|
||||
assertIs<IndexUpdateResult.Error>(addedState.updateResult)
|
||||
assertIs<MockKException>(addedState.updateResult.e)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIzzy() = runBlocking {
|
||||
// repo not in DB
|
||||
every { repoDao.getRepository(any<String>()) } returns null
|
||||
|
||||
repoAdder.fetchRepositoryInt(
|
||||
url = "https://apt.izzysoft.de/fdroid/repo" +
|
||||
"?fingerprint=3BF0D6ABFEAE2F401707B6D966BE743BF0EEE49C2561B9BA39073711F628937A"
|
||||
)
|
||||
val state = repoAdder.addRepoState.value
|
||||
assertTrue(state is Fetching, state.toString())
|
||||
assertTrue(state.apps.isNotEmpty())
|
||||
|
||||
println(state.receivedRepo?.getName(LocaleListCompat.getDefault()) ?: "null")
|
||||
println(state.receivedRepo?.certificate)
|
||||
state.apps.forEach { app ->
|
||||
println(" ${app.packageName} ${app.summary}")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIzzyWrongFingerprint() = runBlocking {
|
||||
repoAdder.fetchRepositoryInt("https://apt.izzysoft.de/fdroid/repo?fingerprint=fooBar")
|
||||
val state = repoAdder.addRepoState.value
|
||||
assertTrue(state is AddRepoError, state.toString())
|
||||
assertEquals(state.errorType, INVALID_FINGERPRINT, state.errorType.name)
|
||||
}
|
||||
println(state.receivedRepo?.getName(LocaleListCompat.getDefault()) ?: "null")
|
||||
println(state.receivedRepo?.certificate)
|
||||
state.apps.forEach { app -> println(" ${app.packageName} ${app.summary}") }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIzzyWrongFingerprint() = runBlocking {
|
||||
repoAdder.fetchRepositoryInt("https://apt.izzysoft.de/fdroid/repo?fingerprint=fooBar")
|
||||
val state = repoAdder.addRepoState.value
|
||||
assertTrue(state is AddRepoError, state.toString())
|
||||
assertEquals(state.errorType, INVALID_FINGERPRINT, state.errorType.name)
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -2,227 +2,228 @@ package org.fdroid.repo
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
internal class RepoUriGetterTest {
|
||||
@Test
|
||||
fun testTrailingSlash() {
|
||||
val uri = RepoUriGetter.getUri("http://example.org/fdroid/repo/")
|
||||
assertEquals("http://example.org/fdroid/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
@Test
|
||||
fun testTrailingSlash() {
|
||||
val uri = RepoUriGetter.getUri("http://example.org/fdroid/repo/")
|
||||
assertEquals("http://example.org/fdroid/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testWithoutTrailingSlash() {
|
||||
val uri = RepoUriGetter.getUri("http://example.org/fdroid/repo")
|
||||
assertEquals("http://example.org/fdroid/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
@Test
|
||||
fun testWithoutTrailingSlash() {
|
||||
val uri = RepoUriGetter.getUri("http://example.org/fdroid/repo")
|
||||
assertEquals("http://example.org/fdroid/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFingerprint() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org/repo?fingerprint=foobar&test=42")
|
||||
assertEquals("https://example.org/repo", uri.uri.toString())
|
||||
assertEquals("foobar", uri.fingerprint)
|
||||
}
|
||||
@Test
|
||||
fun testFingerprint() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org/repo?fingerprint=foobar&test=42")
|
||||
assertEquals("https://example.org/repo", uri.uri.toString())
|
||||
assertEquals("foobar", uri.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFingerprintWithTrailingWhitespace() {
|
||||
val uri1 = RepoUriGetter.getUri("https://example.org/repo?fingerprint=foobar ")
|
||||
assertEquals("https://example.org/repo", uri1.uri.toString())
|
||||
assertEquals("foobar", uri1.fingerprint)
|
||||
@Test
|
||||
fun testFingerprintWithTrailingWhitespace() {
|
||||
val uri1 = RepoUriGetter.getUri("https://example.org/repo?fingerprint=foobar ")
|
||||
assertEquals("https://example.org/repo", uri1.uri.toString())
|
||||
assertEquals("foobar", uri1.fingerprint)
|
||||
|
||||
val uri2 = RepoUriGetter.getUri("https://example.org/repo?fingerprint=foobar ")
|
||||
assertEquals("https://example.org/repo", uri2.uri.toString())
|
||||
assertEquals("foobar", uri2.fingerprint)
|
||||
}
|
||||
val uri2 = RepoUriGetter.getUri("https://example.org/repo?fingerprint=foobar ")
|
||||
assertEquals("https://example.org/repo", uri2.uri.toString())
|
||||
assertEquals("foobar", uri2.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testHash() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org/repo?fingerprint=foobar&test=42#hash")
|
||||
assertEquals("https://example.org/repo", uri.uri.toString())
|
||||
assertEquals("foobar", uri.fingerprint)
|
||||
}
|
||||
@Test
|
||||
fun testHash() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org/repo?fingerprint=foobar&test=42#hash")
|
||||
assertEquals("https://example.org/repo", uri.uri.toString())
|
||||
assertEquals("foobar", uri.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAddFdroidSlashRepo() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org")
|
||||
assertEquals("https://example.org/fdroid/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
@Test
|
||||
fun testAddFdroidSlashRepo() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org")
|
||||
assertEquals("https://example.org/fdroid/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testLeaveSingleRepo() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org/repo")
|
||||
assertEquals("https://example.org/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
@Test
|
||||
fun testLeaveSingleRepo() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org/repo")
|
||||
assertEquals("https://example.org/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAddsMissingRepo() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org/fdroid/")
|
||||
assertEquals("https://example.org/fdroid/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
@Test
|
||||
fun testAddsMissingRepo() {
|
||||
val uri = RepoUriGetter.getUri("https://example.org/fdroid/")
|
||||
assertEquals("https://example.org/fdroid/repo", uri.uri.toString())
|
||||
assertNull(uri.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFDroidLink() {
|
||||
val uri1 = RepoUriGetter.getUri(
|
||||
"https://fdroid.link/index.html#https://f-droid.org/repo?" +
|
||||
"fingerprint=43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab"
|
||||
)
|
||||
assertEquals("https://f-droid.org/repo", uri1.uri.toString())
|
||||
assertEquals(
|
||||
"43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab",
|
||||
uri1.fingerprint
|
||||
)
|
||||
@Test
|
||||
fun testFDroidLink() {
|
||||
val uri1 =
|
||||
RepoUriGetter.getUri(
|
||||
"https://fdroid.link/index.html#https://f-droid.org/repo?" +
|
||||
"fingerprint=43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab"
|
||||
)
|
||||
assertEquals("https://f-droid.org/repo", uri1.uri.toString())
|
||||
assertEquals(
|
||||
"43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab",
|
||||
uri1.fingerprint,
|
||||
)
|
||||
|
||||
val uri2 = RepoUriGetter.getUri("https://fdroid.link#https://f-droid.org/repo")
|
||||
assertEquals("https://f-droid.org/repo", uri2.uri.toString())
|
||||
assertNull(uri2.fingerprint)
|
||||
val uri2 = RepoUriGetter.getUri("https://fdroid.link#https://f-droid.org/repo")
|
||||
assertEquals("https://f-droid.org/repo", uri2.uri.toString())
|
||||
assertNull(uri2.fingerprint)
|
||||
|
||||
val uri3 = RepoUriGetter.getUri("https://fdroid.link/#http://f-droid.org/repo")
|
||||
assertEquals("http://f-droid.org/repo", uri3.uri.toString())
|
||||
assertNull(uri3.fingerprint)
|
||||
val uri3 = RepoUriGetter.getUri("https://fdroid.link/#http://f-droid.org/repo")
|
||||
assertEquals("http://f-droid.org/repo", uri3.uri.toString())
|
||||
assertNull(uri3.fingerprint)
|
||||
|
||||
val uri4 = RepoUriGetter.getUri("https://fdroid.link/")
|
||||
// we don't care what it is as long as it doesn't crash
|
||||
assertNull(uri4.fingerprint)
|
||||
val uri4 = RepoUriGetter.getUri("https://fdroid.link/")
|
||||
// we don't care what it is as long as it doesn't crash
|
||||
assertNull(uri4.fingerprint)
|
||||
|
||||
val uri5 = RepoUriGetter.getUri("https://fdroid.link/#foo")
|
||||
// we don't care what it is as long as it doesn't crash
|
||||
assertNull(uri5.fingerprint)
|
||||
val uri5 = RepoUriGetter.getUri("https://fdroid.link/#foo")
|
||||
// we don't care what it is as long as it doesn't crash
|
||||
assertNull(uri5.fingerprint)
|
||||
|
||||
val uri6 = RepoUriGetter.getUri("https://fdroid.link/#invalid://foo.bar")
|
||||
// we don't care what it is as long as it doesn't crash
|
||||
assertNull(uri6.fingerprint)
|
||||
}
|
||||
val uri6 = RepoUriGetter.getUri("https://fdroid.link/#invalid://foo.bar")
|
||||
// we don't care what it is as long as it doesn't crash
|
||||
assertNull(uri6.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testAddScheme() {
|
||||
val uri1 = RepoUriGetter.getUri("example.com/repo")
|
||||
assertEquals("https://example.com/repo", uri1.uri.toString())
|
||||
assertNull(uri1.fingerprint)
|
||||
@Test
|
||||
fun testAddScheme() {
|
||||
val uri1 = RepoUriGetter.getUri("example.com/repo")
|
||||
assertEquals("https://example.com/repo", uri1.uri.toString())
|
||||
assertNull(uri1.fingerprint)
|
||||
|
||||
val uri2 = RepoUriGetter.getUri(
|
||||
"example.com/repo?" +
|
||||
"fingerprint=43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab"
|
||||
)
|
||||
assertEquals("https://example.com/repo", uri2.uri.toString())
|
||||
assertEquals(
|
||||
"43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab",
|
||||
uri2.fingerprint
|
||||
)
|
||||
}
|
||||
val uri2 =
|
||||
RepoUriGetter.getUri(
|
||||
"example.com/repo?" +
|
||||
"fingerprint=43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab"
|
||||
)
|
||||
assertEquals("https://example.com/repo", uri2.uri.toString())
|
||||
assertEquals(
|
||||
"43238d512c1e5eb2d6569f4a3afbf5523418b82e0a3ed1552770abb9a9c9ccab",
|
||||
uri2.fingerprint,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFDroidRepoUriScheme() {
|
||||
val uri1 = RepoUriGetter.getUri(
|
||||
"fdroidrepos://grobox.de/fdroid/repo?fingerprint=" +
|
||||
"28e14fb3b280bce8ff1e0f8e82726ff46923662cecff2a0689108ce19e8b347c"
|
||||
)
|
||||
assertEquals("https://grobox.de/fdroid/repo", uri1.uri.toString())
|
||||
assertEquals(
|
||||
"28e14fb3b280bce8ff1e0f8e82726ff46923662cecff2a0689108ce19e8b347c",
|
||||
uri1.fingerprint,
|
||||
)
|
||||
@Test
|
||||
fun testFDroidRepoUriScheme() {
|
||||
val uri1 =
|
||||
RepoUriGetter.getUri(
|
||||
"fdroidrepos://grobox.de/fdroid/repo?fingerprint=" +
|
||||
"28e14fb3b280bce8ff1e0f8e82726ff46923662cecff2a0689108ce19e8b347c"
|
||||
)
|
||||
assertEquals("https://grobox.de/fdroid/repo", uri1.uri.toString())
|
||||
assertEquals(
|
||||
"28e14fb3b280bce8ff1e0f8e82726ff46923662cecff2a0689108ce19e8b347c",
|
||||
uri1.fingerprint,
|
||||
)
|
||||
|
||||
val uri2 = RepoUriGetter.getUri("fdroidrepo://grobox.de/fdroid/repo")
|
||||
assertEquals("http://grobox.de/fdroid/repo", uri2.uri.toString())
|
||||
assertNull(uri2.fingerprint)
|
||||
val uri2 = RepoUriGetter.getUri("fdroidrepo://grobox.de/fdroid/repo")
|
||||
assertEquals("http://grobox.de/fdroid/repo", uri2.uri.toString())
|
||||
assertNull(uri2.fingerprint)
|
||||
|
||||
val uri3 = RepoUriGetter.getUri(
|
||||
"FDROIDREPOS://grobox.de/fdroid/repo?fingerprint=" +
|
||||
"28e14fb3b280bce8ff1e0f8e82726ff46923662cecff2a0689108ce19e8b347c"
|
||||
)
|
||||
assertEquals("https://grobox.de/fdroid/repo", uri3.uri.toString())
|
||||
assertEquals(
|
||||
"28e14fb3b280bce8ff1e0f8e82726ff46923662cecff2a0689108ce19e8b347c",
|
||||
uri3.fingerprint,
|
||||
)
|
||||
val uri3 =
|
||||
RepoUriGetter.getUri(
|
||||
"FDROIDREPOS://grobox.de/fdroid/repo?fingerprint=" +
|
||||
"28e14fb3b280bce8ff1e0f8e82726ff46923662cecff2a0689108ce19e8b347c"
|
||||
)
|
||||
assertEquals("https://grobox.de/fdroid/repo", uri3.uri.toString())
|
||||
assertEquals(
|
||||
"28e14fb3b280bce8ff1e0f8e82726ff46923662cecff2a0689108ce19e8b347c",
|
||||
uri3.fingerprint,
|
||||
)
|
||||
|
||||
val uri4 = RepoUriGetter.getUri("fdroidREPO://grobox.de/fdroid/repo")
|
||||
assertEquals("http://grobox.de/fdroid/repo", uri4.uri.toString())
|
||||
assertNull(uri4.fingerprint)
|
||||
}
|
||||
val uri4 = RepoUriGetter.getUri("fdroidREPO://grobox.de/fdroid/repo")
|
||||
assertEquals("http://grobox.de/fdroid/repo", uri4.uri.toString())
|
||||
assertNull(uri4.fingerprint)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testUsernamePassword() {
|
||||
val uri1 = RepoUriGetter.getUri(
|
||||
"https://username:password@example.org/repo?fingerprint=foobar&test=42"
|
||||
)
|
||||
assertEquals("https://example.org/repo", uri1.uri.toString())
|
||||
assertEquals("foobar", uri1.fingerprint)
|
||||
assertEquals("username", uri1.username)
|
||||
assertEquals("password", uri1.password)
|
||||
@Test
|
||||
fun testUsernamePassword() {
|
||||
val uri1 =
|
||||
RepoUriGetter.getUri("https://username:password@example.org/repo?fingerprint=foobar&test=42")
|
||||
assertEquals("https://example.org/repo", uri1.uri.toString())
|
||||
assertEquals("foobar", uri1.fingerprint)
|
||||
assertEquals("username", uri1.username)
|
||||
assertEquals("password", uri1.password)
|
||||
|
||||
// no password
|
||||
val uri2 =
|
||||
RepoUriGetter.getUri("https://username@example.org/repo?fingerprint=foobar&test=42")
|
||||
assertEquals("https://example.org/repo", uri2.uri.toString())
|
||||
assertEquals("foobar", uri2.fingerprint)
|
||||
assertEquals("username", uri2.username)
|
||||
assertNull(uri2.password)
|
||||
// no password
|
||||
val uri2 = RepoUriGetter.getUri("https://username@example.org/repo?fingerprint=foobar&test=42")
|
||||
assertEquals("https://example.org/repo", uri2.uri.toString())
|
||||
assertEquals("foobar", uri2.fingerprint)
|
||||
assertEquals("username", uri2.username)
|
||||
assertNull(uri2.password)
|
||||
|
||||
// empty host
|
||||
val uri3 = RepoUriGetter.getUri("https://foo:bar@/repo?fingerprint=foobar&test=42")
|
||||
assertEquals("https:///repo", uri3.uri.toString())
|
||||
assertEquals("foobar", uri3.fingerprint)
|
||||
assertEquals("foo", uri3.username)
|
||||
assertEquals("bar", uri3.password)
|
||||
// empty host
|
||||
val uri3 = RepoUriGetter.getUri("https://foo:bar@/repo?fingerprint=foobar&test=42")
|
||||
assertEquals("https:///repo", uri3.uri.toString())
|
||||
assertEquals("foobar", uri3.fingerprint)
|
||||
assertEquals("foo", uri3.username)
|
||||
assertEquals("bar", uri3.password)
|
||||
|
||||
// empty everything doesn't crash
|
||||
RepoUriGetter.getUri(":@/")
|
||||
RepoUriGetter.getUri(":@")
|
||||
RepoUriGetter.getUri("@")
|
||||
RepoUriGetter.getUri("")
|
||||
}
|
||||
// empty everything doesn't crash
|
||||
RepoUriGetter.getUri(":@/")
|
||||
RepoUriGetter.getUri(":@")
|
||||
RepoUriGetter.getUri("@")
|
||||
RepoUriGetter.getUri("")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNonHierarchicalUri() {
|
||||
RepoUriGetter.getUri("mailto:nobody@google.com") // should not crash
|
||||
}
|
||||
@Test
|
||||
fun testNonHierarchicalUri() {
|
||||
RepoUriGetter.getUri("mailto:nobody@google.com") // should not crash
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSwapUri() {
|
||||
val uri =
|
||||
RepoUriGetter.getUri(
|
||||
"http://192.168.3.159:8888/fdroid/repo?FINGERPRINT=" +
|
||||
"BA29D02E303B2604D00C91189600E868B26FA0B248DC39D75C5C0F4349CA5FA9" +
|
||||
"&SWAP=1&BSSID=44:FE:3B:7F:7F:EE"
|
||||
)
|
||||
assertEquals("http://192.168.3.159:8888/fdroid/repo", uri.uri.toString())
|
||||
assertEquals(
|
||||
"ba29d02e303b2604d00c91189600e868b26fa0b248dc39d75c5c0f4349ca5fa9",
|
||||
uri.fingerprint,
|
||||
)
|
||||
}
|
||||
@Test
|
||||
fun testSwapUri() {
|
||||
val uri =
|
||||
RepoUriGetter.getUri(
|
||||
"http://192.168.3.159:8888/fdroid/repo?FINGERPRINT=" +
|
||||
"BA29D02E303B2604D00C91189600E868B26FA0B248DC39D75C5C0F4349CA5FA9" +
|
||||
"&SWAP=1&BSSID=44:FE:3B:7F:7F:EE"
|
||||
)
|
||||
assertEquals("http://192.168.3.159:8888/fdroid/repo", uri.uri.toString())
|
||||
assertEquals(
|
||||
"ba29d02e303b2604d00c91189600e868b26fa0b248dc39d75c5c0f4349ca5fa9",
|
||||
uri.fingerprint,
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIsSwapUri() {
|
||||
val uri1 = Uri.parse(
|
||||
"http://192.168.3.159:8888/fdroid/repo?FINGERPRINT=" +
|
||||
"BA29D02E303B2604D00C91189600E868B26FA0B248DC39D75C5C0F4349CA5FA9" +
|
||||
"&SWAP=1&BSSID=44:FE:3B:7F:7F:EE"
|
||||
)
|
||||
assertTrue(RepoUriGetter.isSwapUri(uri1))
|
||||
@Test
|
||||
fun testIsSwapUri() {
|
||||
val uri1 =
|
||||
Uri.parse(
|
||||
"http://192.168.3.159:8888/fdroid/repo?FINGERPRINT=" +
|
||||
"BA29D02E303B2604D00C91189600E868B26FA0B248DC39D75C5C0F4349CA5FA9" +
|
||||
"&SWAP=1&BSSID=44:FE:3B:7F:7F:EE"
|
||||
)
|
||||
assertTrue(RepoUriGetter.isSwapUri(uri1))
|
||||
|
||||
val uri2 = Uri.parse(
|
||||
"http://192.168.3.159:8888/fdroid/repo?" +
|
||||
"swap=1&BSSID=44:FE:3B:7F:7F:EE"
|
||||
)
|
||||
assertTrue(RepoUriGetter.isSwapUri(uri2))
|
||||
val uri2 =
|
||||
Uri.parse("http://192.168.3.159:8888/fdroid/repo?" + "swap=1&BSSID=44:FE:3B:7F:7F:EE")
|
||||
assertTrue(RepoUriGetter.isSwapUri(uri2))
|
||||
|
||||
val uri3 = Uri.parse("http://192.168.3.159:8888/fdroid/repo?BSSID=44:FE:3B:7F:7F:EE")
|
||||
assertFalse(RepoUriGetter.isSwapUri(uri3))
|
||||
val uri3 = Uri.parse("http://192.168.3.159:8888/fdroid/repo?BSSID=44:FE:3B:7F:7F:EE")
|
||||
assertFalse(RepoUriGetter.isSwapUri(uri3))
|
||||
|
||||
val uri4 = Uri.parse("mailto:nobody@google.com")
|
||||
assertFalse(RepoUriGetter.isSwapUri(uri4))
|
||||
}
|
||||
val uri4 = Uri.parse("mailto:nobody@google.com")
|
||||
assertFalse(RepoUriGetter.isSwapUri(uri4))
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user