This commit is contained in:
Benoit Marty 2025-11-06 14:23:41 +01:00
parent cee6475eb8
commit 4cc5cf0084
6 changed files with 111 additions and 59 deletions

View file

@ -18,6 +18,7 @@ import io.element.android.features.wellknown.test.FakeWellknownRetriever
import io.element.android.features.wellknown.test.anElementWellKnown
import io.element.android.libraries.architecture.AsyncData
import io.element.android.libraries.core.uri.ensureProtocol
import io.element.android.libraries.matrix.test.AN_EXCEPTION
import io.element.android.libraries.matrix.test.A_HOMESERVER
import io.element.android.libraries.matrix.test.A_HOMESERVER_URL
import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService
@ -46,7 +47,11 @@ class ChangeServerPresenterTest {
@Test
fun `present - change server ok`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER)
},
)
createPresenter(
authenticationService = authenticationService,
enterpriseService = FakeEnterpriseService(
@ -55,7 +60,6 @@ class ChangeServerPresenterTest {
).test {
val initialState = awaitItem()
assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized)
authenticationService.givenHomeserver(A_HOMESERVER)
initialState.eventSink.invoke(ChangeServerEvents.ChangeServer(AccountProvider(url = A_HOMESERVER_URL)))
val loadingState = awaitItem()
assertThat(loadingState.changeServerAction).isInstanceOf(AsyncData.Loading::class.java)
@ -66,10 +70,16 @@ class ChangeServerPresenterTest {
@Test
fun `present - change server error`() = runTest {
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.failure(AN_EXCEPTION)
},
)
createPresenter(
enterpriseService = FakeEnterpriseService(
isAllowedToConnectToHomeserverResult = { true },
),
authenticationService = authenticationService,
).test {
val initialState = awaitItem()
assertThat(initialState.changeServerAction).isEqualTo(AsyncData.Uninitialized)

View file

@ -95,7 +95,11 @@ class ChooseAccountProviderPresenterTest {
@Test
fun `present - select account provider and continue - error then clear error`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.failure(AN_EXCEPTION)
},
)
val presenter = createPresenter(
enterpriseService = FakeEnterpriseService(
defaultHomeserverListResult = { listOf(ACCOUNT_PROVIDER_FROM_CONFIG_1, ACCOUNT_PROVIDER_FROM_CONFIG_2) },
@ -111,7 +115,6 @@ class ChooseAccountProviderPresenterTest {
}
awaitItem().also {
assertThat(it.selectedAccountProvider).isEqualTo(accountProvider1)
authenticationService.givenChangeServerError(AN_EXCEPTION)
it.eventSink(ChooseAccountProviderEvents.Continue)
skipItems(1) // Loading

View file

@ -53,11 +53,14 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - continue password login`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER)
},
)
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
)
authenticationService.givenHomeserver(A_HOMESERVER)
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
@ -75,11 +78,14 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - continue oidc`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER_OIDC)
},
)
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
)
authenticationService.givenHomeserver(A_HOMESERVER_OIDC)
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
@ -97,13 +103,16 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - oidc - cancel with failure`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER_OIDC)
},
)
val defaultOidcActionFlow = FakeOidcActionFlow()
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
defaultOidcActionFlow = defaultOidcActionFlow,
)
authenticationService.givenHomeserver(A_HOMESERVER_OIDC)
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
@ -125,13 +134,16 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - oidc - cancel with success`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER_OIDC)
},
)
val defaultOidcActionFlow = FakeOidcActionFlow()
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
defaultOidcActionFlow = defaultOidcActionFlow,
)
authenticationService.givenHomeserver(A_HOMESERVER_OIDC)
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
@ -152,13 +164,16 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - oidc - cancel to unblock`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER_OIDC)
},
)
val defaultOidcActionFlow = FakeOidcActionFlow()
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
defaultOidcActionFlow = defaultOidcActionFlow,
)
authenticationService.givenHomeserver(A_HOMESERVER_OIDC)
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
@ -175,13 +190,16 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - oidc - success with failure`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER_OIDC)
},
)
val defaultOidcActionFlow = FakeOidcActionFlow()
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
defaultOidcActionFlow = defaultOidcActionFlow,
)
authenticationService.givenHomeserver(A_HOMESERVER_OIDC)
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
@ -205,13 +223,16 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - oidc - success with success`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER_OIDC)
},
)
val defaultOidcActionFlow = FakeOidcActionFlow()
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
defaultOidcActionFlow = defaultOidcActionFlow,
)
authenticationService.givenHomeserver(A_HOMESERVER_OIDC)
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
@ -232,7 +253,11 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - submit fails`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.failure(AN_EXCEPTION)
},
)
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
)
@ -240,7 +265,6 @@ class ConfirmAccountProviderPresenterTest {
presenter.present()
}.test {
val initialState = awaitItem()
authenticationService.givenChangeServerError(RuntimeException())
initialState.eventSink.invoke(ConfirmAccountProviderEvents.Continue)
skipItems(1) // Loading
val failureState = awaitItem()
@ -251,7 +275,11 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - clear error`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.failure(AN_EXCEPTION)
},
)
val presenter = createConfirmAccountProviderPresenter(
matrixAuthenticationService = authenticationService,
)
@ -261,7 +289,6 @@ class ConfirmAccountProviderPresenterTest {
val initialState = awaitItem()
// Submit will return an error
authenticationService.givenChangeServerError(AN_EXCEPTION)
initialState.eventSink(ConfirmAccountProviderEvents.Continue)
skipItems(1) // Loading
@ -279,8 +306,11 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - confirm account creation without oidc and without url generates an error`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
authenticationService.givenHomeserver(A_HOMESERVER)
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER)
},
)
val presenter = createConfirmAccountProviderPresenter(
params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true),
matrixAuthenticationService = authenticationService,
@ -306,8 +336,11 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - confirm account creation with oidc is successful`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
authenticationService.givenHomeserver(A_HOMESERVER_OIDC)
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER_OIDC)
},
)
val presenter = createConfirmAccountProviderPresenter(
params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true),
matrixAuthenticationService = authenticationService,
@ -327,8 +360,11 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - confirm account creation with oidc and url continues with oidc`() = runTest {
val aUrl = "aUrl"
val authenticationService = FakeMatrixAuthenticationService()
authenticationService.givenHomeserver(A_HOMESERVER_OIDC)
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER_OIDC)
},
)
val presenter = createConfirmAccountProviderPresenter(
params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true),
matrixAuthenticationService = authenticationService,
@ -349,8 +385,11 @@ class ConfirmAccountProviderPresenterTest {
@Test
fun `present - confirm account creation without oidc and with url continuing with url`() = runTest {
val aUrl = "aUrl"
val authenticationService = FakeMatrixAuthenticationService()
authenticationService.givenHomeserver(A_HOMESERVER)
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER)
},
)
val presenter = createConfirmAccountProviderPresenter(
params = ConfirmAccountProviderPresenter.Params(isAccountCreation = true),
matrixAuthenticationService = authenticationService,

View file

@ -42,8 +42,11 @@ class LoginPasswordPresenterTest {
@Test
fun `present - enter login and password`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
authenticationService.givenHomeserver(A_HOMESERVER)
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER)
},
)
createLoginPasswordPresenter(
authenticationService = authenticationService,
).test {
@ -61,8 +64,11 @@ class LoginPasswordPresenterTest {
@Test
fun `present - submit`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
authenticationService.givenHomeserver(A_HOMESERVER)
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER)
},
)
createLoginPasswordPresenter(
authenticationService = authenticationService,
).test {
@ -81,8 +87,11 @@ class LoginPasswordPresenterTest {
@Test
fun `present - submit with error`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
authenticationService.givenHomeserver(A_HOMESERVER)
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER)
},
)
createLoginPasswordPresenter(
authenticationService = authenticationService,
).test {
@ -102,8 +111,11 @@ class LoginPasswordPresenterTest {
@Test
fun `present - clear error`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
authenticationService.givenHomeserver(A_HOMESERVER)
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.success(A_HOMESERVER)
},
)
createLoginPasswordPresenter(
authenticationService = authenticationService,
).test {

View file

@ -214,7 +214,11 @@ class OnBoardingPresenterTest {
@Test
fun `present - default account provider - login and clear error`() = runTest {
val authenticationService = FakeMatrixAuthenticationService()
val authenticationService = FakeMatrixAuthenticationService(
setHomeserverResult = {
Result.failure(AN_EXCEPTION)
},
)
val presenter = createPresenter(
params = OnBoardingNode.Params(
accountProvider = A_HOMESERVER_URL,
@ -231,7 +235,6 @@ class OnBoardingPresenterTest {
skipItems(3)
awaitItem().also {
assertThat(it.defaultAccountProvider).isEqualTo(A_HOMESERVER_URL)
authenticationService.givenChangeServerError(AN_EXCEPTION)
it.eventSink(OnBoardingEvents.OnSignIn(A_HOMESERVER_URL))
skipItems(1) // Loading