From 738bb831fa0096349dfded0b487efe1ef71e90ba Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 22 May 2024 18:59:26 +0200 Subject: [PATCH] Create interface UnifiedPushGatewayResolver --- .../unifiedpush/UnifiedPushGatewayResolver.kt | 9 ++++++++- ... DefaultUnifiedPushGatewayResolverTest.kt} | 20 +++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) rename libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/{UnifiedPushGatewayResolverTest.kt => DefaultUnifiedPushGatewayResolverTest.kt} (90%) diff --git a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt index 1077bf970e..707eb3fed4 100644 --- a/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt +++ b/libraries/pushproviders/unifiedpush/src/main/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolver.kt @@ -16,13 +16,20 @@ 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.di.AppScope import kotlinx.coroutines.withContext import timber.log.Timber import java.net.URL 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 coroutineDispatchers: CoroutineDispatchers, ) { diff --git a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolverTest.kt b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultUnifiedPushGatewayResolverTest.kt similarity index 90% rename from libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolverTest.kt rename to libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultUnifiedPushGatewayResolverTest.kt index 51d2a086e4..34086f6f68 100644 --- a/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/UnifiedPushGatewayResolverTest.kt +++ b/libraries/pushproviders/unifiedpush/src/test/kotlin/io/element/android/libraries/pushproviders/unifiedpush/DefaultUnifiedPushGatewayResolverTest.kt @@ -24,7 +24,7 @@ import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Test -class UnifiedPushGatewayResolverTest { +class DefaultUnifiedPushGatewayResolverTest { private val matrixDiscoveryResponse = { DiscoveryResponse( unifiedpush = DiscoveryUnifiedPush( @@ -46,7 +46,7 @@ class UnifiedPushGatewayResolverTest { val unifiedPushApiFactory = FakeUnifiedPushApiFactory( discoveryResponse = matrixDiscoveryResponse ) - val sut = createUnifiedPushGatewayResolver( + val sut = createDefaultUnifiedPushGatewayResolver( unifiedPushApiFactory = unifiedPushApiFactory ) val result = sut.getGateway("https://custom.url") @@ -59,7 +59,7 @@ class UnifiedPushGatewayResolverTest { val unifiedPushApiFactory = FakeUnifiedPushApiFactory( discoveryResponse = matrixDiscoveryResponse ) - val sut = createUnifiedPushGatewayResolver( + val sut = createDefaultUnifiedPushGatewayResolver( unifiedPushApiFactory = unifiedPushApiFactory ) val result = sut.getGateway("https://custom.url:123") @@ -72,7 +72,7 @@ class UnifiedPushGatewayResolverTest { val unifiedPushApiFactory = FakeUnifiedPushApiFactory( discoveryResponse = matrixDiscoveryResponse ) - val sut = createUnifiedPushGatewayResolver( + val sut = createDefaultUnifiedPushGatewayResolver( unifiedPushApiFactory = unifiedPushApiFactory ) val result = sut.getGateway("https://custom.url:123/some/path") @@ -85,7 +85,7 @@ class UnifiedPushGatewayResolverTest { val unifiedPushApiFactory = FakeUnifiedPushApiFactory( discoveryResponse = matrixDiscoveryResponse ) - val sut = createUnifiedPushGatewayResolver( + val sut = createDefaultUnifiedPushGatewayResolver( unifiedPushApiFactory = unifiedPushApiFactory ) val result = sut.getGateway("http://custom.url:123/some/path") @@ -98,7 +98,7 @@ class UnifiedPushGatewayResolverTest { val unifiedPushApiFactory = FakeUnifiedPushApiFactory( discoveryResponse = { throw Exception() } ) - val sut = createUnifiedPushGatewayResolver( + val sut = createDefaultUnifiedPushGatewayResolver( unifiedPushApiFactory = unifiedPushApiFactory ) val result = sut.getGateway("http://custom.url") @@ -111,7 +111,7 @@ class UnifiedPushGatewayResolverTest { val unifiedPushApiFactory = FakeUnifiedPushApiFactory( discoveryResponse = matrixDiscoveryResponse ) - val sut = createUnifiedPushGatewayResolver( + val sut = createDefaultUnifiedPushGatewayResolver( unifiedPushApiFactory = unifiedPushApiFactory ) val result = sut.getGateway("invalid") @@ -124,7 +124,7 @@ class UnifiedPushGatewayResolverTest { val unifiedPushApiFactory = FakeUnifiedPushApiFactory( discoveryResponse = invalidDiscoveryResponse ) - val sut = createUnifiedPushGatewayResolver( + val sut = createDefaultUnifiedPushGatewayResolver( unifiedPushApiFactory = unifiedPushApiFactory ) val result = sut.getGateway("https://custom.url") @@ -132,11 +132,11 @@ class UnifiedPushGatewayResolverTest { assertThat(result).isEqualTo(UnifiedPushConfig.DEFAULT_PUSH_GATEWAY_HTTP_URL) } - private fun TestScope.createUnifiedPushGatewayResolver( + private fun TestScope.createDefaultUnifiedPushGatewayResolver( unifiedPushApiFactory: UnifiedPushApiFactory = FakeUnifiedPushApiFactory( discoveryResponse = { DiscoveryResponse() } ) - ) = UnifiedPushGatewayResolver( + ) = DefaultUnifiedPushGatewayResolver( unifiedPushApiFactory = unifiedPushApiFactory, coroutineDispatchers = testCoroutineDispatchers() )