Create interface UnifiedPushGatewayResolver
This commit is contained in:
parent
e07a9230d4
commit
a206b799a8
2 changed files with 18 additions and 11 deletions
|
|
@ -16,13 +16,20 @@
|
||||||
|
|
||||||
package io.element.android.libraries.pushproviders.unifiedpush
|
package io.element.android.libraries.pushproviders.unifiedpush
|
||||||
|
|
||||||
|
import com.squareup.anvil.annotations.ContributesBinding
|
||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
|
import io.element.android.libraries.di.AppScope
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class UnifiedPushGatewayResolver @Inject constructor(
|
interface UnifiedPushGatewayResolver {
|
||||||
|
suspend fun getGateway(endpoint: String): String
|
||||||
|
}
|
||||||
|
|
||||||
|
@ContributesBinding(AppScope::class)
|
||||||
|
class DefaultUnifiedPushGatewayResolver @Inject constructor(
|
||||||
private val unifiedPushApiFactory: UnifiedPushApiFactory,
|
private val unifiedPushApiFactory: UnifiedPushApiFactory,
|
||||||
private val coroutineDispatchers: CoroutineDispatchers,
|
private val coroutineDispatchers: CoroutineDispatchers,
|
||||||
) {
|
) {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ import kotlinx.coroutines.test.TestScope
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
class UnifiedPushGatewayResolverTest {
|
class DefaultUnifiedPushGatewayResolverTest {
|
||||||
private val matrixDiscoveryResponse = {
|
private val matrixDiscoveryResponse = {
|
||||||
DiscoveryResponse(
|
DiscoveryResponse(
|
||||||
unifiedpush = DiscoveryUnifiedPush(
|
unifiedpush = DiscoveryUnifiedPush(
|
||||||
|
|
@ -46,7 +46,7 @@ class UnifiedPushGatewayResolverTest {
|
||||||
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
||||||
discoveryResponse = matrixDiscoveryResponse
|
discoveryResponse = matrixDiscoveryResponse
|
||||||
)
|
)
|
||||||
val sut = createUnifiedPushGatewayResolver(
|
val sut = createDefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory = unifiedPushApiFactory
|
unifiedPushApiFactory = unifiedPushApiFactory
|
||||||
)
|
)
|
||||||
val result = sut.getGateway("https://custom.url")
|
val result = sut.getGateway("https://custom.url")
|
||||||
|
|
@ -59,7 +59,7 @@ class UnifiedPushGatewayResolverTest {
|
||||||
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
||||||
discoveryResponse = matrixDiscoveryResponse
|
discoveryResponse = matrixDiscoveryResponse
|
||||||
)
|
)
|
||||||
val sut = createUnifiedPushGatewayResolver(
|
val sut = createDefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory = unifiedPushApiFactory
|
unifiedPushApiFactory = unifiedPushApiFactory
|
||||||
)
|
)
|
||||||
val result = sut.getGateway("https://custom.url:123")
|
val result = sut.getGateway("https://custom.url:123")
|
||||||
|
|
@ -72,7 +72,7 @@ class UnifiedPushGatewayResolverTest {
|
||||||
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
||||||
discoveryResponse = matrixDiscoveryResponse
|
discoveryResponse = matrixDiscoveryResponse
|
||||||
)
|
)
|
||||||
val sut = createUnifiedPushGatewayResolver(
|
val sut = createDefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory = unifiedPushApiFactory
|
unifiedPushApiFactory = unifiedPushApiFactory
|
||||||
)
|
)
|
||||||
val result = sut.getGateway("https://custom.url:123/some/path")
|
val result = sut.getGateway("https://custom.url:123/some/path")
|
||||||
|
|
@ -85,7 +85,7 @@ class UnifiedPushGatewayResolverTest {
|
||||||
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
||||||
discoveryResponse = matrixDiscoveryResponse
|
discoveryResponse = matrixDiscoveryResponse
|
||||||
)
|
)
|
||||||
val sut = createUnifiedPushGatewayResolver(
|
val sut = createDefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory = unifiedPushApiFactory
|
unifiedPushApiFactory = unifiedPushApiFactory
|
||||||
)
|
)
|
||||||
val result = sut.getGateway("http://custom.url:123/some/path")
|
val result = sut.getGateway("http://custom.url:123/some/path")
|
||||||
|
|
@ -98,7 +98,7 @@ class UnifiedPushGatewayResolverTest {
|
||||||
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
||||||
discoveryResponse = { throw Exception() }
|
discoveryResponse = { throw Exception() }
|
||||||
)
|
)
|
||||||
val sut = createUnifiedPushGatewayResolver(
|
val sut = createDefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory = unifiedPushApiFactory
|
unifiedPushApiFactory = unifiedPushApiFactory
|
||||||
)
|
)
|
||||||
val result = sut.getGateway("http://custom.url")
|
val result = sut.getGateway("http://custom.url")
|
||||||
|
|
@ -111,7 +111,7 @@ class UnifiedPushGatewayResolverTest {
|
||||||
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
||||||
discoveryResponse = matrixDiscoveryResponse
|
discoveryResponse = matrixDiscoveryResponse
|
||||||
)
|
)
|
||||||
val sut = createUnifiedPushGatewayResolver(
|
val sut = createDefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory = unifiedPushApiFactory
|
unifiedPushApiFactory = unifiedPushApiFactory
|
||||||
)
|
)
|
||||||
val result = sut.getGateway("invalid")
|
val result = sut.getGateway("invalid")
|
||||||
|
|
@ -124,7 +124,7 @@ class UnifiedPushGatewayResolverTest {
|
||||||
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
val unifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
||||||
discoveryResponse = invalidDiscoveryResponse
|
discoveryResponse = invalidDiscoveryResponse
|
||||||
)
|
)
|
||||||
val sut = createUnifiedPushGatewayResolver(
|
val sut = createDefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory = unifiedPushApiFactory
|
unifiedPushApiFactory = unifiedPushApiFactory
|
||||||
)
|
)
|
||||||
val result = sut.getGateway("https://custom.url")
|
val result = sut.getGateway("https://custom.url")
|
||||||
|
|
@ -132,11 +132,11 @@ class UnifiedPushGatewayResolverTest {
|
||||||
assertThat(result).isEqualTo(UnifiedPushConfig.DEFAULT_PUSH_GATEWAY_HTTP_URL)
|
assertThat(result).isEqualTo(UnifiedPushConfig.DEFAULT_PUSH_GATEWAY_HTTP_URL)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun TestScope.createUnifiedPushGatewayResolver(
|
private fun TestScope.createDefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory: UnifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
unifiedPushApiFactory: UnifiedPushApiFactory = FakeUnifiedPushApiFactory(
|
||||||
discoveryResponse = { DiscoveryResponse() }
|
discoveryResponse = { DiscoveryResponse() }
|
||||||
)
|
)
|
||||||
) = UnifiedPushGatewayResolver(
|
) = DefaultUnifiedPushGatewayResolver(
|
||||||
unifiedPushApiFactory = unifiedPushApiFactory,
|
unifiedPushApiFactory = unifiedPushApiFactory,
|
||||||
coroutineDispatchers = testCoroutineDispatchers()
|
coroutineDispatchers = testCoroutineDispatchers()
|
||||||
)
|
)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue