2022-01-11 18:34:51 +01:00
|
|
|
package org.fdroid.download
|
|
|
|
|
2022-01-17 19:33:07 +01:00
|
|
|
import io.ktor.client.engine.ProxyBuilder
|
|
|
|
import io.ktor.http.Url
|
2022-01-27 17:54:12 +01:00
|
|
|
import io.ktor.utils.io.errors.IOException
|
2022-01-11 18:34:51 +01:00
|
|
|
import org.fdroid.getRandomString
|
2022-01-17 19:33:07 +01:00
|
|
|
import org.fdroid.runSuspend
|
2022-01-11 18:34:51 +01:00
|
|
|
import kotlin.test.Test
|
|
|
|
import kotlin.test.assertEquals
|
2022-01-17 19:33:07 +01:00
|
|
|
import kotlin.test.assertFailsWith
|
2022-01-11 18:34:51 +01:00
|
|
|
|
2022-01-17 18:18:41 +01:00
|
|
|
class HttpManagerIntegrationTest {
|
2022-01-11 18:34:51 +01:00
|
|
|
|
|
|
|
private val userAgent = getRandomString()
|
|
|
|
private val mirrors = listOf(Mirror("http://example.org"), Mirror("http://example.net/"))
|
|
|
|
private val downloadRequest = DownloadRequest("", mirrors)
|
|
|
|
|
|
|
|
@Test
|
2022-01-17 19:33:07 +01:00
|
|
|
fun testResumeOnExample() = runSuspend {
|
2022-01-17 18:18:41 +01:00
|
|
|
val httpManager = HttpManager(userAgent, null)
|
2022-01-11 18:34:51 +01:00
|
|
|
|
2022-01-17 18:18:41 +01:00
|
|
|
val lastLine = httpManager.getBytes(downloadRequest, 1248).decodeToString()
|
2022-01-11 18:34:51 +01:00
|
|
|
assertEquals("</html>\n", lastLine)
|
|
|
|
}
|
2022-01-17 19:33:07 +01:00
|
|
|
|
|
|
|
@Test
|
|
|
|
fun testProxy() = runSuspend {
|
|
|
|
val proxyRequest = downloadRequest.copy(proxy = ProxyBuilder.http(Url("http://127.0.0.1")))
|
|
|
|
val httpManager = HttpManager(userAgent, null)
|
|
|
|
|
2022-01-27 17:54:12 +01:00
|
|
|
val e = assertFailsWith<IOException> {
|
2022-01-17 19:33:07 +01:00
|
|
|
httpManager.getBytes(proxyRequest)
|
|
|
|
}
|
|
|
|
assertEquals("Failed to connect to /127.0.0.1:80", e.message)
|
|
|
|
|
|
|
|
val lastLine = httpManager.getBytes(downloadRequest, 1248).decodeToString()
|
|
|
|
assertEquals("</html>\n", lastLine)
|
|
|
|
}
|
2022-01-11 18:34:51 +01:00
|
|
|
}
|