Merge branch 'develop' into feature/bma/metro070

This commit is contained in:
Benoit Marty 2025-10-23 11:30:25 +02:00 committed by GitHub
commit 76493f52ec
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
46 changed files with 306 additions and 233 deletions

View file

@ -39,7 +39,7 @@ class DefaultAccountProviderAccessControl(
// Ensure that Element Pro is not required for this account provider
val wellKnown = wellknownRetriever.getElementWellKnown(
baseUrl = accountProviderUrl.ensureProtocol(),
)
).dataOrNull()
if (wellKnown?.enforceElementPro == true) {
throw AccountProviderAccessException.NeedElementProException(
unauthorisedAccountProviderTitle = title,

View file

@ -46,7 +46,7 @@ class HomeserverResolver(
wellknownRetriever.getWellKnown(url)
}
}
val isValid = wellKnown?.isValid().orFalse()
val isValid = wellKnown?.dataOrNull()?.isValid().orFalse()
if (isValid) {
// Emit the list as soon as possible
currentList.add(

View file

@ -28,7 +28,7 @@ class DefaultWebClientUrlForAuthenticationRetriever(
Timber.w("Temporary account creation flow is only supported on matrix.org")
throw AccountCreationNotSupported()
}
val wellknown = wellknownRetriever.getElementWellKnown(homeServerUrl)
val wellknown = wellknownRetriever.getElementWellKnown(homeServerUrl).dataOrNull()
?: throw AccountCreationNotSupported()
val registrationHelperUrl = wellknown.registrationHelperUrl
return if (registrationHelperUrl != null) {

View file

@ -16,6 +16,7 @@ import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER
import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_2
import io.element.android.libraries.matrix.test.AN_ACCOUNT_PROVIDER_URL
import io.element.android.libraries.wellknown.api.ElementWellKnown
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertThrows
import org.junit.Test
@ -155,7 +156,13 @@ class DefaultAccountProviderAccessControlTest {
defaultHomeserverListResult = { allowedAccountProviders },
),
wellknownRetriever = FakeWellknownRetriever(
getElementWellKnownResult = { elementWellKnown },
getElementWellKnownResult = {
if (elementWellKnown == null) {
WellknownRetrieverResult.NotFound
} else {
WellknownRetrieverResult.Success(elementWellKnown)
}
},
),
)

View file

@ -23,6 +23,7 @@ import io.element.android.libraries.matrix.test.A_HOMESERVER_URL
import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService
import io.element.android.libraries.wellknown.api.ElementWellKnown
import io.element.android.libraries.wellknown.api.WellknownRetriever
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
import io.element.android.tests.testutils.WarmUpRule
import io.element.android.tests.testutils.lambda.lambdaRecorder
import io.element.android.tests.testutils.lambda.value
@ -114,9 +115,11 @@ class ChangeServerPresenterTest {
@Test
fun `present - change server element pro required error`() = runTest {
val getElementWellKnownResult = lambdaRecorder<String, ElementWellKnown> {
anElementWellKnown(
enforceElementPro = true,
val getElementWellKnownResult = lambdaRecorder<String, WellknownRetrieverResult<ElementWellKnown>> {
WellknownRetrieverResult.Success(
anElementWellKnown(
enforceElementPro = true,
)
)
}
createPresenter(

View file

@ -18,6 +18,7 @@ import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.matrix.test.A_HOMESERVER_URL
import io.element.android.libraries.wellknown.api.WellKnown
import io.element.android.libraries.wellknown.api.WellKnownBaseConfig
import io.element.android.libraries.wellknown.api.WellknownRetrieverResult
import io.element.android.tests.testutils.WarmUpRule
import io.element.android.tests.testutils.lambda.lambdaRecorder
import io.element.android.tests.testutils.lambda.value
@ -94,12 +95,12 @@ class SearchAccountProviderPresenterTest {
@Test
fun `present - enter text one result with wellknown`() = runTest {
val getWellKnownResult = lambdaRecorder<String, WellKnown> {
val getWellKnownResult = lambdaRecorder<String, WellknownRetrieverResult<WellKnown>> {
when (it) {
"https://test.org" -> error("not found")
"https://test.com" -> error("not found")
"https://test.io" -> aWellKnown()
"https://test" -> error("not found")
"https://test.org" -> WellknownRetrieverResult.NotFound
"https://test.com" -> WellknownRetrieverResult.NotFound
"https://test.io" -> WellknownRetrieverResult.Success(aWellKnown())
"https://test" -> WellknownRetrieverResult.NotFound
else -> error("should not happen")
}
}
@ -138,12 +139,12 @@ class SearchAccountProviderPresenterTest {
@Test
fun `present - enter text two results with wellknown`() = runTest {
val getWellKnownResult = lambdaRecorder<String, WellKnown> {
val getWellKnownResult = lambdaRecorder<String, WellknownRetrieverResult<WellKnown>> {
when (it) {
"https://test.org" -> aWellKnown()
"https://test.com" -> error("not found")
"https://test.io" -> aWellKnown()
"https://test" -> error("not found")
"https://test.org" -> WellknownRetrieverResult.Success(aWellKnown())
"https://test.com" -> WellknownRetrieverResult.NotFound
"https://test.io" -> WellknownRetrieverResult.Success(aWellKnown())
"https://test" -> WellknownRetrieverResult.NotFound
else -> error("should not happen")
}
}